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:
Port number was added to host name (if it is known) in
SHOW PROCESSLIST command
Changed handling of last argument in
WEEK() so that you 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 standard SQL when it comes to NULL
handling. In practice, this affects only queries where you do
something like WHERE ... NOT (NULL AND 0).
mysqld now resolves
basedir to its full path
(with realpath()). This enables one to use
relative symlinks to the MySQL installation directory. This
however causes show variables to report
different directories on systems where there is a symbolic
link in the path.
Fixed that MySQL does 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 TABLE, 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
Section 11.2.3, “Comparison Functions and 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 is now passed on
to mysqld.
val
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 work).
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 nontransactional 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
Section B.4, “Changes in InnoDB”.
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 does 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 TABLE or
REPAIR TABLE.
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 columns.
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 file name argument for the
--des-key-file argument to
mysqld is interpreted relative to the data
directory if given as a relative path name.
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 to not
return all rows.
row_count
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
232 rows and MySQL was not compiled
with -DBIG_TABLES.
Fixed some ORDER BY ... DESC problems with
InnoDB tables.

User Comments
Add your own comment.