| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
IMPORTANT:
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
will never send 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)
MIN() and MAX()
report that they can return NULL (this is true because an
empty set will return NULL). (Bug #324)
mysqld server is
started on the same TCP/IP port as an already running mysqld server.
mysqld server 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().
--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 will 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.
open_files_limit server 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.
.tar.gz) has been moved into a subdirectory docs.
See section 2.1.5 Installation Layouts.
info file in the binary
distributions. (Bug #1019)
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.1.2 The Embedded MySQL Server.
BETWEEN with
non-constant limits. (Bug #991)
binlog-do-db and binlog-ignore-db options are tested
against the database on the master (see section 5.8.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 6.7 Replication Startup Options).
SET PASSWORD
if it is configured to exclude the mysql database from
replication (using for example
replicate-wild-ignore-table=mysql.%). This was already the
case for GRANT and REVOKE since version 4.0.13 (though
there was Bug #980 in 4.0.13 & 4.0.14, which has been fixed in
4.0.15).
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 6.3 Replication Implementation Details.
GRANT command that creates an anonymous user
(that is, an account with an empty username) no longer requires
FLUSH PRIVILEGES for the account to be recognized by the server.
(Bug #473)
CHANGE MASTER 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
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 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:
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).
FORCE INDEX in a query that contained
"Range checked for each record" in the EXPLAIN output. (Bug #1172)
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.
Can't unlock file error when running
myisamchk --sort-index on Windows. (Bug #1119)
key_buffer_size while
the key cache was actively used. (Bug #1088)
MyISAM and ISAM when a row is updated
in a table with a large number of columns and at least one BLOB/TEXT
column.
UNION and LIMIT #,# when
one didn't use braces around the SELECT parts.
UNION and ORDER BY .. LIMIT #
when one didn't use braces around the SELECT parts.
SELECT SQL_CALC_FOUND_ROWS ... UNION ALL ... LIMIT #
where FOUND_ROWS() returned incorrect number of rows.
1+1-1+1-1... in certain combinations. (Bug #871)
FULLTEXT index
from being marked as "analyzed".
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)
tis620 character
set. (Bug #1116)
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)
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)
PRIMARY key declared for a column
that is not explicitly marked NOT NULL was sorted after a
UNIQUE key for a NOT NULL column).
INTERVAL when applied to a DATE value.
(Bug #792)
XOR evaluation in WHERE clause. (Bug #992)
LEFT JOIN)
when ON condition is always false, and range search in used.
(Bug #926)
MATCH ... AGAINST() in some
joins. (Bug #942)
MERGE tables do not ignore "Using index" (from EXPLAIN output)
anymore.
myisamchk --sort-records crash when used on compressed table.
ALTER TABLE and related commands such as CREATE INDEX.
(Bug #712)
LOAD DATA FROM MASTER when
the master was running without the --log-bin option. (Bug #934)
REQUIRE SSL option specified for
their accounts.
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)
Last_Errno and Last_Error fields in the output of
SHOW SLAVE STATUS are now cleared by CHANGE MASTER and
when the slave SQL thread starts. (Bug #986)
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)
Exec_Master_Log_Pos and problems
with MASTER_POS_WAIT() in A->B->C replication setup. (Bug #1086)
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)
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 filename, 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)
InnoDB table)
was updated, and later in the same transaction a
non-transactional 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)
INSERT ... SELECT updated a
non-transactional 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 already the case for normal
INSERT. (Bug #1113)
STOP SLAVE was run while the slave
SQL thread was in the middle of a transaction, and then CHANGE
MASTER was used to point the slave to some non-transactional
statement, the slave SQL thread could get confused (because it would
still think, from the past, that it was in a transaction).
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |