commit b77636769f88d8902dd83edfcb18c88d480abeec
Author: Shaohua Wang <shaohua.wang@oracle.com>
Date:   Fri Jan 15 10:26:08 2016 +0800

    BUG#22530768 Innodb freeze running REPLACE statements
    
    we can see from the hang stacktrace, srv_monitor_thread is blocked
    when getting log_sys::mutex, so that sync_arr_wake_threads_if_sema_free
    cannot get a change to break the mutex deadlock.
    
    The fix is simply removing any mutex wait in srv_monitor_thread.
    
    Patch is reviewed by Sunny over IM.

commit d4115d987d630ea5a61dc35f314efdbea0d5d3e2
Author: Bjorn Munch <bjorn.munch@oracle.com>
Date:   Mon Jan 11 14:10:58 2016 +0100

    Updated copyright year in user visible text

commit da96d6beae895c880da7df778281ebc10ec31bcc
Author: Yashwant Sahu <yashwant.sahu@oracle.com>
Date:   Mon Jan 11 14:44:49 2016 +0530

    Bug #22295186:   CERTIFICATE VALIDATION BUG IN MYSQL MAY ALLOW MITM
    
    Test fix for 5.5 and 5.6

commit 648d5877241a235e3870b6043ca94a543271f579
Author: Yashwant Sahu <yashwant.sahu@oracle.com>
Date:   Mon Jan 11 09:23:31 2016 +0530

    Bug #22295186:    CERTIFICATE VALIDATION BUG IN MYSQL MAY ALLOW MITM.
    
    Test Fix

commit 041bd3b4457959db4925e6f8788790882634e945
Author: Yashwant Sahu <yashwant.sahu@oracle.com>
Date:   Mon Jan 11 07:09:13 2016 +0530

    Bug #22295186:  CERTIFICATE VALIDATION BUG IN MYSQL MAY ALLOW MITM

commit 021794eb3079c727200c4eaae547f83a71197d35
Author: Sreeharsha Ramanavarapu <sreeharsha.ramanavarapu@oracle.com>
Date:   Fri Jan 8 06:46:59 2016 +0530

    Bug #22232332: SAVING TEXT FIELD TO TEXT VARIABLE IN A
                   PROCEDURE RESULTS IN GARBAGE BYTES
    
    Issue:
    -----
    This problem occurs under the following conditions:
    
    a) Stored procedure has a variable is declared as TEXT/BLOB.
    b) Data is copied into the the variable using the
       SELECT...INTO syntax from a TEXT/BLOB column.
    
    Data corruption can occur in such cases.
    
    SOLUTION:
    ---------
    The blob type does not allocate space for the string to be
    stored. Instead it contains a pointer to the source string.
    Since the source is deallocated immediately after the
    select statement, this can cause data corruption.
    
    As part of the fix for Bug #21143080, when the source was
    part of the table's write-set, blob would allocate the
    neccessary space. But this fix missed the possibility that,
    as in the above case, the target might be a variable.
    
    The fix will add the copy_blobs check that was removed by
    the earlier fix.

commit 86e3f8edde0c1fcb3e910195b95f80684ad0522f
Author: Ajo Robert <ajo.robert@oracle.com>
Date:   Thu Jan 7 14:36:19 2016 +0530

    Bug#21770366 backport bug#21657078 to 5.5 and 5.6
    
    Problem Statement
    =========
    Fix various issues when building MySQL with Visual Studio 2015.
    
    Fix:
    =======
    - Visual Studio 2015 adds support for timespec. Add check and
      related code to use this and only use our replacement if
      timespec is not defined.
    - Rename lfind/lsearch to my* to avoid redefinition problems.
    - Set default value for TMPDIR to "" on Windows as P_tmpdir
      no longer exists.
    - using VS definition of snprintf if available
    - tzname are now renamed to _tzname.

commit b65c01d6a9ee2ccd637ae52fa5bbc7fdf701d8da
Author: V S Murthy Sidagam <venkata.sidagam@oracle.com>
Date:   Mon Jan 4 15:31:45 2016 +0530

    Description: yaSSL was only handling the cases of zero or
    one leading zeros for the key agreement instead of
    potentially any number.
    There is about 1 in 50,000 connections to fail
    when using DHE cipher suites.  The second problem was the
    case where a server would send a public value shorter than
    the prime value, causing about 1 in 128 client connections
    to fail, and also caused the yaSSL client to read off the
    end of memory.
    All client side DHE cipher suite users should update.
    Note: The patch is received from YaSSL people

commit d6a208adc1275aa005cd3707cd1b39713d288f12
Author: Sreeharsha Ramanavarapu <sreeharsha.ramanavarapu@oracle.com>
Date:   Thu Dec 31 07:31:12 2015 +0530

    Bug #21564557: INCONSISTENT OUTPUT FROM 5.5 AND 5.6
                   UNIX_TIMESTAMP(STR_TO_DATE('201506', "%Y%M"
    
    Issue:
    -----
    When an invalid date is supplied to the UNIX_TIMESTAMP
    function from STR_TO_DATE, no check is performed before
    converting it to a timestamp value.
    
    SOLUTION:
    ---------
    Add the check_date function and only if it succeeds,
    proceed to the timestamp conversion.
    
    No warning will be returned for dates having zero in
    month/date, since partial dates are allowed. UNIX_TIMESTAMP
    will return only a zero for such values.
    
    The problem has been handled in 5.6+ with WL#946.

commit d1678da866eb6f543b0cc83990509fa3ba5d3707
Author: Karthik Kamath <karthik.kamath@oracle.com>
Date:   Tue Dec 29 15:58:44 2015 +0530

    BUG#21902059: "CREATE TEMPORARY TABLE SELECT ..." AND BIT(1)
                   COLUMNS
    
    ANALYSIS:
    =========
    A valgrind error is reported when CREATE TABLE .. SELECT
    involving BIT columns triggers a column type redefinition.
    
    In general the pack_flag is set for BIT columns in
    'mysql_prepare_create_table()'. However, during the above
    operation, redefined column types was handled after the
    special handling for BIT columns and thus pack_flag ended
    up not being set correctly triggering the valgrind error.
    
    FIX:
    ====
    The patch fixes this problem by setting pack_flag correctly
    for BIT columns in the case of column type redefinition.

commit 8fdcb2b3fc6f573cad060661be00f7353edaf704
Author: Balasubramanian Kandasamy <balasubramanian.kandasamy@oracle.com>
Date:   Wed Dec 16 12:03:04 2015 +0530

    Bug#22361702 - /USR/BIN/MYSQL-SYSTEMD-START DOES NOT RETURN CONTROL TO COMMAND LINE
    
    If the configuration files contains multiple datadir lines, use the last datadir
    entry in the RPM installation scripts

commit dffd85e1e76e5d1fd2baf1fecb62ac172e308dea
Author: Sujatha Sivakumar <sujatha.sivakumar@oracle.com>
Date:   Wed Dec 16 10:48:57 2015 +0530

    Bug#22278455: MYSQL 5.5:RPL_BINLOG_INDEX FAILS IN VALGRIND.
    
    Problem:
    =======
    rpl_binlog_index.test fails with following valgrind error.
    
    line
    Conditional jump or move depends on uninitialised value(s)
    at 0x4C2F842: __memcmp_sse4_1 (in /usr/lib64/valgrind/
    vgpreload_memcheck-amd64-linux.so)
    0x739E39: find_uniq_filename(char*) (log.cc:2212)
    0x73A11B: MYSQL_LOG::generate_new_name(char*, char const*)
    (log.cc:2492)
    0x73A1ED: MYSQL_LOG::init_and_set_log_file_name(char const*,
    char const*, enum_log_type, cache_type) (log.cc:2289)
    0x73B6F5: MYSQL_BIN_LOG::open(char const*, enum_log_type,
    
    
    Analysis and fix:
    =================
    This issue was fixed as part of Bug#20459363 fix in 5.6 and
    above. Hence backporting the fix to MySQL-5.5.

commit 5705fd9b642db8cf58d9105314905c191a3cab9f
Author: Venkatesh Duggirala <venkatesh.duggirala@oracle.com>
Date:   Tue Dec 1 15:38:11 2015 +0530

    Bug#21205695	DROP TABLE MAY CAUSE SLAVES TO BREAK
        Problem:
        ========
        1) Drop table queries are re-generated by server
        before writing the events(queries) into binlog
        for various reasons. If table name/db name contains
        a non regular characters (like latin characters),
        the generated query is wrong. Hence it breaks the
        replication.
        2) In the edge case, when table name/db name contains
        64 characters, server is throwing an assert
        assert(M_TBLLEN < 128)
        3) In the edge case, when db name contains 64 latin
        characters, binlog content is interpreted badly
        which is leading replication failure.
    
        Analysis & Fix :
        ================
        1) Parser reads the table name from the query and converts
        it to standard charset(utf8) and stores it in table_name variable.
        When drop table query is regenerated with the same table_name
        variable, it should be converted back to the original charset
        from standard charset(utf8).
    
        2) Latin character takes two bytes for each character. Limit
        of the identifier is 64. SYSTEM_CHARSET_MBMAXLEN is set to '3'.
        So there is a possiblity that tablename/dbname contains 3 * 64.
        Hence assert is changed to
        (M_TBLLEN <= NAME_CHAR_LEN*SYSTEM_CHARSET_MBMAXLEN)
    
        3) db_len in the binlog event header is taking 1 byte.
           db_len is ranged from 0 to 192 bytes (3 * 64).
           While reading the db_len from the event, server
           is casting to uint instead of uchar which is leading
           to bad db_len. This problem is fixed by changing the
           cast type to uchar.

commit 851d1440e9c4120556d091cadcd49c7fc5b15906
Author: Venkatesh Duggirala <venkatesh.duggirala@oracle.com>
Date:   Sat Nov 21 11:08:44 2015 +0530

    Bug #17047208	REPLICATION DIFFERENCE FOR MULTIPLE TRIGGERS
    
    Fixing pb2 valgrind failure
    Missed a 'if condition' check while moving the logic
    from one place to another place.

commit 2590c93eb604ba07867d38718f21cb3f09f0c75d
Author: Chaithra Gopalareddy <chaithra.gopalareddy@oracle.com>
Date:   Fri Nov 20 12:30:15 2015 +0530

    Bug#19941403: FATAL_SIGNAL(SIG 6) IN BUILD_EQUAL_ITEMS_FOR_COND | IN SQL/SQL_OPTIMIZER.CC:1657
    
    Problem:
    At the end of first execution select_lex->prep_where is pointing to
    a runtime created object (temporary table field). As a result
    server exits trying to access a invalid pointer during second
    execution.
    
    Analysis:
    While optimizing the join conditions for the query, after the
    permanent transformation, optimizer makes a copy of the new
    where conditions in select_lex->prep_where. "prep_where" is what
    is used as the "where condition" for the query at the start of execution.
    W.r.t the query in question, "where" condition is actually pointing
    to a field in the temporary table. As a result, for the  second
    execution the pointer is no more valid resulting in server exit.
    
    Fix:
    At the end of the first execution, select_lex->where will have the
    original item of the where condition.
    Make prep_where the new place where the original item of select->where
    has to be rolled back.
    Fixed in 5.7 with the wl#7082 - Move permanent transformations from
    JOIN::optimize to JOIN::prepare
    
    Patch for 5.5 includes the following backports from 5.6:
    
    Bugfix for Bug12603141 - This makes the first execute statement in the testcase
    pass in 5.5
    
    However it was noted later in in Bug16163596 that the above bugfix needed to
    be modified. Although Bug16163596 is reproducible only with changes done for
    Bug12582849, we have decided include the fix.
    
    Considering that Bug12582849 is related to Bug12603141, the fix is
    also included here. However this results in Bug16317817, Bug16317685,
    Bug16739050. So fix for the above three bugs is also part of this patch.

commit 88f397d1715c8b7e8224916060fb43704e233349
Author: Sreeharsha Ramanavarapu <sreeharsha.ramanavarapu@oracle.com>
Date:   Fri Nov 20 05:40:39 2015 +0530

    Bug #22214867: MYSQL 5.5: MAIN.SUBSELECT AND OTHERS FAIL
                   WITH NEW VALGRIND
    
    Issue:
    ------
    Function signature in valgrind.supp requires a change with
    valgrind 3.11. Static function is replaced with wild card.

commit b2dcd4269e203ab88c744f5b00a50f5ce17ff7ae
Author: Venkatesh Duggirala <venkatesh.duggirala@oracle.com>
Date:   Thu Nov 19 13:59:27 2015 +0530

    Bug#17047208        REPLICATION DIFFERENCE FOR MULTIPLE TRIGGERS
    
        Problem & Analysis: If DML invokes a trigger or a
        stored function that inserts into an AUTO_INCREMENT column,
        that DML has to be marked as 'unsafe' statement. If the
        tables are locked in the transaction prior to DML statement
        (using LOCK TABLES), then the same statement is not marked as
        'unsafe' statement. The logic of checking whether unsafeness
        is protected with if (!thd->locked_tables_mode). Hence if
        we lock the tables prior to DML statement, it is *not* entering
        into this if condition. Hence the statement is not marked
        as unsafe statement.
    
        Fix: Irrespective of locked_tables_mode value, the unsafeness
        check should be done. Now with this patch, the code is moved
        out to 'decide_logging_format()' function where all these checks
        are happening and also with out 'if(!thd->locked_tables_mode)'.
        Along with the specified test case in the bug scenario
        (BINLOG_STMT_UNSAFE_AUTOINC_COLUMNS), we also identified that
        other cases BINLOG_STMT_UNSAFE_AUTOINC_NOT_FIRST,
        BINLOG_STMT_UNSAFE_WRITE_AUTOINC_SELECT, BINLOG_STMT_UNSAFE_INSERT_TWO_KEYS
        are also protected with thd->locked_tables_mode which is not right. All
        of those checks also moved to 'decide_logging_format()' function.

commit 8e2a9f33f1c61b5b4b9eead22e64fd1d2b4ecaa5
Author: Sreeharsha Ramanavarapu <sreeharsha.ramanavarapu@oracle.com>
Date:   Wed Nov 18 08:04:04 2015 +0530

    Bug #22214852: MYSQL 5.5 AND 5.6: MAIN.KEY AND OTHER
                   FAILURE WITH VALGRIND FOR RELEASE BUILD
    
    Issue:
    ------
    Initialization of variable with UNINIT_VAR is flagged by
    valgrind 3.11.
    
    SOLUTION:
    ---------
    Initialize the variable to 0.
    
    This is a backport of Bug# 14580121.

commit 22beefba1ee608eee7106e078eb7470f515b6c26
Author: Ajo Robert <ajo.robert@oracle.com>
Date:   Fri Nov 13 18:04:31 2015 +0530

    Bug#20691429 ASSERTION `CHILD_L' FAILED IN STORAGE/MYISAMMRG/
    HA_MYISAMMRG.CC:631
    
    Analysis
    ========
    Any attempt to open a temporary MyISAM merge table consisting
    of a view in its list of tables (not the last table in the list)
    under LOCK TABLES causes the server to exit.
    
    Current implementation doesn't perform sanity checks during
    merge table creation. This allows merge table to be created
    with incompatible tables (table with non-myisam engine),
    views or even with table doesn't exist in the system.
    
    During view open, check to verify whether requested view
    is part of a merge table is missing under LOCK TABLES path
    in open_table(). This leads to opening of underlying table
    with parent_l having NULL value. Later when attaching child
    tables to parent, this hits an ASSERT as all child tables
    should have parent_l pointing to merge parent. If the operation
    does not happen under LOCK TABLES mode, open_table() checks
    for view's parent_l and returns error.
    
    Fix:
    ======
    Check added before opening view Under LOCK TABLES in open_table()
    to verify whether it is part of merge table. Error is returned
    if the view is part of a merge table.

commit 3b2afdc52ec0e04119e133cf0959ea1f802711ea
Author: Ajo Robert <ajo.robert@oracle.com>
Date:   Fri Nov 13 17:51:18 2015 +0530

    Bug#19817021 CRASH IN TABLE_LIST::PREPARE_SECURITY WHEN
    DOING BAD DDL IN PREPARED STATEMENT
    
    Analysis
    ========
    A repeat execution of the prepared statement 'ALTER TABLE v1
    CHECK PARTITION' where v1 is a view leads to server exit.
    
    ALTER TABLE ... CHECK PARTITION is not applicable for views
    and check for the same check is missing. This leads to
    further execution and creation of derived table for the view
    (Allocated under temp_table mem_root). Any reference to open
     view or related pointers from second execution leads to
    server exit as the same was freed at previous execution closure.
    
    Fix:
    ======
    Added check for view in mysql_admin_table() on PARTITION
    operation. This will prevent mysql_admin_table() from
    going ahead and creating temp table and related issues.
    Changed message on admin table view operation error to
    be more appropriate.

commit c848ba1c1adad3792a57cb412e84c3828a652d67
Author: Bjorn Munch <bjorn.munch@oracle.com>
Date:   Mon Nov 9 15:25:01 2015 +0100

    Raise version number after cloning 5.5.47
