Released on 5 Jul 2005
MySQL 4.0.25 Changelog

End of Product Lifecycle. Active development and support for MySQL Database Server versions 3.23, 4.0, and 4.1 has ended. For details, see Please consider upgrading to a recent version. Further updates to the content of this manual will be minimal. All formats of this manual will continue to be available until 31 Dec 2010.

Functionality added or changed:

  • Security improvement: Applied a patch to fix a UDF library-loading vulnerability that could result in a buffer overflow and code execution. (CVE-2005-2558)

  • Added --with-big-tables compilation option to configure. (Previously it was necessary to pass -DBIG_TABLES to the compiler manually in order to enable large table support.) See Section 2.9.3, “MySQL Source-Configuration Options”, for details.

Bugs fixed:

  • On Mac OS X, libmysqlclient_r.a now is built with --fno-common to make it possible to link a shared two-level namespace library against libmysqlclient_r.a. (Bug #10638)

  • An error in the implementation of the MyISAM compression algorithm caused myisampack to fail with very large sets of data (total size of all the records in a single column needed to be >= 3 GB to trigger this issue). (Bug #8321)

  • A problem with the my_global.h file caused compilation of MySQL to fail on single-processor Linux systems running 2.6 kernels. (Bug #10364)

  • Fixed a portability problem testing for crypt() support that caused compilation problems when using OpenSSL/yaSSL on HP-UX and Mac OS X. (Bug #10675, Bug #11150)

  • MyISAM table corruption could occur with ANALYZE TABLE if a write lock was acquired with LOCK TABLES and then an INSERT or DELETE was done prior to analyzing the table. (Bug #10901)

  • Fixed a server crash resulting from CREATE TABLE ... SELECT that selected from a table being altered by ALTER TABLE. (Bug #10224)

  • InnoDB: In DROP DATABASE, check for all referencing tables from other databases before dropping any tables. (Bug #10335)

  • Fixed a problem with incorrect constant propagation resulting in incorrect evaluation of AND or OR queries. (Bug #10095)

  • Fixed wrong buffer usage for auto-increment key with blob part that caused CHECK TABLE to report that the table was wrong. (Bug #10045)

  • No error was raised for BOOLEAN full-text searches for storage engines that do not support full-text. (Bug #7709)

  • The test in configure to see whether CXX specified gcc failed if gcc was specified as a full path name. (Bug #9690)

  • In the mysql_real_escape_string() C API function, when a multi-byte character is encountered that is illegal in the current character set, escape only the first byte, not each byte. This avoids creating a valid character from an invalid one. (Bug #9864; this is a backport of Bug #8378 from MySQL 4.1.11 to 4.0.25)

  • Fixed a deadlock resulting from use of FLUSH TABLES WITH READ LOCK while an INSERT DELAYED statement is in progress. (Bug #7823)

  • Fixed a segmentation fault in mysqlcheck that occurred when the last table checked in --auto-repair mode returned an error (such as the table being a MERGE table). (Bug #9492)

  • Fixed faulty display of TIMESTAMP columns retrieved as col_name+0 while the new system variable is set to 1. (Bug #8894)

  • Queries containing CURRENT_USER() incorrectly were registered in the query cache. (Bug #9796)

  • An UPDATE that updated only some of the columns in a multiple-column index could result in a loop. (Bug #8942)

  • REPAIR TABLE did not invalidate query results in the query cache that were generated from the table. (Bug #8480)

  • Fixed a bug that caused concurrent inserts to be permitted into the tables in the SELECT ... UNION ... part of INSERT ... SELECT ... UNION .... This could result in the incorrect order of queries in the binary log. (Bug #9922)

  • Fixed a bug that under certain circumstances could allow a privilege escalation using database wildcards in GRANT. (Bug #3924, CVE-2004-0957)

  • <=> was not properly comparing NULL values in the WHERE clause of outer joins. (Bug #8711)

  • InnoDB: Fixed a bug: MySQL-4.0.23 and 4.0.24 could complain that an InnoDB table created with MySQL-3.23.49 or earlier was in the new compact InnoDB table format of 5.0.3 or later, and InnoDB would refuse to use that table. (The same bug exists in 4.1.8 - 4.1.10.) There is nothing wrong with the table, it is mysqld that is in error. Workaround: wait that 4.0.25 or 4.1.11 is released before doing an upgrade, or dump the table and re-create it with any MySQL version >= 3.23.50 before upgrading to 4.0.23 or 4.0.24.