Appendix B. MySQL Change History

Table of Contents

B.1. Changes in release 4.1.x (Production)
B.1.1. Changes in release 4.1.23 (Not yet released)
B.1.2. Changes in release 4.1.22 (02 November 2006)
B.1.3. Changes in release 4.1.21 (19 July 2006)
B.1.4. Changes in release 4.1.20 (24 May 2006)
B.1.5. Changes in release 4.1.19 (29 April 2006)
B.1.6. Changes in release 4.1.18 (27 January 2006)
B.1.7. Changes in release 4.1.17 (Not released)
B.1.8. Changes in release 4.1.16 (29 November 2005)
B.1.9. Changes in release 4.1.15 (13 October 2005)
B.1.10. Changes in release 4.1.14 (17 August 2005)
B.1.11. Changes in release 4.1.13 (15 July 2005)
B.1.12. Changes in release 4.1.12 (13 May 2005)
B.1.13. Changes in release 4.1.11 (01 April 2005)
B.1.14. Changes in release 4.1.10 (12 February 2005)
B.1.15. Changes in release 4.1.9 (11 January 2005)
B.1.16. Changes in release 4.1.8 (14 December 2004)
B.1.17. Changes in release 4.1.7 (23 October 2004: Production)
B.1.18. Changes in release 4.1.6 (10 October 2004)
B.1.19. Changes in release 4.1.5 (16 September 2004)
B.1.20. Changes in release 4.1.4 (26 August 2004: Gamma)
B.1.21. Changes in release 4.1.3 (28 June 2004: Beta)
B.1.22. Changes in release 4.1.2 (28 May 2004)
B.1.23. Changes in release 4.1.1 (01 December 2003)
B.1.24. Changes in release 4.1.0 (03 April 2003: Alpha)
B.2. Changes in release 4.0.x
B.2.1. Changes in release 4.0.30 (12 February 2007)
B.2.2. Changes in release 4.0.29 (Not released)
B.2.3. Changes in release 4.0.28 (Not released)
B.2.4. Changes in release 4.0.27 (06 May 2006)
B.2.5. Changes in release 4.0.26 (08 September 2005)
B.2.6. Changes in release 4.0.25 (05 July 2005)
B.2.7. Changes in release 4.0.24 (04 March 2005)
B.2.8. Changes in release 4.0.23 (18 December 2004)
B.2.9. Changes in release 4.0.22 (27 October 2004)
B.2.10. Changes in release 4.0.21 (06 September 2004)
B.2.11. Changes in release 4.0.20 (17 May 2004)
B.2.12. Changes in release 4.0.19 (04 May 2004)
B.2.13. Changes in release 4.0.18 (12 February 2004)
B.2.14. Changes in release 4.0.17 (14 December 2003)
B.2.15. Changes in release 4.0.16 (17 October 2003)
B.2.16. Changes in release 4.0.15 (03 September 2003)
B.2.17. Changes in release 4.0.14 (18 July 2003)
B.2.18. Changes in release 4.0.13 (16 May 2003)
B.2.19. Changes in release 4.0.12 (15 March 2003: Production)
B.2.20. Changes in release 4.0.11 (20 February 2003)
B.2.21. Changes in release 4.0.10 (29 January 2003)
B.2.22. Changes in release 4.0.9 (09 January 2003)
B.2.23. Changes in release 4.0.8 (07 January 2003)
B.2.24. Changes in release 4.0.7 (20 December 2002)
B.2.25. Changes in release 4.0.6 (14 December 2002: Gamma)
B.2.26. Changes in release 4.0.5 (13 November 2002)
B.2.27. Changes in release 4.0.4 (29 September 2002)
B.2.28. Changes in release 4.0.3 (26 August 2002: Beta)
B.2.29. Changes in release 4.0.2 (01 July 2002)
B.2.30. Changes in release 4.0.1 (23 December 2001)
B.2.31. Changes in release 4.0.0 (October 2001: Alpha)
B.3. Changes in release 3.23.x
B.3.1. Changes in release 3.23.59 (Not yet released)
B.3.2. Changes in release 3.23.58 (11 September 2003)
B.3.3. Changes in release 3.23.57 (06 June 2003)
B.3.4. Changes in release 3.23.56 (13 March 2003)
B.3.5. Changes in release 3.23.55 (23 January 2003)
B.3.6. Changes in release 3.23.54 (05 December 2002)
B.3.7. Changes in release 3.23.53 (09 October 2002)
B.3.8. Changes in release 3.23.52 (14 August 2002)
B.3.9. Changes in release 3.23.51 (31 May 2002)
B.3.10. Changes in release 3.23.50 (21 April 2002)
B.3.11. Changes in release 3.23.49 (14 February 2002)
B.3.12. Changes in release 3.23.48 (07 February 2002)
B.3.13. Changes in release 3.23.47 (27 December 2001)
B.3.14. Changes in release 3.23.46 (29 November 2001)
B.3.15. Changes in release 3.23.45 (22 November 2001)
B.3.16. Changes in release 3.23.44 (31 October 2001)
B.3.17. Changes in release 3.23.43 (04 October 2001)
B.3.18. Changes in release 3.23.42 (08 September 2001)
B.3.19. Changes in release 3.23.41 (11 August 2001)
B.3.20. Changes in release 3.23.40 (18 July 2001)
B.3.21. Changes in release 3.23.39 (12 June 2001)
B.3.22. Changes in release 3.23.38 (09 May 2001)
B.3.23. Changes in release 3.23.37 (17 April 2001)
B.3.24. Changes in release 3.23.36 (27 March 2001)
B.3.25. Changes in release 3.23.35 (15 March 2001)
B.3.26. Changes in release 3.23.34a (11 March 2001)
B.3.27. Changes in release 3.23.34 (10 March 2001)
B.3.28. Changes in release 3.23.33 (09 February 2001)
B.3.29. Changes in release 3.23.32 (22 January 2001)
B.3.30. Changes in release 3.23.31 (17 January 2001: Production)
B.3.31. Changes in release 3.23.30 (04 January 2001)
B.3.32. Changes in release 3.23.29 (16 December 2000)
B.3.33. Changes in release 3.23.28 (22 November 2000: Gamma)
B.3.34. Changes in release 3.23.27 (24 October 2000)
B.3.35. Changes in release 3.23.26 (18 October 2000)
B.3.36. Changes in release 3.23.25 (29 September 2000)
B.3.37. Changes in release 3.23.24 (08 September 2000)
B.3.38. Changes in release 3.23.23 (01 September 2000)
B.3.39. Changes in release 3.23.22 (31 July 2000)
B.3.40. Changes in release 3.23.21 (04 July 2000)
B.3.41. Changes in release 3.23.20 (28 June 2000: Beta)
B.3.42. Changes in release 3.23.19
B.3.43. Changes in release 3.23.18 (11 June 2000)
B.3.44. Changes in release 3.23.17 (07 June 2000)
B.3.45. Changes in release 3.23.16 (16 May 2000)
B.3.46. Changes in release 3.23.15 (08 May 2000)
B.3.47. Changes in release 3.23.14 (09 April 2000)
B.3.48. Changes in release 3.23.13 (14 March 2000)
B.3.49. Changes in release 3.23.12 (07 March 2000)
B.3.50. Changes in release 3.23.11 (16 February 2000)
B.3.51. Changes in release 3.23.10 (30 January 2000)
B.3.52. Changes in release 3.23.9 (29 January 2000)
B.3.53. Changes in release 3.23.8 (02 January 2000)
B.3.54. Changes in release 3.23.7 (10 December 1999)
B.3.55. Changes in release 3.23.6 (15 December 1999)
B.3.56. Changes in release 3.23.5 (20 October 1999)
B.3.57. Changes in release 3.23.4 (28 September 1999)
B.3.58. Changes in release 3.23.3 (13 September 1999)
B.3.59. Changes in release 3.23.2 (09 August 1999)
B.3.60. Changes in release 3.23.1 (08 July 1999)
B.3.61. Changes in release 3.23.0 (05 July 1999: Alpha)
B.4. Changes in InnoDB
B.4.1. Changes in MySQL/InnoDB-4.0.21, September 10, 2004
B.4.2. Changes in MySQL/InnoDB-4.1.4, August 31, 2004
B.4.3. Changes in MySQL/InnoDB-4.1.3, June 28, 2004
B.4.4. Changes in MySQL/InnoDB-4.1.2, May 30, 2004
B.4.5. Changes in MySQL/InnoDB-4.0.20, May 18, 2004
B.4.6. Changes in MySQL/InnoDB-4.0.19, May 4, 2004
B.4.7. Changes in MySQL/InnoDB-4.0.18, February 13, 2004
B.4.8. Changes in MySQL/InnoDB-5.0.0, December 24, 2003
B.4.9. Changes in MySQL/InnoDB-4.0.17, December 17, 2003
B.4.10. Changes in MySQL/InnoDB-4.1.1, December 4, 2003
B.4.11. Changes in MySQL/InnoDB-4.0.16, October 22, 2003
B.4.12. Changes in MySQL/InnoDB-3.23.58, September 15, 2003
B.4.13. Changes in MySQL/InnoDB-4.0.15, September 10, 2003
B.4.14. Changes in MySQL/InnoDB-4.0.14, July 22, 2003
B.4.15. Changes in MySQL/InnoDB-3.23.57, June 20, 2003
B.4.16. Changes in MySQL/InnoDB-4.0.13, May 20, 2003
B.4.17. Changes in MySQL/InnoDB-4.1.0, April 3, 2003
B.4.18. Changes in MySQL/InnoDB-3.23.56, March 17, 2003
B.4.19. Changes in MySQL/InnoDB-4.0.12, March 18, 2003
B.4.20. Changes in MySQL/InnoDB-4.0.11, February 25, 2003
B.4.21. Changes in MySQL/InnoDB-4.0.10, February 4, 2003
B.4.22. Changes in MySQL/InnoDB-3.23.55, January 24, 2003
B.4.23. Changes in MySQL/InnoDB-4.0.9, January 14, 2003
B.4.24. Changes in MySQL/InnoDB-4.0.8, January 7, 2003
B.4.25. Changes in MySQL/InnoDB-4.0.7, December 26, 2002
B.4.26. Changes in MySQL/InnoDB-4.0.6, December 19, 2002
B.4.27. Changes in MySQL/InnoDB-3.23.54, December 12, 2002
B.4.28. Changes in MySQL/InnoDB-4.0.5, November 18, 2002
B.4.29. Changes in MySQL/InnoDB-3.23.53, October 9, 2002
B.4.30. Changes in MySQL/InnoDB-4.0.4, October 2, 2002
B.4.31. Changes in MySQL/InnoDB-4.0.3, August 28, 2002
B.4.32. Changes in MySQL/InnoDB-3.23.52, August 16, 2002
B.4.33. Changes in MySQL/InnoDB-4.0.2, July 10, 2002
B.4.34. Changes in MySQL/InnoDB-3.23.51, June 12, 2002
B.4.35. Changes in MySQL/InnoDB-3.23.50, April 23, 2002
B.4.36. Changes in MySQL/InnoDB-3.23.49, February 17, 2002
B.4.37. Changes in MySQL/InnoDB-3.23.48, February 9, 2002
B.4.38. Changes in MySQL/InnoDB-3.23.47, December 28, 2001
B.4.39. Changes in MySQL/InnoDB-4.0.1, December 23, 2001
B.4.40. Changes in MySQL/InnoDB-3.23.46, November 30, 2001
B.4.41. Changes in MySQL/InnoDB-3.23.45, November 23, 2001
B.4.42. Changes in MySQL/InnoDB-3.23.44, November 2, 2001
B.4.43. Changes in MySQL/InnoDB-3.23.43, October 4, 2001
B.4.44. Changes in MySQL/InnoDB-3.23.42, September 9, 2001
B.4.45. Changes in MySQL/InnoDB-3.23.41, August 13, 2001
B.4.46. Changes in MySQL/InnoDB-3.23.40, July 16, 2001
B.4.47. Changes in MySQL/InnoDB-3.23.39, June 13, 2001
B.4.48. Changes in MySQL/InnoDB-3.23.38, May 12, 2001
B.5. Changes in MySQL Cluster
B.5.1. Changes in MySQL Cluster-5.0.7 (10 June 2005)
B.5.2. Changes in MySQL Cluster-5.0.6 (26 May 2005)
B.5.3. Changes in MySQL Cluster-5.0.5 (Not released)
B.5.4. Changes in MySQL Cluster-5.0.4 (16 April 2005)
B.5.5. Changes in MySQL Cluster-5.0.3 (23 March 2005: Beta)
B.5.6. Changes in MySQL Cluster-5.0.1 (27 July 2004)
B.5.7. Changes in MySQL Cluster-4.1.13 (15 July 2005)
B.5.8. Changes in MySQL Cluster-4.1.12 (13 May 2005)
B.5.9. Changes in MySQL Cluster-4.1.11 (01 April 2005)
B.5.10. Changes in MySQL Cluster-4.1.10 (12 February 2005)
B.5.11. Changes in MySQL Cluster-4.1.9 (13 January 2005)
B.5.12. Changes in MySQL Cluster-4.1.8 (14 December 2004)
B.5.13. Changes in MySQL Cluster-4.1.7 (23 October 2004)
B.5.14. Changes in MySQL Cluster-4.1.6 (10 October 2004)
B.5.15. Changes in MySQL Cluster-4.1.5 (16 September 2004)
B.5.16. Changes in MySQL Cluster-4.1.4 (31 August 2004)
B.5.17. Changes in MySQL Cluster-4.1.3 (28 June 2004)
B.6. MySQL Connector/ODBC (MyODBC) Change History
B.6.1. Changes in Connector/ODBC 5.0.11 (31 January 2007)
B.6.2. Changes in Connector/ODBC 5.0.10 (14 December 2006)
B.6.3. Changes in Connector/ODBC 5.0.9 (22 November 2006)
B.6.4. Changes in Connector/ODBC 5.0.8 (17 November 2006)
B.6.5. Changes in Connector/ODBC 5.0.7 (08 November 2006)
B.6.6. Changes in Connector/ODBC 5.0.6 (03 November 2006)
B.6.7. Changes in Connector/ODBC 5.0.5 (17 October 2006)
B.6.8. Changes in Connector/ODBC 5.0.3 (Connector/ODBC 5.0 Alpha 3) (20 June 2006)
B.6.9. Changes in Connector/ODBC 5.0.2 (Never released)
B.6.10. Changes in Connector/ODBC 5.0.1 (Connector/ODBC 5.0 Alpha 2) (05 June 2006)
B.6.11. Changes in Connector/ODBC 3.51.16 (Not yet released)
B.6.12. Changes in Connector/ODBC 3.51.15 (7 May 2007)
B.6.13. Changes in Connector/ODBC 3.51.14 (08 March 2007)
B.6.14. Changes in Connector/ODBC 3.51.13 (Never released)
B.6.15. Changes in Connector/ODBC 3.51.12
B.6.16. Changes in Connector/ODBC 3.51.11
B.7. Connector/NET Change History
B.7.1. Changes in MySQL Connector/NET Version 5.1.1 (Not yet released)
B.7.2. Changes in MySQL Connector/NET Version 5.1.0 (01 May 2007)
B.7.3. Changes in MySQL Connector/NET Version 5.0.7 (Not yet released)
B.7.4. Changes in MySQL Connector/NET Version 5.0.6 (22 March 2007)
B.7.5. Changes in MySQL Connector/NET Version 5.0.5 (07 March 2007)
B.7.6. Changes in MySQL Connector/NET Version 5.0.4 (Not released)
B.7.7. Changes in MySQL Connector/NET Version 5.0.3 (05 January 2007)
B.7.8. Changes in MySQL Connector/NET Version 5.0.2 (06 November 2006)
B.7.9. Changes in MySQL Connector/NET Version 5.0.1 (01 October 2006)
B.7.10. Changes in MySQL Connector/NET Version 5.0.0 (08 August 2006)
B.7.11. Changes in MySQL Connector/NET Version 1.0.10 (Not yet released)
B.7.12. Changes in MySQL Connector/NET Version 1.0.9 (02 February 2007
B.7.13. Changes in MySQL Connector/NET Version 1.0.8 (20 October 2006)
B.7.14. Changes in MySQL Connector/NET Version 1.0.7 (21 November 2005)
B.7.15. Changes in MySQL Connector/NET Version 1.0.6 (03 October 2005)
B.7.16. Changes in MySQL Connector/NET Version 1.0.5 (29 August 2005)
B.7.17. Changes in MySQL Connector/NET Version 1.0.4 (20 January 2005)
B.7.18. Changes in MySQL Connector/NET Version 1.0.3-gamma (12 October 2004)
B.7.19. Changes in MySQL Connector/NET Version 1.0.2-gamma (15 November 2004)
B.7.20. Changes in MySQL Connector/NET Version 1.0.1-beta2 (27 October 2004)
B.7.21. Changes in MySQL Connector/NET Version 1.0.0 (01 September 2004)
B.7.22. Changes in MySQL Connector/NET Version 0.9.0 (30 August 2004)
B.7.23. Changes in MySQL Connector/NET Version 0.76
B.7.24. Changes in MySQL Connector/NET Version 0.75
B.7.25. Changes in MySQL Connector/NET Version 0.74
B.7.26. Changes in MySQL Connector/NET Version 0.71
B.7.27. Changes in MySQL Connector/NET Version 0.70
B.7.28. Changes in MySQL Connector/NET Version 0.68
B.7.29. Changes in MySQL Connector/NET Version 0.65
B.7.30. Changes in MySQL Connector/NET Version 0.60
B.7.31. Changes in MySQL Connector/NET Version 0.50
B.8. MySQL Connector/J Change History
B.8.1. Changes in MySQL Connector/J 5.1.x
B.8.2. Changes in MySQL Connector/J 5.0.x
B.8.3. Changes in MySQL Connector/J 3.1.x
B.8.4. Changes in MySQL Connector/J 3.0.x
B.8.5. Changes in MySQL Connector/J 2.0.x
B.8.6. Changes in MySQL Connector/J 1.2b (04 July 1999)
B.8.7. Changes in MySQL Connector/J 1.2.x and lower
B.9. MySQL Connector/MXJ Change History
B.9.1. Changes in MySQL Connector/MXJ 5.0.6 (04 May 2007)
B.9.2. Changes in MySQL Connector/MXJ 5.0.5 (14 March 2007)
B.9.3. Changes in MySQL Connector/MXJ 5.0.4 (28 January 2007)
B.9.4. Changes in MySQL Connector/MXJ 5.0.3 (24 June 2006)
B.9.5. Changes in MySQL Connector/MXJ 5.0.2 (15 June 2006)
B.9.6. Changes in MySQL Connector/MXJ 5.0.1 (Never released)
B.9.7. Changes in MySQL Connector/MXJ 5.0.0 (09 December 2005)

This appendix lists the changes from version to version in the MySQL source code through the latest version of MySQL 4.1.

End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).

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 (http://dev.mysql.com/downloads/), 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.

B.1. Changes in release 4.1.x (Production)

End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).

Version 4.1 of the MySQL server includes many enhancements and new features. Binaries for this version are available for download at http://dev.mysql.com/downloads/mysql-4.1.html.

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

B.1.1. Changes in release 4.1.23 (Not yet released)

End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).

This is a bugfix release for the MySQL 4.1 release family.

Functionality added or changed:

  • Incompatible change: Previously, the DATE_FORMAT() function returned a binary string. Now it returns a string with a character set and collation given by character_set_connection and collation_connection so that it can return month and weekday names containing non-ASCII characters. (Bug#22646)

  • Incompatible change: The prepared_stmt_count system variable has been converted to the Prepared_stmt_count global status variable (viewable with the SHOW GLOBAL STATUS statement). (Bug#23159)

  • mysqldump --single-transaction now uses START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */ rather than BEGIN to start a transaction, so that a consistent snapshot will be used on those servers that support it. (Bug#19660)

  • Important: When using MERGE tables the definition of the MERGE table and the MyISAM tables are checked each time the tables are opened for access (including any SELECT or INSERT statement. Each table is compared for column order, types, sizes and associated. If there is a difference in any one of the tables then the statement will fail.

  • The --memlock option relies on system calls that are unreliable on some operating systems. If a crash occurs, the server now checks whether --memlock was specified and if so issues some information about possible workarounds. (Bug#22860)

  • The server now includes a timestamp in error messages that are logged as a result of unhandled signals (such as mysqld got signal 11 messages). (Bug#24878)

Bugs fixed:

  • Security fix: The requirement of the DROP privilege for RENAME TABLE was not being enforced. (Bug#27515)

  • Incompatible change: For ENUM columns that had enumeration values containing commas, the commas were mapped to 0xff internally. However, this rendered the commas indistinguishable from true 0xff characters in the values. This no longer occurs. However, the fix requires that you dump and reload any tables that have ENUM columns containing true 0xff in their values: Dump the tables using mysqldump with the current server before upgrading from a version of MySQL 4.1 older than 4.1.23 to version 4.1.23 or newer. (Bug#24660)

  • Incompatible change: INSERT DELAYED statements are not supported for MERGE tables, but the MERGE storage engine was not rejecting such statements, resulting in table corruption. Applications previously using INSERT DELAYED into MERGE table will break when upgrading to versions with this fix. To avoid the problem, remove DELAYED from such statements. (Bug#26464)

  • For MERGE tables defined on underlying tables that contained a short VARCHAR column (shorter than four characters), using ALTER TABLE on at least one but not all of the underlying tables caused the table definitions to be considered different from that of the MERGE table, even if the ALTER TABLE did not change the definition. Also, when the underlying tables contained a TINYINT or CHAR(1) column, the MERGE storage engine incorrectly reported that they differed from the MERGE table in certain cases. (Bug#26881)

  • Changes to some system variables should invalidate statements in the query cache, but invalidation did not happen. (Bug#27792)

  • The fix for Bug#17212 provided correct sort order for misordered output of certain queries, but caused significant overall query performance degradation. (Results were correct (good), but returned much more slowly (bad).) The fix also affected performance of queries for which results were correct. The performance degradation has been addressed. (Bug#27531)

  • Using CAST() to convert DATETIME values to numeric values did not work. (Bug#23656)

  • Index hints (USE INDEX, IGNORE INDEX, FORCE INDEX) cannot be used with FULLTEXT indexes, but were not being ignored. (Bug#25951)

  • The result set of a query that used WITH ROLLUP and DISTINCT could lack some rollup rows (rows with NULL values for grouping attributes) if the GROUP BY list contained constant expressions. (Bug#24856)

  • The patch for Bug#21789 was reverted.

  • The MERGE storage engine could return incorrect results when several index values that compare equality were present in an index (for example, 'gross' and 'gross ', which are considered equal but have different lengths). (Bug#24342)

  • Some long error messages were printed incorrectly. (Bug#20710)

  • INSERT...ON DUPLICATE KEY UPDATE could cause Error 1032: Can't find record in ... for inserts into an InnoDB table unique index using key column prefixes with an underlying utf8 string column. (Bug#13191)

  • Comparisons using row constructors could fail for rows containing NULL values. (Bug#27704)

  • The range optimizer could consume a combinatorial amount of memory for certain classes of WHERE clauses. (Bug#26624)

  • Conversion of DATETIME values in numeric contexts sometimes did not produce a double (YYYYMMDDHHMMSS.uuuuuu) value. (Bug#16546)

  • Passing nested row expressions with different structures to an IN predicate caused a server crash. (Bug#27484)

  • A subquery could get incorrect values for references to outer query columns when it contained aggregate functions that were aggregated in outer context. (Bug#27321)

  • Incorrect results could be returned for some queries that contained a select list expression with IN or BETWEEN together with an ORDER BY or GROUP BY on the same expression using NOT IN or NOT BETWEEN. (Bug#27532)

  • GRANT statements were not replicated if the server was started with the --replicate-ignore-table or --replicate-wild-ignore-table option. (Bug#25482)

  • For MyISAM tables, COUNT(*) could return an incorrect value if the WHERE clause compared an indexed TEXT column to the empty string (''). This happened if the column contained empty strings and also strings starting with control characters such as tab or newline. (Bug#26231)

  • Duplicate entries were not assessed correctly in a MEMORY table with a BTREE primary key on a utf8 ENUM column. (Bug#24985)

  • Storing NULL values in spatial fields caused excessive memory allocation and crashes on some systems. (Bug#27164)

  • In a MEMORY table, using a BTREE index to scan for updatable rows could lead to an infinite loop. (Bug#26996)

  • The range optimizer could cause the server to run out of memory. (Bug#26625)

  • Difficult repair or optimization operations could cause an assertion failure, resulting in a server crash. (Bug#25289)

  • DOUBLE values such as 20070202191048.000000 were being treated as illegal arguments by WEEK(). (Bug#23616)

  • If a thread previously serviced a connection that was killed, excessive memory and CPU use by the thread occurred if it later serviced a connection that had to wait for a table lock. (Bug#25966)

  • LOAD DATA INFILE sent an okay to the client before writing the binary log and committing the changes to the table had finished, thus violating ACID requirements. (Bug#26050)

  • In certain cases it could happen that deleting a row corrupted an RTREE index. This affected indexes on spatial columns. (Bug#25673)

  • Added support for --debugger=dbx for mysql-test-run.pl and fixed support for --debugger=devenv, --debugger=DevEnv, and --debugger=/path/to/devenv. (Bug#26792)

  • X() IS NULL and Y() IS NULL comparisons failed when X() and Y() returned NULL. (Bug#26038)

  • UNHEX() IS NULL comparisons failed when UNHEX() returned NULL. (Bug#26537)

  • A reference to a non-existent column in the ORDER BY clause of an UPDATE ... ORDER BY statement could cause a server crash. (Bug#25126)

  • The creation of MySQL system tables was not checked for by mysql-test-run.pl. (Bug#20166)

  • NOW() returned the wrong value in statements executed at server startup with the --init-file option. (Bug#23240)

  • For ALTER TABLE, using ORDER BY expression could cause a server crash. Now the ORDER BY clause allows only column names to be specified as sort criteria (which was the only documented syntax, anyway). (Bug#24562)

  • Storing values specified as hexadecimal values 64 or more bits long into BIGINT or BIGINT UNSIGNED columns did not raise any warning or error if the value was out of range. (Bug#22533)

  • ISNULL(DATE(NULL)) and ISNULL(CAST(NULL AS DATE)) erroneously returned false. (Bug#23938)

  • If a slave server closed its relay log (for example, due to an error during log rotation), the I/O thread did not recognize this and still tried to write to the log, causing a server crash. (Bug#10798)

  • Foreign key identifiers for InnoDB tables could not contain certain characters. (Bug#24299)

  • The number of setsockopt() calls performed for reads and writes to the network socket was reduced to decrease system call overhead. (Bug#22943)

  • ORDER BY on DOUBLE or DECIMAL values could change the set of rows returned by a query. (Bug#19690)

  • The InnoDB parser sometimes did not account for null bytes, causing spurious failure of some queries. (Bug#25596)

  • perror crashed on some platforms due to failure to handle a NULL pointer. (Bug#25344)

  • mysql_stmt_fetch() did an invalid memory deallocation when used with the embedded server. (Bug#25492)

  • mysqld_multi and mysqlaccess looked for option files in /etc even if the --sysconfdir option for configure had been given to specify a different directory. (Bug#24780)

  • The arguments of the ENCODE() and the DECODE() functions were not printed correctly, causing problems in the output of EXPLAIN EXTENDED. (Bug#23409)

  • A return value of -1 from user-defined handlers was not handled well and could result in conflicts with server code. (Bug#24987)

  • The server might fail to use an appropriate index for DELETE when ORDER BY, LIMIT, and a non-restricting WHERE are present. (Bug#17711)

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

  • SHOW COLUMNS reported some NOT NULL columns as NULL. (Bug#22377)

  • If an ORDER BY or GROUP BY list included a constant expression being optimized away and, at the same time, containing single-row subselects that return more that one row, no error was reported. If a query requires sorting by expressions containing single-row subselects that return more than one row, execution of the query may cause a server crash. (Bug#24653)

  • Attempts to access a MyISAM table with a corrupt column definition caused a server crash. (Bug#24401)

  • Accessing a fixed record format table with a crashed key definition results in server/myisamchk segmentation fault. (Bug#24855)

  • When opening a corrupted .frm file during a query, the server crashes. (Bug#24358)

  • If there was insufficient memory to store or update a blob record in a MyISAM table then the table will marked as crashed. (Bug#23196)

  • When updating a table that used a JOIN of the table itself (for example, when building trees) and the table was modified on one side of the expression, the table would either be reported as crashed or the wrong rows in the table would be updated. (Bug#21310)

  • No warning was issued for use of the DATA DIRECTORY or INDEX DIRECTORY table options on a platform that does not support them. (Bug#17498)

  • Hebrew-to-Unicode conversion failed for some characters. Definitions for the following Hebrew characters (as specified by the ISO/IEC 8859-8:1999) were added: LEFT-TO-RIGHT MARK (LRM), RIGHT-TO-LEFT MARK (RLM) (Bug#24037)

  • Certain joins using Range checked for each record in the query execution plan could cause the server to crash. (Bug#24776)

  • If there was insufficient memory available to mysqld, this could sometimes cause the server to hang during startup. (Bug#24751)

  • Optimizations that are legal only for subqueries without tables and WHERE conditions were applied for any subquery without tables. (Bug#24670)

  • NDB Cluster: Some queries that updated multiple tables were not backed up correctly. (Bug#27748)

  • NDB Cluster: The management client command node_id STATUS displayed the message Node node_id: not connected when node_id was not the node ID of a data node. (Bug#21715)

    Note

    The ALL STATUS command in the cluster management client still displays status information for data nodes only. This is by design. See Section 15.7.2, “Commands in the MySQL Cluster Management Client”, for more information.

  • NDB Cluster (Cluster APIs): libndbclient.so was not versioned. (Bug#13522)

  • NDB Cluster: In some circumstances, shutting down the cluster could cause connected mysqld processes to crash. (Bug#25668)

  • mysqltest incorrectly tried to retrieve result sets for some queries where no result set was available. (Bug#19410)

  • mysqltest crashed with a stack overflow. (Bug#24498)

  • The server was built even when configure was run with the --without-server option. (Bug#23973)

  • A table created with the ROW_FORMAT = FIXED table option lost the option if an index was added or dropped with CREATE INDEX or DROP INDEX. (Bug#23404)

  • The BUILD/check-cpu script did not recognize Celeron processors. (Bug#20061)

  • InnoDB exhibited thread thrashing with more than 50 concurrent connections under an update-intensive workload. (Bug#22868)

  • InnoDB showed substandard performance with multiple queries running concurrently. (Bug#15815)

  • mysql_fix_privilege_tables did not handle a password containing embedded space or apostrophe characters. (Bug#17700)

  • Changing the value of MI_KEY_BLOCK_LENGTH in myisam.h and recompiling MySQL resulted in a myisamchk that saw existing MyISAM tables as corrupt. (Bug#22119)

  • SET lc_time_names = value allowed only exact literal values, not expression values. (Bug#22647)

  • Changes to the lc_time_names system variable were not replicated. (Bug#22645)

  • mysqldump --order-by-primary failed if the primary key name was an identifier that required quoting. (Bug#13926)

  • Re-execution of CREATE DATABASE, CREATE TABLE, and ALTER TABLE statements as prepared statements caused incorrect results or crashes. (Bug#22060)

  • The internal functions for table preparation, creation, and alteration were not re-execution friendly, causing problems in code that: repeatedly altered a table; repeatedly created and dropped a table; opened and closed a cursor on a table, altered the table, and then reopened the cursor. (Bug#4968, Bug#6895, Bug#19182, Bug#19733)

  • A deadlock could occur, with the server hanging on Closing tables, with a sufficient number of concurrent INSERT DELAYED, FLUSH TABLES, and ALTER TABLE operations. (Bug#23312)

  • Referencing an ambiguous column alias in an expression in the ORDER BY clause of a query caused the server to crash. (Bug#25427)

  • User-defined variables could consume excess memory, leading to a crash caused by the exhaustion of resources available to the MEMORY storage engine, due to the fact that this engine is used by MySQL for variable storage and intermediate results of GROUP BY queries. Where SET had been used, such a condition could instead give rise to the misleading error message You may only use constant expressions with SET, rather than Out of memory (Needed NNNNNN bytes). (Bug#23443)

  • InnoDB: During a restart of the MySQL Server that followed the creation of a temporary table using the InnoDB storage engine, MySQL failed to clean up in such a way that InnoDB still attempted to find the files associated with such tables. (Bug#20867)

  • A compressed MyISAM table that became corrupted could crash myisamchk and possibly the MySQL Server. (Bug#23139)

  • A crash of the MySQL Server could occur when unpacking a BLOB column from a row in a corrupted MyISAM table. This could happen when trying to repair a table using either REPAIR TABLE or myisamchk; it could also happen when trying to access such a “broken” row using statements like SELECT if the table was not marked as crashed. (Bug#22053)

  • Trailing spaces were not removed from Unicode CHAR column values when used in indexes. This resulted in excessive usage of storage space, and could affect the results of some ORDER BY queries that made use of such indexes.

    Note: When upgrading, it is necessary to re-create any existing indexes on Unicode CHAR columns in order to take advantage of the fix. This can be done by using a REPAIR TABLE statement on each affected table.

    (Bug#22052)

  • The stack size for NetWare binaries was increased to 128KB to prevent problems caused by insufficient stack size. (Bug#23504)

  • ALTER ENABLE KEYS or ALTER TABLE DISABLE KEYS combined with another ALTER TABLE option other than RENAME TO did nothing. In addition, if ALTER TABLE was used on a table having disabled keys, the keys of the resulting table were enabled. (Bug#24395)

  • Queries using a column alias in an expression as part of an ORDER BY clause failed, an example of such a query being SELECT mycol + 1 AS mynum FROM mytable ORDER BY 30 - mynum. (Bug#22457)

  • STR_TO_DATE() returned NULL if the format string contained a space following a non-format character. (Bug#22029)

  • Selecting into variables sometimes returned incorrect wrong results. (Bug#20836)

  • A server crash occurred when using LOAD DATA to load a table containing a NOT NULL spatial column, when the statement did not load the spatial column. Now a NULL supplied to NOT NULL column error occurs. (Bug#22372)

  • The --extern option for mysql-test-run.pl did not function correctly. (Bug#24354)

  • ALTER TABLE statements that performed both RENAME TO and {ENABLE|DISABLE} KEYS operations caused a server crash. (Bug#24089)

  • There was a race condition in the InnoDB fil_flush_file_spaces() function. (Bug#24089)

  • Some small double precision numbers (such as 1.00000001e-300) that should have been accepted were truncated to zero. (Bug#22129)

  • LAST_DAY('0000-00-00') could cause a server crash. (Bug#23653)

  • Through the C API, the member strings in MYSQL_FIELD for a query that contains expressions may return incorrect results. (Bug#21635)

  • IN() can return NULL, but did not signal that to the query processor, causing incorrect results for IS NULL operations. (Bug#17047)

  • The server could send incorrect column count information to the client for queries that produce a larger number of columns than can fit in a two-byte number. (Bug#19216)

  • SQL statements close to the size of max_allowed_packet could produce binary log events larger than max_allowed_packet that could not be read by slave servers. (Bug#19402)

  • If elements in a non-top-level IN subquery were accessed by an index and the subquery result set included a NULL value, the quantified predicate that contained the subquery was evaluated to NULL when it should return a non-NULL value. (Bug#23478)

  • Metadata for columns calculated from scalar subqueries was limited to integer, double, or string, even if the actual type of the column was different. (Bug#11032)

  • For ODBC compatibility, MySQL supports use of WHERE col_name IS NULL for DATE or DATETIME columns that are NOT NULL, to allow column values of '0000-00-00' or '0000-00-00 00:00:00' to be selected. However, this was not working for WHERE clauses in DELETE statements. (Bug#23412)

  • mysql did not check for errors when fetching data during result set printing. (Bug#22913)

  • Adding a day, month, or year interval to a DATE value produced a DATE, but adding a week interval produced a DATETIME value. Now all produce a DATE value. (Bug#21811)

  • For not-yet-authenticated connections, the Time column in SHOW PROCESSLIST was a random value rather than NULL. (Bug#23379)

  • The Handler_rollback status variable sometimes was incremented when no rollback had taken place. (Bug#22728)

  • Lack of validation for input and output TIME values resulted in several problems: SEC_TO_TIME() within subqueries incorrectly clipped large values; SEC_TO_TIME() treated BIGINT UNSIGNED values as signed; only truncation warnings were produced when both truncation and out-of-range TIME values occurred. (Bug#11655, Bug#20927)

  • Range searches on columns with an index prefix could miss records. (Bug#20732)

  • Transient errors in replication from master to slave may trigger multiple Got fatal error 1236: 'binlog truncated in the middle of event' errors on the slave. (Bug#4053)

  • If COMPRESS() returned NULL, subsequent invocations of COMPRESS() within a result set or within a trigger also returned NULL. (Bug#23254)

  • mysql would lose its connection to the server if its standard output was not writable. (Bug#17583)

  • mysql-test-run did not work correctly for RPM-based installations. (Bug#17194)

  • The return value from my_seek() was ignored. (Bug#22828)

  • MySQL would fail to build on the Alpha platform. (Bug#23256)

B.1.2. Changes in release 4.1.22 (02 November 2006)

End of Product LifecycleActive development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).

This is a bugfix release for the MySQL 4.1 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 Enterprise (a commercial MySQL offering). For more details please see http://www.mysql.com/products/enterprise.

Functionality added or changed:

  • If the user specified the server options --max-connections=N or --table-open-cache=M, a warning would be given in some cases that some values were recalculated, with the result that --table-open-cache could be assigned greater value.

    It should be noted that, in such cases, both the warning and the increase in the --table-open-cache value were completely harmless. Note also that it is not possible for the MySQL Server to predict or to control limitations on the maximum number of open files, since this is determined by the operating system.

    The recalculation code has now been fixed to ensure that the value of --table-open-cache is no longer increased automatically, and that a warning is now given only if some values had to be decreased due to operating system limits.

    (Bug#21915)

  • The mysqld manpage has been reclassified from volume 1 to volume 8. (Bug#21220)

  • MySQL now can do stack dumps on x86_64 and i386/NPTL systems. (Bug#21250)

  • The LOAD DATA FROM MASTER and LOAD TABLE FROM MASTER statements are deprecated. See Section 13.6.2.2, “LOAD DATA FROM MASTER Syntax”, for recommended alternatives. (Bug#18822, Bug#9125, Bug#12187, Bug#14399, Bug#15025, Bug#20596)

  • A warning now is issued if the client attempts to set the SQL_LOG_OFF variable without the SUPER privilege. (Bug#16180)

Bugs fixed:

  • The patch for Bug#16377 was reverted.

  • Certain malformed INSERT statements could crash the mysql client. (Bug#21142)

  • Deleting entries from a large MyISAM index could cause index corruption when it needed to shrink. Deletes from an index can happen when a record is deleted, when a key changes and must be moved, and when a key must be un-inserted because of a duplicate key. This can also happen in REPAIR TABLE when a duplicate key is found and in myisamchk when sorting the records by an index. (Bug#22384)

  • Setting myisam_repair_threads caused any repair operation on a MyISAM table to fail to update the cardinality of indexes, instead making them always equal to 1. (Bug#18874)

  • Within a prepared statement, SELECT (COUNT(*) = 1) (or similar use of other aggregate functions) did not return the correct result for statement re-execution. (Bug#21354)

  • DELETE IGNORE could hang for foreign key parent deletes. (Bug#18819)

  • Redundant binary log LAST_INSERT_ID events could be generated; LAST_INSERT_ID(expr) didn't return the value of expr; LAST_INSERT_ID() could return the value generated by the current statement if the call happens after value generation, as in:

    CREATE TABLE t1 (i INT AUTO_INCREMENT PRIMARY KEY, j INT);
    INSERT INTO t1 VALUES (NULL, 0), (NULL, LAST_INSERT_ID());
    

    (Bug#21726)

  • FROM_UNIXTIME() did not accept arguments up to POWER(2,31)-1, which it had previously. (Bug#9191)

  • A literal string in a GROUP BY clause could be interpreted as a column name. (Bug#14019)

  • WITH ROLLUP could group unequal values. (Bug#20825)

  • LIKE searches failed for indexed utf8 character columns. (Bug#20471)

  • The optimizer sometimes mishandled R-tree indexes for GEOMETRY data types, resulting in a server crash. (Bug#21888)

  • Entries in the slow query log could have an incorrect Rows_examined value. (Bug#12240)

  • Insufficient memory (myisam_sort_buffer_size) could cause a server crash for several operations on MyISAM tables: repair table, create index by sort, repair by sort, parallel repair, bulk insert. (Bug#23175)

  • REPAIR TABLE ... USE_FRM could cause a server crash or hang when used for a MyISAM table in a database other than the default database. (Bug#22562)

  • OPTIMIZE TABLE with myisam_repair_threads > 1 could result in MyISAM table corruption. (Bug#8283)

  • The result for CAST() when casting a value to UNSIGNED was limited to the maximum signed BIGINT value (9223372036854775808), not the maximum unsigned value (18446744073709551615). (Bug#8663)

  • For multiple-table UPDATE statements, storage engines were not notified of duplicate-key errors. (Bug#21381)

  • Successive invocations of a COUNT(*) query containing a join on two MyISAM tables and a WHERE clause of the form WHERE (table1.column1 = table2.column2) OR table2.column2 IS NULL yielded different results. (Bug#21019)

  • Using ALTER TABLE to add an ENUM column with an enumeration value containing 0xFF caused the name of the first table column to be lost. (Bug#20922)

  • PROCEDURE ANALYSE() returned incorrect values of M FLOAT(M, D) and DOUBLE(M, D). (Bug#20305)

  • A query that used GROUP BY and an ALL or ANY quantified subquery in a HAVING clause could trigger an assertion failure. (Bug#21853)

  • For an ENUM column that used the ucs2 character set, using ALTER TABLE to modify the column definition caused the default value to be lost. (Bug#20108)

  • Creating a TEMPORARY table with the same name as an existing table that was locked by another client could result in a lock conflict for DROP TEMPORARY TABLE because the server unnecessarily tried to acquire a name lock. (Bug#21096)

  • Incorporated some portability fixes into the definition of __attribute__ in my_global.h. (Bug#2717)

  • In the package of pre-built time zone tables that is available for download at http://dev.mysql.com/downloads/timezones.html, the tables now explicitly use the utf8 character set so that they work the same way regardless of the system character set value. (Bug#21208)

  • The build process incorrectly tried to overwrite sql/lex_hash.h. This caused the build to fail when using a shadow link tree pointing to original sources that were owned by another account. (Bug#18888)

  • Execution of a prepared statement that uses an IN subquery with aggregate functions in the HAVING clause could cause a server crash. (Bug#22085)

  • Selecting from a MERGE table could result in a server crash if the underlying tables had fewer indexes than the MERGE table itself. (Bug#21617, Bug#22937)

  • SUBSTR() results sometimes were stored improperly into a temporary table when multi-byte character sets were used. (Bug#20204)

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

  • The source distribution failed to compile when configured with the --without-geometry option. (Bug#12991)

  • The server returns a more informative error message when it attempts to open a MERGE table that has been defined to use non-MyISAM tables. (Bug#10974)

  • On Mac OS X, zero-byte read() or write() calls to an SMB-mounted filesystem could return a non-standard return value, leading to data corruption. Now such calls are avoided. (Bug#12620)

  • For INSERT ... ON DUPLICATE KEY UPDATE, use of VALUES(col_name) within the UPDATE clause sometimes was handled incorrectly. (Bug#21555)

  • Table aliases in multiple-table DELETE statements sometimes were not resolved. (Bug#21392)

  • EXPORT_SET() did not accept arguments with coercible character sets. (Bug#21531)

  • The --collation-server server option was being ignored. With the fix for this problem, if you choose a non-default character set with --character-set-server, you should also use --collation-server to specify the collation. (Bug#15276)

  • A subquery that uses an index for both the WHERE and ORDER BY clauses produced an empty result. (Bug#21180)

  • Queries containing a subquery that used aggregate functions could return incorrect results. (Bug#16792)

  • The MD5(), SHA1(), and ENCRYPT() functions should return a binary string, but the result sometimes was converted to the character set of the argument. MAKE_SET() and EXPORT_SET() now use the correct character set for their default separators, resulting in consistent result strings which can be coerced according to normal character set rules. (Bug#20536)

  • For a MyISAM table with a FULLTEXT index, compression with myisampack or a check with myisamchk after compression resulted in table corruption. (Bug#19702)

  • The optimizer could produce an incorrect result after AND with collations such as latin1_german2_ci, utf8_czech_ci, and utf8_lithianian_ci. (Bug#9509)

  • character_set_results can be NULL to signify “no conversion,” but some code did not check for NULL, resulting in a server crash. (Bug#21913)

  • The myisam_stats_method variable was mishandled when set from an option file or on the command line. (Bug#21054)

  • libmysqld produced some warnings to stderr which could not be silenced. These warnings now are suppressed. (Bug#13717)

  • If a column definition contained a character set declaration, but a DEFAULT value began with an introducer, the introducer character set was used as the column character set. (Bug#20695)

  • Some Linux-x86_64-icc packages (of previous releases) mistakenly contained 32-bit binaries. Only ICC builds are affected, not gcc builds. Solaris and FreeBSD x86_64 builds are not affected. (Bug#22238)

  • For TIME_FORMAT(), the %H and %k format specifiers can return values larger than two digits (if the hour is greater than 99), but for some query results that contained three-character hours, column values were truncated. (Bug#19844)

  • For table-format output, mysql did not always calculate columns widths correctly for columns containing multi-byte characters in the column name or contents. (Bug#17939)

  • Views could not be updated within a stored function or trigger. (Bug#17591)

  • Usernames have a maximum length of 16 characters (even if they contain multi-byte characters), but were being truncated to 16 bytes. (Bug#20393)

  • When using tables created under MySQL 4.1 with a 5.0 server, if the tables contained VARCHAR columns, for some queries the metadata sent to the client could have an empty column name. (Bug#14897)

  • On 64-bit systems, use of the cp1250 character set with a primary key column in a LIKE clause caused a server crash for patterns having letters in the range 128..255. (Bug#19741)

  • A subquery in the WHERE clause of the outer query and using IN and GROUP BY returned an incorrect result. (Bug#16255)

  • COUNT(*) queries with ORDER BY and LIMIT could return the wrong result. (Bug#21787)

    Note: This problem was introduced by the fix for Bug#9676, which limited the rows stored in a temporary table to the LIMIT clause. This optimization is not applicable to non-group queries with aggregate functions. The current fix disables the optimization in such cases.

  • Running SHOW MASTER LOGS at the same time as binary log files were being switched would cause mysqld to hang. (Bug#21965)

  • Adding ORDER BY to a SELECT DISTINCT(expr) query could produce incorrect results. (Bug#21456)

  • For InnoDB tables, the server could crash when executing NOT IN () subqueries. (Bug#21077)

  • mysqld --flush failed to flush MyISAM table changes to disk following an UPDATE statement for which no updated column had an index. (Bug#20060)

  • The --with-collation option was not honored for client connections. (Bug#7192)

  • NDB Cluster: The ndb_size.pl script did not account for TEXT and BLOB column values correctly. (Bug#21204)

  • NDB Cluster: Attempting to create an NDB table on a MySQL with an existing non-Cluster table with the same name in the same database could result in data loss or corruption. MySQL now issues a warning when a SHOW TABLES or other statement causing table discovery finds such a table. (Bug#21378)

  • NDB Cluster (NDB API): Attempting to read a nonexistent tuple using Commit mode for NdbTransaction::execute() caused node failures. (Bug#22672)

  • NDB Cluster: Restoring a cluster failed if there were any tables with 128 or more columns. (Bug#23502)

  • NDB Cluster: INSERT ... ON DUPLICATE KEY UPDATE on an NDB table could lead to deadlocks and memory leaks. (Bug#23200)

  • NDB Cluster: If a node restart could not be performed from the REDO log, no node takeover took place. This could cause partitions to be left empty during a system restart. (Bug#22893)

  • NDB Cluster: Multiple node restarts in rapid succession could cause a system restart to fail (Bug#22892), or induce a race condition (Bug#23210).

  • NDB Cluster: The node recovery algorithm was missing a version check for tables in the ALTER_TABLE_COMMITTED state (as opposed to the TABLE_ADD_COMMITTED state, which has the version check). This could cause inconsistent schemas across nodes following node recovery. (Bug#21756)

  • NDB Cluster: The output for the --help option used with NDB executable programs (ndbd, ndb_mgm, ndb_restore, ndb_config, and so on) referred to the Ndb.cfg file, instead of my.cnf. (Bug#21585)

  • NDB Cluster: The ndb_mgm management client did not set the exit status on errors, always returning 0 instead. (Bug#21530)

  • NDB Cluster: Cluster logs were not rotated following the first rotation cycle. (Bug#21345)

  • NDB Cluster: When inserting a row into an NDB table with a duplicate value for a non-primary unique key, the error issued would reference the wrong key. (Bug#21072)

  • NDB Cluster: Under some circumstances, local checkpointing would hang, keeping any unstarted nodes from being started. (Bug#20895)

  • NDB Cluster: In some cases where SELECT COUNT(*) from an NDB table should have yielded an error, MAX_INT was returned instead. (Bug#19914)

  • NDB Cluster: ndb_restore did not always make clear that it had recovered successfully from temporary errors while restoring a cluster backup. (Bug#19651)

  • NDB Cluster: A problem with takeover during a system restart caused ordered indexes to be rebuilt incorrectly. (Bug#15303)

  • NDB Cluster: The ndb_mgm program was included in both the MySQL-ndb-tools and MySQL-ndb-management RPM packages, resulting in a conflict if both were installed. Now ndb_mgm is included only in MySQL-ndb-tools. (Bug#21058)

  • NDB Cluster: ndb_size.pl and ndb_error_reporter were missing from RPM packages. (Bug#20426)

  • NDB Cluster: Setting TransactionDeadlockDetectionTimeout to a value greater than 12000 would cause scans to deadlock, time out, fail to release scan records, until the cluster ran out of scan records and stopped processing. (Bug#21800)

  • NDB Cluster: The server provided a non-descriptive error message when encountering a fatally corrupted REDO log. (Bug#21615)

  • NDB Cluster: A partial rollback could lead to node restart failures. (Bug#21536)

  • NDB Cluster: The failure of a unique index read due to an invalid schema version could be handled incorrectly in some cases, leading to unpredictable results. (Bug#21384)

  • NDB Cluster: In a cluster with more than 2 replicas, a manual restart of one of the data nodes could fail and cause the other nodes in its nodegroup to shut down. (Bug#21213)

  • NDB Cluster: When the redo buffer ran out of space, a Pointer too large error was raised and the cluster could become unusable until restarted with --initial. (Bug#20892)

  • NDB Cluster: In some situations with a high disk-load, writing of the redo log could hang, causing a crash with the error message GCP STOP detected. (Bug#20904)

  • NDB Cluster: ndb_size.pl and ndb_error_reporter were missing from RPM packages. (Bug#20426)

  • NDB Cluster: The server failed with a non-descriptive error message when out of data memory. (Bug#18475)

  • NDB Cluster: SELECT ... FOR UPDATE failed to lock the selected rows. (Bug#18184)

  • NDB Cluster: Some queries involving joins on very large NDB tables could crash the MySQL server. (Bug#21059)

  • Character set collation was ignored in GROUP BY clauses. (Bug#20709)

  • A query using WHERE column = constant OR column IS NULL did not return consistent results on successive invocations. The column in each part of the WHERE clause could be either the same column, or two different columns, for the effect to be observed. (Bug#21019)

  • A query using WHERE NOT (column < ANY (subquery)) yielded a different result from the same query using the same column and subquery with WHERE (column > ANY (subquery)). (Bug#20975)

  • Using the extended syntax for TRIM() — that is, TRIM(... FROM ...) — caused erroneous output from EXPLAIN EXTENDED statements. (Bug#17526)

  • DELETE with WHERE condition on a BTREE-indexed column for a MEMORY table deleted only the first matched row. (Bug#9719)

  • For cross-database multiple-table UPDATE statements, a user with all privileges for the default database could update tables in another database for which the user did not have UPDATE privileges. (Bug#7391)

  • mysql_install_db incorrectly had a blank first line. (Bug#20721)

  • Under heavy load (executing more than 1024 simultaneous complex queries), a problem in the code that handles internal temporary tables could lead to writing beyond allocated space and memory corruption. (Bug#21206)

  • Multiple invocations of the REVERSE() function could return different results. (Bug#18243)

  • Conversion of TIMESTAMP values between UTC and the local time zone resulted in some values having the year 2069 rather than 1969. (Bug#16327)

  • Under certain circumstances, AVG(key_val) returned a value but MAX(key_val) returned an empty set due to incorrect application of MIN()/MAX() optimization. (Bug#20954)

  • Using aggregate functions in subqueries yielded incorrect results under certain circumstances due to incorrect application of MIN()/MAX() optimization. (Bug#20792)

  • Using > ALL with