-----BEGIN PGP SIGNED MESSAGE-----
MySQL 4.0.17, a new version of the popular Open Source/Free Software
Database Management System, has been released. It is now available in
source and binary form for a number of platforms from our download pages
at http://www.mysql.com/downloads/ 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 http://bugs.mysql.com/ for more
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').
* `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.
* 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'
* 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.
* 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)
- 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/
For technical support contracts, visit https://order.mysql.com/?ref=mlgr
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
Comment: For info see http://quantumlab.net/pine_privacy_guard/
-----END PGP SIGNATURE-----