Released on 26 Aug 2004
MySQL 4.1.4 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 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.


To fix a compile problem on systems that do not have automake 1.7 installed, an updated 4.1.4a source tarball has been published. In addition to resolving this automake dependency (Bug #5319), it also fixes some reported libedit compile errors when using a non-gcc compiler (Bug #5353).

Functionality Added or Changed

  • Made internal representation of TIMESTAMP values in InnoDB in 4.1 to be the same as in 4.0. This difference resulted in incorrect datetime values in TIMESTAMP columns in InnoDB tables after an upgrade from 4.0 to 4.1. Warning: extra steps during upgrade required! Unfortunately this means that if you are upgrading from 4.1.x, where x <= 3, to 4.1.4 you should use mysqldump for saving and then restoring your InnoDB tables with TIMESTAMP columns. (Bug #4492)

  • The mysqld-opt Windows server was renamed to mysqld. This completes the Windows server renaming begun in MySQL 4.1.2. See Section 2.3.8, “Selecting a MySQL Server Type”.

  • Added --start-datetime, --stop-datetime, --start-position, and --stop-position options to mysqlbinlog. These make point-in-time recovery easier.

  • Killing a CHECK TABLE statement does not result in the table being marked as corrupted any more; the table remains as if CHECK TABLE had not even started. See Section, “KILL Syntax”.

  • Added the CSV storage engine.

  • Added Latin language collations for the ucs2 and utf8 Unicode character sets. These are called ucs2_roman_ci and utf8_roman_ci.

  • Corrected the name of the Mac OS X StartupItem script (it must match the name of the subdirectory, which was renamed to MySQLCOM in MySQL 4.1.2). Thanks to Bryan McCormack for reporting this.

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

  • Support of usage of column aliases qualified by table name or alias in ORDER BY and GROUP BY was dropped. For example the following query SELECT a AS b FROM t1 ORDER BY t1.b is not permitted. One should use SELECT a AS b FROM t1 ORDER BY t1.a or SELECT a AS b FROM t1 ORDER BY b instead. This was nonstandard (since aliases are defined on query level not on table level) and caused problems with some queries.

Bugs Fixed

  • Replication: 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)

  • Replication: When a multiple-table DROP TABLE failed to drop a table on the master server, the error was not written to the binary log. (Bug #4553)

  • Replication: A CREATE TABLE ... TYPE=HEAP ... AS SELECT... statement caused the replication slave to stop. (Bug #4971)

  • libmysqlclient crashed when attempting to fetch the value of a MEDIUMINT column. (Bug #5126)

  • Executing UNHEX(NULL) caused the server to crash. (Bug #4441)

  • The .err extension was omitted from the error log file (--log-error) when the host name contained a domain name. The domain name is now replaced by the extension. (Bug #4997)

  • myisasmchk --extend-check crashed when run on a list of files. (Bug #4901)

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

  • The MySQL server crashed when attempting to execute a prepared statement with SELECT ... INTO @var for the second time. (Bug #5034)

  • mysqlbinlog --position --read-from-remote-server had incorrect output for # at log_pos. (Bug #4506)

  • An error was reported when a column from an ORDER BY clause was present in two tables participating in a SELECT, even if the second instance of column in select list was renamed. (For example, SELECT t1.a AS c FROM t1, t2 ORDER BY a produced an error if both t1 and t2 tables contain column a).

    Now MySQL does not prefer columns, mentioned in a select list but renamed, over columns from other tables participating in a FROM clause when it resolves the ORDER BY clause. (Bug #4302)

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

  • Concurrent accesses to more than one MERGE table, or to one MERGE table and a MyISAM tables, could result in a crash or hang of the server. (Bug #2408)

  • mysql-test-run failed the rpl_trunc_binlog test when running the test from the installation directory. (Bug #5050)

  • A deadlock could happen under certain rare circumstances when using KILL. (Bug #4810)

  • Support for %T, %r, %V, %v and %X, %x format specifiers was added to STR_TO_DATE() function. (Bug #4756)

  • MATCH ... AGAINST now works in a subquery. (Bug #4769)

  • mysql-test-run failed the grant_cache test when run as Unix root user. (Bug #4678)

  • Prohibited resolving of table fields in inner queries if fields do not take part in grouping for queries with grouping (inside aggregate function arguments, all table fields are still permitted). (Bug #4814)

  • SET GLOBAL SYNC_BINLOG did not work on some platforms (Mac OS X). (Bug #5064)

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

  • An assertion failure could occur when reading the grant tables (Bug #4407)

  • Using the CONVERT_TZ() function with a time zone described in the database as parameter where this time zone had not been used before caused the server to crash. (Bug #4508)

  • Fixed a crash after STOP SLAVE if the IO replication thread is in the state Waiting to reconnect after a failed master event read. (Bug #4629)

  • NATURAL JOIN where the joined tables had no common column caused the server to hang. (Bug #4807)

  • mysql_fix_privilege_tables did not handle the --password=password_val option correctly. (Bug #4240, Bug #4543)

  • mysqlbinlog --read-from-remote-server sometimes could not accept 2 binary logs in a single invocation. (Bug #4507)

  • The counter for an AUTO_INCREMENT column was not reset by TRUNCATE TABLE if the table was a temporary one. (Bug #5033)

  • KILLing a connection while it was performing START SLAVE caused the server to crash. (Bug #4827)

  • Execution IN subqueries that use compound indexes was better optimized. (Bug #4435)

  • mysql_options(...,MYSQL_OPT_LOCAL_INFILE,...) failed to disable LOAD DATA LOCAL INFILE. (Bug #5038)

  • Attempting to execute for a second time a prepared statement with NOT in an WHERE or ON clause caused the server to crash. (Bug #4912)