Released on 26 Nov 2010
MySQL 5.1.54 Changelog
  • Functionality Added or Changed

  • Bugs Fixed

Functionality Added or Changed

  • Support for the IBMDB2I storage engine has been removed. (Bug #58079)

  • The pstack library was nonfunctional and has been removed, along with the --with-pstack option for configure. The --enable-pstack option for mysqld is deprecated and will be removed in MySQL 5.5. (Bug #57210)

Bugs Fixed

  • Security Fix: A security bug was fixed. (Bug #58005)

  • Performance; InnoDB: Improved concurrency when several ANALYZE TABLE or SHOW TABLE STATUS statements are run simultaneously for InnoDB tables. (Bug #53046)

  • InnoDB: Dropping an InnoDB index used by a foreign key constraint, while foreign_key_checks was set to 0, could cause the server to crash with an assertion. This operation now does not cause a crash. The foreign key constraint can no longer be enforced once the associated index is removed, so do not rely on it for referential integrity in this case. (Bug #11762483, Bug #55084)

  • InnoDB: For an InnoDB table created with ROW_FORMAT=COMPRESSED or ROW_FORMAT=DYNAMIC, a query using the READ UNCOMMITTED isolation level could cause the server to stop with an assertion error, if BLOB or other large columns that use off-page storage were being inserted at the same time. (Bug #57799)

  • InnoDB: If the MySQL Server crashed immediately after creating an InnoDB table, the server could quit with a signal 11 during the subsequent restart. The issue could occur if the server halted after InnoDB created the primary index for the table, but before the index definition was recorded in the MySQL metadata. (Bug #57616)

    References: This bug is a regression of Bug #54582.

  • InnoDB: An existing InnoDB table could be switched to ROW_FORMAT=COMPRESSED implicitly by a KEY_BLOCK_SIZE clause in an ALTER TABLE statement. Now, the row format is only switched to compressed if there is an explicit ROW_FORMAT=COMPRESSED clause. on the ALTER TABLE statement.

    Any valid, nondefault ROW_FORMAT parameter takes precedence over KEY_BLOCK_SIZE when both are specified. KEY_BLOCK_SIZE only enables ROW_FORMAT=COMPRESSED if ROW_FORMAT is not specified on either the CREATE TABLE or ALTER TABLE statement, or is specified as DEFAULT. In case of a conflict between KEY_BLOCK_SIZE and ROW_FORMAT clauses, the KEY_BLOCK_SIZE is ignored if innodb_strict_mode is off, and the statement causes an error if innodb_strict_mode is on. (Bug #56632)

  • InnoDB: The clause KEY_BLOCK_SIZE=0 is now permitted on CREATE TABLE and ALTER TABLE statements for InnoDB tables, regardless of the setting of innodb_strict_mode. The zero value has the effect of resetting the KEY_BLOCK_SIZE table parameter to its default value, depending on the ROW_FORMAT parameter, as if it had not been specified. That default is 8 if ROW_FORMAT=COMPRESSED. Otherwise, KEY_BLOCK_SIZE is not used or stored with the table parameters.

    As a consequence of this fix, ROW_FORMAT=FIXED is not permitted when innodb_strict_mode is enabled. (Bug #56628)

  • InnoDB: InnoDB startup messages now include the start and end times for buffer pool initialization, and the total buffer pool size. (Bug #48026)

  • Partitioning: In debug builds, an INSERT ... ON DUPLICATE KEY UPDATE col_name = 0 statement on an AUTO_INCREMENT column caused the server to crash. (Bug #57890)

  • Partitioning: An ALTER TABLE statement acting on table partitions that failed while the affected table was locked could cause the server to crash. (Bug #56172)

  • Several compilation problems were fixed. (Bug #57992, Bug #57993, Bug #57994, Bug #57995, Bug #57996, Bug #57997, Bug #58057)

  • Passing a string that was not null-terminated to UpdateXML() or ExtractValue() caused the server to fail with an assertion. (Bug #57279, Bug #11764447)

  • Queries executed using the Index Merge access method and a temporary file could return incorrect results. (Bug #56862)

  • Valgrind warnings about overlapping memory when double-assigning the same variable were corrected. (Bug #56138)

  • An error in a stored procedure could leave the session in a different default database. (Bug #54375)

  • Grouping by a TIME_TO_SEC() function result could cause a server crash or incorrect results. Grouping by a function returning a BLOB could cause an unexpected Duplicate entry error and incorrect result. (Bug #52160)

  • The find_files() function used by SHOW statements performed redundant and unnecessary memory allocation. (Bug #51208)

  • The Windows sample option files contained values more appropriate for Linux. (Bug #50021)

  • A failed RENAME TABLE operation could prevent a FLUSH TABLES WITH READ LOCK from completing. (Bug #47924)