Released on 10 Oct 2004
MySQL 4.1.6 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.

Functionality Added or Changed

  • Now if ALTER TABLE converts one AUTO_INCREMENT column to another AUTO_INCREMENT column it preserves zero values (this includes the case that we don't change such column at all).

  • On Windows, the MySQL configuration files included in the package now use .ini instead of .cnf as the file name suffix.

  • If a write to a MyISAM table fails because of a full disk or an exceeded disk quota, it now prints a message to the error log every 10 minutes, and waits until disk space becomes available. (Bug #3248)

  • InnoDB: The innodb_autoextend_increment startup option that was introduced in release 4.1.5 was made a settable global variable. (Bug #5736)

  • InnoDB: If DROP TABLE is invoked on an InnoDB table for which the .ibd file is missing, print to error log that the table was removed from the InnoDB data dictionary, and enable MySQL to delete the .frm file. Maybe DROP TABLE should issue a warning in this case.

  • InnoDB: Added the startup option and settable global variable innodb_max_purge_lag for delaying INSERT, UPDATE and DELETE operations when the purge operations are lagging. The default value of this parameter is zero, meaning that there are no delays. See Section 13.2.10, “InnoDB Multi-Versioning”.

  • Added option --sigint-ignore to the mysql command line client to make it ignore SIGINT signals (typically the result of the user pressing Control+C).

  • Now if ALTER TABLE converts some column to TIMESTAMP NOT NULL column it converts NULL values to current timestamp value (One can still get old behavior by setting system TIMESTAMP variable to zero).

  • TIMESTAMP columns now can store NULL values. To create such a column, you must explicitly specify the NULL attribute in the column specification. (Unlike all other data types, TIMESTAMP columns are NOT NULL by default.)

Bugs Fixed

  • Replication: SET COLLATION_SERVER... statements replicated by the slave SQL thread no longer advance its position. This is so that, if the thread is interrupted before the update is completed, it later performs the SET again. (Bug #5705)

  • The server sometimes chose a nonoptimal execution plan for a prepared statement executed with changed placeholder values. (Bug #6042)

  • Behavior of ALTER TABLE converting column containing NULL values to AUTO_INCREMENT column is no longer affected by NO_AUTO_VALUE_ON_ZERO mode. . (Bug #5915)

  • InnoDB: CREATE TEMPORARY TABLE ... ENGINE=InnoDB terminated mysqld when running in innodb_file_per_table mode. Now, per-table for temporary tables are created in the temporary directory used by mysqld. (Bug #5137)

  • InnoDB: The FOREIGN KEY parser did not permit ALTER TABLE on tables whose names contained # characters. (Bug #5856)

  • InnoDB: ALTER TABLE t DISCARD TABLESPACE did not work correctly. (Bug #5851)

  • InnoDB: Change error code to HA_ERR_ROW_IS_REFERENCED if we cannot DROP a parent table referenced by a FOREIGN KEY constraint; this error number is less misleading than the previous number HA_ERR_CANNOT_ADD_FOREIGN, but misleading still. (Bug #6202)

  • An attempt to execute a prepared statement with a subquery inside a boolean expression caused the server to crash. (Bug #5987)

  • The server crashed when character set conversion was implicitly used in prepared mode, as in 'abc' LIKE CONVERT('abc' as utf8). (Bug #5688)

  • The mysql_change_user() C API function now frees all prepared statements associated with the connection. (Bug #5315)

  • InnoDB: SHOW CREATE TABLE now obeys the SET sql_mode = ANSI and SET sql_quote_show_create = 0 settings. (Bug #5292)

  • InnoDB: If one updated a column so that its size changed, or updated it to an externally stored (TEXT or BLOB) value, then ANOTHER externally stored column would show up as 512 bytes of good data + 20 bytes of garbage in a consistent read that fetched the old version of the row. (Bug #5960)

  • InnoDB: UTF-8 characters were not always handled correctly in column prefix indexes. (Bug #5975)

  • If the slave SQL thread finds a syntax error in a query (which should be rare, as the master parsed it successfully), it now stops immediately. (Bug #5711)

  • Inserting NULL into an AUTO_INCREMENT column failed when using prepared statements. (Bug #5510)

  • InnoDB: Make the check for excessive semaphore waits tolerate glitches in the system clock (do not crash the server if the system time is adjusted while InnoDB is under load.). (Bug #5898)