MySQL 4.0.17 has been released

si

Administrator
MySQL 4.0.17 has been released

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

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
#1898)

* 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
#1448)

* 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
#1701)

* 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
(darwin6.8)
- Our FreeBSD/sparc64 build host has been upgraded to FreeBSD 5.1
 
Сверху