Functionality added or changed:
Port number was added to hostname (if it is known) in SHOW PROCESSLIST command
Changed handling of last argument in WEEK() so that one can get week number according to the ISO 8601 specification. (Old code should still work).
Fixed that INSERT DELAYED threads don't hang on Waiting for INSERT when one sends a SIGHUP to mysqld.
Change that AND works according to SQL-99 when it comes to NULL handling. In practice, this only affects queries where you do something like WHERE ... NOT (NULL AND 0).
mysqld will now resolve basedir to its full path (with realpath()). This enables one to use relative symlinks to the MySQL installation directory. This will however cause show variables to report different directories on systems where there is a symbolic link in the path.
Fixed that MySQL will not use index scan on index disabled with IGNORE INDEX or USE INDEX. to be ignored.
Added --use-frm option to mysqlcheck. When used with REPAIR, it gets the table structure from the .frm file, so the table can be repaired even if the .MYI header is corrupted.
Fixed bug in MAX() optimization when used with JOIN and ON expressions.
Added support for reading of MySQL 4.1 table definition files.
BETWEEN behavior changed (see Comparison Operators). Now datetime_col BETWEEN timestamp AND timestamp should work as expected.
One can create TEMPORARY MERGE tables now.
DELETE FROM myisam_table now shrinks not only the .MYD file but also the .MYI file.
When one uses the --open-files-limit=# option to mysqld_safe it's now passed on to mysqld.
Changed output from EXPLAIN from 'where used' to 'Using where' to make it more in line with other output.
Removed variable safe_show_database as it was no longer used.
Updated source tree to be built using automake 1.5 and libtool 1.4.
Fixed an inadvertently changed option (--ignore-space) back to the original --ignore-spaces in mysqlclient. (Both syntaxes will work).
Don't require UPDATE privilege when using REPLACE.
Added support for DROP TEMPORARY TABLE ..., to be used to make replication safer.
When transactions are enabled, all commands that update temporary tables inside a BEGIN/COMMIT are now stored in the binary log on COMMIT and not stored if one does ROLLBACK. This fixes some problems with non-transactional temporary tables used inside transactions.
Allow braces in joins in all positions. Formerly, things like SELECT * FROM (t2 LEFT JOIN t3 USING (a)), t1 worked, but not SELECT * FROM t1, (t2 LEFT JOIN t3 USING (a)). Note that braces are simply removed, they do not change the way the join is executed.
InnoDB now supports also isolation levels READ UNCOMMITTED and READ COMMITTED. For a detailed InnoDB changelog, see InnoDB change history in this manual.
Bugs fixed:
Fixed bug in MAX() optimization when used with JOIN and ON expressions.
Fixed that INSERT DELAY threads don't hang on Waiting for INSERT when one sends a SIGHUP to mysqld.
Fixed that MySQL will not use an index scan on an index that has been disabled with IGNORE INDEX or USE INDEX.
Corrected test for root user in mysqld_safe.
Fixed error message issued when storage engine cannot do CHECK or REPAIR.
Fixed rare core dump problem in complicated GROUP BY queries that didn't return any result.
Fixed mysqlshow to work properly with wildcarded database names and with database names that contain underscores.
Portability fixes to get MySQL to compile cleanly with Sun Forte 5.0.
Fixed MyISAM crash when using dynamic-row tables with huge numbers of packed fields.
Fixed query cache behavior with BDB transactions.
Fixed possible floating point exception in MATCH relevance calculations.
Fixed bug in full-text search IN BOOLEAN MODE that made MATCH to return incorrect relevance value in some complex joins.
Fixed a bug that limited MyISAM key length to a value slightly less that 500. It is exactly 500 now.
Fixed that GROUP BY on columns that may have a NULL value doesn't always use disk based temporary tables.
The filename argument for the --des-key-file argument to mysqld is interpreted relative to the data directory if given as a relative pathname.
Removed a condition that temp table with index on column that can be NULL has to be MyISAM. This was okay for 3.23, but not needed in 4.*. This resulted in slowdown in many queries since 4.0.2.
Small code improvement in multiple-table updates.
Fixed a newly introduced bug that caused ORDER BY ... LIMIT row_count to not return all rows.
Fixed a bug in multiple-table deletes when outer join is used on an empty table, which gets first to be deleted.
Fixed a bug in multiple-table updates when a single table is updated.
Fixed bug that caused REPAIR TABLE and myisamchk to corrupt FULLTEXT indexes.
Fixed bug with caching the mysql grant table database. Now queries in this database are not cached in the query cache.
Small fix in mysqld_safe for some shells.
Give error if a MyISAM MERGE table has more than 2 ^ 32 rows and MySQL was not compiled with -DBIG_TABLES.
Fixed some ORDER BY ... DESC problems with InnoDB tables.