Released on 11 Jan 2005
MySQL 4.1.9 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

  • mysqld_safe no longer tests for the presence of the data directory when using a relatively located server binary. It just assumes the directory is there, and fails to start up if it is not. This permits the data directory location to be specified on the command line, and avoids running a server binary that was not intended. (Bug #7249)

    References: See also Bug #7518.

  • The MySQL server aborts immediately instead of simply issuing a warning if it is started with the --log-bin option but cannot initialize the binary log at startup (that is, an error occurs when writing to the binary log file or binary log index file).

  • The platform suffix was changed from -win to -win32

  • InnoDB: Print a more descriptive error and refuse to start InnoDB if the size of ibdata files is smaller than what is stored in the tablespace header; innodb_force_recovery overrides this.

  • The MySQL-shared-compat Linux RPM now includes the 3.23 as well as the 4.0 shared libraries. (Bug #6342)

  • The product descriptions -noinstall and -essential have been moved in front of the version number

  • The binary log file and binary log index file now behave like MyISAM when there is a "disk full" or "quota exceeded" error. See Section B.5.4.3, “How MySQL Handles a Full Disk”.

  • InnoDB: Do not acquire an internal InnoDB table lock in LOCK TABLES if autocommit = 1. This helps in porting old MyISAM applications to InnoDB. InnoDB table locks in that case caused deadlocks very easily.

  • Seconds_Behind_Master is NULL (which means unknown) if the slave SQL thread is not running, or if the slave I/O thread is not running or not connected to master. It is zero if the SQL thread has caught up with the I/O thread. It no longer grows indefinitely if the master is idle.

  • The naming scheme of the Windows installation packages has changed slightly:

    • The platform suffix was changed from -win to -win32

    • The product descriptions -noinstall and -essential have been moved in front of the version number

    Examples: mysql-essential-4.1.9-win32.msi, See Section 2.3, “Installing MySQL on Microsoft Windows”.

  • The Mac OS X 10.3 installation disk images now include a MySQL Preference Pane for the Mac OS X Control Panel that enables the user to start and stop the MySQL server using the GUI and activate and deactivate the automatic MySQL server startup on bootup.

Bugs Fixed

  • Replication: A replication slave could crash after replicating many ANALYZE TABLE, OPTIMIZE TABLE, or REPAIR TABLE statements from the master. (Bug #6461, Bug #7658)

  • FLOAT values were not truncated correctly. (Bug #7361)

  • When encountering a disk full or quota exceeded write error, MyISAM sometimes failed to sleep and retry the write, resulting in a corrupted table. (Bug #7714)

  • Include compression library flags in the output from mysql_config --lib_r. (Bug #7021)

  • Made the MySQL server accept executing SHOW CREATE DATABASE even if the connection has an open transaction or locked tables. Refusing it made mysqldump --single-transaction sometimes fail to print a complete CREATE DATABASE statement for some dumped databases. (Bug #7358)

  • Corrected a problem with mysql_config not producing all relevant flags from CFLAGS. (Bug #6964)

  • mysqladmin password now checks whether the server has the old_passwords enabled or predates 4.1 and uses the old-format password if so. (Bug #7451)

  • Running mysql_fix_privilege_tables could result in grant table columns with lengths that were too short if the server character set had been set to a multi-byte character set first. (Bug #7539)

  • Incorrect results were obtained for complex datetime expressions containing casts of datetime values to TIME or DATE values. (Bug #6914)

  • InnoDB: InnoDB failed to drop a table in the background drop queue if the table was referenced by a FOREIGN KEY constraint.

  • PROCEDURE ANALYSE() did not quote some ENUM values properly. (Bug #2813)

  • Using INSERT DELAYED with prepared statements could lead to table corruption.

  • InnoDB: When DISCARD TABLESPACE failed because the table was referenced by a foreign key, the error code returned did not indicate that this was the case.

  • InnoDB: Dropping a table where an INSERT was waiting for a lock to check a FOREIGN KEY constraint caused an assertion.

  • InnoDB: The storgae of an SQL NULL value in some rare cases took more space than should have been required.

  • Corrected a problem with mysqld_safe not properly capturing output from ps. (Bug #5878)

  • --expire-logs-days was not honored if using only transactions. (Bug #7236)

  • Microseconds were dropped from the string result of the STR_TO_DATE function, when there was some other specifier in the format string following %f. (Bug #7458)

  • InnoDB: Use the fcntl(F_FULLFSYNC) flush method on Mac OS X versions 10.3 and up instead of fsync() that could cause corruption at power outages.

  • Added a --default-character-set option to mysqladmin to avoid problems when the default character set is not latin1. (Bug #7524)

  • Linking both the MySQL client library and IMAP library in the same build failed. (Bug #7428)

  • InnoDB: When innodb_file_per_table was enabled in my.cnf, records could disappear from the secondary indexes of a table after mysqld was killed.


    This fix introduced a new Bug #8021, affecting Windows and users of innodb_file_per_table only. If you are using innodb_file_per_table on Windows, you can work around this new issue by adding the line innodb_flush_method= unbuffered to the my.cnf or my.ini file.

    (Bug #7496)

  • InnoDB: 32-bit mysqld binaries built on HP-UX 11 did not work with InnoDB files greater than 2 GB in size. (Bug #6189)