Released on 17 Aug 2005
MySQL 4.1.14 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

  • MySQL Cluster: Improved handling of the configuration variables NoOfPagesToDiskDuringRestartACC, NoOfPagesToDiskAfterRestartACC, NoOfPagesToDiskDuringRestartTUP, and NoOfPagesToDiskAfterRestartTUP should result in noticeably faster startup times for MySQL Cluster. (Bug #12149)

  • MySQL Cluster: A new -P option is available for use with the ndb_mgmd client. When called with this option, ndb_mgmd prints all configuration data to stdout, then exits.

  • The MySQL server now starts correctly with all combinations of --basedir and --datadir, resolving an issue introduced by the original fix for this bug in MySQL 4.1.9. (Bug #7249)

    References: See also Bug #7518.

  • Added support of where clause for queries with FROM DUAL. (Bug #11745)

  • SHOW CHARACTER SET and INFORMATION_SCHEMA now properly report the Latin1 character set as cp1252. (Bug #11216)

  • If a thread (connection) has tables locked, the query cache is switched off for that thread. This prevents invalid results where the locking thread inserts values between a second thread connecting and selecting from the table. (Bug #12385)

  • Added an optimization that avoids key access with NULL keys for the ref method when used in outer joins. (Bug #12144)

  • Added new query cache test for the embedded server to the test suite, there are now specific tests for the embedded and nonembedded servers. (Bug #9508)

Bugs Fixed

  • MySQL Cluster: NDB ignored the Hostname option in the [ndbd default] section of the cluster configuration file. (Bug #12028)

  • MySQL Cluster: ndb_mgmd leaked file descriptors. (Bug #11898)

  • MySQL Cluster: The temporary tables created by an ALTER TABLE on an NDB table were visible to all SQL nodes in the cluster. (Bug #12055)

  • MySQL Cluster: The output of perror --help did not display any information about the --ndb option. (Bug #11999)

  • MySQL Cluster: Attempting to create or drop tables during a backup would cause the cluster to shut down. (Bug #11942)

  • Replication: Slave I/O threads were considered to be in the running state when launched (rather than after successfully connecting to the master server), resulting in incorrect SHOW SLAVE STATUS output. (Bug #10780)

  • SELECT @@local... returned @@session... in the column header. (Bug #10724)

  • The value of max_connections_per_hour was capped by the unrelated max_user_connections setting. (Bug #9947)

  • Performing DATE(LEFT(column,8)) on a DATE column produces incorrect results. (Bug #12266)

  • Renamed the rest() macro in my_list.h to list_rest() to avoid name clashes with user code. (Bug #12327)

  • For prepared statements, the SQL parser did not disallow ? parameter markers immediately adjacent to other tokens, which could result in malformed statements in the binary log. (For example, SELECT * FROM t WHERE? = 1 could become SELECT * FROM t WHERE0 = 1.) (Bug #11299)

  • Some subqueries of the form SELECT ... WHERE ROW(...) IN (subquery) were being handled incorrectly. (Bug #11867)

  • References to system variables in an SQL statement prepared with PREPARE were evaluated during EXECUTE to their values at prepare time, not to their values at execution time. (Bug #9359)

  • When two threads competed for the same table, a deadlock could occur if one thread also had a lock on another table through LOCK TABLES and the thread was attempting to remove the table in some manner while the other thread tried to place locks on both tables. (Bug #10600)

  • A UNION query with FULLTEXT could cause server crash. (Bug #11869)

  • ISO-8601 formatted dates were not being parsed correctly. (Bug #7308)

  • Character data truncated when GBK characters 0xA3A0 and 0xA1 are present. (Bug #11987)

  • Two threads could potentially initialize different characters sets and overwrite each other. (Bug #12109)

  • Comparisons like SELECT "A\\" LIKE "A\\"; fail when using SET NAMES utf8;. (Bug #11754)

  • Attempting to repair a table having a full-text index on a column containing words whose length exceeded 21 characters and where myisam_repair_threads was greater than 1 would crash the server. (Bug #11684)

  • InnoDB: Do not flush after each write, not even before setting up the doublewrite buffer. Flushing can be extremely slow on some systems. (Bug #12125)

  • SHOW BINARY LOGS displayed a file size of 0 for all log files but the current one if the files were not located in the data directory. (Bug #12004)

  • Mishandling of comparison for rows containing NULL values against rows produced by an IN subquery could cause a server crash. (Bug #12392)

  • Concatenating USER() or DATABASE() with a column produced invalid results. (Bug #12351)

  • Creation of the mysql group account failed during the RPM installation. (Bug #12348)

  • myisam.test failed when server compiled using --without-geometry option. (Bug #11083)

  • Pathame values for options such as --basedir or --datadir didn't work on Japanese Windows machines for directory names containing multi-byte characters having a second byte of 0x5C (\). (Bug #5439)

  • myisampack failed to delete .TMD temporary files when run with the -T option. (Bug #12235)

  • INSERT ... SELECT ... ON DUPLICATE KEY UPDATE could fail with an erroneous Column 'col_name' specified twice error. (Bug #10109)

  • Multiplying ABS() output by a negative number would return incorrect results. (Bug #11402)

  • big5 strings were not being stored in FULLTEXT index. (Bug #12075)

  • FLUSH TABLES WITH READ LOCK combined with LOCK TABLE .. WRITE caused deadlock. (Bug #9459)

  • GROUP_CONCAT() sometimes returned a result with a different collation from that of its arguments. (Bug #10201)

  • Incorrect error message displayed if user attempted to create a table in a nonexisting database using CREATE database_name.table_name syntax. (Bug #10407)

  • The LPAD() and RPAD() functions returned the wrong length to mysql_fetch_fields(). (Bug #11311)

  • The mysql_info() C API function could return incorrect data when executed as part of a multi-statement that included a mix of statements that do and do not return information. (Bug #11688)

  • Queries with subqueries that contain outer joins could return wrong results. (Bug #11479)

  • Corrected a problem with the optimizer incorrectly adding NOT NULL constraints, producing in incorrect results for complex queries. (Bug #11482)

  • Creating a table with a SET or ENUM column with the DEFAULT 0 clause caused a server crash if the table's character set was utf8. (Bug #11819)

  • In SQL prepared statements, comparisons could fail for values not equally space-padded. For example, SELECT 'a' = 'a '; returns 1, but PREPARE s FROM 'SELECT ?=?'; SET @a = 'a', @b = 'a '; PREPARE s FROM 'SELECT ?=?'; EXECUTE s USING @a, @b; incorrectly returned 0. (Bug #9379)

  • Updated dependency list for RPM builds to include missing dependencies such as useradd and groupadd. (Bug #12233)

  • mysql_fetch_fields() returned incorrect length information for MEDIUM and LONG TEXT and BLOB columns. (Bug #9735)

  • Corrected an optimizer problem with NOT NULL constraints within a subquery in an UPDATE statement that resulted in a server crash. (Bug #11868)

  • For DMG installs on Mac OS X, the preinstallation and postinstallation scripts were being run only for new installations and not for upgrade installations, resulting in an incomplete installation process. (Bug #11380)

  • mysql_next_result() returns incorrect value if final query in a batch fails. (Bug #12001)

  • Prepared statement parameters could cause errors in the binary log if the character set was cp932. (Bug #11338)

  • LIKE pattern matching using prefix index didn't return correct result. (Bug #11650)

  • Multiple-table UPDATE queries using CONVERT_TZ() would fail with an error. (Bug #9979)

  • GROUP_CONCAT ignored the DISTINCT modifier when used in a query joining multiple tables where one of the tables had a single row. (Bug #12095)

  • The C API function mysql_stmt_reset() did not clear error information. (Bug #11183)

  • User variables were not automatically cast for comparisons, causing queries to fail if the column and connection character sets differed. Now when mixing strings with different character sets but the same coercibility, permit conversion if one character set is a superset of the other. (Bug #10892)

  • Server-side prepared statements failed for columns with a character set of ucs2. (Bug #9442)