Cette version apporte de nouvelles fonctionnalités et corrige une dizaine de bugs.
Le change log: 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 will restart from the start of a transaction if it’s 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 cache because of low memory). Fixed mysqlcheck so it can deal with table names containing dashes. Bulk insert optimisation (see section 184.108.40.206 SHOW VARIABLES) is no longer used when inserting small (less than 100) number of rows. Optimisation 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 220.127.116.11 Miscellaneous Functions.
Fixed CHECK constraints to be compatible with ANSI 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 # OFFSET # mysql_change_user() will now reset the connection to the state of a fresh connect (Ie, ROLLBACK any active transaction, close all temporary tables, reset all user variables etc..)
Fixed number of found rows returned in multi table updates
Make –lower-case-table-names default on MacOSX as the file system is case sensitive. 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 solved problems with LEFT JOIN too. 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 allowed a malicious MySQL server to crash the client application. Fixed security-related bug in mysql_change_user() handling. All users are strongly recommended to upgrade to version 4.0.6. 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 multi-table-update to optimise it, make it safer and more bug free. LOCK TABLES now works together with multi-table-update and multi-table-delete.
–replicate-do=xxx didn’t work for UPDATE commands. (Bug introduced in 4.0.0) Fixed shutdown problem on Mac OS X.