Documentation Home
MySQL 5.0 Release Notes
Related Documentation Download these Release Notes
PDF (US Ltr) - 2.1Mb
PDF (A4) - 2.1Mb
EPUB - 0.6Mb

MySQL 5.0 Release Notes  /  Changes in MySQL 5.0.23 (Not released)

Changes in MySQL 5.0.23 (Not released)

MySQL 5.0.23 was never officially released.

This section documents all changes and bug fixes that have been applied since the last official MySQL release. 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 (

Functionality Added or Changed

  • Incompatible Change: For GRANT and REVOKE, ON * previously granted and revoked privileges for the default database if there was a default database and global privileges if there was none. Now ON * requires a default database and produces an error if there is none.

  • Important Change; MySQL Cluster: The status variables Ndb_connected_host and Ndb_connected_port were renamed to Ndb_config_from_host and Ndb_config_from_port, respectively.

  • MySQL Cluster: The limit of 2048 ordered indexes per cluster has been lifted. There is now no upper limit on the number of ordered indexes (including AUTO_INCREMENT columns) that may be used. (Bug #14509)

  • The mysqldumpslow script has been moved from client RPM packages to server RPM packages. This corrects a problem where mysqldumpslow could not be used with a client-only RPM install, because it depends on my_print_defaults which is in the server RPM. (Bug #20216)

  • Added the log_queries_not_using_indexes system variable. (Bug #19616)

  • Added the ssl_ca, ssl_capath, ssl_cert, ssl_cipher, and ssl_key system variables, which display the values given using the corresponding command options. See SSL Command Options. (Bug #19606)

  • SQL syntax for prepared statements now supports ANALYZE TABLE, OPTIMIZE TABLE, and REPAIR TABLE. (Bug #19308)

  • For a table with an AUTO_INCREMENT column, SHOW CREATE TABLE now shows the next AUTO_INCREMENT value to be generated. (Bug #19025)

  • The ONLY_FULL_GROUP_BY SQL mode now also applies to the HAVING clause. That is, columns not named in the GROUP BY clause cannot be used in the HAVING clause if not used in an aggregate function. (Bug #18739)

  • Added the --set-charset option to mysqlbinlog to enable the character set to be specified for processing binary log files. (Bug #18351)

  • The bundled yaSSL library was upgraded to version 1.3.5. This improves handling of certain problems with SSL-related command options. (Bug #17737)

  • Added the --ssl-verify-server-cert option to MySQL client programs. This option causes the server's Common Name value in its certificate to be verified against the host name used when connecting to the server, and the connection is rejected if there is a mismatch. Added MYSQL_OPT_SSL_VERIFY_SERVER_CERT option for the mysql_options() C API function to enable this verification. This feature can be used to prevent man-in-the-middle attacks. Verification is disabled by default. (Bug #17208)

  • It is now possible to use NEW.var_name values within triggers as INOUT parameters to stored procedures. (Bug #14635)

  • Added the --angel-pid-file option to mysqlmanager for specifying the file in which the angel process records its process ID when mysqlmanager runs in daemon mode. (Bug #14106)

  • The mysql_upgrade command has been converted from a shell script to a C program, so it is available on non-Unix systems such as Windows. This program should be run for each MySQL upgrade. See mysql_upgrade — Check Tables for MySQL Upgrade.

  • Binary distributions that include SSL support now are built using yaSSL when possible.

  • The mysql_get_ssl_cipher() C API function was added.

Bugs Fixed

  • Security Fix: A NUL byte within a comment in a statement string caused the rest of the string not to be written to the query log, permitting logging to be bypassed. (Bug #17667, CVE-2006-0903)

  • MySQL Cluster: The ndb_mgm client command ALL CLUSTERLOG STATISTICS=15 had no effect. (Bug #20336)

  • MySQL Cluster: The failure of a data node when preparing to commit a transaction (that is, while the node's status was CS_PREPARE_TO_COMMIT) could cause the failure of other cluster data nodes. (Bug #20185)

  • MySQL Cluster: An internal formatting error caused some management client error messages to be unreadable. (Bug #20016)

  • MySQL Cluster: Renaming a table in such a way as to move it to a different database failed to move the table's indexes. (Bug #19967)

  • MySQL Cluster: Running management client commands while mgmd was in the process of disconnecting could cause the management server to fail. (Bug #19932)

  • MySQL Cluster: Running ALL START in the NDB management client or restarting multiple nodes simultaneously could under some circumstances cause the cluster to crash. (Bug #19930)

  • MySQL Cluster: TEXT columns in Cluster tables having both an explicit primary key and a unique key were not correctly updated by REPLACE statements. (Bug #19906)

  • MySQL Cluster: The cluster's data nodes failed while trying to load data when NoOfFrangmentLogFiles was set equal to 1. (Bug #19894)

  • MySQL Cluster: Restoring a backup with ndb_restore failed when the backup had been taken from a cluster whose DataMemory had been completely used up. (Bug #19852)

  • MySQL Cluster: Resources for unique indexes on Cluster table columns were incorrectly allocated, so that only one-fourth as many unique indexes as indicated by the value of UniqueHashIndexes could be created. (Bug #19623)

  • MySQL Cluster: LOAD DATA LOCAL failed to ignore duplicate keys in Cluster tables. (Bug #19496)

  • MySQL Cluster: For ndb_mgmd, Valgrind revealed problems with a memory leak and a dependency on an uninitialized variable. (Bug #19318, Bug #20333)

  • MySQL Cluster: A problem with error handling when ndb_use_exact_count was enabled could lead to incorrect values returned from queries using COUNT(). A warning is now returned in such cases. (Bug #19202)

  • MySQL Cluster: TRUNCATE TABLE failed on tables having BLOB or TEXT columns with the error Lock wait timeout exceeded. (Bug #19201)

  • MySQL Cluster: started NDB even for test cases that did not need it. (Bug #19083)

  • MySQL Cluster: Stopping multiple nodes could cause node failure handling not to be completed. (Bug #19039)

  • MySQL Cluster: The management client ALL STOP command shut down mgmd processes (as well as ndbd processes). (Bug #18966)

  • MySQL Cluster: TRUNCATE TABLE failed to reset the AUTO_INCREMENT counter. (Bug #18864)

  • MySQL Cluster: Repeated CREATE - INSERT - DROP operations on tables could in some circumstances cause the MySQL table definition cache to become corrupt, so that some mysqld processes could access table information but others could not. (Bug #18595)

  • MySQL Cluster: Repeated use of the SHOW and ALL STATUS commands in the ndb_mgm client could cause the mgmd process to crash. (Bug #18591)

  • MySQL Cluster: ndbd sometimes failed to start with the error Node failure handling not completed following a graceful restart. (Bug #18550)

  • MySQL Cluster: Backups could fail for large clusters with many tables, where the number of tables approached MaxNoOfTables. (Bug #17607)

  • MySQL Cluster: An issue with ndb_mgmd prevented more than 27 mysqld processes from connecting to a single cluster at one time. (Bug #17150)

  • MySQL Cluster: Using stale mysqld .frm files could cause a newly restored cluster to fail. This situation could arise when restarting a MySQL Cluster using the --initial option while leaving connected mysqld processes running. (Bug #16875)

  • MySQL Cluster: Data node failures could cause excessive CPU usage by ndb_mgmd. (Bug #13987)

  • MySQL Cluster: Cluster system status variables were not updated properly. (Bug #11459)

  • MySQL Cluster: Some queries having a WHERE clause of the form c1=val1 OR c2 LIKE 'val2' were not evaluated correctly. (Bug #17421)

  • MySQL Cluster: (NDBAPI): Update operations on blobs were not checked for illegal operations.


    Read locks with blob update operations are now upgraded from read committed to read shared.

  • Replication: Valgrind revealed an issue with mysqld that was corrected: memory corruption in replication slaves when switching databases. (Bug #19022)

  • Replication: The binary log would create an incorrect DROP query when creating temporary tables during replication. (Bug #17263)

  • Replication: An invalid GRANT statement for which Ok was returned on a replication master caused an error on the slave and replication to fail. (Bug #6774)

  • Cluster API: On big-endian platforms, NdbOperation::write_attr() did not update 32-bit fields correctly. (Bug #19537)

  • A buffer overwrite error in Instance Manager caused a crash. (Bug #20622)

  • On Windows, temporary tables containing : in the name could not be created. (Bug #20616)

  • Valgrind revealed several issues with mysqld that were corrected: A dangling stack pointer being overwritten; possible uninitialized data in a string comparison; syscall() write parameter pointing to an uninitialized byte. (Bug #20579, Bug #20769, Bug #20783, Bug #20791)

  • The fill_help_tables.sql file did not contain a SET NAMES 'utf8' statement to indicate its encoding. This caused problems for some settings of the MySQL character set such as big5. (Bug #20551)

  • The fill_help_tables.sql file did not load properly if the ANSI_QUOTES SQL mode was enabled. (Bug #20542)

  • mysql_upgrade was missing from binary MySQL distributions. (Bug #20403, Bug #18516, Bug #20556)

  • Several aspects of view privileges were being checked incorrectly. (Bug #20363, Bug #18681)

  • Queries using an indexed column as the argument for the MIN() and MAX() functions following an ALTER TABLE .. DISABLE KEYS statement returned Got error 124 from storage engine until ALTER TABLE ... ENABLE KEYS was run on the table. (Bug #20357)

  • The thread for INSERT DELAYED rows was maintaining a separate AUTO_INCREMENT counter, resulting in incorrect values being assigned if DELAYED and non-DELAYED inserts were mixed. (Bug #20195)

  • On Linux, libmysqlclient when compiled with yaSSL using the icc compiler had a spurious dependency on C++ libraries. (Bug #20119)

  • A number of dependency issues in the RPM bench and test packages caused installation of these packages to fail. (Bug #20078)

  • A compatibility issue with NPTL (Native POSIX Thread Library) on Linux could result in a deadlock with FLUSH TABLES WITH READ LOCK under some conditions. (Bug #20048)

  • Some outer joins were incorrectly converted to inner joins. (Bug #19816)

    References: This bug was introduced by Bug #17146.

  • CREATE DATABASE, RENAME DATABASE, and DROP DATABASE could deadlock in cases where there was a global read lock. (Bug #19815)

  • The WITH CHECK OPTION was not enforced when a REPLACE statement was executed against a view. (Bug #19789)

  • Multiple-table updates with FEDERATED tables could cause a server crash. (Bug #19773)

  • InnoDB unlocked its data directory before committing a transaction, potentially resulting in nonrecoverable tables if a server crash occurred before the commit. (Bug #19727)

  • Subqueries that produced a BIGINT UNSIGNED value were being treated as returning a signed value. (Bug #19700)

  • GROUP BY on an expression that contained a cast to DECIMAL produced an incorrect result. (Bug #19667)

  • MERGE tables did not work reliably with BIT columns. (Bug #19648)

  • Re-execution of a prepared multiple-table DELETE statement that involves a trigger or stored function can result in a server crash. (Bug #19634)

  • The range operator failed and caused a server crash for clauses of the form tbl_name.unsigned_keypart NOT IN (negative_const, ...). (Bug #19618)

  • CHECK TABLE on a MyISAM table briefly cleared its AUTO_INCREMENT value, while holding only a read lock. Concurrent inserts to that table could use the wrong AUTO_INCREMENT value. CHECK TABLE no longer modifies the AUTO_INCREMENT value. (Bug #19604)

  • Using CONCAT(@user_var, col_name), where col_name is a column in an INFORMATION_SCHEMA table, could cause erroneous duplication of data in the query result. (Bug #19599)

  • Some yaSSL public function names conflicted with those from OpenSSL, causing conflicts for applications that linked against both OpenSSL and a version of libmysqlclient that was built with yaSSL support. The yaSSL public functions now are renamed to avoid this conflict. (Bug #19575)

  • A view definition that referred to an alias in the HAVING clause could be saved in the .frm file with the alias replaced by the expression that it referred to, causing failure of subsequent SELECT * FROM view_name statements. (Bug #19573)

  • mysql displayed NULL for strings that are empty or contain only spaces. (Bug #19564)

  • InnoDB failed to increment the handler_read_prev counter. (Bug #19542)

  • Selecting from a view that used GROUP BY on a nonconstant temporal interval (such as DATE(col) + INTERVAL TIME_TO_SEC(col) SECOND could cause a server crash. (Bug #19490)

  • mysqldump did not dump the table name correctly for some table identifiers that contained unusual characters such as :. (Bug #19479)

  • On 64-bit Windows systems, REGEXP for regular expressions with exactly 31 characters did not work. (Bug #19407)

  • An outer join of two views that was written using { OJ ... } syntax could cause a server crash. (Bug #19396)

  • Race conditions on certain platforms could cause the Instance Manager to fail to initialize. (Bug #19391)

  • Use of the --no-pager option caused mysql to crash. (Bug #19363)

  • In the INFORMATION_SCHEMA.COLUMNS table, the values for the CHARACTER_MAXIMUM_LENGTH and CHARACTER_OCTET_LENGTH columns were incorrect for multibyte character sets. (Bug #19236)

  • Multiple-table DELETE statements containing a subquery that selected from one of the tables being modified caused a server crash. (Bug #19225)

  • On Windows, removal of binary log files failed if the files were already open. (Bug #19208)

  • Flushing the compression buffer (via FLUSH TABLE) no longer increases the size of an unmodified ARCHIVE table. (Bug #19204)

  • An ALTER TABLE operation that does not need to copy data, when executed on a table created prior to MySQL 4.0.25, could result in a server crash for subsequent accesses to the table. (Bug #19192)

  • SSL connections using yaSSL on OpenBSD could fail. (Bug #19191)

  • Attempting to set the default value of an ENUM or SET column to NULL caused a server crash. (Bug #19145)

  • Use of uninitialized user variables in a subquery in the FROM clause resulted in invalid entries in the binary log. (Bug #19136)

  • A CREATE TABLE statement that created a table from a materialized view did not inherit default values from the underlying table. (Bug #19089)

  • Index prefixes for utf8 VARCHAR columns did not work for UPDATE statements. (Bug #19080)

  • Premature optimization of nested subqueries in the FROM clause that refer to aggregate functions could lead to incorrect results. (Bug #19077)

  • The parser leaked memory when its stack needed to be extended. (Bug #18930)

  • BIT columns in a table could cause joins that use the table to fail. (Bug #18895)

  • The MySQL server startup script /etc/init.d/mysql (created from mysql.server) is now marked to ensure that the system services ypbind, nscd, ldap, and NTP are started first (if these are configured on the machine). (Bug #18810)

  • The COM_STATISTICS command was changed in 5.0.3 to display session status variable values rather than global values. This causes mysqladmin status information not to be useful for the Slow queries and Opens values. Now COM_STATISTICS displays the global values for Slow queries and Opens. (Bug #18669)

  • LOAD DATA FROM MASTER failed when trying to load the INFORMATION_SCHEMA database from the master, because the INFORMATION_SCHEMA system database would already exist on the slave. (Bug #18607)

  • BLOB or TEXT arguments to or values returned from stored functions were not copied properly if too long and could become garbled. (Bug #18587)

  • The IN-to-EXISTS transformation was making a reference to a parse tree fragment that was left out of the parse tree. This caused problems with prepared statements. (Bug #18492)

  • mysqldump produced garbled output for view definitions. (Bug #18462)

  • The configuration information for building the embedded server on Windows was missing a file. (Bug #18455)

  • In mysqltest, --sleep=0 had no effect. Now it correctly causes sleep commands in test case files to sleep for 0 seconds. (Bug #18312)

  • INFORMATION_SCHEMA.TABLES provided inconsistent info about invalid views. This could cause server crashes or result in incorrect data being returned for queries that attempt to obtain information from INFORMATION_SCHEMA tables about views using stored functions. (Bug #18282)

  • On Windows, corrected a crash stemming from differences in Visual C runtime library routines from POSIX behavior regarding invalid file descriptors. (Bug #18275)

  • On Windows, terminating mysqld with Control+C could result in a crash during shutdown. (Bug #18235)

  • Selecting data from a MEMORY table with a VARCHAR column and a HASH index over it returned only the first row matched. (Bug #18233)

  • The use of MIN() and MAX() on columns with an index prefix produced incorrect results in some queries. (Bug #18206)

  • An entry in the mysql.proc table with an empty routine name caused access to the INFORMATION_SCHEMA.ROUTINES table to crash the server. (Bug #18177)

  • A UNION over more than 128 SELECT statements that use an aggregate function failed. (Bug #18175)

  • Updates to a MEMORY table caused the size of BTREE indexes for the table to increase. (Bug #18160)

  • SELECT DISTINCT queries sometimes returned only the last row. (Bug #18068)

  • Returning the value of a system variable from a stored function caused a server crash. (Bug #18037)

  • An update that used a join of a table to itself and modified the table on both sides of the join reported the table as crashed. (Bug #18036)

  • Race conditions on certain platforms could cause the Instance Manager to try to restart the same instance multiple times. (Bug #18023)

  • For a reference to a nonexistent index in FORCE INDEX, the error message referred to a column, not an index. (Bug #17873)

  • The sql_big_selects system variable was not displayed by SHOW VARIABLES. (Bug #17849)

  • REPAIR TABLE did not restore the length for packed keys in tables created under MySQL 4.x, which caused them to appear corrupt to CHECK TABLE but not to REPAIR TABLE. (Bug #17810)

  • Results from INFORMATION_SCHEMA.SCHEMATA could contain uppercase information when lower_case_table_names was not 0. (Bug #17661)

  • CREATE TABLE ... SELECT did not always produce the proper column default value in TRADITIONAL SQL mode. (Bug #17626)

  • A range access optimizer heuristic was invalid, causing some queries to be much slower in MySQL 5.0 than in 4.0. (Bug #17379, Bug #18940)

  • mysqldump would not dump views that had become invalid because a table named in the view definition had been dropped. Instead, it quit with an error message. Now you can specify the --force option to cause mysqldump to keep going and write an SQL comment containing the view definition to the dump output. (Bug #17371)

  • The --core-file-size option for mysqld_safe was effective only for root. (Bug #17353)

  • On Windows, multiple clients simultaneously attempting to perform ALTER TABLE operations on an InnoDB table could deadlock. (Bug #17264)

  • Revised memory allocation for local objects within stored functions and triggers to avoid memory leak for repeated function or trigger invocation. (Bug #17260)

  • Multiple calls to a stored procedure that selects from INFORMATION_SCHEMA could cause a server crash. (Bug #17204)

  • Views created from prepared statements inside of stored procedures were created with a definition that included both SQL_CACHE and SQL_NO_CACHE. (Bug #17203)

  • mysqldump wrote an extra pair of DROP DATABASE and CREATE DATABASE statements if run with the --add-drop-database option and the database contained views. (Bug #17201)

  • A Table ... doesn't exist error could occur for statements that called a function defined in another database. (Bug #17199)

  • For certain CREATE TABLE ... SELECT statements, the selected values were truncated when inserted into the new table. (Bug #17048)

  • ALTER TABLE on a table created prior to 5.0.3 would cause table corruption if the ALTER TABLE did one of the following:

    • Change the default value of a column.

    • Change the table comment.

    • Change the table password.

    (Bug #17001)

  • MyISAM table deadlock was possible if one thread issued a LOCK TABLES request for write locks and then an administrative statement such as OPTIMIZE TABLE, if between the two statements another client meanwhile issued a multiple-table SELECT for some of the locked tables. (Bug #16986)

  • Symlinking .mysql_history to /dev/null to suppress statement history saving by mysql did not work. (mysql deleted the symlink and recreated .mysql_history as a regular file, and then wrote history to it.) (Bug #16803)

  • Concatenating the results of multiple constant subselects produced incorrect results. (Bug #16716)

  • Privilege checking on the contents of the INFORMATION_SCHEMA.VIEWS table was insufficiently restrictive. (Bug #16681)

  • mysqlcheck tried to check views instead of ignoring them. (Bug #16502)

  • IS_USED_LOCK() could return an incorrect connection identifier. (Bug #16501)

  • Concurrent reading and writing of privilege structures could crash the server. (Bug #16372)

  • Grant table modifications sometimes did not refresh the in-memory tables if the host name was '' or not specified. (Bug #16297)

  • The sql_notes and sql_warnings system variables were not always displayed correctly by SHOW VARIABLES (for example, they were displayed as ON after being set to OFF). (Bug #16195)

  • The max_length metadata value for columns created from CONCAT() could be incorrect when the collation of an argument differed from the collation of the CONCAT() itself. In some contexts such as UNION, this could lead to truncation of the column contents. (Bug #15962)

  • The server no longer uses a signal handler for signal 0 because it could cause a crash on some platforms. (Bug #15869)

  • InnoDB does not support SPATIAL indexes, but did not prevent creation of such an index. (Bug #15860)

  • Long multiple-row INSERT statements could take a very long time for some multibyte character sets. (Bug #15811)

  • The system_time_zone and version_* system variables could not be accessed using SELECT @@var_name syntax. (Bug #15684, Bug #12792)

  • EXPLAIN ... SELECT INTO caused the client to hang. (Bug #15463)

  • Nested natural joins worked executed correctly when executed as a nonprepared statement could fail with an Unknown column 'col_name' in 'field list' error when executed as a prepared statement, due to a name resolution problem. (Bug #15355)

  • The MD5() and SHA() functions treat their arguments as case-sensitive strings. But when they are compared, their arguments were compared as case-insensitive strings, which leads to two function calls with different arguments (and thus different results) compared as being identical. This can lead to a wrong decision made in the range optimizer and thus to an incorrect result set. (Bug #15351)

  • Invalid escape sequences in option files caused MySQL programs that read them to abort. (Bug #15328)

  • Re-executing a stored procedure with a complex stored procedure cursor query could lead to a server crash. (Bug #15217)

  • CREATE TABLE ... SELECT ... statements that used a stored function explicitly or implicitly (through a view) resulted in a Table not locked error. (Bug #15137, Bug #12472)

  • An invalid comparison between keys with index prefixes over multibyte character fields could lead to incorrect result sets if the selected query execution plan used a range scan by an index prefix over a UTF8 character field. This also caused incorrect results under similar circumstances with many other character sets. (Bug #14896)

  • A view with a nonexistent account in the DEFINER clause caused SHOW CREATE VIEW to fail. Now SHOW CREATE VIEW issues a warning instead. (Bug #14875)

  • For BOOLEAN mode full-text searches on nonindexed columns, NULL rows generated by a LEFT JOIN caused incorrect query results. (Bug #14708, Bug #25637)

  • SHOW CREATE TABLE did not display the AUTO_INCREMENT column attribute if the SQL mode was MYSQL323 or MYSQL40. This also affected mysqldump, which uses SHOW CREATE TABLE to get table definitions. (Bug #14515)

  • Some queries were slower in 5.0 than in 4.1 because some 4.1 cost-evaluation code had not been merged into 5.0. (Bug #14292)

  • The binary log lacked character set information for table names when dropping temporary tables. (Bug #14157)

  • The result from CONV() is a string, but was not always treated the same way as a string when converted to a real value for an arithmetic operation. (Bug #13975)

  • RPM packages had spurious dependencies on Perl modules and other programs. (Bug #13634)

  • REPLACE statements caused activation of UPDATE triggers, not DELETE and INSERT triggers. (Bug #13479)

  • With settings of read_buffer_size >= 2G and read_rnd_buffer_size >=2G, LOAD DATA INFILE failed with no error message or caused a server crash for files larger than 2GB. (Bug #12982)

  • A B-TREE index on a MEMORY table erroneously reported duplicate entry error for multiple NULL values. (Bug #12873)

  • Use of CONVERT_TZ() in a stored function or trigger (or in a stored procedure called from a stored function or trigger) caused an error. (Bug #11081)

  • LOAD_FILE() returned an error if the file did not exist, rather than NULL as it should according to the manual. (Bug #10418)

  • When myisamchk needed to rebuild a table, AUTO_INCREMENT information was lost. (Bug #10405)

  • For certain CREATE VIEW statements, the server did not detect invalid subqueries within the SELECT part. (Bug #7549)

  • Within a trigger, SET statements used the SQL mode of the invoking statement, not the mode in effect at trigger creation time. (Bug #6951)

  • Some queries that used ORDER BY and LIMIT performed quickly in MySQL 3.23, but slowly in MySQL 4.x/5.x due to an optimizer problem. (Bug #4981)

  • The basedir and tmpdir system variables could not be accessed using @@var_name syntax. (Bug #1039)

Download these Release Notes
PDF (US Ltr) - 2.1Mb
PDF (A4) - 2.1Mb
EPUB - 0.6Mb