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.
If you are using this release on Windows, you should upgrade at
least your clients (any program that uses
libmysql.lib
) to 4.0.16 or above. This is
because the 4.0.15 release had a bug in the Windows client
library that causes Windows clients using the library to die
with a Lost connection to MySQL server during
query
error for queries that take more than 30
seconds. This problem is specific to Windows; clients on other
platforms are unaffected.
Functionality added or changed:
mysqldump now correctly quotes all identifiers when communicating with the server. This assures that during the dump process, mysqldump never sends queries to the server that result in a syntax error. This problem is not related to the mysqldump program's output, which was not changed. (Bug#1148)
Change result set metadata information so that
MIN()
and
MAX()
report that they can
return NULL
(this is true because an empty
set returns NULL
). (Bug#324)
Produce an error message on Windows if a second mysqld server is started on the same TCP/IP port as a running mysqld server.
The mysqld system variables
wait_timeout
,
net_read_timeout
, and
net_write_timeout
now work on
Windows. One can now also set timeouts for read and writes in
Windows clients with
mysql_options()
.
Added option
--sql-mode=NO_DIR_IN_CREATE
to
make it possible for slaves to ignore INDEX
DIRECTORY
and DATA DIRECTORY
options given to CREATE TABLE
.
When this is mode is on, SHOW CREATE
TABLE
does not show the given directories.
SHOW CREATE TABLE
now shows the
INDEX DIRECTORY
and DATA
DIRECTORY
options, if they were specified when the
table was created.
The open_files_limit
system
variable now shows the real open files limit.
MATCH ... AGAINST()
in natural language
mode now treats words that are present in more than 2,000,000
rows as stopwords.
The Mac OS X installation disk images now include an
additional MySQLStartupItem.pkg
package
that enables the automatic startup of MySQL on system startup.
See Section 2.5, “Installing MySQL on Mac OS X”.
Most of the documentation included in the binary tarball
distributions (.tar.gz
) has been moved into
a subdirectory docs
. See
Section 2.1.5, “Installation Layouts”.
The manual is now included as an additional
info
file in the binary distributions.
(Bug#1019)
The binary distributions now include the embedded server
library (libmysqld.a
) by default. Due to a
linking problem with non-gcc compilers, it
was not included in all packages of the initial 4.0.15
release. The affected packages were rebuilt and released as
4.0.15a. See Section 1.5, “MySQL 4.0 in a Nutshell”.
MySQL can now use range optimization for
BETWEEN
with nonconstant limits. (Bug#991)
Replication error messages now include the default database, so that users can check which database the failing query was run for.
A documentation change: Added a paragraph about how the
binlog-do-db
and
binlog-ignore-db
options are tested against
the database on the master (see Section 5.3.4, “The Binary Log”),
and a paragraph about how
--replicate-do-db
,
--replicate-do-table
and
analogous options are tested against the database and tables
on the slave (see Section 14.8, “Replication and Binary Logging Options and Variables”).
Now the slave does not replicate SET
PASSWORD
if it is configured to exclude the
mysql
database from replication (using for
example
--replicate-wild-ignore-table=mysql.%
).
This was the case for GRANT
and
REVOKE
since version 4.0.13
(although there was Bug#980 in 4.0.13 & 4.0.14, which has
been fixed in 4.0.15).
Rewrote the information shown in the State
column of SHOW PROCESSLIST
for
replication threads and for
MASTER_POS_WAIT()
and added the
most common states for these threads to the documentation, see
Section 14.3, “Replication Implementation Details”.
Added a test in replication to detect the case where the master died in the middle of writing a transaction to the binary log; such unfinished transactions now trigger an error message on the slave.
A GRANT
command that creates an
anonymous user (that is, an account with an empty user name)
no longer requires
FLUSH
PRIVILEGES
for the account to be recognized by the
server. (Bug#473)
CHANGE MASTER TO
now flushes
relay-log.info
. Previously this was
deferred to the next run of START
SLAVE
, so if mysqld was shutdown
on the slave after CHANGE MASTER
TO
without having run START
SLAVE
, the relay log's name and position were lost.
At restart they were reloaded from
relay-log.info
, thus reverting to their
old (incorrect) values from before CHANGE
MASTER TO
and leading to error messages (as the old
relay log did not exist any more) and the slave threads
refusing to start. (Bug#858)
Bugs fixed:
Fixed buffer overflow in password handling which could
potentially be exploited by MySQL users with
ALTER
privilege on the
mysql.user
table to execute random code or
to gain shell access with the UID of the
mysqld process (thanks to Jedi/Sector One
for spotting and reporting this bug). (CVE-2003-0780)
Fixed server crash on FORCE INDEX
in a
query that contained "Range checked for each record" in the
EXPLAIN
output. (Bug#1172)
Fixed table/column grant handling: The proper sort order (from most specific to less specific, see Section 5.5.5, “Access Control, Stage 2: Request Verification”) was not honored. (Bug#928)
Fixed rare bug in MYISAM
introduced in
4.0.3 where the index file header was not updated directly
after an UPDATE
of split
dynamic rows. The symptom was that the table had a corrupted
delete-link if mysqld was shut down or the
table was checked directly after the update.
Fixed Can't unlock file
error when running
myisamchk --sort-index on Windows.
(Bug#1119)
Fixed possible deadlock when changing
key_buffer_size
while the key
cache was actively used. (Bug#1088)
Fixed overflow bug in MyISAM
and
ISAM
when a row is updated in a table with
a large number of columns and at least one
BLOB/TEXT
column.
Fixed incorrect result when doing
UNION
and LIMIT
#,#
when braces were not used around the
SELECT
parts.
Fixed incorrect result when doing
UNION
and ORDER BY ..
LIMIT #
when one didn't use braces around the
SELECT
parts.
Fixed problem with SELECT SQL_CALC_FOUND_ROWS ...
UNION ALL ... LIMIT #
where
FOUND_ROWS()
returned incorrect
number of rows.
Fixed unlikely stack bug when having a BIG expression of type
1+1-1+1-1...
in certain combinations.
(Bug#871)
Fixed the bug that sometimes prevented a table with a
FULLTEXT
index from being marked as
"analyzed".
Fixed MySQL so that the column length (in C API) for the
second column in SHOW CREATE
TABLE
is always larger than the data length. The
only known application that was affected by the old behavior
was Borland dbExpress, which truncated the output from the
command. (Bug#1064)
Fixed crash in comparisons of strings using the
tis620
character set. (Bug#1116)
Fixed ISAM
bug in
MAX()
optimization.
myisamchk --sort-records=N no longer marks table as crashed if sorting failed because of an inappropriate key. (Bug#892)
Fixed a minor bug in MyISAM
compressed
table handling that sometimes made it impossible to repair
compressed table in "Repair by sort" mode. "Repair with
keycache" (myisamchk --safe-recover)
worked, though. (Bug#1015)
Fixed bug in propagating the version number to the manual included in the distribution files. (Bug#1020)
Fixed key sorting problem (a PRIMARY
key
declared for a column that is not explicitly marked
NOT NULL
was sorted after a
UNIQUE
key for a NOT
NULL
column).
Fixed the result of INTERVAL
when applied
to a DATE
value. (Bug#792)
Fixed compiling of the embedded server library in the RPM spec file. (Bug#959)
Added some missing files to the RPM spec file and fixed some RPM building errors that occurred on Red Hat Linux 9. (Bug#998)
Fixed incorrect XOR
evaluation in
WHERE
clause. (Bug#992)
Fixed bug with processing in query cache merged tables constructed from more then 255 tables. (Bug#930)
Fixed incorrect results from outer join query (for example,
LEFT JOIN
) when ON
condition is always false, and range search in used. (Bug#926)
Fixed a bug causing incorrect results from MATCH ...
AGAINST()
in some joins. (Bug#942)
MERGE
tables do not ignore Using
index
(from EXPLAIN
output) anymore.
Fixed a bug that prevented an empty table from being marked as "analyzed". (Bug#937)
Fixed myisamchk --sort-records crash when used on compressed table.
Fixed slow (as compared to 3.23) ALTER
TABLE
and related commands such as
CREATE INDEX
. (Bug#712)
Fixed segmentation fault resulting from LOAD DATA
FROM MASTER
when the master was running without the
--log-bin
option. (Bug#934)
Fixed a security bug: A server compiled without SSL support
still allowed connections by users who had the
REQUIRE SSL
option specified for their
accounts.
Fixed a random bug: Sometimes the slave would replicate
GRANT
or
REVOKE
queries even if it was
configured to exclude the mysql
database
from replication (for example, using
--replicate-wild-ignore-table=mysql.%
).
(Bug#980)
The Last_Errno
and
Last_Error
fields in the output of
SHOW SLAVE STATUS
are now
cleared by CHANGE MASTER TO
and
when the slave SQL thread starts. (Bug#986)
A documentation mistake: It said that
RESET SLAVE
does not change
connection information (master host, port, user, and
password), whereas it does. The statement resets these to the
startup options (master-host
etc) if there
were some. (Bug#985)
SHOW SLAVE STATUS
now shows
correct information (master host, port, user, and password)
after RESET SLAVE
(that is, it
shows the new values, which are copied from the startup
options if there were some). (Bug#985)
Disabled propagation of the original master's log position for
events because this caused unexpected values for
Exec_Master_Log_Pos
and problems with
MASTER_POS_WAIT()
in
A->B->C replication setup. (Bug#1086)
Fixed a segmentation fault in mysqlbinlog
when --position=x
was used
with x
being between a
Create_file
event and its fellow
Append_block
, Exec_load
or Delete_file
events. (Bug#1091)
mysqlbinlog printed superfluous warnings
when using --database
,
which caused syntax errors when piped to
mysql. (Bug#1092)
Made mysqlbinlog --database filter
LOAD DATA
INFILE
too (previously, it filtered all queries
except LOAD DATA
INFILE
). (Bug#1093)
mysqlbinlog in some cases forgot to put a
leading '#'
in front of the original
LOAD DATA
INFILE
(this command is displayed only for
information, not to be run; it is later reworked to
LOAD DATA
LOCAL
with a different file name, for execution by
mysql). (Bug#1096)
binlog-do-db
and
binlog-ignore-db
incorrectly filtered
LOAD DATA
INFILE
(it was half-written to the binary log). This
resulted in a corrupted binary log, which could cause the
slave to stop with an error. (Bug#1100)
When, in a transaction, a transactional table (such as an
InnoDB
table) was updated, and later in the
same transaction a nontransactional table (such as a
MyISAM
table) was updated using the updated
content of the transactional table (with
INSERT ...
SELECT
for example), the queries were written to the
binary log in an incorrect order. (Bug#873)
When, in a transaction,
INSERT ...
SELECT
updated a nontransactional table, and
ROLLBACK
was
issued, no error was returned to the client. Now the client is
warned that some changes could not be rolled back, as this was
the case for normal INSERT
.
(Bug#1113)
Fixed a potential bug: When STOP
SLAVE
was run while the slave SQL thread was in the
middle of a transaction, and then CHANGE
MASTER TO
was used to point the slave to some
nontransactional statement, the slave SQL thread could get
confused (because it would still think, from the past, that it
was in a transaction).
User Comments
Add your own comment.