Documentation Home
MySQL 5.5 Release Notes
Related Documentation Download these Release Notes
PDF (US Ltr) - 1.7Mb
PDF (A4) - 1.7Mb

MySQL 5.5 Release Notes  /  Changes in MySQL 5.5.39 (2014-07-31, General Availability)

Changes in MySQL 5.5.39 (2014-07-31, General Availability)

Functionality Added or Changed

  • CMake support was updated to handle CMake version 3. (Bug #19001781)

  • The timed_mutexes system variable has no effect and is deprecated. (Bug #18277305)

Bugs Fixed

  • InnoDB: Opening a parent table that has thousands of child tables could result in a long semaphore wait condition. (Bug #18806829)

  • Partitioning: Selecting from a table having multiple columns in its primary key and partitioned by LIST COLUMNS(R), where R was the last (rightmost) column listed in the primary key definition, returned an incorrect result. (Bug #17909699, Bug #71095)

  • Replication: When using row-based replication, updating or deleting a row on the master that did not exist on the slave led to failure of the slave when it tried to process the change. This problem occurred with InnoDB tables lacking a primary key. (Bug #18432495, Bug #72085)

  • Replication: Quotation marks were not always handled correctly by LOAD DATA when written into the binary log. (Bug #18207212, Bug #71603)

  • Replication: Uninstalling and reinstalling semisynchronous replication plugins while semisynchronous replication was active caused replication failures. The plugins now check whether they can be uninstalled and produce an error if semisynchronous replication is active. To uninstall the master-side plugin, there must be no semisynchronous slaves. To uninstall the slave-side plugin, there must be no semisynchronous I/O threads running. (Bug #70391, Bug #17638477)

  • Replication: A group of threads involved in acquiring locks could deadlock when the following events occurred:

    1. Dump thread reconnects from slave; on master, a new dump thread tries to kill zombie dump threads; having acquired the thread's LOCK_thd_data, it is about to acquire LOCK_log.

    2. Application thread executing show binary logs, having acquired LOCK_log and about to acquire LOCK_index.

    3. Application thread executing PURGE BINARY LOGS; having acquired LOCK_index, it is about to acquire LOCK_thread_count.

    4. Application thread executing SHOW PROCESSLIST (or SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST), having acquired LOCK_thread_count and about to acquire the zombie dump thread's LOCK_thd_data.

    This leads to the 4 threads deadlocking in the same order which the threads have been listed here.

    This problem arises because there are ordering rules for LOCK_log and LOCK_index, as well as rules for ordering LOCK_thread_count and LOCK_thd_data, but there are no rules for ordering across these two sets of locks. This was because the internal mysqld_list_processes() function invoked by SHOW PROCESSLIST acquired LOCK_thread_count for the complete lifetime of the function as well as acquiring and releasing each thread's LOCK_thd_data. Now this function takes a copy of the threads from the global thread list and performs its traversal on these, and only after releasing LOCK_thread_count. During this traversal, removal from the global thread list is blocked using LOCK_thd_remove such that the copies that would otherwise be destroyed by the removal remain valid during traversal. The locking order following this fix is shown here:

    LOCK_thd_remove -> LOCK_thd_data -> LOCK_log -> LOCK_index -> LOCK_thread_count

    (Bug #69954, Bug #17283409)

    References: See also: Bug #73475, Bug #19364731, Bug #19365180.

  • SHA and MD5 functions failed for operations using the internal filename character set and could cause a server exit. (Bug #18786138)

  • Large arguments passed to mysqldump could lead to buffer overflow and program exit. (Bug #18779944)

  • ALTER TABLE on a partitioned table could result in the wrong storage engine being written into the table's .frm file and displayed in SHOW CREATE TABLE. (Bug #18618561)

  • Compiler flags were not passed to DTrace, causing problems for 32-bit builds cross-compiled on 64-bit platforms. (Bug #18593044)

  • With the max_heap_table_size system variable set to a large value (20GB), creation of a temporary table or a table using the MEMORY storage engine caused a server exit. (Bug #18463911)

  • If MySQL was built with the -DINSTALL_LIBDIR=lib64 option, mysql_config did not work if the MySQL package was unpacked into a location with a different installation prefix. Also, mysql_config did not work for some RPM builds because it used an incorrect installation prefix. (Bug #18382225)

  • yaSSL code had an off-by-one error in certificate decoding that could cause buffer overflow.

    yaSSL code had an opendir() without a corresponding closedir(). (Bug #18178997, Bug #17201924)

  • mysqladmin password masked the old password given on the command line, but not the new password. (Bug #18163964)

  • MyISAM temporary files could be used to mount a code-execution attack. (Bug #18045646)

  • If a query had both MIN()/MAX() and aggregate_function(DISTINCT) (for example, SUM(DISTINCT)) and was executed using Loose Index Scan, the result values of MIN()/MAX() were set improperly. (Bug #17217128)

  • For UNION statements, the rows-examined value was calculated incorrectly. This was manifest as too-large values for the ROWS_EXAMINED column of Performance Schema statement tables (such as events_statements_current). (Bug #17059925)

  • Clients could determine based on connection error message content whether an account existed. (Bug #16513435, Bug #17357528, Bug #19273967)

  • An assertion could be raised when creating a index on a prefix of a TINYBLOB or GEOMETRY column in an InnoDB column. (Bug #16368875, Bug #18776592, Bug #17665767)

  • Use of a nonmultibyte algorithm for skipping leading spaces in multibyte strings could cause a server exit. (Bug #12368495, Bug #18315770)

  • MySQL did not compile with Bison 3. (Bug #71250, Bug #18017820, Bug #18978946)

  • Deadlock could occur if three threads simultaneously performed INSTALL PLUGIN, SHOW VARIABLES, and mysql_change_user(). (Bug #71236, Bug #18008907, Bug #72870, Bug #18903155)

  • If there was a predicate on a column referenced by MIN() or MAX() and that predicate was not present in all the disjunctions on key parts earlier in the compound index, Loose Index Scan returned an incorrect result. (Bug #71097, Bug #17909656)

  • File permissions and line endings of several test and configuration files were made more consistent to avoid warnings from package checkers. (Bug #68521, Bug #16415173, Bug #16395459, Bug #68517, Bug #16415032, Bug #71112, Bug #17919313, Bug #71113, Bug #17919422)

  • For a view defined on a UNION, the server could create an invalid view definition. (Bug #65388, Bug #14117018, Bug #72018, Bug #18405221)