MySQL 4.0.15 リリース
投稿日時 2003-9-11 15:20:00 | トピック： MySQL
|MySQL 4.0.15 がリリースされました。|
News from the ChangeLog:
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)
* Change result set metadata information so that `MIN()' and `MAX()'
report that they can return `NULL' (this is true because an empty
set will return `NULL'). (Bug #324)
* Produce an error message on Windows if a second `mysqld' server is
started on the same TCP/IP port as an already running `mysqld'
* The `mysqld' server variables `wait_timeout', `net_read_timeout'
and `net_write_timeout' now work on Windows.
* 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' 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
* The `open_files_limit' server variable now shows the real open
* `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 bootup. *Note Mac OS X installation::.
* Most of the documentation included in the binary tarball
distributions (`.tar.gz') has been moved into a subdirectory
`docs'. *Note Installation layouts::.
* The manual is now included as an additional `info' file in the
binary distributions. (Bug #1019)
* Many binary distributions now include the embedded server library
(`libmysqld') by default. *Note Nutshell Embedded MySQL::.
* MySQL can now use range optimisation for `BETWEEN' with
non-constant limits. (Bug #991)
* Replication error messages now include the default database, so
that users can check which database the failing query was run for.
* 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
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).
* 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, *note 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 binlog; 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 username) no longer requires `FLUSH
PRIVILEGES' for the account to be recognized by the server. (Bug
* `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)
* Fixed buffer overflow in SET PASSWORD which could potentially be
exploited by MySQL users with root privileges to execute random code or
to gain shell access (thanks to Jedi/Sector One for spotting and
reporting this one).
* Fixed server crash on `FORCE INDEX' in a query that contained
"Range checked for each record" in the `EXPLAIN' output.
* Fixed table/column grant handling - proper sort order (from most
specific to less specific, *note Request access::) was not honored.
* 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
* 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'
* Fixed incorrect result when doing `UNION' and `LIMIT #,#' when one
didn't use braces 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 field 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
behaviour 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()' optimisation.
* `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.
* 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 occured 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 (e.g. `LEFT JOIN')
when `ON' condition is always false, and range search in used.
* Fixed a bug causing incorrect results from `MATCH ... AGAINST()'
in some joins. (Bug #942)
* `MERGE' tables do not ignore "Using index" (from `EXPLAIN' output)
* Fixed a bug that prevented an empty table from being marked as
"analyzed". (Bug #937)
* Fixed `myisamchk --sort-records' crash when used on compressed
* 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
* Fixed a security bug: A server compiled without SSL support still
allowed connections by users that 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' 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 segfault 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'.
* Made `mysqlbinlog --database' filter `LOAD DATA INFILE' too
(previously, it filtered all queries except `LOAD DATA INFILE').
* `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
* `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
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)
* When, in a transaction, `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)
* 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' was used to point the slave to some non-transactional
statement, the SQL slave thread could get confused (because it
would still think, from the past, that it was in a transaction).
MySQL 4.0.15 is now available on the following additional platforms:
* HP-UX 11i for Itanium
* OpenBSD 3.4 x86
The binaries for Linux/s390 are currently missing - they will be made
available as soon as possible.