List:Packagers« Previous MessageNext Message »
From:Lenz Grimmer Date:September 10 2003 6:02pm
Subject:MySQL 4.0.15 has been released
View as plain text  
Hash: SHA1


MySQL 4.0.15, a new version of the popular Open Source/Free Software
Database, has been released. It is now available in source and binary form
for a number of platforms from our download pages at and mirror sites.

Note that not all mirror sites may be up to date at this point in time -
if you can't find this version on some mirror, please try again later or
choose another download site.

This is a bugfix release for the current production version.

Please refer to our bug database at for more
details about the individual bugs fixed in this version.

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.

   DIRECTORY' options, if they were specified when the table was

 * The `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.

 * 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 `'. 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 `', 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:

 * 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.
   (Bug #1172)

 * Fixed table/column grant handling - proper sort order (from most
   specific to less specific, *note Request access::) 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'

 * 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.
   (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 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.
   (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)

 * 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'.
   (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 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).

Additional notes:

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.

- -- 
 Lenz Grimmer <lenz@stripped>
 Senior Production Engineer
 MySQL GmbH,
 Hamburg, Germany

 For technical support contracts, visit
Version: GnuPG v1.2.2-rc1-SuSE (GNU/Linux)
Comment: For info see

MySQL 4.0.15 has been releasedLenz Grimmer10 Sep