Appendix D. MySQL Change History

MySQL 5.0

Appendix D. MySQL Change History

Table of Contents

D.1. Changes in release 5.0.x (Production)
D.1.1. Changes in release 5.0.25 (Not yet released)
D.1.2. Changes in release 5.0.24 (Not yet released)
D.1.3. Changes in release 5.0.23 (Not released)
D.1.4. Changes in release 5.0.22 (24 May 2006)
D.1.5. Changes in release 5.0.21 (02 May 2006)
D.1.6. Changes in release 5.0.20a (18 April 2006)
D.1.7. Changes in release 5.0.20 (31 March 2006)
D.1.8. Changes in release 5.0.19 (04 March 2006)
D.1.9. Changes in release 5.0.18 (21 December 2005)
D.1.10. Changes in release 5.0.17 (14 December 2005)
D.1.11. Changes in release 5.0.16 (10 November 2005)
D.1.12. Changes in release 5.0.15 (19 October 2005: Production)
D.1.13. Changes in release 5.0.14 (Not released)
D.1.14. Changes in release 5.0.13 (22 September 2005: Release Candidate)
D.1.15. Changes in release 5.0.12 (02 September 2005)
D.1.16. Changes in release 5.0.11 (06 August 2005)
D.1.17. Changes in release 5.0.10 (27 July 2005)
D.1.18. Changes in release 5.0.9 (15 July 2005)
D.1.19. Changes in release 5.0.8 (Not released)
D.1.20. Changes in release 5.0.7 (10 June 2005)
D.1.21. Changes in release 5.0.6 (26 May 2005)
D.1.22. Changes in release 5.0.5 (Not released)
D.1.23. Changes in release 5.0.4 (16 April 2005)
D.1.24. Changes in release 5.0.3 (23 March 2005: Beta)
D.1.25. Changes in release 5.0.2 (01 December 2004)
D.1.26. Changes in release 5.0.1 (27 July 2004)
D.1.27. Changes in release 5.0.0 (22 December 2003: Alpha)
D.2. Changes in MySQL Cluster
D.2.1. Changes in MySQL Cluster-5.0.7 (10 June 2005)
D.2.2. Changes in MySQL Cluster-5.0.6 (26 May 2005)
D.2.3. Changes in MySQL Cluster-5.0.5 (Not released)
D.2.4. Changes in MySQL Cluster-5.0.4 (16 April 2005)
D.2.5. Changes in MySQL Cluster-5.0.3 (23 March 2005: Beta)
D.2.6. Changes in MySQL Cluster-5.0.1 (27 July 2004)
D.2.7. Changes in MySQL Cluster-4.1.13 (15 July 2005)
D.2.8. Changes in MySQL Cluster-4.1.12 (13 May 2005)
D.2.9. Changes in MySQL Cluster-4.1.11 (01 April 2005)
D.2.10. Changes in MySQL Cluster-4.1.10 (12 February 2005)
D.2.11. Changes in MySQL Cluster-4.1.9 (13 January 2005)
D.2.12. Changes in MySQL Cluster-4.1.8 (14 December 2004)
D.2.13. Changes in MySQL Cluster-4.1.7 (23 October 2004)
D.2.14. Changes in MySQL Cluster-4.1.6 (10 October 2004)
D.2.15. Changes in MySQL Cluster-4.1.5 (16 September 2004)
D.2.16. Changes in MySQL Cluster-4.1.4 (31 August 2004)
D.2.17. Changes in MySQL Cluster-4.1.3 (28 June 2004)
D.3. MySQL Connector/ODBC (MyODBC) Change History
D.3.1. Changes in MyODBC 3.51.13
D.3.2. Changes in MyODBC 3.51.12
D.3.3. Changes in MyODBC 3.51.11
D.4. MySQL Connector/NET Change History
D.4.1. Version 1.0.8
D.4.2. Version 1.0.7
D.4.3. Version 1.0.6
D.4.4. Version 1.0.5
D.4.5. Version 1.0.4 1-20-05
D.4.6. Version 1.0.3-gamma 12-10-04
D.4.7. Version 1.0.2-gamma 04-11-15
D.4.8. Version 1.0.1-beta2 04-10-27
D.4.9. Version 1.0.0 04-09-01
D.4.10. Version 0.9.0 04-08-30
D.4.11. Version 0.76
D.4.12. Version 0.75
D.4.13. Version 0.74
D.4.14. Version 0.71
D.4.15. Version 0.70
D.4.16. Version 0.68
D.4.17. Version 0.65
D.4.18. Version 0.60
D.4.19. Version 0.50
D.5. MySQL Connector/J Change History
D.5.1. Changes in MySQL Connector/J 5.0.2-beta (11 July 2006)
D.5.2. Changes in MySQL Connector/J 5.0.1-beta (Not Released)
D.5.3. Changes in MySQL Connector/J 5.0.0-beta (22 December 2005)
D.5.4. Changes in MySQL Connector/J 3.1.14 (not yet released)
D.5.5. Changes in MySQL Connector/J 3.1.13 (26 May 2006)
D.5.6. Changes in MySQL Connector/J 3.1.12 (30 November 2005)
D.5.7. Changes in MySQL Connector/J 3.1.11-stable (07 October 2005)
D.5.8. Changes in MySQL Connector/J 3.1.10-stable (23 June 2005)
D.5.9. Changes in MySQL Connector/J 3.1.9-stable (22 June 2005)
D.5.10. Changes in MySQL Connector/J 3.1.8-stable (14 April 2005)
D.5.11. Changes in MySQL Connector/J 3.1.7-stable (18 February 2005)
D.5.12. Changes in MySQL Connector/J 3.1.6-stable (23 December 2004)
D.5.13. Changes in MySQL Connector/J 3.1.5-gamma (02 December 2004)
D.5.14. Changes in MySQL Connector/J 3.1.4-beta (04 September 2004)
D.5.15. Changes in MySQL Connector/J 3.1.3-beta (07 July 2004)
D.5.16. Changes in MySQL Connector/J 3.1.2-alpha (09 June 2004)
D.5.17. Changes in MySQL Connector/J 3.1.1-alpha (14 February 2004)
D.5.18. Changes in MySQL Connector/J 3.1.0-alpha (18 February 2003)
D.5.19. Changes in MySQL Connector/J 3.0.17-ga (23 June 2005)
D.5.20. Changes in MySQL Connector/J 3.0.16-ga (15 November 2004)
D.5.21. Changes in MySQL Connector/J 3.0.15-production (04 September 2004)
D.5.22. Changes in MySQL Connector/J 3.0.14-production (28 May 2004)
D.5.23. Changes in MySQL Connector/J 3.0.13-production (27 May 2004)
D.5.24. Changes in MySQL Connector/J 3.0.12-production (18 May 2004)
D.5.25. Changes in MySQL Connector/J 3.0.11-stable (19 February 2004)
D.5.26. Changes in MySQL Connector/J 3.0.10-stable (13 January 2004)
D.5.27. Changes in MySQL Connector/J 3.0.9-stable (07 October 2003)
D.5.28. Changes in MySQL Connector/J 3.0.8-stable (23 May 2003)
D.5.29. Changes in MySQL Connector/J 3.0.7-stable (08 April 2003)
D.5.30. Changes in MySQL Connector/J 3.0.6-stable (18 February 2003)
D.5.31. Changes in MySQL Connector/J 3.0.5-gamma (22 January 2003)
D.5.32. Changes in MySQL Connector/J 3.0.4-gamma (06 January 2003)
D.5.33. Changes in MySQL Connector/J 3.0.3-dev (17 December 2002)
D.5.34. Changes in MySQL Connector/J 3.0.2-dev (08 November 2002)
D.5.35. Changes in MySQL Connector/J 3.0.1-dev (21 September 2002)
D.5.36. Changes in MySQL Connector/J 3.0.0-dev (31 July 2002)
D.5.37. Changes in MySQL Connector/J 2.0.14 (16 May 2002)
D.5.38. Changes in MySQL Connector/J 2.0.13 (24 April 2002)
D.5.39. Changes in MySQL Connector/J 2.0.12 (07 April 2002)
D.5.40. Changes in MySQL Connector/J 2.0.11 (27 January 2002)
D.5.41. Changes in MySQL Connector/J 2.0.10 (24 January 2002)
D.5.42. Changes in MySQL Connector/J 2.0.9 (13 January 2002)
D.5.43. Changes in MySQL Connector/J 2.0.8 (25 November 2001)
D.5.44. Changes in MySQL Connector/J 2.0.7 (24 October 2001)
D.5.45. Changes in MySQL Connector/J 2.0.6 (16 June 2001)
D.5.46. Changes in MySQL Connector/J 2.0.5 (13 June 2001)
D.5.47. Changes in MySQL Connector/J 2.0.3 (03 December 2000)
D.5.48. Changes in MySQL Connector/J 2.0.1 (06 April 2000)
D.5.49. Changes in MySQL Connector/J 2.0.0pre5 (21 February 2000)
D.5.50. Changes in MySQL Connector/J 2.0.0pre4 (10 January 2000)
D.5.51. Changes in MySQL Connector/J 2.0.0pre (17 August 1999)
D.5.52. Changes in MySQL Connector/J 1.2b (04 July 1999)
D.5.53. Changes in MySQL Connector/J 1.2a (14 April 1999)
D.5.54. Changes in MySQL Connector/J 1.1i (24 March 1999)
D.5.55. Changes in MySQL Connector/J 1.1h (08 March 1999)
D.5.56. Changes in MySQL Connector/J 1.1g (19 February 1999)
D.5.57. Changes in MySQL Connector/J 1.1f (31 December 1998)
D.5.58. Changes in MySQL Connector/J 1.1b (03 November 1998)
D.5.59. Changes in MySQL Connector/J 1.1 (02 September 1998)
D.5.60. Changes in MySQL Connector/J 1.0 (24 August 1998)
D.5.61. Changes in MySQL Connector/J 0.9d (04 August 1998)
D.5.62. Changes in MySQL Connector/J 0.9 (28 July 1998)
D.5.63. Changes in MySQL Connector/J 0.8 (06 July 1998)
D.5.64. Changes in MySQL Connector/J 0.7 (01 July 1998)
D.5.65. Changes in MySQL Connector/J 0.6 (21 May 1998)

This appendix lists the changes from version to version in the MySQL source code through the latest version of MySQL 5.0, which is currently MySQL 5.0.25. Starting with MySQL 5.0, we began offering a new version of the Manual for each new series of MySQL releases (5.0, 5.1, and so on). For information about changes in previous release series of the MySQL database software, see the corresponding version of this Manual. For information about legacy versions of the MySQL software through the 4.1 series, see MySQL 3.23, 4.0, 4.1 Reference Manual.

We update this section as we add new features in the 5.0 series, so that everybody can follow the development process.

Note that we tend to update the manual at the same time we make changes to MySQL. If you find a recent version of MySQL listed here that you can't find on our download page (, it means that the version has not yet been released.

The date mentioned with a release version is the date of the last BitKeeper ChangeSet on which the release was based, not the date when the packages were made available. The binaries are usually made available a few days after the date of the tagged ChangeSet, because building and testing all packages takes some time.

The manual included in the source and binary distributions may not be fully accurate when it comes to the release changelog entries, because the integration of the manual happens at build time. For the most up-to-date release changelog, please refer to the online version instead.

D.1. Changes in release 5.0.x (Production)

The following changelog shows what has been done in the 5.0 tree:

  • Basic support for read-only server side cursors. For information about using cursors within stored routines, see Section 17.2.9, “Cursors”. For information about using cursors from within the C API, see Section, “.

  • Basic support for (updatable) views. See, for example, Section 19.2, “ Syntax”.

  • Basic support for stored procedures and functions (SQL:2003 style). See Chapter 17, Stored Procedures and Functions.

  • Initial support for rudimentary triggers.

  • Added , which can be of mixed (that is, global and local) types. See Section, “ Statement”.

  • Removed the update log. It is fully replaced by the binary log. If the MySQL server is started with , it is translated to (or ignored if the server is explicitly started with ), and a warning message is written to the error log. Setting silently sets instead (or do nothing if the server is explicitly started with ).

  • Support for the storage engine has been removed. If you have tables, you should convert them before upgrading. See Section 2.11.2, “Upgrading from MySQL 4.1 to 5.0”.

  • Support for options in tables has been removed. If you have tables that use these options, you should convert them before upgrading. See Section 2.11.2, “Upgrading from MySQL 4.1 to 5.0”.

  • User variable names are now case insensitive: If you do then now returns . Case sensitivity of a variable's value depends on the collation of the value.

  • Strict mode, which in essence means that you get an error instead of a warning when inserting an incorrect value into a column. See Section 5.2.5, “The Server SQL Mode”.

  • and columns remember end space. A or column can contain up to 65,535 characters or bytes, respectively.

  • () tables can have columns.

  • When using a constant string or a function that generates a string result in , MySQL creates the result field based on the maximum length of the string or expression:

    Maximum Length Data type
    = 0
    < 512 )
    >= 512

For a full list of changes, please refer to the changelog sections for each individual 5.0.x release.

D.1.1. Changes in release 5.0.25 (Not yet released)

This is a bugfix release for the current production release family.

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 Network (a commercial MySQL offering). For more details please see

Functionality added or changed:

  • Table comments longer than 60 characters and column comments longer than 255 characters were truncated silently. Now a warning is issued, or an error in strict mode. (Bug #13934)

  • The bundled yaSSL library was upgraded to version 1.3.7.

  • The server now issues a warning if it removes leading spaces from an alias. (Bug #10977)

Bugs fixed:

  • : statements did not work correctly on an table having both a primary key and a unique key. In such cases, proper values were not set for columns which were not explicitly referenced in the statement. (Bug #20728)

  • : Trying to create or drop a table while a node was restarting caused the node to crash. This is now handled by raising an error. (Bug #18781)

  • : Running ndbd where was the node ID of a node that was already running would fail with an invalid error message. (Bug #20419)

  • : Incorrect values were inserted into columns of tables restored from a cluster backup. (Bug #20820)

  • : When attempting to restart the cluster following a data import, the cluster would fail during Phase 4 of the restart with Error 2334: Job buffer congestion. (Bug #20774)

  • : A node failure during a scan could sometime cause the node to crash when restarting too quickly following the failure. (Bug #20197)

  • : It was possible to use port numbers greater than 65535 for in the file. (Bug #19164)

  • : Under certain circumstances, a node that was shut down then restarted could hang during the restart. (Bug #18863)

  • (Replication): In some cases, a large number of MySQL servers sending requests to the cluster simultaneously could cause the cluster to crash. This could also be triggered by many NDB API clients making simultaneous event subscriptions or unsubscriptions. (Bug #20683)

  • (NDB API): and ignored the parameter. (Bug #20252)

  • The use of IS NULL in statements reset the value of to zero. (Bug #14553)

  • The server crashed when using the range access method to execut a subquery with a clause. (Bug #20869)

  • Use of the join cache in favor of an index for operations could cause incorrect result sorting. (Bug #17212)

  • A user-defined function that is called on each row of a returned result set, could receive an state that is set, if it was set previously. Now, the state is reset to false before each invocation of a UDF. (Bug #19904)

  • Referring to a stored function qualified with the name of one database and tables in another database caused a “table doesn't exist” error. (Bug #18444)

  • For and possibly tables, a trigger could insert incorrect values. (Bug #18437)

  • Triggers on tables in the database caused a server crash. Triggers for tables in this database now are disallowed. (Bug #18361)

  • The length of the pattern string prefix for operations was calculated incorrectly for multi-byte character sets. As a result, the the scanned range was wider than necessary if the prefix contained any multi-byte characters, and rows could be missing from the result set. (Bug #16674, Bug #18359)

  • For very complex statements could create temporary tables that were too big, but for which the temporary files did not get removed, causing subsequent queries to fail. (Bug #11824)

  • For spatial data types, the server formerly returned these as values with a binary collation. Now the server returns spatial values as values. (Bug #10166)

  • Using and a table join while running a concurrent operation would join incorrect rows. (Bug #14400)

  • Using on a corrupt table using the dynamic record format could cause a server crash. (Bug #19835)

  • Using tables from MySQL 4.x in MySQL 5.x, in particular those with fields and using to update data in the table would result in either data corruption or a server crash. (Bug #16611, Bug #16218, Bug #17294)

  • Checking a spatial table (using ) with an index and only one row would indicate a table corruption. (Bug #17877)

  • did not return definer grants when executed in context (such as within a stored prodedure defined with ), it returned the invoker grants. (Bug #15298)

  • For statements that used or over all key parts of a unique index (or primary key), the optimizer unnecessarily created a temporary table, thus losing the linkage to the underlying unique index values. This caused a error. (The temporary table is unnecessary because under these circumstances the distinct or grouped columns must also be unique.) (Bug #16458)

  • The first time a user who had been granted the privilege used that privilege to create a stored function or procedure, the column in that user's row in the table was set to . (Bug #19857)

  • Creation of a view as a join of views or tables could fail if the views or tables are in different databases. (Bug #20482)

  • Use of or with on a column could cause a server crash. (Bug #20076)

  • could be slow because the was ignored when selecting candidate rows. (Bug #9676)

  • Certain queries having a clause that included conditions on multi-part keys with more than 2 key parts could produce incorrect results and send [Note] Use_count: Wrong count for key at... messages to . (Bug #16168)

  • The C API function returned the incorrect table name for views. (Bug #19671)

  • A cast problem caused incorrect results for prepared statements that returned float values when MySQL was compiled with gcc 4.0. (Bug #19694)

D.1.2. Changes in release 5.0.24 (Not yet released)

This is a bugfix release for the current production release family.

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 Network (a commercial MySQL offering). For more details please see

Bugs fixed:

  • MySQL 5.0.23 contained a fix for Bug #10952 that has been reverted in 5.0.24 because it introduced the risk of unintended data loss.

  • The storage engine did not allow creation of indexes on nullable columns. (Bug #15133)

  • A that used a subquery in the clause that did not select from a table failed when the subquery was used in a join. (Bug #21002)

  • for a view required the privilege for tables other than the table being modified. (Bug #21135)

  • Failure to account for a table pointer on big-endian machines could cause a server crash during type conversion. (Bug #21135)

  • mysqldump sometimes did not select the correct database before trying to dump views from it, resulting in an empty result set that caused mysqldump to die with a segmentation fault. (Bug #21014)

D.1.3. Changes in release 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 Network (a commercial MySQL offering). For more details please see

Functionality added or changed:

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

  • : The status variables and were renamed to and , respectively.

  • 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 Section 5.6.2, “mysql_upgrade — Check Tables for MySQL Upgrade”.

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

  • Added the option to MySQL client programs. This option causes the server's Common Name value in its certificate to be verified against the hostname used when connecting to the server, and the connection is rejected if there is a mismatch. Added option for the 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)

  • Added the , , , , and system variables, which display the values given via the corresponding command options. See Section, “SSL Command Options”. (Bug#19606)

  • Added the system variable. (Bug#19616)

  • Added the 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 SQL mode now also applies to the clause. That is, columns not named in the clause cannot be used in the clause if not used in an aggregate function. (Bug #18739)

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

  • 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 option to mysqlbinlog to allow the character set to be specified for processing binary log files. (Bug #18351)

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

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

  • 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)

Bugs fixed:

  • 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 option to cause mysqldump to keep going and write a SQL comment containing the view definition to the dump output. (Bug #17371)

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

  • The use of and on columns with a partial index produced incorrect results in some queries. (Bug #18206)

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

  • A “table not found” error could occur for statements that called a function defined in another database. (Bug #17199)

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

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

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

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

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

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

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

  • The omission of leading zeros in dates could lead to erroneous results when these were compared with the output of certain date and time functions. (Bug #16377)

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

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

  • : The cluster's data nodes would fail while trying to load data when was equal to 1. (Bug #19894)

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

  • : Restoring a backup made using ndb_restore failed when the backup had been taken from a cluster whose data memory was full. (Bug #19852)

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

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

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

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

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

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

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

  • : Repeated - - operations 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)

  • : The mgm client command had no effect. (Bug #20336)

  • : failed to reset the counter. (Bug #18864)

  • : failed to lock the selected rows. (Bug #18184)

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

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

  • : 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 could be created. (Bug #19623)

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

  • : statements with a or column in the selected column list and a condition including a primary key lookup on a primary key produced empty result sets. Note: This issue affected the 5.0 series of MySQL Cluster releases only. (Bug #19956)

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

  • : Some queries having a clause of the form were not evaluated correctly. (Bug # 17421)

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

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

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

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

  • : failed on tables having or columns with the error Lock wait timeout exceeded. (Bug #19201)

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

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

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

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

  • The option for mysqld_safe was effective only for . (Bug #17353)

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

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

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

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

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

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

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

  • 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)

  • For mode full-text searches on non-indexed columns, rows generated by a caused incorrect query results. (Bug #14708)

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

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

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

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

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

  • statements caused activation of triggers, not and triggers. (Bug #13479)

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

  • mysqldump wrote an extra pair of and statements if run with the option and the database contained views. (Bug #17201)

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

  • For mysqld, Valgrind revealed problems that were corrected: A dangling stack pointer being overwritten (Bug #20769); possible uninitialized data in a string comparison (Bug #20783); memory corruption in replication slaves when switching databases (Bug #19022); syscall write parameter pointing to uninitialized byte (Bug #20579).

  • For ndb_mgmd, Valgrind revealed problems that were corrected: A memory leak (Bug #19318); a dependency on an uninitialized variable (Bug #20333).

  • 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)

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

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

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

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

  • 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)

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

  • For a reference to a non-existent index in , the error message referred to a column, not an index. (Bug #17873)

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

  • temporarily cleared the value. Because it runs with a read lock, other readers could perform concurrent inserts, and if so, they could get an incorrect value. no longer modifies the value. (Bug #19604)

  • If there is a global read lock, , , and could deadlock. (Bug #19815)

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

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

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

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

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

  • InnoDB did not increment the counter. (Bug #19542)

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

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

    • Change the default value of a column.

    • Change the table comment.

    • Change the table password.

    (Bug #17001)

  • An 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)

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

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

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

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

  • The 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 and values. Now displays the global values for and . (Bug #18669)

  • 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 tables about views using stored functions. (Bug #18282)

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

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

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

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

  • A view with a non-existent account in the clause caused to fail. Now issues a warning instead. (Bug #20048)

  • A bug in NTPL threads on Linux could result in a deadlock with under some conditions. (Bug #20048)

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

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

  • The patch for Bug #17164 introduced the problem that some outer joins were incorrectly converted to inner joins. (Bug #19816)

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

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

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

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

  • The result from 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)

  • statements that used a stored function explicitly or implicitly (through a view) resulted in a error. (Bug #12472, Bug #15137)

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

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

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

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

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

  • The and system variables could not be accessed via syntax. (Bug #1039)

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

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

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

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

  • did not restore the length for packed keys in tables created under MySQL 4.x. (Bug #17810)

  • Selecting from a view that used on a non-constant temporal interval (such as ) + INTERVAL TIME_TO_SEC() SECOND could cause a server crash. (Bug #19490)

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

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

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

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

  • In the table, the values for the and columns were incorrect for multi-byte character sets. (Bug #19236)

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

  • 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)

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

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

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

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

  • started even for test cases that didn't need it. (Bug #19083)

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

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

  • 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)

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

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

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

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

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

  • would fail when trying to load the database from the master, because the system database would already exist on the slave. (Bug #18607)

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

  • The -to- 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)

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

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

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

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

  • The and system variables could not be accessed via syntax. (Bug #12792, Bug #15684)

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

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

D.1.4. Changes in release 5.0.22 (24 May 2006)

This is a security fix release for the previous production release family.

This release includes the security fix described later in this section and a few other changes to resolve build problems, relative to the last official MySQL release (5.0.21). 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 Network (a commercial MySQL offering). For more details please see

Bugs fixed:

  • Security fix: An SQL-injection security hole has been found in multi-byte encoding processing. The bug was in the server, incorrectly parsing the string escaped with the C API function. (CVE-2006-2753, Bug#8378)

    This vulnerability was discovered and reported by Josh Berkus and Tom Lane as part of the inter-project security collaboration of the OSDB consortium. For more information about SQL injection, please see the following text.

    Discussion: An SQL-injection security hole has been found in multi-byte encoding processing. An SQL-injection security hole can include a situation whereby when a user supplied data to be inserted into a database, the user might inject SQL statements into the data that the server will execute. With regards to this vulnerability, when character set unaware-escaping is used (for example, in PHP), it is possible to bypass the escaping in some multi-byte character sets (for example, SJIS, BIG5 and GBK). As a result, a function such as is not able to prevent SQL-injection attacks. It is impossible to fix this on the server side. The best solution is for applications to use character set-aware escaping offered by a function such .

    However, a bug was detected in how the MySQL server parses the output of . As a result, even when the character set-aware function was used, SQL injection was possible. This bug has been fixed.

    Workarounds: If you are unable to upgrade MySQL to a version that includes the fix for the bug in parsing, but run MySQL 5.0.1 or higher, you can use the SQL mode as a workaround. (This mode was introduced in MySQL 5.0.1.) enables an SQL standard compatibility mode, where backslash is not considered a special character. The result will be that queries will fail.

    To set this mode for the current connection, enter the following SQL statement:


    You can also set the mode globally for all clients:


    This SQL mode also can be enabled automatically when the server starts by using the command-line option or by setting in the server option file (for example, or , depending on your system).

  • The patch for Bug #8303 broke the fix for Bug #8378 and was undone. (In string literals with an escape character () followed by a multi-byte character that has a second byte of (), the literal was not interpreted correctly. The next byte now is escaped, not the entire multi-byte character. This means it a strict reverse of the function.)

  • The client libraries had not been compiled for position-indpendent code on Solaris-SPARC and AMD x86_64 platforms. (Bug #13159, Bug #14202, Bug #18091)

  • Running myisampack followed by myisamchk with the option would corrupt the key. (Bug #12633)

D.1.5. Changes in release 5.0.21 (02 May 2006)

This is a bugfix release for the current production release family.

This MySQL 5.0.21 release includes the patches for recently reported security vulnerabilites in the MySQL client-server protocol. We would like to thank Stefano Di Paola for finding and reporting these to us.

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 Network (a commercial MySQL offering). For more details please see

Functionality added or changed:

  • Security enhancement: Added the global system variable to limit the total number of prepared statements in the server. This limits the potential for denial-of-service attacks based on running the server out of memory by preparing huge numbers of statements. The current number of prepared statements is available through the system variable. (Bug #16365)

  • The -.i386.rpm shared compatibility RPMs no longer contain libraries for MySQL 5.1. This avoids a conflict because the 5.0 and 5.1 libraries share the same soname number. It contains libraries for 3.23, 4.0, 4.1, and 5.0. (Bug #19288)

  • Creating a table in an InnoDB database with a column name that matched the name of an internal InnoDB column (including , , and ) would cause a crash. MySQL now returns error 1005 (cannot create table) with set to -1. (Bug #18934)

  • : It is now possible to perform a partial start of a cluster. That is, it is now possible to bring up the cluster without running ndbd --initial on all configured data nodes first. (Bug #18606)

  • : A new startup option for ndbd makes it possible to “skip” specific nodes without waiting for them to start when starting the cluster. See Section, “Command Options for ndbd.

  • : It is now possible to install MySQL with Cluster support to a non-default location and change the search path for font description files using either the or options. (Previously in MySQL 5.0, ndbd searched only the default path for character sets.)

  • In result set metadata, the value for columns now is reported in number of bits. For example, the value for a column is 9. (Formerly, the value was related to number of bytes.) (Bug #13601)

  • The default for the system variable was changed to . (Bug #15868)

Bugs fixed:

  • Security fix: A malicious client, using specially crafted invalid login or packets was able to read uninitialized memory, which potentially, though unlikely in MySQL, could have led to an information disclosure. (CVE-2006-1516, CVE-2006-1517) Thanks to Stefano Di Paola for finding and reporting this bug.

  • Security fix: A malicious client, using specially crafted invalid packets was able to trigger an exploitable buffer overflow on the server. (CVE-2006-1518) Thanks to Stefano Di Paola for finding and reporting this bug.

  • Security fix: Invalid arguments to caused a server crash. (CVE-2006-3469, Bug #20729) Thanks to Jean-David Maillefer for discovering and reporting this problem to the Debian project and to Christian Hammers from the Debian Team for notifying us of it.

  • : A simultaneous and table update operation utilising a table scan could trigger a node failure. (Bug #18597)

  • mysql-test-run could not be run as . (Bug #17002)

  • , , , , , and incorrectly depended on 2.3 and could not be installed on a 2.2 system. (Bug #16539)

  • IA-64 RPM packages for Red Hat and SuSE Linux that were built with the icc compiler incorrectly depended on icc runtime libraries. (Bug #16662)

  • After calling , the variable did not increment for existing connections and connections which use the thread cache. (Bug #15933)

  • MySQL would not compile on Linux distributions that use the tinfo library. (Bug #18912)

  • Within a trigger, did not return the connection ID of the thread that caused the trigger to be activated. (Bug #16461)

  • The yaSSL library returned a cipher list in a manner incompatible with OpenSSL. (Bug #18399)

  • For single- union constructs of the form (SELECT ... ORDER BY [LIMIT ]) ORDER BY , the lists were concatenated and the clause was ignored. (Bug #18767)

  • statements would not be replicated to the slave if the rule was enabled. (Bug #18715)

  • Index corruption could occur in cases when was not a multiple of (for example, with and ). (Bug #19079)

  • in a stored function or trigger returned zero. . (Bug #15728)

  • Use of in a view definition could result in spurious syntax or access errors. (Bug #15153)

  • could cause subsequent calls to return for legal non- arguments. (Bug #18643)

  • Conversion of a number to a string returned an invalid result. (Bug #18691)

  • and statements that used large ) clauses could use large amounts of memory. (Bug #15872)

  • Prevent recursive views caused by using on a view after creating it. (Bug #14308)

  • A statement that failed could cause not to update table statistics properly, causing a subsequent to report table corruption. (Bug #18544)

  • For a reference to a non-existent stored function in a stored routine that had a handler, the server continued as though a useful result had been returned, possibly resulting in a server crash. (Bug #18787)

  • did not use a consistent read for when was set. (Bug #18350)

  • could read a delete mark from its system tables incorrectly. (Bug #19217)

  • Corrected a syntax error in (Bug #19190)

  • A missing caused the server to emit a spurious error message: . (Bug #18964)

  • did not drop stored routines associated with the database if the database name was longer than 21 characters. (Bug #18344)

  • Avoid trying to include when it doesn't work in C++ code. (Bug #13621)

  • Executing on a large table that had been compressed within myisampack could cause a crash. (Bug #17917)

  • : When attempting to create an index on a or column, Error 743: Unsupported character set in table or index was returned instead of Error 906: Unsupported attribute type in index.

  • Within stored routines, usernames were parsed incorrectly if they were enclosed within quotes. (Bug #13310)

  • Casting a string to worked, but casting a trimmed string (using or ) resulted in loss of decimal digits. (Bug #17043)

  • : On slow networks or CPUs, the management client command could sometimes erroneously show all data nodes as being master nodes belonging to nodegroup 0. (Bug #15530)

  • If the second or third argument to was a constant expression such as and the other two arguments were columns, was evaluated incorrectly. (Bug #18618)

  • If the first argument to was a or column of a view and the other arguments were constants, did not perform conversion of the constants to the appropriate temporary type, resulting in incorrect evaluation. (Bug #16069)

  • Server and clients ignored the option that was passed to configure. (Bug #15069)

  • : In a 2-node cluster with a node failure, restarting the node with a low value for could cause the cluster to come up partitioned (“split-brain” issue). (Bug #16447)

    A similar issue could occur when the cluster was first started with a sufficiently low value for this parameter. (Bug #18612)

  • : On systems with multiple network interfaces, data nodes would get “stuck” in startup phase 2 if the interface connecting them to the management server was working on node startup while the interface interconnecting the data nodes experienced a temporary outage. (Bug #15695)

  • : Unused open handlers for tables in which the metadata had changed were not properly closed. This could result in stale results from Cluster tables following an . (Bug #13228)

  • : Uninitialized internal variables could lead to unexpected results. (Bug #11033, Bug #11034)

  • For tables, an expression of the form BETWEEN - INTERVAL DAY AND + INTERVAL DAY when used in a join returned incorrect results. (Bug #14360)

  • into a view caused an infinite loop. (Bug #13683)

  • Lettercase in database name qualifiers was not consistently handled properly in queries when was set to 1. (Bug #15917)

  • The optimizer could cause a server crash or use a non-optimal subset of indexes when evaluating whether to use variant of optimization. (Bug #19021)

  • The presence of multiple equalities in a condition after reading a constant table could cause the optimizer not to use an index. This resulted in certain queries being much slower than in MySQL 4.1. (Bug #16504)

  • A recent change caused the mysql client not to display values correctly and to display numeric columns left-justified rather than right-justified. The problems have been corrected. (Bug #18265)

  • sent a statement to the server, even for pre-4.1 servers that do not understand the statement. (Bug #18830)

  • on a table could return different results for the base table and a view on the base table. (Bug #18237)

  • with for tables could crash the server if was enabled. (Bug #15650)

  • failure to release an adaptive hash index latch could cause a server crash if the query cache was enabled. (Bug #15758)

  • For mysql.server, if the option was specified after in an option file, the setting for was ignored and assumed to be located under . (Bug #16240)

  • The euro sign () was not stored correctly in columns using the or collation. (Bug #18321)

  • ) returned unexpected results. (Bug #18100)

  • did not reset the counter for tables when issued inside a stored procedure. (Bug #14945)

    Note: This bug did not affect tables. Also, does not reset the counter for tables regardless of when it is called (see Bug #18864).

  • The server was always built as though had been specified. (Bug #12076)

  • A query using WHERE (, ) IN ((, )[, (..., ...), ...]) would return incorrect results. (Bug #16248)

  • Queries of the form WHERE () = did not return all matching rows. (Bug #16710)

  • When running a query that contained a , the result was except in the part of the result, if there was one. (Bug #15560)

  • For tables created in a MySQL 4.1 installation upgraded to MySQL 5.0 and up, multiple-table updates could update only the first matching row. (Bug #16281)

  • : When multiple node restarts were attempted without allowing each restart to complete, the error message returned was Array index out of bounds rather than Too many crashed replicas. (Bug #18349)

  • AS SIGNED INT) for large values outside the signed integer range truncates the result to be within range, but the result sometimes had the wrong sign, and no warning was generated. (Bug #15098)

  • Updating a field value when also requesting a lock with would cause slave servers in a replication environment to terminate. (Bug #17284)

D.1.6. Changes in release 5.0.20a (18 April 2006)

This is a bugfix release for the current production release family. It replaces MySQL 5.0.20.

Changes from 5.0.20 to 5.0.20a:

  • The fix for “Command line options are ignored for mysql client” (Bug #16855) has been revoked because it introduced an incompatible change in the way the mysql command-line client selects the server to connect to. In the worst case, this might have led to a client issuing commands to a server for which they were not intended, and this must not happen. To help all users in understanding this subject, Section 4.2, “Invoking MySQL Programs” now includes additional explanation of how command options with regard to host selection.

  • The code of the library has been improved to avoid the dependency on a C++ runtime library, so a link with pure C applications is now possible on additional (but not yet all) platforms. We are working on fixing the remaining issues.

Additional information about SSL support:

  • With version 5.0.20a, SSL support is contained in all binaries for all Unix (including Linux) and Windows platforms except AIX, HP-UX, OpenServer 6, and the RPMs specific for RHAS3/RHAS4/SLES9 on Itanium CPUs (); It is also not contained in those for Novell Netware. We are trying to add these platforms in future versions.

  • Please note that the original 5.0.20 announcement included inexact wording: SSL support is “included” in both server and client, but by default not “enabled”. SSL can be enabled by passing the SSL-related options (, , , ) when starting the server and the client or by specifying these options in an option file. For more information, see Section 5.9.7, “Using Secure Connections”.

D.1.7. Changes in release 5.0.20 (31 March 2006)

Functionality added or changed:

  • Added the option to mysqld to enable to be treated as an alias for . See Section 12.5, “Date and Time Functions”. (Bug #15101)

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

  • The storage engine now supports and statements. Previously, these statements failed with an error. (Bug #17431)

  • 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)

  • The syntax for and statements now includes a clause. The value specifies the security context to be used when checking access privileges at routine invocation time if the routine has the characteristic. See Section 17.2.1, “ and Syntax”, for more information.

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

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

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

Bugs fixed:

  • If the condition of a query contained an -ed 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)

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

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

  • During conversion from one character set to , multi-byte characters with no equivalent were converted to multiple characters, rather than to . (Bug #15375)

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

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

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

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

  • For 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, later would fail to reclaim the storage space if the row was deleted. (Bug #18252)

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

  • : The section in the output of was sometimes formatted incorrectly, causing problems with scripts that parsed the output of this statement. (Bug #16814)

  • When using with a non-string column inside the result's character set was converted to binary. (Bug #18281)

    See also Bug #14169.

  • LIKE 'A%' when had a key and used the collation. (Bug #17374)

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

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

  • A from a view defined using a function could crash the server. An example of such a view might be . (Bug #18386)

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

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

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

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

  • Using within a stored procedure (where is an integer variable or expression) would crash the server. (Bug #16474)

    Note: The use of an integer in an clause for sorting the result by the th column is deprecated (and non-standard). It should not be used in new applications. See Section 13.2.7, “ Syntax”.

  • 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)

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

  • : Certain queries using in the clause could return incorrect results. (Bug #17729)

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

  • : A node restart immediately following a would fail. Important: This fix supports 2-node Clusters only. (Bug #18385)

  • : 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)

  • : 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 successibe restarts. (Bug #18298)

  • : 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)

  • : 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)

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

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

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

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

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

  • 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)

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

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

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

  • used table locks (not row locks) within stored functions. (Bug #18077)

  • Replication slaves could not replicate triggers from older servers that included no clause in the trigger definition. Now the trigger executes with the privileges of the invoker (which on the slave is the slave SQL thread). (Bug #16266)

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

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

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

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

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

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

  • Large file support did not work in AIX server binaries. (Bug #10776)

  • 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 then issuing an UPDATE statement of , caused an infinite loop. (Bug #17726)

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

  • : Inserting and deleting column values while a backup was in process could cause the loss of an ndbd node. (Bug #14028)

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

  • , ) and , )) operations produced different results if one of the columns was an indexed column. (Bug #15745)

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

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

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

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

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

  • Updating the value of a Unicode 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)

D.1.8. Changes in release 5.0.19 (04 March 2006)

Functionality added or changed:

  • Incompatible change: The storage engine no longer ignores trailing spaces when comparing or column values. This means that (for example) the binary values and are now regarded as unequal any time they are compared, as they are in tables. (Bug #14189)

    See Section 11.4.2, “The and Types” for more information about the and types.

  • Several changes were made to make upgrades easier:

    • Added the mysql_upgrade program that checks all tables for incompatibilities with the current version of MySQL Server and repairs them if necessary. This program should be run for each MySQL upgrade (rather than mysql_fix_privilege_tables). See Section 5.6.2, “mysql_upgrade — Check Tables for MySQL Upgrade”.

    • Added the option for the statement. This option checks whether tables are incompatible with the current version of MySQL Server.

    • Added the to mysqlcheck that invokes with the option.

  • : The ndb_mgm client commands START and STOP now work with management nodes as well as data nodes. (However, using for the continues to affect all data nodes only.)

  • When using the function where the system variable was greater than 512, the type of the result was only if the query included an clause; otherwise the result was a .

    The result type of the function is now only if the value of the system variable is less than or equal to 512. Otherwise, this function returns a . (Bug #14169)

  • mysql no longer terminates data value display when it encounters a NUL byte. Instead, it displays NUL bytes as spaces. (Bug #16859)

  • Added the option to mysqlmanager to allow configuration of the timeout for dropping an inactive connection, and increased the default timeout from 30 seconds to 28,800 seconds (8 hours). (Bug #12674, Bug#15980)

  • A number of performance issues were resolved that had previously been encountered when using statements that repeatedly invoked stored functions. For example, calling using a stored function executed much more slowly than when invoking it with inline code that accomplished the same task. In most cases the two should now execute with approximately the same speed. (Bug #15014, Bug #14946)

  • now uses versioned symbols with GNU ld. (Bug #3074)

  • : More descriptive warnings are now issued when inappropriate logging parameters are set in . (Formerly, the warning issued was simply Could not add logfile destination.) (Bug #11331)

  • Added the option to mysqld to control how many seconds the server should wait for the TCP/IP port to become free if it cannot be opened. (Bug #15591)

  • Repeated invocation of and caused corruption of character set data and connection failure. (Bug #6536)

  • Two new Hungarian collations are included: and . These support the correct sort order for Hungarian vowels. However, they do not support the correct order for sorting Hungarian consonant contractions; this issue will be fixed in a future release.

  • Wording of error 1329 changed to No data - zero rows fetched, selected, or processed. (Bug #15206)

  • The now skips data contained in unlistable/unreadable directories rather than returning an error. (Bug #15851)

  • InnoDB now caches a list of unflushed files instead of scanning for unflushed files during a table flush operation. This improves performance when is set on a system with a large number of InnoDB tables. (Bug #15653)

  • The message for error 1109 changed from Unknown table ... in order clause to Unknown table ... in field list. (Bug #15091)

  • The utility now converts all combinations to to allow test cases intended for Windows to work properly on UNIX-like systems. (Bug #13809)

  • The function will now retry if the flag is set and error is encountered during the first attempt to ping the server. (Bug #14057)

  • now surrounds the , and clauses of a statement with "not in version" comments to prevent errors in earlier versions of MySQL. (Bug #14871)

  • New command added to mysql command-line client. By typing or (such as ), the client character set can be changed without reconnecting. (Bug #16217)

  • Client API will now attempt reconnect on TCP/IP if the flag is set, as is the case with sockets. (Bug #2845)

Bugs fixed:

  • Generating an value through a table did not set the value returned by . (Bug #14768)

  • Cursors in stored routines could cause a server crash. (Bug #16887)

  • Setting the system variable to a value larger than 1 could cause corruption of large tables. (Bug #11527)

  • The length of a column that used the character set would increase each time the table was re-created in a stored procedure or prepared statement, eventually causing the statement to fail. (Bug #13134)

  • failed with the prepared statement protocol. (Bug #17826)

  • The MySQL server could crash with out of memory errors when performing aggregate functions on a column. (Bug #17602)

  • A stored procedure failed to return data the first time it was called per connection. (Bug #17476)

  • Using to drop a user-defined function caused a server crash if the server was running with the option. (Bug #17595)

  • Using to increase the length of a ) column caused column values to be padded with spaces rather than bytes. (Bug #16857)

  • A large value specified in a clause could be treated differently depending on whether it is specified as a quoted string. (For example, versus ). (Bug #9088)

  • A natural join between tables failed. (Bug #17523)

  • A memory leak caused warnings on slaves for certain statements that executed without warning on the master. (Bug #16175)

  • The embedded server did not allow binding of columns to the data type in prepared statements. (Bug #12070)

  • The embedded server failed various tests in the automated test suite. (Bug #9630, Bug #9631, Bug #9633, Bug #10801, Bug #10911, Bug #10924, Bug #10925, Bug #10926, Bug #10930, Bug #15433)

  • Instance Manager erroneously accepted a list of instance identifiers for the and commands (should accept only a single identifier). (Bug #12813)

  • For a transaction that used and tables, interruption of the transaction due to a dropped connection on a master server caused slaves to lose synchrony. (Bug #16559)

  • with on a view can cause a server crash. (Bug #16382)

  • If the query optimizer transformed a clause in a subquery, it did not also transform the clause if there was one, producing incorrect results. (Bug #16603)

  • could yield inconsistent results when applied with the same arguments to consecutive rows in a query. (Bug #14676)

  • The parser allowed for creating stored functions, even though does not apply. (It is used only for only when creating user-defined functions.) (Bug #16896)

  • Data truncations on non-UNIQUE indexes could crash InnoDB when using multi-byte character sets. (Bug #17530)

  • Triggers created without and clauses could not be properly restored from a file. (Bug #16878)

  • The statement did not move triggers to the new table. (Bug #13525)

  • Clients compiled from source with the did not save command history from session to session. (Bug #16557)

  • Stored routines that contained only a single statement were not written properly to the dumpfile when using . (Bug #14857)

  • For certain tables, the optimizer wrongly assumed that using was too expensive. (Bug #17314)

  • Executing a query of an invalid view caused the function of to hang. (Bug #15943)

  • fields were not properly handled when using row-based replication. (Bug #13418)

  • Issuing on a procedure would display any warnings related to the creation of the procedure. (Bug #7787)

  • : ndb_delete_all would run out of memory on tables containing columns. (Bug #16693)

  • : keys in Cluster tables were limited to 225 bytes in length. (Bug #15918)

  • In a highly concurrent environment, a server crash or deadlock could result from execution of a statement that used stored functions or activated triggers coincident with alteration of the tables used by these functions or triggers. (Bug #16593)

  • Previously, a stored function invocation was written to the binary log as () if the invocation changes data and occurs within a non-logged statement, or if the function invokes a stored procedure that produces an error. These invocations now are logged as () instead for better control over error code checking (slave servers could stop due to detecting a different error than occurred on the master). (Bug #14769)

  • returned different values on MyISAM table depending on whether the or options were used. (Bug #8841)

  • MySQL server dropped client connection for certain SELECT statements against views defined that used algorithm. (Bug #16260)

  • A call to the function using decimal arguments could return incorrect results. (Bug #16272)

  • A statement containing and clauses could return incorrect results when the clause contained logic that returned for every row. (Bug #14927)

  • Using on column used in clause could cause empty set to be returned. (Bug #16203)

  • For a MySQL 5.0 server, using MySQL 4.1 tables in queries with a clause could result in buffer overrun or a server crash. (Bug #16752)

  • , where > 31, did not work properly. (Bug #13897)

  • : Cluster log file paths were truncated to 128 characters. They may now be as long as (the maximum path length permitted by the operating system). (Bug #17411)

  • The C API function could not be used for a prepared statement if a cursor had been opened for the statement. (Bug #14013)

  • The C API function incorrectly returned an empty string rather than when no error occurred. (Bug #16143)

  • Using the function with a negative number for the second argument on a column returned incorrect results. (Bug #8461)

  • Instance Manager searched wrong location for password file on some platforms. (Bug #16499)

  • : Following multiple forced shutdowns and restarts of data nodes, could fail. (Bug #17325)

  • : An with an inner join failed to match any records if both tables in the join did not have a primary key. (Bug #17257)

  • : A with a join in the clause failed to retrieve any records if both tables in the join did not have a primary key. (Bug #17249)

  • The error message returned by was prefixed with OS error code: instead of NDB error code:. (Bug #17235)

  • : In some cases, did not load all data into tables. (Bug #17081)

  • : The log would become corrupted (and thus unreadable) in some circumstances, due to a failure in the query handler. (Bug #17295)

  • : No error message was generated for setting too low. (Bug #13966)

  • : No error message was generated for setting too low. (Bug #13965)

  • Binary distributions for Solaris contained files with group ownership set to the non-existing group. Now the group is used. (Bug #15562)

  • The data type was not being handled correctly with prepared statements. (Bug #16511)

  • The privilege was required for triggers that performed no selects. (Bug #15196)

  • The privilege was required for triggers that performed no updates. (Bug #15166)

  • operations returned different results when using versus not using prepared-statement protocol. (Bug #15805)

  • Improper memory handling for stored routine variables could cause memory overruns and binary log corruption. (Bug #15588)

  • Killing a long-running query containing a subquery could cause a server crash. (Bug #14851)

  • A query in a prepared statement could result in unexpected behavior. (Bug #14496)

  • A statement within a trigger caused a server crash. now is disallowed within triggers. To exit immediately, use . (Bug #16829)

  • caused a server crash. (CVE-2006-3081, Bug #15828)

  • An invalid stored routine could not be dropped. (Bug #16303)

  • When evaluation of the test in a failed in a stored procedure that contained a handler, execution resumed at the beginning of the CASE statement instead of at the end. (Bug #16568)

  • An statement in a stored procedure corrupted the binary log. (Bug #16621)

  • When MyODBC or any other client called / several times, it caused corruption of charset data stored in . (Bug #11892)

  • When multiple handlers are created for the same MySQL error number within nested blocks, the outermost handler took precedence. (Bug #15011)

  • Certain statements in stored procedures were not properly optimized. (Bug #15737)

  • Setting InnoDB path settings to an empty string caused InnoDB storage engine to crash upon server startup. (Bug #16157)

  • InnoDB used full explicit table locks in trigger processing. (Bug #16229)

  • Server crash when dropping InnoDB constraints named _ibfk_0. (Bug #16387)

  • Corrected race condition when dropping the adaptive hash index for a B-tree page in InnoDB. (Bug #16582)

  • The C API function incorrectly reset the option to its default value. (Bug #15719)

  • : After upgrading an table having a column created in MySQL 4.0 to MySQL 5.0, update operations on the table would cause the server to crash. (Bug #16298)

  • Trying to compile the server on Windows generated a stack overflow warning due to a recursive definition of the internal method. (Bug #15634)

  • The use of within a stored routine was permitted and caused the server to crash. Note: statements within stored routines are not supported, and now yield an error if attempted. This behavior is intended. (Bug #14270)

  • The mysqlbinlog utility did not output statements, causing syntax errors for stored routine creation statements. (Bug #11312)

  • NDB Cluster returned incorrect error for OS error 24, changed to . (Bug #15020)

  • Performing a on an InnoDB table when the server is started with the and the data directory is a symlink caused a server crash. (Bug #15991)

  • Multi-byte path names for and caused errors. Added the system variable, which controls the interpretation of string literals that refer to filenames. (Bug #12448)

  • Certain subqueries where the inner query is the result of a aggregate function would return different results on MySQL 5.0 than on MySQL 4.1. (Bug #15347)

  • Attempts to create FULLTEXT indexes on VARCHAR columns larger than 1000 bytes resulted in error. (Bug #13835)

  • Characters in the and character sets which did not have Unicode mappings were truncated. (Bug #15377)

  • Certain nested LEFT JOIN operations were not properly optimized. (Bug #16393)

  • statements specifying schema names that included underscore characters (i.e. ) did not match if the underscore was escaped in the statement (i.e. ). (Bug #14834)

  • Running out of diskspace in the location specified by the option resulted in incorrect error message. (Bug #14634)

  • Test suite test left behind tables when the test failed that could cause future tests to fail. (Bug #15866)

  • statement crashed multi-byte character set index if update value was almost identical to initial value only differing in some spaces being changed to &nbsp;. (Bug #16489)

  • A query which contained a and an clause against the resulted in an empty result set. (Bug #15307)

  • The and options were not being enforced on multiple-table statements. (Bug #15699, Bug #16487)

  • A prepared statement created from a query (such as ) would begin to produce erratic results after being executed repeatedly numerous (thousands) of times. (Bug #12734)

  • The server would crash when the size of an table grew beyond 2GB. (Bug #15787)

  • Created a user function with an empty string (that is, ), was accepted by the server. Following this, calling would cause the server to crash. (Bug #15658)

  • In some cases the query optimizer did not properly perform multiple joins where inner joins followed left joins, resulting in corrupted result sets. (Bug #15633)

  • The absence of a table in the left part of a left or right join was not checked prior to name resolution, which resulted in a server crash. (Bug #15538)

  • : A bitfield whose offset and length totaled 32 would crash the cluster. (Bug #16125)

  • : Upon the completion of a scan where a key request remained outstanding on the primary replica and a starting node died, the scan did not terminate. This caused incompleted error handling of the failed node. (Bug #15908)

  • : The test failed sporadically due to a node not being permitted to connect to the cluster. (Bug #15619)

  • : When running more than one management process in a cluster:

    • ndb_mgm -c : -e " stop" would stop a management process running only on the same system on which the command was issued.

    • ndb_mgm -e "shutdown" failed to shut down any management processes at all.

    (Bug #12045, Bug #12124)

  • The contents of could not be loaded in strict SQL mode. (Bug #15760)

  • was not included in binary distributions for several platforms. (Bug #15759)

  • An statement between tables in a set can return errors when statement involves insert into child table from merge table or vice-versa. (Bug #5390)

  • Certain permission management statements could create a hostname for a user, resulting in a server crash. (Bug #15598)

  • A statement followed by a statement on a BDB table caused server crash. (Bug #14212)

  • A statement involving a and an test on the right-hand table of the join crashed the server when the option was enabled. (Bug #15650)

  • Performing an on an indexed column returned error. (Bug #15308)

  • The condition handler for stored procedures did not distinguish between a condition and an exception or warning. (Bug #15231)

  • A stored procedure with an undefined variable and an exception handler would hang the client when called. (Bug #14498)

  • Subselect could return wrong results when records cache and grouping was involved. (Bug #15347)

  • Temporary table aliasing did not work inside stored functions. (Bug #12198)

  • and operations were not optimized for views. (Bug #16016)

  • Using an aggregate function as the argument for a HAVING clause would result in the aggregate function always returning . (Bug #14274)

  • Parallel builds occasionally failed on Solaris. (Bug #16282)

  • The keyword in a query would prevent an index merge from being used where an index merge would normally be chosen by the optimizer. (Bug #16166)

  • The function truncated data in a column. (Bug #15581)

  • : Comparison of indexed columns using could fail. (Bug #14583)

  • An attempt to open a table that requires a disabled storage engine could cause a server crash. (Bug #15185)

  • Issuing a command could cause some users to encounter a is not allowed to connect to this MySQL server error. (Bug #15775)

  • Setting to a value greater than 4G crashed the server. (Bug #15108)

  • A of a stored function that references the could crash the server. (Bug #15533)

  • Tarball install package was missing a proper file. (Bug #15151)

D.1.9. Changes in release 5.0.18 (21 December 2005)

Functionality added or changed:

  • It is now possible to build the server such that tables can support up to 128 keys rather than the standard 64. This can be done by configuring the build using the option , where ≤128 is the maximum number of indexes to permit per table. (Bug #10932)

  • The server treats stored routine parameters and local variables (and stored function return values) according to standard SQL. Previously, parameters, variables, and return values were treated as items in expressions and were subject to automatic (silent) conversion and truncation. Now the data type is observed. Data type conversion and overflow problems that occur in assignments result in warnings, or errors in strict mode. The clause for character data type declarations is used. Parameters, variables, and return values must be scalars; it is no longer possible to assign a row value. Also, stored functions execute using the value in force at function creation time rather than ignoring it. For more information, see Section 17.2.1, “ and Syntax”. (Bug #8702, Bug #8768, Bug #8769, Bug #9078, Bug #9572, Bug #12903, Bug #13705, Bug #13808, Bug #13909, Bug #14161, Bug #15148)

Bugs fixed: