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 http://www.mysql.com/about/legal/lifecycle/#calendar. 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 and
CHARSET= 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/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
B. (The order is
Moved the mysql.server startup script in the RPM packages from
/etc/init.d/mysql (which almost all current Linux distributions support for LSB compliance).
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 .
LOCALTIMESTAMP as synonyms for
CEIL is now an alias for
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”.
CHECK constraints to be compatible with standard SQL. This made
CHECK a reserved word. (Checking of
CHECK constraints is still not implemented).
CAST(... as CHAR).
Added PostgreSQL compatible
SELECT ... LIMIT
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.
Fixed number of found rows returned in
multi table updates
--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”.
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
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= didn't work for
UPDATE commands. (Bug introduced in 4.0.0)
Fixed shutdown problem on Mac OS X.
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.