Released on 15 Dec 2009
MySQL 5.1.42 Changelog
  • Release availability

  • InnoDB Plugin Notes

  • Bugs Fixed

Release availability

  • MySQL Server 5.1 is available on the following new platforms starting with the 5.1.42 release:

    • Mac OS X 10.6 x86/x64

    • HP-UX 11.31 IA64

    • SLES 11 x86/x64

InnoDB Plugin Notes

  • InnoDB Plugin has been upgraded to version 1.0.6. This version is considered of Release Candidate (RC) quality. InnoDB Storage Engine Change History, may contain information in addition to those changes reported here.

    In this release, the InnoDB Plugin is included in source and binary distributions, except RHEL3, RHEL4, SuSE 9 (x86, x86_64, ia64), and generic Linux RPM packages. It also does not work for FreeBSD 6 and HP-UX or for Linux on S/390, PowerPC, and generic ia64.

Bugs Fixed

  • Performance: When the query cache is fragmented, the size of the free block lists in the memory bins grows, which causes query cache invalidation to become slow. There is now a 50ms timeout for a SELECT statement waiting for the query cache lock. If the timeout expires, the statement executes without using the query cache. (Bug #39253)

    References: See also Bug #21074.

  • Important Change; Replication: The following functions have been marked unsafe for statement-based replication:

    • GET_LOCK()

    • IS_FREE_LOCK()

    • IS_USED_LOCK()



    • SLEEP()

    • SYSDATE()

    • VERSION()

    None of the functions just listed are guaranteed to replicate correctly when using the statement-based format because they can produce different results on the master and the slave. The use of any of these functions while binlog_format is set to STATEMENT is logged with the warning, Statement is not safe to log in statement format. When binlog_format is set to MIXED, the binary logging format is automatically switched to the row-based format whenever one of these functions is used. (Bug #47995)

  • Important Change: After a binary upgrade to MySQL 5.1 from a MySQL 5.0 installation that contains ARCHIVE tables:

    • Before MySQL 5.1.42, accessing those tables will cause the server to crash, even if you have run mysql_upgrade or CHECK TABLE ... FOR UPGRADE.

    • As of MySQL 5.1.42, the server will not open 5.0 ARCHIVE tables at all.

    In either case, the solution is to use mysqldump to dump all 5.0 ARCHIVE tables before upgrading, and reload them into MySQL 5.1 after upgrading. The same problem occurs for binary downgrades from MySQL 5.1 to 5.0. (Bug #47012)

  • Partitioning: In some cases, it was not possible to add a new column to a table that had subpartitions. (Bug #48276)

  • Partitioning: SELECT COUNT(*) from a partitioned table failed when using the ONLY_FULL_GROUP_BY SQL mode. (Bug #46923)

    References: This bug was introduced by Bug #45807.

  • Partitioning: SUBPARTITION BY KEY failed with DEFAULT CHARSET=utf8. (Bug #45904)

  • Replication: With row-based binary logging, the server crashed for statements of the form CREATE TABLE IF NOT EXISTS existing_view LIKE temporary_table. This occurred because the server handled the existing view as a table when logging the statement. (Bug #48506)

  • Replication: When using row-based logging, TRUNCATE TABLE was written to the binary log even if the affected table was temporary, causing replication to fail. (Bug #48350)

  • Replication: Replicating TEXT or VARCHAR columns declared as NULL on the master but NOT NULL on the slave caused the slave to crash. (Bug #43789)

    References: See also Bug #38850, Bug #43783, Bug #43785, Bug #47741, Bug #48091.

  • Replication: When using row-based format, replication failed with the error Could not execute Write_rows event on table ...; Field '...' doesn't have a default value when an INSERT was made on the master without specifying a value for a column having no default, even if strict server SQL mode was not in use and the statement would otherwise have succeeded on the master. Now the SQL mode is checked, and the statement is replicated unless strict mode is in effect. For more information, see Server SQL Modes. (Bug #38173)

    References: See also Bug #38262, Bug #43992.

  • The result of comparison between nullable BIGINT and INT columns was inconsistent. (Bug #49517)

  • Incorrect cache initialization prevented storage of converted constant values and could produce incorrect comparison results. (Bug #49489)

  • Comparisons involving YEAR values could produce incorrect results. (Bug #49480)

    References: See also Bug #43668.

  • If a query involving a table was terminated with KILL, a subsequent SHOW CREATE TABLE for that table caused a server crash. (Bug #48985)

  • Privileges for stored routines were ignored for mixed-case routine names. (Bug #48872)

    References: See also Bug #41049.

  • Building MySQL on Fedora Core 12 64-bit failed, due to errors in comp_err. (Bug #48864)

  • Concurrent ALTER TABLE operations on an InnoDB table could raise an assertion. (Bug #48782)

  • Certain INTERVAL expressions could cause a crash on 64-bit systems. (Bug #48739)

  • During query execution, ranges could be merged incorrectly for OR operations and return an incorrect result. (Bug #48665)

  • The InnoDB Table Monitor reported the FLOAT and DOUBLE data types incorrectly. (Bug #48526)

  • DISTINCT was ignored for queries with GROUP BY WITH ROLLUP and only const tables. (Bug #48475)

  • Loose index scan was inappropriately chosen for some WHERE conditions. (Bug #48472)

  • The server could crash and corrupt the tablespace if the InnoDB tablespace was configured with too small a value, or if innodb_file_per_table was enabled and many CREATE TEMPORARY TABLE statements were executed and the temporary file directory filled up. (Bug #48469)

  • Parts of the range optimizer could be initialized incorrectly, resulting in Valgrind errors. (Bug #48459)

  • A bad typecast could cause query execution to allocate large amounts of memory. (Bug #48458)

  • GRANT and REVOKE crashed if a user name was specified as CURRENT_USER(). (Bug #48319)

  • On Windows, InnoDB could not be built as a statically linked library. (Bug #48317)

  • mysql_secure_installation did not work on Solaris. (Bug #48086)

  • When running mysql_secure_installation, the command failed if the root password contained multiple space, '\', '#', or quote characters. (Bug #48031)

  • MATCH IN BOOLEAN MODE searches could return too many results inside a subquery. (Bug #47930)

  • Using REPLACE to update a previously inserted negative value in an AUTO_INCREMENT column of an InnoDB table caused the table auto-increment value to be updated to 2147483647. (Bug #47720)

  • If a session acquired a global read lock with FLUSH TABLES WITH READ LOCK, acquired a lock for one table with LOCK TABLES, and issued an INSERT DELAYED statement for another table, deadlock could occur. (Bug #47682)

  • The mysql client status command displayed an incorrect value for the server character set. (Bug #47671)

  • Connecting to a 4.1.x server from a 5.1.x or higher mysql client resulted in a memory-free error when disconnecting. (Bug #47655)

  • Assignment of a system variable sharing the same base name as a declared stored program variable in the same context could lead to a crash. (Bug #47627)

  • mysqladmin debug could crash on 64-bit systems. (Bug #47382)

  • The innodb_file_format_check system variable could not be set at runtime to DEFAULT or to the value of a user-defined variable. (Bug #47167)

  • The Mac OS X MySQL Preference Pane component was not built for 64-bit, which would trigger the System Preferences application to restart into 32-bit mode. (Bug #46935)

  • The IGNORE clause on a DELETE statement masked an SQL statement error that occurred during trigger processing. (Bug #46425)

  • On 64-bit systems, --skip-innodb did not skip InnoDB startup. (Bug #46043)

  • Valgrind errors for InnoDB Plugin were corrected. (Bug #45992, Bug #46656)

  • The return value was not checked for some my_hash_insert() calls. (Bug #45613)

  • Truncation of DECIMAL values could lead to assertion failures; for example, when deducing the type of a table column from a literal DECIMAL value. (Bug #45261)

    References: See also Bug #48370.

  • For YEAR(2) values, MIN(), MAX(), and comparisons could yield incorrect results. (Bug #43668)

  • The server could crash when attempting to access a non-conformant mysql.proc system table. For example, the server could crash when invoking stored procedure-related statements after an upgrade from MySQL 5.0 to 5.1 without running mysql_upgrade. (Bug #41726)

  • Multiple-statement execution could fail. (Bug #40877)

  • Use of InnoDB monitoring (SHOW ENGINE INNODB STATUS or one of the InnoDB Monitor tables) could cause a server crash due to invalid access to a shared variable in a concurrent environment. This is a further fix for a regression introduced in MySQL 5.1.38 to the original fix in MySQL 5.1.31. (Bug #38883)

  • On Windows, the mysql_secure_installation command failed to load the Term::ReadKey module, which was required for correct operation. (Bug #35106)

  • If the --log-bin server option was set to a directory name with a trailing component separator character, the basename of the binary log files was empty, so that the created files were named .000001 and .index. The same thing occurred with the --log-bin-index, --relay-log, and --relay-log-index options. Now the server reports and error and exits. (Bug #34739)

  • If a comparison involved a constant value that required type conversion, the converted value might not be cached, resulting in repeated conversion and poorer performance. (Bug #34384)

  • Using the SHOW ENGINE INNODB STATUS statement when using partitions in InnoDB tables caused Invalid (old?) table or database name errors to be logged. (Bug #32430)

  • On some Windows systems, InnoDB could report Operating system error number 995 in a file operation due to transient driver or hardware problems. InnoDB now retries the operation and adds Retry attempt is made to the error message. (Bug #3139)