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:
PRIMARY KEY now implies
NULL. (Bug #390)
The Windows binary packages are now compiled with
--enable-local-infile to match the Unix build
Removed timing of tests from
does not accept all required parameters on many platforms (for
example, QNX) and timing the tests is not really required (it
is not a benchmark anyway).
variable which controls amount of dirty pages permitted in
InnoDB buffer pool.
Removed benchmark results from the source and binary distributions. They are still available in the BK source tree, though.
InnoDB tables now support
MySQL now issues an error when it opens a table that was created with MySQL 4.1.
--new now changes binary items
0xFFDF) to be treated as binary strings
instead of numbers by default. This fixes some problems with
character sets where it is convenient to input the string as a
binary item. After this change you have to convert the binary
INTEGER with a
CAST if you want to compare two binary
items with each other and know which one is bigger than the
SELECT CAST(0xfeff AS UNSIGNED) < CAST(0xff
AS UNSIGNED). This is the default behavior in MySQL
4.1. (Bug #152)
Linux (most modern
glibc libraries have a
pthread_cond_timedwait()). (Bug #211)
Do not create more insert delayed threads than given by
UPDATE ... LIMIT to apply the limit
to rows that were matched, whether or not they actually were
changed. Previously the limit was applied as a restriction on
the number of rows changed.
Tuned optimizer to favor clustered index over table scan.
Added warnings to error log indicating why a secure connection
failed (when running with
The default option for
was changed from 0 to 1 to make
tables ACID by default. See
Section 13.2.4, “InnoDB Startup Options and System Variables”.
Added a feature to
KEYS to display keys that are disabled by
ALTER TABLE DISABLE KEYS statement.
When using a nonexistent table type with
CREATE TABLE, first try if the
default table type exists before falling back to
MEMORY as an alias for
my_rnd as the name was too generic and is
an exported symbol in
(thanks to Dennis Haney for the initial patch).
Portability fix: renamed
mysqldump no longer silently deletes the
binary logs when invoked with the
--first-slave option; while
this behavior was convenient for some users, others may suffer
from it. Now you must explicitly ask for binary logs to be
deleted by using the new
If the slave is configured (using for example
mysql.columns_priv from replication, then
REVOKE are not replicated.
Access denied error message had
Using password value. (Bug #398)
Fixed bug with
NATURAL LEFT JOIN,
NATURAL RIGHT JOIN and
JOIN when using many joined tables. The problem was
JOIN method was not always
associated with the tables surrounding the
JOIN method. If you have a query that uses
RIGHT JOIN or
JOINS you should verify that they work as you
expected after upgrading MySQL to this version. (Bug #291)
Fixed mysql parser not to erroneously
"” characters within
/* ... */ comment as beginning a quoted
mysql command-line client no longer looks
\* commands inside backtick-quoted
Unknown error when using
UPDATE ... LIMIT. (Bug #373)
Fixed problem with ANSI mode and
with constants. (Bug #387)
Fixed bug with
OUTER JOIN. (Bug #386)
Run mysql_install_db with the
-IN-RPM option for the Mac OS X installation
to not fail on systems with improperly configured host name
INFILE now reads
000000 as a zero
date instead of
Fixed bug that caused
DELETE FROM table WHERE
const_expression always to delete the whole table
(even if expression result was false). (Bug #355)
Fixed core dump bug when using
FORMAT('nan',#). (Bug #284)
Fixed name resolution bug with
Fixed incorrect result from truncation operator
AGAINST() in some complex joins.
Fixed a crash in
REPAIR ... USE_FRM
command, when used on a read-only table, nonexistent table, or
a table with a crashed index file.
Fixed a crashing bug in mysql monitor
program. It occurred if program was started with
--no-defaults, with a prompt
that contained the host name and a connection to a nonexistent
database was requested.
Fixed problem when comparing a key for a multi-byte character set. (Bug #152)
Fixed bug in
MID when used with multi-byte character
sets and some
GROUP BY queries. (Bug #314)
Fix problem with
ORDER BY being discarded
DISTINCT queries. (Bug #275)
SET sql_big_selects = 1 works as
documented (This corrects a new bug introduced in 4.0)
Fixed some serious bugs in
UPDATE ... ORDER
BY. (Bug #241)
Fixed unlikely problem in optimizing
clause with constant expression like in
WHERE 1 AND
(a=1 AND b=1).
SET sql_big_selects = 1 works
Introduced proper backtick quoting for db.table in
MyISAM table as "analyzed" only when
all the keys are indeed analyzed.
Only ignore world-writable
that are regular files (and not, for example, named pipes or
Fixed few smaller issues with
Fixed error message which contained deprecated text.
Fixed a bug with two
NATURAL JOINs in the
SUM() didn't return
NULL when there was no rows in result or
when all values was
On Unix, symbolic link handling was not enabled by default and there was no way to turn this on.
Fixed incorrect host name for TCP/IP connections displayed in
Fixed a bug with
FORMAT(...) function ...
Fixed a bug with improperly cached database privileges.
Fixed a bug in
ALTER TABLE ENABLE / DISABLE
KEYS which failed to force a refresh of table data
in the cache.
Fixed bugs in replication of
INFILE for custom parameters
and so on) and temporary tables. (Bug #183, Bug #222)
Fixed a replication bug when the master is 3.23 and the slave
4.0: the slave lost the replicated temporary tables if
was issued on the master. (Bug #254)
Fixed a bug when doing
LOAD DATA INFILE
IGNORE: When reading the binary log,
mysqlbinlog and the replication code read
REPLACE instead of
IGNORE. This could make the slave's table
become different from the master's table. (Bug #218)
Fixed a deadlock when
relay_log_space_limit was set
to a too small value. (Bug #79)
Fixed a bug in HAVING clause when an alias is used from the select list.
Fixed overflow bug in
MyISAM when a row is
inserted into a table with a large number of columns and at
BLOB/TEXT column. Bug was caused
by incorrect calculation of the needed buffer to pack data.
Fixed a bug when
an error in the client/server protocol due to
net_printf() output being sent to the
Fixed a bug in setting the
Fixed a bug in
which only displayed a localhost in the
"Host" column. This was caused by a glitch
that used only current thread information instead of
information from the linked list of threads.
Removed unnecessary Mac OS X helper files from server RPM. (Bug #144)
Permit optimization of multiple-table update for
InnoDB tables as well.
Fixed a bug in multiple-table updates that caused some rows to be updated several times.
Fixed a bug when an updating query using
USER() was replicated on the
slave; this caused a segmentation fault on the slave. (Bug
USER() is still badly
replicated on the slave (it is replicated to