Released on 27 Oct 2004
MySQL 4.0.22 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:

  • The --with-openssl option for configure now accepts a path prefix as an argument. --with-openssl-includes and --with-openssl-libs are still supported, but are needed only to override the default values. (Bug #5494)

  • Added new --without-man option to configure to suppress building/installing the manual pages. (Bug #5379)

  • InnoDB: New mysqld option session variable innodb_table_locks (on by default). In applications using autocommit = 1 and MySQL's LOCK TABLES statement, InnoDB's internal table locks that were added in 4.0.20 can cause deadlocks. You can set innodb_table_locks = 0 in my.cnf to remove that problem. See Section 13.2.15, “Restrictions on InnoDB Tables”. (Bug #3299, Bug #5998)

  • InnoDB: Added the startup option and settable global variable innodb_max_purge_lag for delaying INSERT, UPDATE and DELETE operations when the purge operations are lagging. The default value of this parameter is zero, meaning that there are no delays. See Section 13.2.10, “InnoDB Multi-Versioning”.

  • InnoDB: Change error code to HA_ERR_ROW_IS_REFERENCED if we cannot DROP a parent table because it is referenced by a FOREIGN KEY constraint.

Bugs fixed:

  • Fixed bug in server which caused connection stall when one of deprecated libmysqlclient functions mysql_create_db() and mysql_rm_db() were called and were going to return error. (Bug #6081)

  • Fixed returning wrong query result from query cache if a temporary table was hiding a real table after putting results to query cache. (Bug #6084)

  • Fixed ENABLE KEYS, which failed if tmpdir ran out of space. Now, a full repair is done in this case. (Bug #5625)

  • Fixed an improper error message when trying to drop a table which is referenced by a FOREIGN KEY constraint. (Bug #5784)

  • Fixed a bug that permitted FLUSH TABLES to close HANDLER tables. HANDLER tables are now reopened after a FLUSH TABLES the next time they are used. However, they lose their file position if this happens. (Bug #4286)

  • Fixed a bug that permitted HANDLER tables with the same alias to be opened multiple times. HANDLER aliases must now be unique, even though it is syntactically correct in versions below 4.1 to qualify them with their base table's database name (for example, test_db.handler_tbl now conflicts with another_db.handler_tbl). (Bug #4335)

  • Fixed crash when using MySQL 4.0 with privilege tables from MySQL 5.0.

  • mysqlimport now reads input files locally from the client host only if the --local option is given. Previously, it assumed incorrectly in some cases that files were local even without --local. (Bug #5829)

  • InnoDB: Make the check for excessive semaphore waits to tolerate glitches in the system clock (do not crash the server if the system time is adjusted while InnoDB is under load.). (Bug #5898)

  • InnoDB: Fixed a bug in the InnoDB FOREIGN KEY parser that prevented ALTER TABLE of tables containing # in their names. (Bug #5856)

  • InnoDB: Fixed problem introduced in 4.0.21 where a connection starting a transaction, doing updates, then FLUSH TABLES WITH READ LOCK, then COMMIT, would cause replication slaves to stop (complaining about error 1223). Bug surfaced when using the InnoDB innobackup script. (Bug #5949)

  • InnoDB: If one updated a column so that its size changed, or updated it to an externally stored (TEXT or BLOB) value, then ANOTHER externally stored column would show up as 512 bytes of good data + 20 bytes of garbage in a consistent read that fetched the old version of the row. (Bug #5960)

  • InnoDB: Release the dictionary latch during a long cascaded FOREIGN KEY operation, so that we do not starve other users doing CREATE TABLE or other DDL operations. This caused a notorious 'Long semaphore wait' message to be printed to the .err log. (Bug #5961)

  • InnoDB: Let InnoDB remember row locking type (X or S) inside LOCK TABLES, also over plain consistent read SELECTs.

  • InnoDB: Fixed a bug introduced in 4.0.21. An assertion failed if one used mysqldump with the option -l or --opt, or if one used LOCK TABLES ... LOCAL. (Workaround in 4.0.21: use --quick and --single-transaction. (Bug #5538)

  • InnoDB: Having a column prefix index in the primary key, and the same column fully in a secondary key could cause an assertion failure in row_build_row_ref(). (Bug #5180)

  • Fixed a bug which resulted in an erroneously calculated number of examined rows in UNIONs. This value is printed in the slow query log. (Bug #5879)

  • Fixed bug with crash of server on some values of read_rnd_buffer_size (Bug #5492)

  • Fixed bug which caused truncation of values read from or into TIMESTAMP fields if --new mode was enabled. (Bug #4131)

  • mysqladmin now returns a status of 0 even when the server denies access; such an error means the server is running. (Bug #3120)

  • Fixed that if the slave SQL thread found a syntax error in a query (which should be rare, as the master parsed it successfully), it stops. (Bug #5711)

  • Fixed that if a write to a MyISAM table fails because of a full disk or an exceeded disk quota, it prints a message to the error log every 10 minutes, and waits until disk becomes free. (Bug #3248)

  • Fixed problem with symlinked databases on Windows being shown with SHOW DATABASES even if the database name doesn't match the given wildcard (Bug #5539)