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 Enterprise 5.0.60 [MRU] (2008-04-28)

Changes in MySQL Enterprise 5.0.60 [MRU] (2008-04-28)

This is a Monthly Rapid Update release of the MySQL Enterprise Server 5.0.

This section documents all changes and bugfixes that have been applied since the last MySQL Enterprise Server release (5.0.58). 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

  • For binary .tar.gz packages, mysqld and other binaries now are compiled with debugging symbols included to enable easier use with a debugger. If you do not need debugging symbols and are short on disk space, you can use strip to remove the symbols from the binaries. (Bug #33252)

Bugs Fixed

  • Security Fix; Important Change: It was possible to circumvent privileges through the creation of MyISAM tables employing the DATA DIRECTORY and INDEX DIRECTORY options to overwrite existing table files in the MySQL data directory. Use of the MySQL data directory in DATA DIRECTORY and INDEX DIRECTORY path name is no longer permitted.


    Additional fixes were made in MySQL 5.0.70.

    (Bug #32167, CVE-2008-2079)

    References: See also Bug #39277.

  • Incompatible Change: It was possible to use FRAC_SECOND as a synonym for MICROSECOND with DATE_ADD(), DATE_SUB(), and INTERVAL; now, using FRAC_SECOND with anything other than TIMESTAMPADD() or TIMESTAMPDIFF() produces a syntax error.

    It is now possible (and preferable) to use MICROSECOND with TIMESTAMPADD() and TIMESTAMPDIFF(), and FRAC_SECOND is now deprecated. (Bug #33834)

  • Important Change: The server handled truncation of values having excess trailing spaces into CHAR, VARCHAR, and TEXT columns in different ways. This behavior has now been made consistent for columns of all three of these types, and now follows the existing behavior of VARCHAR columns in this regard; that is, a Note is always issued whenever such truncation occurs.

    This change does not affect columns of these three types when using a binary encoding; BLOB columns are also unaffected by the change, since they always use a binary encoding. (Bug #30059)

  • Replication: insert_id was not written to the binary log for inserts into BLACKHOLE tables. (Bug #35178)

  • Replication: The character sets and collations used for constant identifiers in stored procedures were not replicated correctly. (Bug #34289)

  • Replication: An extraneous ROLLBACK statement was written to the binary log by a connection that did not use any transactional tables. (Bug #33329)

  • Replication: When a stored routine or trigger, running on a master that used MySQL 5.0 or MySQL 5.1.11 or earlier, performed an insert on an AUTO_INCREMENT column, the insert_id value was not replicated correctly to a slave running MySQL 5.1.12 or later (including any MySQL 6.0 release). (Bug #33029)

    References: See also Bug #19630.

  • Replication: STOP SLAVE did not stop connection attempts properly. If the I/O slave thread was attempting to connect, STOP SLAVE waited for the attempt to finish, sometimes for a long period of time, rather than stopping the slave immediately. (Bug #31024)

    References: See also Bug #30932.

  • Replication: MASTER_POS_WAIT() did not return NULL when the server was not a slave. (Bug #26622)

  • Replication: The nonspecific error message Wrong parameters to function register_slave resulted when START SLAVE failed to register on the master due to excess length of any the slave server options --report-host, --report-user, or --report-password. An error message specific to each of these options is now returned in such cases. The new error messages are:

    • Failed to register slave: too long 'report-host'

    • Failed to register slave: too long 'report-user'

    • Failed to register slave; too long 'report-password'

    (Bug #22989)

    References: See also Bug #19328.

  • Replication: PURGE BINARY LOGS TO and PURGE BINARY LOGS BEFORE did not handle missing binary log files correctly or in the same way. Now for both of these statements, if any files listed in the .index file are missing from the file system, the statement fails with an error. (Bug #18199, Bug #18453)

  • Replication: START SLAVE UNTIL MASTER_LOG_POS=position issued on a slave that was using --log-slave-updates and that was involved in circular replication would cause the slave to run and stop one event later than that specified by the value of position. (Bug #13861)

  • On Windows, the installer attempted to use JScript to determine whether the target data directory already existed. On Windows Vista x64, this resulted in an error because the installer was attempting to run the JScript in a 32-bit engine, which wasn't registered on Vista. The installer no longer uses JScript but instead relies on a native WiX command. (Bug #36103)

  • There was a memory leak when connecting to a FEDERATED table using a connection string that had a host value of localhost or omitted the host and a port value of 0 or omitted the port. (Bug #35509)

  • Using LOAD DATA INFILE with a view could crash the server. (Bug #35469)

  • When a view containing a reference to DUAL was created, the reference was removed when the definition was stored, causing some queries against the view to fail with invalid SQL syntax errors. (Bug #35193)

  • Debugging symbols were missing for some executables in Windows binary distributions. (Bug #35104)

  • A query that performed a ref_or_null join where the second table used a key having one or columns that could be NULL and had a column value that was NULL caused the server to crash. (Bug #34945)

    References: This bug was introduced by Bug #12144.

  • Some binaries produced stack corruption messages due to being built with versions of bison older than 2.1. Builds are now created using bison 2.3. (Bug #34926)

  • mysqldump failed to return an error code when using the --master-data option without binary logging being enabled on the server. (Bug #34909)

  • Under some circumstances, the value of mysql_insert_id() following a SELECT ... INSERT statement could return an incorrect value. This could happen when the last SELECT ... INSERT did not involve an AUTO_INCREMENT column, but the value of mysql_insert_id() was changed by some previous statements. (Bug #34889)

  • Table and database names were mixed up in some places of the subquery transformation procedure. This could affect debugging trace output and further extensions of that procedure. (Bug #34830)

  • A malformed URL used for a FEDERATED table's CONNECTION option value in a CREATE TABLE statement was not handled correctly and could crash the server. (Bug #34788)

  • Queries such as SELECT ROW(1, 2) IN (SELECT t1.a, 2) FROM t1 GROUP BY t1.a (combining row constructors and subqueries in the FROM clause) could lead to assertion failure or unexpected error messages. (Bug #34763)

  • Using NAME_CONST() with a negative number and an aggregate function caused MySQL to crash. This could also have a negative impact on replication. (Bug #34749)

  • A memory-handling error associated with use of GROUP_CONCAT() in subqueries could result in a server crash. (Bug #34747)

  • For an indexed integer column col_name and a value N that is one greater than the maximum value permitted for the data type of col_name, conditions of the form WHERE col_name < N failed to return rows where the value of col_name is N - 1. (Bug #34731)

  • Executing a TRUNCATE TABLE statement on a table having both a foreign key reference and a DELETE trigger crashed the server. (Bug #34643)

  • Some subqueries using an expression that included an aggregate function could fail or in some cases lead to a crash of the server. (Bug #34620)

  • A server crash could occur if INFORMATION_SCHEMA tables built in memory were swapped out to disk during query execution. (Bug #34529)

  • CAST(AVG(arg) AS DECIMAL) produced incorrect results for non-DECIMAL arguments. (Bug #34512)

  • Under some conditions, a SET GLOBAL innodb_commit_concurrency or SET GLOBAL innodb_autoextend_increment statement could fail. (Bug #34223)

    References: This bug is a regression of Bug #31177.

  • mysqldump attempts to set the character_set_results system variable after connecting to the server. This failed for pre-4.1 servers that have no such variable, but mysqldump did not account for this and 1) failed to dump database contents; 2) failed to produce any error message alerting the user to the problem. (Bug #34192)

  • For a FEDERATED table with an index on a nullable column, accessing the table could crash a server, return an incorrect result set, or return ERROR 1030 (HY000): Got error 1430 from storage engine. (Bug #33946)

  • A query using WHERE (column1='string1' AND column2=constant1) OR (column1='string2' AND column2=constant2), where col1 used a binary collation and string1 matched string2 except for case, failed to match any records even when matches were found by a query using the equivalent clause WHERE column2=constant1 OR column2=constant2. (Bug #33833)

  • Reuse of prepared statements could cause a memory leak in the embedded server. (Bug #33796)

  • Some queries using a combination of IN, CONCAT(), and an implicit type conversion could return an incorrect result. (Bug #33764)

  • In some cases a query that produced a result set when using ORDER BY ASC did not return any results when this was changed to ORDER BY DESC. (Bug #33758)

  • Disabling concurrent inserts caused some cacheable queries not to be saved in the query cache. (Bug #33756)

  • Certain combinations of views, subselects with outer references and stored routines or triggers could cause the server to crash. (Bug #33389)

  • SLEEP(0) failed to return on 64-bit Mac OS X due to a bug in pthread_cond_timedwait(). (Bug #33304)

  • Granting the UPDATE privilege on one column of a view caused the server to crash. (Bug #33201)

  • Under some circumstances a combination of aggregate functions and GROUP BY in a SELECT query over a view could lead to incorrect calculation of the result type of the aggregate function. This in turn could lead to incorrect results, or to crashes on debug builds of the server. (Bug #33049)

  • For DISTINCT queries, MySQL 4.0 and 4.1 stopped reading joined tables as soon as the first matching row was found. However, this optimization was lost in MySQL 5.0, which instead read all matching rows. This fix for this regression may result in a major improvement in performance for DISTINCT queries in cases where many rows match. (Bug #32942)

  • Incorrect assertions could cause a server crash for DELETE triggers for transactional tables. (Bug #32790)

  • Inserting strings with a common prefix into a table that used the ucs2 character set corrupted the table. (Bug #32705)

  • Queries using LIKE on tables having indexed CHAR columns using either of the eucjpms or ujis character sets did not return correct results. (Bug #32510)

  • Queries testing numeric constants containing leading zeros against ZEROFILL columns were not evaluated correctly. (Bug #31887)

  • If an error occurred during file creation, the server sometimes did not remove the file, resulting in an unused file in the file system. (Bug #31781)

  • The server returned the error message Out of memory; restart server and try again when the actual problem was that the sort buffer was too small. Now an appropriate error message is returned in such cases. (Bug #31590)

  • A data file required for the ndb_restore_different_endian_data test case was missing from binary distributions, causing the test to fail. The data file now is included. (Bug #31453, Bug #11747239)

  • When sorting privilege table rows, the server treated escaped wildcard characters (\% and \_) the same as unescaped wildcard characters (% and _), resulting in incorrect row ordering. (Bug #31194)

  • On Windows, SHOW PROCESSLIST could display process entries with a State value of *** DEAD ***. (Bug #30960)

  • If an alias was used to refer to the value returned by a stored function within a subselect, the outer select recognized the alias but failed to retrieve the value assigned to it in the subselect. (Bug #30787)

    References: This bug is a regression of Bug #20777.

  • Binary logging for a stored procedure differed depending on whether or not execution occurred in a prepared statement. (Bug #30604)

  • An orphaned PID file from a no-longer-running process could cause mysql.server to wait for that process to exit even though it does not exist. (Bug #30378)

  • The mysql_config command would output CFLAGS values that were incompatible with C++ for the HP-UX platform. (Bug #29645)

  • The SQL parser did not accept an empty UNION=() clause. This meant that, when there were no underlying tables specified for a MERGE table, SHOW CREATE TABLE and mysqldump both output statements that could not be executed.

    Now it is possible to execute a CREATE TABLE or ALTER TABLE statement with an empty UNION=() clause. However, SHOW CREATE TABLE and mysqldump do not output the UNION=() clause if there are no underlying tables specified for a MERGE table. This also means it is now possible to remove the underlying tables for a MERGE table using ALTER TABLE ... UNION=(). (Bug #28248)

  • It was possible to exhaust memory by repeatedly running index_merge queries and never performing any FLUSH TABLES statements. (Bug #27732)

  • When utf8 was set as the connection character set, using SPACE() with a non-Unicode column produced an error. (Bug #27580)

    References: See also Bug #23637.

  • In ORDER BY clauses, mixing aggregate functions and nongrouping columns is not permitted if the ONLY_FULL_GROUP_BY SQL mode is enabled. However, in some cases, no error was thrown because of insufficient checking. (Bug #27219)

  • For the --record_log_pos option, mysqlhotcopy now determines the slave status information from the result of SHOW SLAVE STATUS by using the Relay_Master_Log_File and Exec_Master_Log_Pos values rather than the Master_Log_File and Read_Master_Log_Pos values. This provides a more accurate indication of slave execution relative to the master. (Bug #27101)

  • The MySQL Instance Configuration Wizard would not permit you to choose a service name, even though the criteria for the service name were valid. The code that checks the name has been updated to support the correct criteria of any string less than 256 character and not containing either a forward or backward slash character. (Bug #27013)

  • config-win.h unconditionally defined bool as BOOL, causing problems on systems where bool is 1 byte and BOOL is 4 bytes. (Bug #26461)

  • On Windows, for distributions built with debugging support, mysql could crash if the user typed Control+C. (Bug #26243)

  • On Windows, an error in configure.js caused installation of source distributions to fail. (Bug #25340)

  • Using mysqldump in MySQL 5.1 resulted in dump files that could not be loaded in MySQL 5.0 because USING type_name options in index definitions appeared after the index column list, whereas 5.0 accepted only the old syntax that has USING before the column list. The parser in 5.0 now accepts USING following the column list. (Bug #25162)

  • The client library had no way to return an error if no connection had been established. This caused problems such as mysql_library_init() failing silently if no errmsg.sys file was available. (Bug #25097)

  • On Mac OS X, the StartupItem for MySQL did not work. (Bug #25008)

  • For Windows 64-bit builds, enabling shared-memory support caused client connections to fail. (Bug #24992)

  • If a user installed MySQL Server and set a password for the root user, and then uninstalled and reinstalled MySQL Server to the same location, the user could not use the MySQL Instance Config wizard to configure the server because the uninstall operation left the previous data directory intact. The config wizard assumed that any new install (not an upgrade) would have the default data directory where the root user has no password. The installer now writes a registry key named FoundExistingDataDir. If the installer finds an existing data directory, the key will have a value of 1, otherwise it will have a value of 0. When MySQLInstanceConfig.exe is run, it will attempt to read the key. If it can read the key, and the value is 1 and there is no existing instance of the server (indicating a new installation), the Config Wizard will permit the user to input the old password so the server can be configured. (Bug #24215)

  • The MySQL header files contained some duplicate macro definitions that could cause compilation problems. (Bug #23839)

  • SHOW COLUMNS on a TEMPORARY table caused locking issues. (Bug #23588)

  • For distributions compiled with the bundled libedit library, there were difficulties using the mysql client to enter input for non-ASCII or multibyte characters. (Bug #23097)

  • On Mac OS X, mysqld did not react to Control+C when run under gdb, even when run with the --gdb option. (Bug #21567)

  • and were missing from some binary distributions. (Bug #21023, Bug #25486)

  • A SET column whose definition specified 64 elements could not be updated using integer values. (Bug #15409)

  • MySQLInstanceConfig.exe did not save the innodb_data_home_dir value to the my.ini file under certain circumstances. (Bug #6627)

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