List:Announcements« Previous MessageNext Message »
From:Lenz Grimmer Date:December 17 2003 12:58pm
Subject:MySQL 4.0.17 has been released
View as plain text  
Hash: SHA1


MySQL 4.0.17, a new version of the popular Open Source/Free Software

choose another download site.

This is a bugfix release for the current production version.

details about the individual bugs fixed in this version.

News from the ChangeLog:

Functionality added or changed:

   * `mysqldump' no longer dumps data for `MERGE' tables. (Bug #1846)

   * `lower_case_table_names' is now forced to 1 if the database
     directory is located on a case-insensitive file system. (Bug #1812)

   * Symlink creation is now disabled on systems where `realpath()'
     doesn't work. (Before one could use `CREATE TABLE .. DATA
     DIRECTORY=..' even if `HAVE_BROKEN_REALPATH' was defined. This is
     now disabled to avoid problems when running `ALTER TABLE').

   * Inserting a negative `AUTO_INCREMENT' value in a `MyISAM' table no
     longer updates the `AUTO_INCREMENT' counter to a big unsigned
     value.  (Bug #1366)

   * Added four new modes to `WEEK(..., mode)' function.  *Note
     `WEEK(date,mode)': Date and time functions.  (Bug #1178)

   * Allow `UNION DISTINCT' syntax.

   * `mysql_server_init()' now returns 1 if it can't initialize the
     environment. (Previously `mysql_server_init()' called `exit(1)' if
     it could not create a key with `pthread_key_create()'. (Bug #2062)

   * Allow spaces in Windows service names.

   * Changed the default Windows service name for `mysqld' from `MySql'
     to `MySQL'.  This should not affect usage, because service names
     are not case sensitive.

   * When you install `mysqld' as a service on Windows systems, `mysqld'
     will read startup options in option files from the option group
     with the same name as the service name.  (Except when the service
     name is `MySQL').

Bugs fixed:

   * `INSERT DELAYED ... SELECT...' could cause table corruption because
     tables were not locked properly.  This is now fixed by ignoring
     `DELAYED' in this context. (Bug #1983)

   * One can now configure MySQL as a Windows service as a normal user.
     (Bug #1802). Thanks to Richard Hansen for fixing this.

   * Database names are now compared in lowercase in `ON' clauses when
     `lower_case_table_names' is set. (Bug #1736)

   * `IGNORE ... LINES' option to `LOAD DATA INFILE' didn't work when
     used with fixed length rows. (Bug #1704)

   * Fixed problem with `UNIX_TIMESTAMP()' for timestamps close to 0.
     (Bug #1998)

   * Fixed problem with character values greater than 128 in the
     `QUOTE()' function. (Bug #1868)

   * Fixed searching of `TEXT' with end space. (Bug #1651)

   * Fixed caching bug in multiple-table updates where same table was
     used twice.  (Bug #1711)

   * Fixed directory permissions for the MySQL-server RPM documentation
     directory.  (Bug #1672)

   * Fixed `UPDATE REPLACE' on invalid enum value. (Bug #2023)

   * `mysql' client program now correctly prints connection identifier
     returned by `mysql_thread_id()' as unsigned integer rather than as
     signed integer.  (Bug #1951)

   * `FOUND_ROWS()' could return incorrect number of rows after a query
     with an impossible `WHERE' condition. (Bug #1468)

   * `SHOW DATABASES' no longer shows `.sym' files (on Windows) that do
     not point to a valid directory. (Bug #1385)

   * Fixed a possible memory leak on Mac OS X when using the shared
     `libmysql.so' library. (from `pthread_key_create()'). (Bug #2061)

   * Fixed bug in `UNION' statement with alias `*'. (Bug #1249)

   * Fixed a bug in `DELETE ... ORDER BY ... LIMIT' where the rows
     where not deleted in the proper order. (Bug #1024, Bug #1697).

   * Fixed serious problem with multi-threaded programs on Windows that
     used the embedded MySQL libraries. (Locks of tables were not
     handled correctly between different threads).

   * Code cleanup: Fixed a few code defects (potential memory leaks,
     null pointer dereferences, uninitialized variables). Thanks to
     Reasoning Inc. for informing us about these findings.

   * Fixed a buffer overflow error which occured with zero prepended
     values in some columns of the type `DECIMAL'. (Bug #2128)

   * Filesort was never shown in `EXPLAIN' if query contained an `ORDER
     BY NULL' clause. (Bug #1335)

   * Fixed invalidation of whole query cache on `DROP DATABASE'. (Bug

   * Fixed bug in range optimizer that caused wrong results for some
     unlikely `AND'/`OR' queries. (Bug #1828)

   * Fixed a crash in `ORDER BY' when ordering by expression and
     identifier.  (Bug #1945)

   * Fixed a crash in an open `HANDLER' when an `ALTER TABLE' was
     executed in a different connection. (Bug #1826)

   * Fixed a bug in `trunc*' operator of full-text search which
     sometimes caused MySQL not to find all matched rows.

   * Fixed bug prepending `0' characters to `DECIMAL' column values.

   * Fixed optimizer bug, introduced in 4.0.16, when `REF' access plan
     was preferred to more efficient `RANGE' on another column.

   * Fixed problem when installing a MySQL server as a Windows service
     using a command of the form `mysqld --install mysql
     --defaults-file=path-to-file'.  (Bug #1643)

   * Fixed an incorrect result from a query that uses only `const'
     tables (such as one-row tables) and non-constant expression (such
     as `RAND()'). (Bug #1271)

   * Fixed bug when the optimizer did not take `SQL_CALC_FOUND_ROWS'
     into account if `LIMIT' clause was present. (Bug #1274)

   * `mysqlbinlog' now asks for a password at the console when the `-p'
     or `--password' option is used with no argument. This is
     consistent with the way that other clients such `mysqladmin' and
     `mysqldump' already behave. *Note:* A consequence of this change
     is that it is no longer possible to invoke `mysqlbinlog' as
     `mysqlbinlog -p pass_val' (with a space between the `-p' option
     and the following password value).  (Bug #1595)

   * Fixed bug accidentally introduced in 4.0.16 where the slave SQL
     thread deleted its replicated temporary tables when `STOP SLAVE'
     was issued.

   * In a "chain" replication setup `A->B->C', if 2 sessions on A
     updated temporary tables of the same name at the same time, the
     binary log of `B' became incorrect, resulting in `C' becoming
     confused.  (Bug #1686)

   * In a "chain" replication setup `A->B->C', if `STOP SLAVE' was
     issued on `B' while it was replicating a temporary table from `A',
     then when `START SLAVE' was issued on `B', the binary log of `B'
     became incorrect, resulting in `C' becoming confused.  (Bug #1240)

   * When `MASTER_LOG_FILE' and `MASTER_LOG_POS' were not specified,
     `CHANGE MASTER' used the coordinates of the slave I/O thread to
     set up replication, which broke replication if the slave SQL
     thread lagged behind the slave I/O thread. This caused the slave
     SQL thread to lose some events. The new behavior is to use the
     coordinates of the slave SQL thread instead.  *Note `CHANGE MASTER
     TO': CHANGE MASTER TO.  (Bug #1870)

   * Now if integer is stored or converted to `TIMESTAMP' or `DATETIME'
     value checks of year, month, day, hour, minute and second ranges
     are performed and numbers representing illegal timestamps are
     converted to 0 value. This behavior is consistent with manual and
     with behavior of string to `TIMESTAMP'/`DATETIME' conversion. (Bug

   * Fixed bug when `BIT_AND()' and `BIT_OR()' group functions returned
     incorrect value if `SELECT' used a temporary table and no rows
     were found. (Bug #1790).

   * `BIT_AND()' is now unsigned in all contexts. This means that it
     will now return 18446744073709551615 (= 0xffffffffffffffff)
     instead of -1 if there were no rows in the result.

   * Fixed bug with `BIT_AND()' still returning signed value for an
     empty set in some cases. (Bug #1972)

   * Fixed bug with `^' (XOR) and `>>' (bit shift) still returning
     signed value in some cases. (Bug #1993)

   * Replication: a rare race condition in the slave SQL thread, which
     could lead to a wrong complain that the relay log is corrupted.
     (Bug #2011)

   * Replication: if an administrative command on a table (`OPTIMIZE
     TABLE', `REPAIR TABLE' etc) was run on the slave, this could
     sometimes stop the slave SQL thread (this did not led to any
     corruption; one just had to type `START SLAVE' to get replication
     going again). (Bug #1858)

   * Replication: in the slave SQL thread, a multi-table `UPDATE' could
     produce a wrong complain that some record was not found in one
     table, if the `UPDATE' was preceded by a `INSERT ... SELECT'. (Bug

   * Fixed deficiency in MySQL code which is responsible for scanning
     directories. This deficiency caused `SHOW TABLE STATUS' to be very
     slow for big number of tables in database even if single
     particular table were specified. (Bug #1952)

Additional notes:

 - In addition to RPMs for Linux/x86 and Linux/AMD64, we now also provide
   RPM packages for Linux/IA64. These are optimized to run on Linux with
   Itanium 2 processors, but should run on Itanium 1 systems as well. They
   are built on Red Hat Linux AS 2.1.
 - Our Mac OS X build host has been upgraded to Mac OS X 10.2.8 
 - Our FreeBSD/sparc64 build host has been upgraded to FreeBSD 5.1

- -- 
 Lenz Grimmer <lenz@stripped>
 Senior Production Engineer
 MySQL GmbH, http://www.mysql.de/
 Hamburg, Germany

Version: GnuPG v1.2.3 (GNU/Linux)

MySQL 4.0.17 has been releasedLenz Grimmer17 Dec