Released on 23 Oct 2004
MySQL 4.1.7 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

  • Added a startup option and settable system variable innodb_table_locks for making LOCK TABLE acquire locks on InnoDB tables. The default value is 1, which means that LOCK TABLES also causes InnoDB to take a table lock internally. In applications using autocommit = 1 and LOCK TABLES, InnoDB's internal table locks (added in MySQL 4.0.20 and 4.1.2) can cause deadlocks. You can set innodb_table_locks = 0 in my.cnf to remove that problem.

    In addition, SHOW TABLE STATUS now shows the creation time of InnoDB tables. That this timestamp might not always be correct because (for example) it was changed by ALTER TABLE. See Section 13.2.15, “Restrictions on InnoDB Tables”. (Bug #3299, Bug #5998)

  • InnoDB: If innodb_thread_concurrency would be exceeded, let a thread sleep 10 ms before entering the FIFO queue; previously, the value was 50 ms.

  • MOD() no longer rounds arguments with a fractional part to integers. Now it returns exact remainder after division. (Bug #6138)

Bugs Fixed

  • Security Fix: A missing UPDATE privilege could be circumvented by a user having INSERT and SELECT privileges for table with a primary key. (Bug #6173)

  • Replication: A problem introduced in MySQL 4.0.21 caused replication slaves to stop (error 1223) where a connection started a transaction, performed updates, then issued a FLUSH TABLES WITH READ LOCK followed by a COMMIT. This issue occurred when using the InnoDB innobackup script. (Bug #5949)

  • DATE, TIME, and DATETIME columns were not handled correctly by the binary protocol. The problem was compiler-specific and could have been observed on HP-UX, AIX, and Solaris 9, when using native compilers. (Bug #6025)

  • Selecting from a HEAP table with key_column IS NOT NULL could cause the server to crash. The crash could also occur even if all index parts were not used. (Bug #6082)

  • FOUND_ROWS() did not work correctly with LIMIT clause in prepared statements. (Bug #6088)

  • libmysqlclient did not convert zero date values (0000-00-00) to strings correctly. (Bug #6058)

  • Invoking the deprecated libmysqlclient function mysql_create_db() caused the server to crash. (Bug #6081)

  • MyISAM indexes could be corrupted when key values started with character codes below BLANK. This was caused by the new key sort order instroduced in MySQL 4.1. (Bug #6151)

  • InnoDB: Release the dictionary latch during a long cascaded FOREIGN KEY operation, so that we do not starve other users doing CREATE TABLE or other DDL operation. This caused a notorious 'Long semaphore wait' message to be printed to the .err log. (Bug #5961)

  • Now implicit access to system time zone description tables (which happens when you set the time_zone variable or use CONVERT_TZ() function) does not require any privileges. (Bug #6116)

  • TINYINT columns were not handled correctly in the binary protocol. The problem was specific to platforms where the C compiler has the char data type unsigned by default. (Bug #6024)

  • libmysqlclient did not convert negative time values to strings correctly. (Bug #6049)

  • InnoDB: LOAD DATA INFILE…REPLACE printed duplicate key errors when executing the same LOAD statement several times. (Bug #5835)

  • Attempting to prepare a statement with RAND(?) caused the server to crash. (Bug #5985)

  • Bad metadata was sent for SELECT statements not returning a result set (such as SELECT ... INTO OUTFILE) by the prepared statements protocol. (Bug #6059)

  • NATURAL JOIN did not work correctly in prepared statements. . (Bug #6046)

  • REVOKE ALL PRIVILEGES, GRANT OPTION FROM user did not remove all privileges correctly. (Bug #5831)

  • Join of tables from different databases having columns with identical names did not work correctly, returning the error Column 'xxx' in field list is ambiguous. (Bug #6050)