Released on 31 Mar 2006
MySQL 5.0.20 Changelog
  • Functionality Added or Changed

  • Bugs Fixed

Functionality Added or Changed

  • MySQL Cluster: The NDBCLUSTER storage engine now supports INSERT IGNORE and REPLACE statements. Previously, these statements failed with an error. (Bug #17431)

  • Replication: Triggers from older servers that included no DEFINER clause in the trigger definition now execute with the privileges of the invoker (which on the slave is the slave SQL thread). Previously, replication slaves could not replicate such triggers. (Bug #16266)

  • Builds for Windows, Linux, and Unix (except AIX) platforms now have SSL support enabled, in the server as well as in the client libraries. Because part of the SSL code is written in C++, this does introduce dependencies on the system's C++ runtime libraries in several cases, depending on compiler specifics. (Bug #18195)

  • Large file support added to build for QNX platform. (Bug #17336)

  • InnoDB: The InnoDB storage engine now provides a descriptive error message if ibdata file information is omitted from my.cnf. (Bug #16827)

  • Added the --sysdate-is-now option to mysqld to enable SYSDATE() to be treated as an alias for NOW(). See Date and Time Functions. (Bug #15101)

  • Large file support was re-enabled for the MySQL server binary for the AIX 5.2 platform. (Bug #13571)

  • The syntax for CREATE PROCEDURE and CREATE FUNCTION statements now includes a DEFINER clause. The DEFINER value specifies the security context to be used when checking access privileges at routine invocation time if the routine has the SQL SECURITY DEFINER characteristic. See CREATE PROCEDURE and CREATE FUNCTION Syntax, for more information.

    When mysqldump is invoked with the --routines option, it now dumps the DEFINER value for stored routines.

Bugs Fixed

  • MySQL Cluster: A timeout in the handling of an ABORT condition with more that 32 operations could yield a node failure. (Bug #18414)

  • MySQL Cluster: A node restart immediately following a CREATE TABLE failed.


    This fix supports 2-node Clusters only.

    (Bug #18385)

  • MySQL Cluster: In event of a node failure during a rollback, a false lock could be established on the backup for that node, which lock could not be removed without restarting the node. (Bug #18352)

  • MySQL Cluster: The cluster created a crashed replica of a table having an ordered index—or when logging was not enabled, of a table having a table or unique index—leading to a crash of the cluster following 8 successive restarts. (Bug #18298)

  • MySQL Cluster: When replacing a failed master node, the replacement node could cause the cluster to crash from a buffer overflow if it had an excessively large amount of data to write to the cluster log. (Bug #18118)

  • MySQL Cluster: Certain queries using ORDER BY ... ASC in the WHERE clause could return incorrect results. (Bug #17729)

  • MySQL Cluster: If a mysql or other client could not parse the result set returned from a mysqld process acting as an SQL node in a cluster, the client would crash instead of returning the appropriate error. For example, this could happen when the client attempted to use a character set was not available to the mysqld. (Bug #17380)

  • MySQL Cluster: Some query cache statistics were not always correctly reported for Cluster tables. (Bug #16795)

  • MySQL Cluster: Restarting nodes were permitted to start and join the cluster too early. (Bug #16772)

  • MySQL Cluster: Inserting and deleting BLOB column values while a backup was in process could cause data nodes to shut down. (Bug #14028)

  • MySQL Cluster: The server would not compile with NDB support on AIX 5.2. (Bug #10776)

  • Replication: Use of TRUNCATE TABLE for a TEMPORARY table on a master server was propagated to slaves properly, but slaves did not decrement the Slave_open_temp_tables counter properly. (Bug #17137)

  • Replication: The DEFINER value for stored routines was not replicated. (Bug #15963)

  • A SELECT ... ORDER BY ... from a view defined using a function could crash the server. An example of such a view is CREATE VIEW v1 AS SELECT SQRT(c1) FROM t1. (Bug #18386)

  • InnoDB had a memory leak for duplicate-key errors with tables having 90 columns or more. (Bug #18384)

  • A DELETE using a subquery could crash the server. (Bug #18306)

  • If a row was inserted inside a stored procedure using the parameters passed to the procedure in the INSERT statement, the resulting binary log entry was not escaped properly. (Bug #18293)

  • If InnoDB encountered a ER_LOCK_TABLE_FULL error and rolled back a transaction, the transaction was still written to the binary log. (Bug #18283)

  • When using ORDER BY with a nonstring column inside GROUP_CONCAT() the result's character set was converted to binary. (Bug #18281)

    References: See also Bug #14169.

  • Complex queries with nested joins could cause a server crash. (Bug #18279)

  • For InnoDB tables created in MySQL 4.1 or earlier, or created in 5.0 or later with compact format, updating a row so that a long column is updated or the length of some column changes, InnoDB later failed to reclaim the BLOB storage space if the row was deleted. (Bug #18252)

  • If InnoDB ran out of buffer space for row locks and adaptive hashes, the server would crash. Now InnoDB rolls back the transaction. (Bug #18238)

  • Views that incorporated tables from the INFORMATION_SCHEMA database resulted in a server crash when queried. (Bug #18224)

  • REPAIR TABLE, OPTIMIZE TABLE, and ALTER TABLE operations on transactional tables (or on tables of any type on Windows) could corrupt triggers associated with those tables. (Bug #18153)

  • The server could deadlock under heavy load while writing to the binary log. (Bug #18116)

  • A SELECT * query on an INFORMATION_SCHEMA table by a user with limited privileges resulted in a server crash. (Bug #18113)

  • Connecting to a server with a UCS2 default character set with a client using a non-UCS2 character set crashed the server. (Bug #18004)

  • MyISAM: Performing a bulk insert on a table referenced by a trigger would crash the table. (Bug #17764)

  • Updating a view that filters certain rows to set a filtered out row to be included in the table caused infinite loop. For example, if the view has a WHERE clause of salary > 100 then issuing an UPDATE statement of SET salary = 200 WHERE id = 10, caused an infinite loop. (Bug #17726)

  • MyISAM: Keys for which the first part of the key was a CHAR or VARCHAR column using the UTF-8 character set and longer than 254 bytes could become corrupted. (Bug #17705)

  • Updating the value of a Unicode VARCHAR column with the result returned by a stored function would cause the insertion of ASCII characters into the column instead of Unicode, even where the function's return type was also declared as Unicode. (Bug #17615)

  • For FEDERATED tables, a SELECT statement with an ORDER BY clause did not return rows in the proper order. (Bug #17377)

  • SELECT ... WHERE column LIKE 'A%', when column had a key and used the latin2_czech_cs collation, caused the wrong number of rows to be returned. (Bug #17374)

  • A LEFT JOIN with a UNION that selects literal values could crash the server. (Bug #17366)

  • Checks for permissions on database operations could be performed in a case-insensitive manner (a user with permissions on database MYDATABASE could by accident get permissions on database myDataBase), if the privilege data were still cached from a previous check. (Bug #17279)

  • Stored procedures that call UDFs and pass local string variables caused server crashes. (Bug #17261)

  • If the WHERE condition of a query contained an OR-ed FALSE term, the set of tables whose rows cannot serve for null-complements in outer joins was determined incorrectly. This resulted in blocking possible conversions of outer joins into joins by the optimizer for such queries. (Bug #17164)

  • InnoDB tables with an adaptive hash blocked other queries during CHECK TABLE statements while the entire hash was checked. This could be a long time for a large hash. (Bug #17126)

  • Stored routine names longer than 64 characters were silently truncated. Now the limit is properly enforced and an error occurs. (Bug #17015)

  • InnoDB: The LATEST FOREIGN KEY ERROR section in the output of SHOW INNODB STATUS was sometimes formatted incorrectly, causing problems with scripts that parsed the output of this statement. (Bug #16814)

  • If the server was started with the --skip-grant-tables option, it was impossible to create a trigger or a view without explicitly specifying a DEFINER clause. (Bug #16777)

  • The FORMAT() function returned an incorrect result when the client's character_set_connection value was utf8. (Bug #16678)

  • Using ORDER BY intvar within a stored procedure (where intvar is an integer variable or expression) would crash the server.


    The use of an integer i in an ORDER BY i clause for sorting the result by the i th column is deprecated (and nonstandard). It should not be used in new applications. See SELECT Syntax.

    (Bug #16474)

  • Character set conversion of string constants for UNION of constant and table column was not done when it was safe to do so. (Bug #15949)

  • Triggers created in MySQL 5.0.16 and earlier could not be dropped after upgrading the server to 5.0.17 or later. (Bug #15921)

  • The mysql_close() C API function leaked handles for shared-memory connections on Windows. (Bug #15846)

  • COUNT(DISTINCT col1, col2) and COUNT(DISTINCT CONCAT(col1, col2)) operations produced different results if one of the columns was an indexed DECIMAL column. (Bug #15745)

  • A SELECT using a function against a nested view would crash the server. (Bug #15683)

  • The server displayed garbage in the error message warning about bad assignments to DECIMAL columns or routine variables. (Bug #15480)

  • During conversion from one character set to ucs2, multibyte characters with no ucs2 equivalent were converted to multiple characters, rather than to 0x003F QUESTION MARK. (Bug #15375)

  • Certain combinations of joins with mixed ON and USING claused caused unknown column errors. (Bug #15229)

  • SELECT COUNT(*) for a MyISAM table could return different results depending on whether an index was used. (Bug #14980)

  • Attempting to access an InnoDB table after starting the server with --skip-innodb caused a server crash. (Bug #14575)

  • Use of stored functions with DISTINCT or GROUP BY can produce incorrect results when ORDER BY is also used. (Bug #13575)

  • The server would execute stored routines that had a nonexistent definer. (Bug #13198)

  • mysql_config returned incorrect libraries on x86_64 systems. (Bug #13158)

  • Loading of UDFs in a statically linked MySQL caused a server crash. UDF loading is now blocked if the MySQL server is statically linked. (Bug #11835)