MySQL

4.0.21

Released on 6 Sep 2004
MySQL 4.0.21 Changelog

End of Product Lifecycle. Active development and support for MySQL Database Server versions 3.23, 4.0, and 4.1 has ended. For details, see http://www.mysql.com/about/legal/lifecycle/#calendar. Please consider upgrading to a recent version. Further updates to the content of this manual will be minimal. All formats of this manual will continue to be available until 31 Dec 2010.

Functionality added or changed:

  • Print version_comment (from ./configure --comment during compilation) when starting the server. Example: Version: '4.0.21-debug' socket: '/tmp/mysql.sock' port: 0 Official MySQL Binary

  • Made the MySQL server not react to signals SIGHUP and SIGQUIT on Mac OS X 10.3. This is needed because under this OS, the MySQL server receives lots of these signals (reported as Bug #2030).

  • On Windows, the mysqld-nt and mysqld-max-nt servers now write error messages to the Windows event log in addition to the MySQL error log.

Bugs fixed:

  • Fixed an old bug in concurrent accesses to MERGE tables (even one MERGE table and MyISAM tables), that could've resulted in a crash or hang of the server. (Bug #2408, CVE-2004-0837)

  • Fixed a bug that caused incorrect results from GROUP BY queries with expression in HAVING clause that refers to a columns such as BLOB, TEXT, or TINYBLOB. (Bug #4358)

  • Fixed a bug when memory was not released when HEAP table is dropped. It could only happen on Windows when a symlink file (.sym) is used and if that symlink file contained double backslashes (\\). (Bug #4973)

  • Fixed a bug which prevented TIMESTAMP(19) fields from being created. (Bug #4491)

  • Fixed a bug that caused wrong results in queries that were using index to search for NULL values in BLOB (TINYBLOB, TEXT, TINYTEXT, etc) columns of MyISAM tables. (Bug #4816)

  • Fixed a bug in the function ROUND() reporting incorrect metadata (number of digits after the decimal point). It can be seen, for example, in CREATE TABLE t1 SELECT ROUND(1, 34). (Bug #4393)

  • Fixed precision loss bug in some mathematical functions such as SQRT() and LOG(). (Bug #4356)

  • Fixed a long-standing problem with LOAD DATA with the LOCAL option. The problem occurs when an error happens during the LOAD DATA operation. Previously, the connection was broken. Now the error message is returned and connection stays open.

  • Optimizer now treats col IN (val) the same way it does for col = val.

  • Fixed a problem with net_buffer_length when building the DBD::mysql Perl module. (Bug #4206)

  • lower_case_table_names = 2 (keep case for table names) was not honored with ALTER TABLE and CREATE/DROP INDEX. (Bug #3109)

  • Fixed a crash on declaration of DECIMAL(0,...) column. (Bug #4046)

  • Fixed a bug in IF() function incorrectly determining the result type if aggregate functions were involved. (Bug #3987)

  • Fixed bug in privilege checking where, under some conditions, one was able to grant privileges on the database, he has no privileges on. (Bug #3933)

  • Fixed crash in MATCH ... AGAINST() on a phrase search operator with a missing closing double quote. (Bug #3870, CVE-2004-0956)

  • Values greater than 4294967295 of system variables were truncated on 64-bit platforms. (Bug #3754)

  • If server-id was not set using startup options but with SET GLOBAL, the replication slave still complained that it was not set. (Bug #3829)

  • Fixed potential memory overrun in mysql_real_connect() (which required a compromised DNS server and certain operating systems). (Bug #4017, CVE-2004-0836)

  • During the installation process of the server RPM on Linux, mysqld was run as the root system user, and if you had --log-bin=somewhere_out_of_var_lib_mysql it created binary log files owned by root in this directory, which remained owned by root after the installation. This is now fixed by starting mysqld as the mysql system user instead. (Bug #4038)

  • Made DROP DATABASE honor the value of lower_case_table_names. (Bug #4066)

  • The slave SQL thread refused to replicate INSERT ... SELECT if it examined more than 4 billion rows. (Bug #3871)

  • Fixed incorrect destruction of expression which led to crash of server on complex AND/OR expressions if query was ignored (either by a replication server because of --replicate-*-table rules, or by any MySQL server because of a syntax error). (Bug #3969, Bug #4494)

  • Fixed that mysqlbinlog --position --read-from-remote-server had wrong # at lines. (Bug #4506)

  • If CREATE TEMPORARY TABLE t SELECT failed while loading the data, the temporary table was not dropped. (Bug #4551)

  • Fixed that when a multiple-table DROP TABLE failed to drop a table on the master server, the error code was not written to the binary log. (Bug #4553)

  • When the slave SQL thread was replicating a LOAD DATA INFILE statement, it didn't show the statement in the output of SHOW PROCESSLIST. (Bug #4326)

  • Fixed that CREATE TABLE ... TYPE=HEAP ... AS SELECT... caused replication slave to stop. (Bug #4971)

  • Fixed that disable-local-infile option had no effect if client read it from a configuration file using mysql_options(...,MYSQL_READ_DEFAULT,...). (Bug #5073)

  • Fixed that mysql-test-run failed on the rpl_trunc_binlog test if running test from the installed (the target of 'make install') directory. (Bug #5050)

  • Fixed an unlikely deadlock which could happen when using KILL. (Bug #4810)

  • Fixed a crash when one connection got KILLed while it was doing START SLAVE. (Bug #4827)

  • Made FLUSH TABLES WITH READ LOCK block COMMIT if server is running with binary logging; this ensures that the binary log position is trustable when doing a full backup of tables and the binary log. (Bug #4953)

  • Fixed that the counter of an auto_increment column was not reset by TRUNCATE TABLE is the table was a temporary one. (Bug #5033)

  • Made database names to compare case-insensitively in fully qualified column names (database.table.column) when lower_case_table_names = 1. (Bug #4792)

  • Fixed that SET CHARACTER SET was not replicated correctly. MySQL 4.1 does not have that bug. (Bug #4500)

  • Fixed a symlink vulnerability in the mysqlhotcopy script. (CVE-2004-0457)