Dear MySQL users,

This is the list of bug fixes. For the functional enhancements, see part
1 of this mail:

   Bugs fixed:

  * Incompatible Change: For socket I/O, an optimization for the
    case when the server used alarms for timeouts could cause a
    slowdown when socket timeouts were used instead.
    The fix for this issue results in several changes:

       + Previously, timeouts applied to entire packet-level send
         or receive operations. Now timeouts apply to individual
         I/O operations at a finer level, such as sending 10 bytes
         of a given packet.

       + The handling of packets larger than max_allowed_packet
         has changed. Previously, if an application sent a packet
         bigger than the maximum permitted size, or if the server
         failed to allocate a buffer sufficiently large to hold
         the packet, the server kept reading the packet until its
         end, then skipped it and returned an
         ER_NET_PACKET_TOO_LARGE error. Now the server disconnects
         the session if it cannot handle such large packets.

       + On Windows, the default value for the
         MYSQL_OPT_CONNECT_TIMEOUT option to mysql_options() is no
         longer 20 seconds. Now the default is no timeout
         (infinite), the same as on other platforms.

       + Building and running MySQL on POSIX systems now requires
         support for poll() and O_NONBLOCK. These should be
         available on any modern POSIX system.
    (Bug #54790, Bug #11762221, Bug #36225, Bug #11762221)

  * InnoDB Storage Engine: Replication: Trying to update a column,
    previously set to NULL, of an InnoDB table with no primary key
    caused replication to fail with Can't find record in 'table'
    on the slave. (Bug #11766865, Bug #60091)

  * InnoDB Storage Engine: A failed CREATE INDEX operation for an
    InnoDB table could result in some memory being allocated but
    not freed. This memory leak could affect tables created with
    the ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED setting. (Bug
    #12699505)

  * InnoDB Storage Engine: Stability is improved when using BLOB
    values within InnoDB tables in a heavily loaded system,
    especially for tables using the ROW_FORMAT=DYNAMIC or
    ROW_FORMAT=COMPRESSED setting. (Bug #12612184)

  * InnoDB Storage Engine: The server could halt if InnoDB
    interpreted a very heavy I/O load for 15 minutes or more as an
    indication that the server was hung. This change fixes the
    logic that measures how long InnoDB threads were waiting,
    which formerly could produce false positives. (Bug #11877216,
    Bug #11755413, Bug #47183)

  * InnoDB Storage Engine: With the setting
    lower_case_table_names=2, inserts into InnoDB tables covered
    by foreign key constraints could fail after a server restart.
    (Bug #11831040, Bug #60196, Bug #60909)

  * InnoDB Storage Engine: If the server crashed while an XA
    transaction was prepared but not yet committed, the
    transaction could remain in the system after restart, and
    cause a subsequent shutdown to hang. (Bug #11766513, Bug
    #59641)

  * InnoDB Storage Engine: With the setting
    lower_case_table_names=2, inserts into InnoDB tables covered
    by foreign key constraints could fail after a server restart.
    This is a similar problem to the foreign key error in Bug
    #11831040 / Bug #60196 / Bug #60909, but with a different root
    cause and occurring on Mac OS X.

  * Partitioning: The internal get_partition_set() function did
    not take into account the possibility that a key specification
    could be NULL in some cases. (Bug #12380149)

  * Partitioning: When executing a row-ordered retrieval index
    merge, the partitioning handler used memory from that
    allocated for the table, rather than that allocated to the
    query, causing table object memory not to be freed until the
    table was closed. (Bug #11766249, Bug #59316)

  * Partitioning: Attempting to use ALTER TABLE ... EXCHANGE
    PARTITION to exchange a view with a (nonexistent) partition of
    a table that was not partitioned caused the server to crash.
    (Bug #11766232, Bug #60039)

  * Partitioning: Auto-increment columns of partitioned tables
    were checked even when they were not being written to. In
    debug builds, this could lead to a server crash. (Bug
    #11765667, Bug #58655)

  * Partitioning: The UNIX_TIMESTAMP() function was not treated as
    a monotonic function for purposes of partition pruning. (Bug
    #11746819, Bug #28928)

  * Replication: A mistake in thread cleanup could cause a
    replication master to crash. (Bug #12578441)

  * Replication: When using row-based replication and attribute
    promotion or demotion (see Section 15.4.1.6.2, "Replication of
    Columns Having Different Data Types"), memory allocated
    internally for conversion of BLOB columns was not freed
    afterwards. (Bug #12558519)

  * Replication: A memory leak could occur when re-creating a
    missing master info repository, because a new I/O cache used
    for a reference to the repository was re-created when the
    repository was re-created, but the previous cache was never
    removed. (Bug #12557307)

  * Replication: A race condition could occur between a user
    thread and the SQL thread when both tried to read the same
    memory before its value was safely set. This issue has now
    been corrected.
    In addition, internal functions relating to creation of and
    appending to log events, when storing data, used memory local
    to the functions which was freed when the functions returned.
    As part of the fix for this problem, the output of SHOW SLAVE
    STATUS has been modified such that it no longer refers to
    files or file names in the accompanying status message, but
    rather contains one of the messages Making temporary file
    (append) before replaying LOAD DATA INFILE or Making temporary
    file (create) before replaying LOAD DATA INFILE. (Bug
    #12416611)

  * Replication: The name of the Ssl_verify_server_cert column in
    the mysql.slave_master_info table was misspelled as
    Ssl_verify_servert_cert. (Bug #12407446, Bug #60988)

  * Replication: When mysqlbinlog was invoked using
    --base64-output=decode-row and --start-position=pos, (where
    pos is a point in the binary log past the format description
    log event), a spurious error of the type shown here was
    generated:
     malformed binlog: it does not contain any
     Format_description_log_event...
    However, since there is nothing unsafe about not printing the
    format description log event, the error has been removed for
    this case. (Bug #12354268)

  * Replication: A failed CREATE USER statement was mistakenly
    written to the binary log. (Bug #11827392, Bug #60082)

  * Replication: It is no longer possible to change the storage
    engine used by the mysql.slave_master_info and
    mysql.slave_relay_log_info tables while replication is
    running. This means that, to make replication crash-safe, you
    must make sure that both of these tables use a transactional
    storage engine before starting replication.
    For more information, see Section 15.2.2, "Replication Relay
    and Status Logs," and Section 15.1.3.4, "Options for logging
    slave status to tables." (Bug #11765887, Bug #58897)

  * Replication: A transaction was written to the binary log even
    when it did not update any nontransactional tables. (Bug
    #11763471, Bug #56184)
    See also Bug #11763126, Bug #55789.

  * Replication: mysqlbinlog using the --raw option did not
    function correctly with binary logs from MySQL Server versions
    5.0.3 and earlier. (Bug #11763265, Bug #55956)

  * Replication: Retrying a transaction on the slave could insert
    extra data into nontransactional tables. (Bug #11763126, Bug
    #55789)
    See also Bug #11763471, Bug #56184.

  * Replication: Typographical errors appeared in the text of
    several replication error messages. (The word "position" was
    misspelled as "postion".) (Bug #11762616, Bug #55229)

  * Replication: Temporary deadlocks in the slave SQL thread could
    cause unnecessary Deadlock found when trying to get lock; try
    restarting transaction error messages to be logged on the
    slave.
    Now in such cases, only a warning is logged unless
    slave_transaction_retries has been exceeded by the number of
    such warnings for a given transaction. (Bug #11748510, Bug
    #36524)

  * Replication: When a slave requested a binary log file which
    did not exist on master, the slave continued to request the
    file regardless. This caused the slave's error log to be
    flooded with low-level EE_FILENOTFOUND errors (error code 29)
    from the master. (Bug #11745939, Bug #21437)

  * mysqld_safe ignored any value of plugin_dir specified in
    my.cnf files. (Bug #12925024)

  * Partitioning: A problem with a previous fix for poor
    performance of INSERT ON DUPLICATE KEY UPDATE statements on
    tables having many partitions caused the handler function for
    reading a row from a specific index to fail to store the ID of
    the partition last used. This caused some statements to fail
    with Can't find record errors. (Bug #59297, Bug #11766232)

  * The metadata locking subsystem added too much overhead for
    INFORMATION_SCHEMA queries that were processed by opening only
    .frm or .TRG files and had to scan many tables. For example,
    SELECT COUNT(*) FROM INFORMATION_SCHEMA.TRIGGERS was affected.
    (Bug #12828477)

  * The result for ANY subqueries with nested joins could be
    missing rows. (Bug #12795555)

  * Compilation failed on Mac OS X 10.7 (Lion) with a warning:
    Implicit declaration of function 'pthread_init' (Bug
    #12779790)

  * With profiling disabled or not compiled in,
    set_thd_proc_info() unnecessarily checked file name lengths.
    (Bug #12756017)

  * Compiling the server with maintainer mode enabled failed for
    gcc 4.6 or higher. (Bug #12727287)

  * Selecting SUM() combined with STRAIGHT_JOIN could produce an
    incomplete result set. (Bug #12699645)

  * For prepared statements, an OK could be sent to the client if
    the prepare failed due to being killed. (Bug #12661349)

  * Some Valgrind warnings were corrected:

       + For the SUBSTRING(), LEFT(), RIGHT(), LPAD(), RPAD(), and
         REPEAT() functions, a missing NULL value check was
         corrected.

       + For the LIKE operator, an attempt to use an uninitialized
         string buffer in the case of an empty wildcard was
         corrected.
    (Bug #12634989, Bug #59851, Bug #11766684)

  * Adding support for Windows authentication to libmysql
    introduced a link dependency on the system Secur32 library.
    The Microsoft Visual C++ link information now pulls in this
    library automatically. (Bug #12612143)

  * With index condition pushdown enabled, a crash could occur due
    to an invalid end-of-range value. (Bug #12601961)

  * The option-parsing code for empty strings leaked memory. (Bug
    #12589928)

  * Killing certain statements could make the server unresponsive.
    (Bug #12567331)

  * The server could fail to free allocated memory when INSERT
    DELAYED was used with binary logging enabled. (Bug #12538873)

  * A DBUG_ASSERT added by Bug #11792200 was overly aggressive in
    raising assertions. (Bug #12537160)

  * In some cases, memory allocated for
    Query_tables_list::sroutines() was not freed properly. (Bug
    #12429877)

  * After the fix for Bug #11889186, MAKEDATE() arguments with a
    year part greater than 9999 raised an assertion. (Bug
    #12403504)

  * An assertion could be raised due to a missing NULL value check
    in Item_func_round::fix_length_and_dec(). (Bug #12392636)

  * Assignments to NEW.var_name within triggers, where var_name
    had a BLOB or TEXT type, were not properly handled and
    produced incorrect results. (Bug #12362125)

  * An assertion could be raised if Index Condition Pushdown code
    pushed down an index condition containing a subquery. (Bug
    #12355958)

  * XA COMMIT could fail to clean up the error state if it
    discovered that the current XA transaction had to be rolled
    back. Consequently, the next XA transaction could raise an
    assertion when it checked for proper cleanup of the previous
    transaction. (Bug #12352846)

  * An assertion could be raised during two-phase commits if the
    binary log was used as the transaction coordinator log. (Bug
    #12346411)

  * InnoDB could add temporary index information to
    INFORMATION_SCHEMA, which could raise an assertion. (Bug
    #12340873)

  * On Windows, the server rejected client connections if no DNS
    server was available. (Bug #12325375)

  * A too-strict assertion could cause a server crash. (Bug
    #12321461)

  * mysql_upgrade did not properly upgrade the
    authentication_string column of the mysql.user table. (Bug
    #11936829)

  * The optimizer sometimes chose a forward index scan followed by
    a filesort to reserve the order rather than scanning the index
    in reverse order. (Bug #11882131)

  * Previously, an inappropriate error message was produced if a
    multiple-table update for an InnoDB table with a clustered
    primary key would update a table through multiple aliases, and
    perform an update that may physically move the row in at least
    one of these aliases. Now the error message is: Primary
    key/partition key update is not permitted since the table is
    updated both as 'tbl_name1' and 'tbl_name2' (Bug #11882110)
    See also Bug #11764529.

  * Queries that used STRAIGHT_JOIN on data that included NULL
    values could return incorrect results if index condition
    pushdown was enabled. (Bug #11873324)

  * InnoDB invoked some zlib functions without proper
    initialization. (Bug #11849231)

  * Division of large numbers could cause stack corruption. (Bug
    #11792200)

  * CHECK TABLE and REPAIR TABLE failed to find problems with
    MERGE tables that had underlying tables missing or with the
    wrong storage engine. Issues were reported only for the first
    underlying table. (Bug #11754210)

  * Replication: If a LOAD DATA INFILE statement---replicated
    using statement-based replication---featured a SET clause, the
    name-value pairs were regenerated using a method
    (Item::print()) intended primarily for generating output for
    statements such as EXPLAIN EXTENDED, and which cannot be
    relied on to return valid SQL. This could in certain cases
    lead to a crash on the slave.
    To fix this problem, the server now names each value in its
    original, user-supplied form, and uses that to create LOAD
    DATA INFILE statements for statement-based replication. (Bug
    #60580, Bug #11902767)
    See also Bug #34283, Bug #11752526, Bug #43746.

  * Replication: Error 1590 (ER_SLAVE_INCIDENT) caused the slave
    to stop even when it was started with
    --slave-skip-errors=1590. (Bug #59889, Bug #11768580, Bug
    #11799671)

  * Replication: Using the --server-id option with mysqlbinlog
    could cause format description log events to be filtered from
    the binary log, leaving mysqlbinlog unable to read the
    remainder of the log. Now such events are always read without
    regard to the value of this option.
    As part of the the fix for this problem, mysqlbinlog now also
    reads rotate log events without regard to the value of
    --server-id. (Bug #59530, Bug #11766427)

  * Replication: A failed DROP DATABASE statement could break
    statement-based replication. (Bug #58381, Bug #11765416)

  * Replication: Processing of corrupted table map events could
    cause the server to crash. This was especially likely if the
    events mapped different tables to the same identifier, such as
    could happen due to Bug#56226.
    Now, before applying a table map event, the server checks
    whether the table has already been mapped with different
    settings, and if so, an error is raised and the slave SQL
    thread stops. If it has been mapped with the same settings, or
    if the table is set to be ignored by filtering rules, there is
    no change in behavior: the event is skipped and IDs are not
    checked. (Bug #44360, Bug #11753004)
    See also Bug #11763509.

  * (5 DIV 2) and (5.0 DIV 2) produced different results (2 versus
    3) because the result of the latter expression was not
    truncated before conversion to integer. This differed from the
    behavior in MySQL 5.0 and 5.1. Now both expressions produce 2.
    (Bug #61676, Bug #12711164)

  * The server failed to compile if partitioning support was
    disabled. (Bug #61625, Bug #12694147)

  * ALTER TABLE {MODIFY|CHANGE} ... FIRST did nothing except
    rename columns if the old and new versions of the table had
    exactly the same structure with respect to column data types.
    As a result, the mapping of column name to column data was
    incorrect. The same thing happened for ALTER TABLE DROP COLUMN
    ... ADD COLUMN statements intended to produce a new version of
    the table with exactly the same structure as the old version.
    (Bug #61493, Bug #12652385)

  * Incorrect handling of metadata locking for FLUSH TABLES WITH
    READ LOCK for statements requiring prelocking caused two
    problems:

       + Execution of any data-changing statement that required
         prelocking (that is, involved a stored function or
         trigger) as part of a transaction slowed down somewhat
         all subsequent statements in the transaction. Performance
         in a transaction that periodically involved such
         statements gradually degraded over time.

       + Execution of any data-changing statement that required
         prelocking as part of a transaction prevented a
         concurrent FLUSH TABLES WITH READ LOCK from proceeding
         until the end of the transaction rather than at the end
         of the particular statement.
    (Bug #61401, Bug #12641342)

  * A problem introduced in 5.5.11 caused very old (MySQL 4.0)
    clients to be unable to connect to the server. (Bug #61222,
    Bug #12563279)

  * The fractional part of the "Queries per second" value could be
    displayed incorrectly in MySQL status output (for example, in
    the output from mysqladmin status or the mysql STATUS
    command). (Bug #61205, Bug #12565712)

  * The mysql-log-rotate script was updated because it referred to
    deprecated MySQL options. (Bug #61038, Bug #12546842)

  * Using CREATE EVENT IF NOT EXISTS for an event that already
    existed and was enabled caused multiple instances of the event
    to run. (Bug #61005, Bug #12546938)

  * If a statement ended with mismatched quotes, the server
    accepted the statement and interpreted whatever was after the
    initial quote as a text string. (Bug #60993, Bug #12546960)

  * LOAD DATA INFILE incorrectly parsed relative data file path
    names that ascended more than three levels in the file system
    and as a consequence was unable to find the file. (Bug #60987,
    Bug #12403662)

  * Table I/O for the Performance Schema
    table_io_waits_summary_by_index_usage table was counted as
    using no index for UPDATE and DELETE statements, even when an
    index was used. (Bug #60905, Bug #12370950)

  * An internal client macro reference was removed from the
    client_plugin.h header file. This reference made the file
    unusable. (Bug #60746, Bug #12325444)

  * Comparison of a DATETIME stored program variable and NOW() led
    to an "Illegal mix of collations error" when
    character_set_connection was set to utf8. (Bug #60625, Bug
    #11926811)

  * Selecting from a view for which the definition included a
    HAVING clause failed with an error:
     1356: View '...' references invalid table(s) or column(s)
     or function(s) or definer/invoker of view lack rights to use them
    (Bug #60295, Bug #11829681)

  * CREATE TABLE syntax permits specification of a STORAGE
    {DEFAULT|DISK|MEMORY} option. However, this value was not
    written to the .frm file, so that a subsequent CREATE TABLE
    ... LIKE for the table did not include that option.
    Also, ALTER TABLE of a table that had a tablespace incorrectly
    destroyed the tablespace. (Bug #60111, Bug #11766883, Bug
    #34047, Bug #11747789)

  * The mysql_load_client_plugin() C API function did not clear
    the previous error. (Bug #60075, Bug #11766854)

  * For repeated invocation of some stored procedures, the server
    consumed memory that it did not release until the connection
    terminated. (Bug #60025, Bug #11848763)

  * The server permitted max_allowed_packet to be set lower than
    net_buffer_length, which does not make sense because
    max_allowed_packet is the upper limit on net_buffer_length
    values. Now a warning occurs and the value remains unchanged.
    (Bug #59959, Bug #11766769)

  * The server did not check for certain invalid out of order
    sequences of XA statements, and these sequences raised an
    assertion. (Bug #59936, Bug #11766752, Bug #12348348)

  * For unknown users, the native password plugin reported
    incorrectly that no password had been specified even when it
    had. (Bug #59792, Bug #11766641)

  * SELECT DISTINCT with a deterministic stored function in the
    WHERE clause could produce incorrect results. (Bug #59736, Bug
    #11766594)

  * Setting optimizer_join_cache_level to 3 or greater raised an
    assertion for some queries. (Bug #59651, Bug #11766522)

  * Previously, Performance Schema table columns that held byte
    counts were BIGINT UNSIGNED. These were changed to BIGINT
    (signed). This makes it easier to perform calculations that
    compute differences between columns. (Bug #59631, Bug
    #11766504)

  * A missing variable initialization for Item_func_set_user_var
    objects could raise an assertion. (Bug #59527, Bug #11766424)

  * For some queries, the optimizer performed range analysis too
    many times for the same index. (Bug #59415, Bug #11766327)

  * With the conversion from GNU autotools to CMake for
    configuring MySQL, the USE_SYMDIR preprocessor symbol was
    omitted. This caused failure of symbolic links (described at
    Section 7.11.3.1, "Using Symbolic Links"). (Bug #59408, Bug
    #11766320)

  * An incorrect max_length value for YEAR values could be used in
    temporary result tables for UNION, leading to incorrect
    results. (Bug #59343, Bug #11766270)

  * In Item_func_in::fix_length_and_dec(), a Valgrind warning for
    uninitialized values was corrected. (Bug #59270, Bug
    #11766212)

  * An invalid pathname argument for the --defaults-extra-file
    option of MySQL programs caused a program crash. (Bug #59234,
    Bug #11766184)

  * In Item_func_month::val_str(), a Valgrind warning for a
    too-late NULL value check was corrected. (Bug #59166, Bug
    #11766126)

  * In Item::get_date, a Valgrind warning for a missing NULL value
    check was corrected. (Bug #59164, Bug #11766124)

  * In extract_date_time(), a Valgrind warning for a missing
    end-of-string check was corrected. (Bug #59151, Bug #11766112)

  * Some tables were not instrumented by the Performance Schema
    even though they were listed in the setup_objects table. (Bug
    #59150, Bug #11766111)

  * In string context, the MIN() and MAX() functions did not take
    into account the unsignedness of a BIGINT UNSIGNED argument.
    (Bug #59132, Bug #11766094)

  * In Item_func::val_decimal, a Valgrind warning for a missing
    NULL value check was corrected. (Bug #59125, Bug #11766087)

  * On Windows, the authentication_string column recently added to
    the mysql.user table caused the Configuration Wizard to fail.
    (Bug #59038, Bug #11766011)

  * In ROUND() calculations, a Valgrind warning for uninitialized
    memory was corrected. (Bug #58937, Bug #11765923)

  * The range created by the optimizer when OR-ing two conditions
    could be incorrect, causing incorrect query results. (Bug
    #58834, Bug #11765831)

  * Valgrind warnings caused by comparing index values to an
    uninitialized field were corrected. (Bug #58705, Bug
    #11765713)

  * As a side effect of optimizing condition AND TRUE or condition
    OR FALSE, MySQL for certain subqueries forgot that the columns
    used by the condition needed to be read, which raised an
    assertion in debug builds. (Bug #58690, Bug #11765699)

  * CREATE TRIGGER and DROP TRIGGER can change the prelocking list
    of stored routines, but the routine cache did not detect such
    changes, resulting in routine execution with an inaccurate
    locking list. (Bug #58674, Bug #11765684)

  * In Item_func_str_to_date::val_str, a Valgrind warning for an
    uninitialized variable was corrected. (Bug #58154, Bug
    #11765216)

  * The code for PROCEDURE ANALYSE() had a missing DBUG_RETURN
    statement, which could cause a server crash in debug builds.
    (Bug #58140, Bug #11765202)

  * LOAD DATA INFILE errors could leak I/O cache memory. (Bug
    #58072, Bug #11765141)

  * For LOAD DATA INFILE, multibyte character sequences could be
    pushed onto a stack too small to accommodate them. (Bug
    #58069, Bug #11765139)

  * The embedded server crashed when argc = 0. (Bug #57931, Bug
    #12561297)

  * An assertion could be raised in
    Item_func_int_val::fix_num_length_and_dec() due to overflow
    for geometry functions. (Bug #57900, Bug #11764994)

  * An assertion was raised if a statement tried to upgrade a
    metadata lock while there was an active FLUSH TABLE tbl_list
    WITH READ LOCK statement. Now if a statement tries to upgrade
    a metadata lock in this situation, the server returns an
    ER_TABLE_NOT_LOCKED_FOR_WRITE error to the client. (Bug
    #57649, Bug #11764779)

  * The optimizer sometimes requested ordered access from a
    storage engine when ordered access was not required. (Bug
    #57601, Bug #11764737)

  * An embedded client aborted rather than issuing an error
    message if it issued a TEE command (\T file_name) and the
    directory containing the file did not exist. This occurred
    because the wrong error handler was called. (Bug #57491, Bug
    #11764633)

  * ALTER EVENT could change the event status. (Bug #57156, Bug
    #11764334)

  * For an outer join with a NOT IN subquery in the WHERE clause,
    a null left operand to the NOT IN returned was treated
    differently than a literal NULL operand. (Bug #56881, Bug
    #11764086)

  * Threads blocked in the waiting for table metadata state were
    not visible in performance_schema.THREADS or SHOW PROFILE.
    (Bug #56475, Bug #11763728)

  * With prepared statements, the server could attempt to send
    result set metadata after the table had been closed. (Bug
    #56115, Bug #11763413)

  * Table objects associated with one session's optimizer
    structures could be closed after being passed to another
    session, prematurely ending the second session's table or
    index scan. (Bug #56080, Bug #11763382)

  * In some cases, SHOW WARNINGS returned an empty result when the
    previous statement failed. (Bug #55847, Bug #11763166)

  * A handled condition (error or warning) could be shown as not
    handled at the end of the statement. (Bug #55843, Bug
    #11763162)

  * In debug builds, Field_new_decimal::store_value() was subject
    to buffer overflows. (Bug #55436, Bug #11762799)

  * For an InnoDB table, dropping and adding an index in a single
    ALTER TABLE statement could fail. (Bug #54927, Bug #11762345)

  * For a client connected using SSL, the Ssl_cipher_list status
    variable was empty and did not show the possible cipher types.
    (Bug #52596, Bug #11760210)

  * The mysql client sometimes did not properly close sessions
    terminated by the user with Control+C. (Bug #52515, Bug
    #11760134)

  * CREATE TABLE ... LIKE for a MyISAM table definition that
    included an DATA DIRECTORY or INDEX DIRECTORY table option
    failed, instead of creating a table with those option omitted
    as documented. (Bug #52354, Bug #11759990)

  * Attempts to grant the EXECUTE or ALTER ROUTINE privilege for a
    nonexistent stored procedure returned success instead of an
    error. (Bug #51401, Bug #11759114)

  * With lower_case_table_names=2, resolution of objects qualified
    by database names could fail. (Bug #50924, Bug #11758687)

  * CREATE TABLE without an ENGINE option determined the default
    engine at parse rather than execution time. This led to
    incorrect results if the statement was executed within a
    stored program and the default engine had been changed in the
    meantime. (Bug #50614, Bug #11758414)

  * On Linux, the mysql client built using the bundled libedit did
    not read ~/.editrc. (Bug #49967, Bug #11757855)

  * For some statements such as DESCRIBE or SHOW, views with too
    many columns produced errors. (Bug #49437, Bug #11757397)

  * The optimizer sometimes incorrectly processed HAVING clauses
    for queries that did not also have an ORDER BY clause. (Bug
    #48916, Bug #11756928)

  * PROCEDURE ANALYZE() could leak memory for NULL results, and
    could return incorrect results if used with a LIMIT clause.
    (Bug #48137, Bug #11756242)

  * A race condition between loading a stored routine using the
    name qualified by the database name and dropping that database
    resulted in a spurious error message: The table mysql.proc is
    missing, corrupt, or contains bad data (Bug #47870, Bug
    #11756013)

  * When used to upgrade tables, mysqlcheck (and mysql_upgrade,
    which invokes mysqlcheck) did not upgrade some tables for
    which table repair was found to be necessary. In particular,
    it failed to upgrade InnoDB tables that needed repair, leaving
    them in a nonupgraded state. This occurred because:

       + mysqlcheck --check-upgrade ---auto-repair checks for
         tables that are incompatible with the current version of
         MySQL. It does this by issuing the CHECK TABLE ... FOR
         UPGRADE statement and examining the result.

       + For any table found to be incompatible, mysqlcheck issues
         a REPAIR TABLE statement. But this fails for storage
         engines such as InnoDB that do not support the repair
         operation. Consequently, the table remained unchanged.
    To fix the problem, the following changes were made to CHECK
    TABLE ... FOR UPGRADE and mysqlcheck. Because mysql_upgrade
    invokes mysqlcheck, these changes also fix the problem for
    mysql_upgrade.

       + CHECK TABLE ... FOR UPGRADE returns a different error if
         a table needs repair but its storage engine does not
         support REPAIR TABLE:
         Previous:
          Error: ER_TABLE_NEEDS_UPGRADE
          Table upgrade required. Please do "REPAIR TABLE
          `tbl_name`" or dump/reload to fix it!
         Now:
          Error: ER_TABLE_NEEDS_REBUILD
          Table rebuild required. Please do "ALTER TABLE
          `tbl_name` FORCE" or dump/reload to fix it!

       + mysqlcheck recognizes the new error and issues an ALTER
         TABLE ... FORCE statement. The FORCE option for ALTER
         TABLE was recognized but did nothing; now it is
         implemented and acts as a "null" alter operation that
         rebuilds the table.
    (Bug #47205, Bug #11755431)

  * On some platforms, the Incorrect value: xxx for column yyy at
    row zzz error produced by LOAD DATA INFILE could have an
    incorrect value of zzz. (Bug #46895, Bug #11755168)

  * The mysql_affected_rows() C API function returned 3 (instead
    of 2) for INSERT ... ON DUPLICATE KEY UPDATE statements where
    there was a duplicated key value. (Bug #46675, Bug #11754979)

  * Upgrades using an RPM package recreated the test database,
    which is undesirable when the DBA had removed it. (Bug #45415,
    Bug #11753896)

  * In MySQL 5.1 and up, if a table had triggers that used syntax
    supported in 5.0 but not 5.1, the table became unavailable.
    Now the table is marked as having broken triggers. (Bug
    #45235, Bug #11753738)

  * An attempt to install nonexistent files during installation
    was corrected. (Bug #43247, Bug #11752142)

  * Some status variables rolled over to zero after reaching the
    maximum 32-bit value. They have been changed to 64-bit values.
    (Bug #42698, Bug #11751727)

  * SHOW EVENTS did not always show events from the correct
    database. (Bug #41907, Bug #11751148)

  * For queries with many eq_ref joins, the optimizer took
    excessive time to develop an execution plan. (Bug #41740, Bug
    #11751026, Bug #58225, Bug #11765274)

  * On FreeBSD 64-bit builds of the embedded server, exceptions
    were not prevented from propagating into the embedded
    application. (Bug #38965, Bug #11749418)

  * With DISTINCT CONCAT(col_name,...) returned incorrect results
    when the arguments to CONCAT() were columns with an integer
    data type declared with a display width narrower than the
    values in the column. (For example, if an INT(1) column
    contained 1111.) (Bug #4082)

Hery Ramilison
MySQL/ORACLE Release Engineering Team





--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql?unsub=arch...@jab.org

Reply via email to