Released on 19 Oct 2007
MySQL 5.0.50 Changelog

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.48). 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

  • Bugs Fixed

Functionality Added or Changed

  • Incompatible Change: The parser accepted statements that contained /* ... */ that were not properly closed with */, such as SELECT 1 /* + 2. Statements that contain unclosed /*-comments now are rejected with a syntax error.

    This fix has the potential to cause incompatibilities. Because of Bug #26302, which caused the trailing */ to be truncated from comments in views, stored routines, triggers, and events, it is possible that objects of those types may have been stored with definitions that now will be rejected as syntactically invalid. Such objects should be dropped and re-created so that their definitions do not contain truncated comments. If a stored object definition contains only a single statement (does not use a BEGIN ... END block) and contains a comment within the statement, the comment should be moved to follow the statement or the object should be rewritten to use a BEGIN ... END block. For example, this statement:

    CREATE PROCEDURE p() SELECT 1 /* my comment */ ;

    Can be rewritten in either of these ways:

    CREATE PROCEDURE p() SELECT 1; /* my comment */CREATE PROCEDURE p() BEGIN SELECT 1 /* my comment */ ; END;

    (Bug #28779)

  • MySQL Cluster: Mapping of NDB error codes to MySQL storage engine error codes has been improved. (Bug #28423)

  • MySQL Cluster: The output from the cluster management client showing the progress of data node starts has been improved. (Bug #23354)

  • Server parser performance was improved for expression parsing by lowering the number of state transitions and reductions needed. (Bug #30625)

  • Server parser performance was improved for boolean expressions. (Bug #30237)

  • SHOW COLUMNS now returns NULL instead of the empty string for the Default value of columns that have no DEFAULT clause specified. (Bug #27747)

Bugs Fixed

  • Incompatible Change: The file mysqld.exe was mistakenly included in binary distributions between MySQL 5.0.42 and 5.0.48. You should use mysqld-nt.exe. (Bug #32197)

  • Incompatible Change: Multiple-table DELETE statements containing ambiguous aliases could have unintended side effects such as deleting rows from the wrong table. Example:

    DELETE FROM t1 AS a2 USING t1 AS a1 INNER JOIN t2 AS a2;

    This fix enables aliases to be declared only in the table_references part. Elsewhere in the statement, alias references are permitted but not alias declarations. However, this patch was reverted in MySQL 5.0.54 because it changed the behavior of a General Availability MySQL release. (Bug #30234)

    References: See also Bug #27525.

  • MySQL Cluster; Packaging: Some commercial MySQL Cluster RPM packages included support for the InnoDB storage engine. (InnoDB is not part of the standard commercial MySQL Cluster offering.) (Bug #31989)

  • MySQL Cluster: Attempting to restore a backup made on a cluster host using one endian to a machine using the other endian could cause the cluster to fail. (Bug #29674)

  • MySQL Cluster: Reads on BLOB columns were not locked when they needed to be to guarantee consistency. (Bug #29102)

    References: See also Bug #31482.

  • MySQL Cluster: A query using joins between several large tables and requiring unique index lookups failed to complete, eventually returning Unknown Error after a very long period of time. This occurred due to inadequate handling of instances where the Transaction Coordinator ran out of TransactionBufferMemory, when the cluster should have returned NDB error code 4012 (Request ndbd time-out). (Bug #28804)

  • MySQL Cluster: The description of the --print option provided in the output from ndb_restore --help was incorrect. (Bug #27683)

  • MySQL Cluster: An invalid subselect on an NDB table could cause mysqld to crash. (Bug #27494)

  • MySQL Cluster: An attempt to perform a SELECT ... FROM INFORMATION_SCHEMA.TABLES whose result included information about NDB tables for which the user had no privileges crashed the MySQL Server on which the query was performed. (Bug #26793)

  • When a TIMESTAMP with a nonzero time part was converted to a DATE value, no warning was generated. This caused index lookups to assume that this is a valid conversion and was returning rows that match a comparison between a TIMESTAMP value and a DATE keypart. Now a warning is generated so that TIMESTAMP with a nonzero time part will not match DATE values. (Bug #31221)

  • A server crash could occur when a non-DETERMINISTIC stored function was used in a GROUP BY clause. (Bug #31035)

  • For an InnoDB table if a SELECT was ordered by the primary key and also had a WHERE field = value clause on a different field that was indexed, a DESC order instruction would be ignored. (Bug #31001)

  • A failed HANDLER ... READ operation could leave the table in a locked state. (Bug #30632)

  • The optimization that uses a unique index to remove GROUP BY did not ensure that the index was actually used, thus violating the ORDER BY that is implied by GROUP BY. (Bug #30596)

  • SHOW STATUS LIKE 'Ssl_cipher_list' from a MySQL client connected using SSL returned an empty string rather than a list of available ciphers. (Bug #30593)

  • Issuing a DELETE statement having both an ORDER BY clause and a LIMIT clause could cause mysqld to crash. (Bug #30385)

  • The Last_query_cost status variable value can be computed accurately only for simple flat queries, not complex queries such as those with subqueries or UNION. However, the value was not consistently being set to 0 for complex queries. (Bug #30377)

  • Queries that had a GROUP BY clause and selected COUNT(DISTINCT bit_column) returned incorrect results. (Bug #30324)

  • Using DISTINCT or GROUP BY on a BIT column in a SELECT statement caused the column to be cast internally as an integer, with incorrect results being returned from the query. (Bug #30245)

  • Short-format mysql commands embedded within /*! ... */ comments were parsed incorrectly by mysql, which discarded the rest of the comment including the terminating */ characters. The result was a malformed (unclosed) comment. Now mysql does not discard the */ characters. (Bug #30164)

  • When mysqldump wrote DROP DATABASE statements within version-specific comments, it included the terminating semicolon in the wrong place, causing following statements to fail when the dump file was reloaded. (Bug #30126)

  • If a view used a function in its SELECT statement, the columns from the view were not inserted into the INFORMATION_SCHEMA.COLUMNS table. (Bug #29408)

  • Killing an SSL connection on platforms where MySQL is compiled with -DSIGNAL_WITH_VIO_CLOSE (Windows, Mac OS X, and some others) could crash the server. (Bug #28812)

  • A SELECT in one connection could be blocked by INSERT ... ON DUPLICATE KEY UPDATE in another connection even when low_priority_updates is set. (Bug #28587)

  • mysql_upgrade could run binaries dynamically linked against incorrect versions of shared libraries. (Bug #28560)

  • With recent versions of DBD::mysql, mysqlhotcopy generated table names that were doubly qualified with the database name. (Bug #27694)

  • For InnoDB tables, CREATE TABLE a AS SELECT * FROM A failed. (Bug #25164)

  • Under heavy load with a large query cache, invalidating part of the cache could cause the server to freeze (that is, to be unable to service other operations until the invalidation was complete). (Bug #21074)

    References: See also Bug #39253.

  • Worked around an icc problem with an incorrect machine instruction being generated in the context of software pre-fetching after a subroutine got in-lined. (Upgrading to icc 10.0.026 makes the workaround unnecessary.) (Bug #20803)

  • Parameters of type DATETIME or DATE in stored procedures were silently converted to VARBINARY. (Bug #13675)