[ < ] | [ > ] | [ << ] | [ 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] | [ ? ] |