Released on 14 Dec 2002
MySQL 4.0.6 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:

  • Added syntax support for CHARACTER SET xxx and CHARSET=xxx table options (to be able to read table dumps from 4.1).

  • Fixed replication bug that caused the slave to loose its position in some cases when the replication log was rotated.

  • Fixed that a slave restarts from the start of a transaction if it is killed in the middle of one.

  • Moved the manual pages from man to man/man1 in the binary distributions.

  • The default type returned by IFNULL(A,B) is now set to be the more 'general' of the types of A and B. (The order is STRING, REAL or INTEGER).

  • Moved the mysql.server startup script in the RPM packages from /etc/rc.d/init.d/mysql to /etc/init.d/mysql (which almost all current Linux distributions support for LSB compliance).

  • Added Qcache_lowmem_prunes status variable (number of queries that were deleted from the cache because of low memory).

  • Fixed mysqlcheck so it can deal with table names containing dashes.

  • Bulk insert optimization (see Section 5.1.3, “Server System Variables”) is no longer used when inserting small (less than 100) number of rows.

  • Optimization added for queries like SELECT ... FROM merge_table WHERE indexed_column=constant_expr.

  • Added functions LOCALTIME and LOCALTIMESTAMP as synonyms for NOW().

  • CEIL is now an alias for CEILING.

  • The CURRENT_USER() function can be used to get a user@host value as it was matched in the GRANT system. See Section 11.13, “Information Functions”.

  • Fixed CHECK constraints to be compatible with standard SQL. This made CHECK a reserved word. (Checking of CHECK constraints is still not implemented).

  • Added CAST(... as CHAR).

  • Added PostgreSQL compatible LIMIT syntax: SELECT ... LIMIT row_count OFFSET offset

  • mysql_change_user() now resets the connection to the state of a fresh connect (Ie, ROLLBACK any active transaction, close all temporary tables, reset all user variables etc..)

  • CHANGE MASTER TO and RESET SLAVE now require that slave threads both be stopped; these commands return an error if at least one of these two threads is running.

Bugs fixed:

  • Fixed number of found rows returned in multi table updates

  • Make --lower-case-table-names default on Mac OS X as the default file system (HFS+) is case insensitive. See Section 8.2.2, “Identifier Case Sensitivity”.

  • Transactions in autocommit = 0 mode didn't rotate binary log.

  • A fix for the bug in a SELECT with joined tables with ORDER BY and LIMIT clause when filesort had to be used. In that case LIMIT was applied to filesort of one of the tables, although it could not be. This fix also solved problems with LEFT JOIN.

  • mysql_server_init() now makes a copy of all arguments. This fixes a problem when using the embedded server in C# program.

  • Fixed buffer overrun in libmysqlclient library that permitted a malicious MySQL server to crash the client application. (CVE-2002-1376)

  • Fixed security-related bug in mysql_change_user() handling. All users are strongly recommended to upgrade to version 4.0.6. (CVE-2002-1374, CVE-2002-1375)

  • Fixed bug that prevented --chroot command-line option of mysqld from working.

  • Fixed bug in phrase operator "..." in boolean full-text search.

  • Fixed bug that caused OPTIMIZE TABLE to corrupt the table under some rare circumstances.

  • Part rewrite of multiple-table-update to optimize it, make it safer and more bug-free.

  • LOCK TABLES now works together with multiple-table-update and multiple-table-delete.

  • --replicate-do=xxx didn't work for UPDATE commands. (Bug introduced in 4.0.0)

  • Fixed shutdown problem on Mac OS X.

  • Major InnoDB bugs in REPLACE, AUTO_INCREMENT, INSERT INTO ... SELECT ... were fixed. See the InnoDB changelog in the InnoDB section of the manual.

  • RESET SLAVE caused a crash if the slave threads were running.