Released on 20 May 2009
MySQL 5.0.82 Changelog

This section documents all changes and bugfixes that have been applied since the last MySQL Enterprise Server and MySQL Community Server release (5.0.80). If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Enterprise (a commercial MySQL offering). For more details please see

Bugs Fixed

  • Performance: InnoDB uses random numbers to generate dives into indexes for calculating index cardinality. However, under certain conditions, the algorithm did not generate random numbers, so ANALYZE TABLE did not update cardinality estimates properly. A new algorithm has been introduced with better randomization properties, together with a system variable, innodb_use_legacy_cardinality_algorithm, that controls which algorithm to use. The default value of the variable is 1 (ON), to use the original algorithm for compatibility with existing applications. The variable can be set to 0 (OFF) to use the new algorithm with improved randomness. (Bug #43660)

  • Replication: Restarting the replication slave—either by using STOP SLAVE plus START SLAVE, or by restarting the slave mysqld process—could sometimes cause the slave to crash when using a debug version of the server. (Bug #38694)

  • Replication: Killing the thread executing a DDL statement, after it had finished its execution but before it had written the binary log event, caused the error code in the binary log event to be set (incorrectly) to ER_SERVER_SHUTDOWN or ER_QUERY_INTERRUPTED, which caused replication to fail. (Bug #37145)

    References: See also Bug #27571, Bug #22725.

  • Replication: Column aliases used inside subqueries were ignored in the binary log. (Bug #35515)

  • Replication: The statements DROP PROCEDURE IF EXISTS and DROP FUNCTION IF EXISTS were not written to the binary log if the procedure or function to be dropped did not exist. (Bug #13684)

    References: See also Bug #25705.

  • Use of HANDLER statements with INFORMATION_SCHEMA tables caused a server crash. Now HANDLER is prohibited with such tables. (Bug #44151)

  • myisamchk could display a negative Max keyfile length value. (Bug #43950)

  • mysqld_multi incorrectly passed --no-defaults to mysqld_safe. (Bug #43876)

  • On Windows, a server crash occurred for attempts to insert a floating-point value into a CHAR column with a maximum length less than the converted floating-point value length. (Bug #43833)

  • UNION of floating-point numbers did unnecessary rounding. (Bug #43432)

  • Certain statements might open a table and then wait for an impending global read lock without noticing whether they hold a table being waiting for by the global read lock, causing a hang. Affected statements are SELECT ... FOR UPDATE, LOCK TABLES ... WRITE, TRUNCATE TABLE, and LOAD DATA INFILE. (Bug #43230)

  • The InnoDB btr_search_drop_page_hash_when_freed() function had a race condition. (Bug #42279)

  • Compressing a table with the myisampack utility caused the server to produce Valgrind warnings when it opened the table. (Bug #41541)

  • For a MyISAM table with DELAY_KEY_WRITE enabled, the index file could be corrupted without the table being marked as crashed if the server was killed. (Bug #41330)

  • Multiple-table UPDATE statements did not properly activate triggers. (Bug #39953)

  • The functions listed in MySQL-Specific Functions That Create Geometry Values, previously accepted WKB arguments and returned WKB values. They now accept WKB or geometry arguments and return geometry values.

    The functions listed in Functions That Create Geometry Values from WKB Values, previously accepted WKB arguments and returned geometry values. They now accept WKB or geometry arguments and return geometry values. (Bug #38990)

  • An UPDATE statement that updated a column using the same DES_ENCRYPT() value for each row actually updated different rows with different values. (Bug #35087)

  • For shared-memory connections, the read and write methods did not properly handle asynchronous close events, which could lead to the client locking up waiting for a server response. For example, a call to mysql_real_query() would block forever on the client side if the executed statement was aborted on the server side. Thanks to Armin Schöffmann for the bug report and patch. (Bug #33899)

  • CHECKSUM TABLE was not killable with KILL QUERY. (Bug #33146)

  • myisamchk and myisampack were not being linked with the library that enabled support for * file name pattern expansion. (Bug #29248)

  • COMMIT did not delete savepoints if there were no changes in the transaction. (Bug #26288)

  • Several memory allocation functions were not being checked for out-of-memory return values. (Bug #25058)