版本历史 MySQL Server 5.1.50

icc Notes

  • This is the final release of MySQL 5.1 for which Generic Linux MySQL binary packages built with the icc compiler on x86 and x86_64 will be offered. These were previously produced as an alternative to our main packages built using gcc, as they provided noticeable performance benefits. In recent times the performance differences have diminished and build and runtime problems have surfaced, thus it is no longer viable to continue producing them.

We continue to use the icc compiler to produce our distribution-specific RPM packages on ia64.

InnoDB Notes

  • InnoDB Plugin has been upgraded to version 1.0.11. This version is considered of General Availability (GA) quality.

In this release, the InnoDB Plugin is included in source and binary distributions, except RHEL3, RHEL4, SuSE 9 (x86, x86_64, ia64), generic Linux RPM packages, and any builds produced with the icc compiler. It also does not work for FreeBSD 6 and HP-UX or for Linux on generic ia64.
Bugs fixed:

  • Important Change: Replication: The LOAD DATA INFILE statement is now considered unsafe for statement-based replication. When using statement-based logging mode, the statement now produces a warning; when using mixed-format logging, the statement is made using the row-based format. (Bug #34283)
  • InnoDB Storage Engine: The server could crash on shutdown, if started with --innodb-use-system-malloc=0. (Bug #55581, Bug #11762927)
  • InnoDB Storage Engine: The database server could crash when renaming a table that had active transactions. (This issue only affected the database server when built for debugging.) (Bug #54453)
  • InnoDB Storage Engine: The server could crash during the recovery phase of startup, if it previously crashed while inserting BLOB or other large columns that use off-page storage into an InnoDB table created with ROW_FORMAT=REDUNDANT or ROW_FORMAT=COMPACT. (Bug #54408)
  • InnoDB Storage Engine: 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 #54358)
  • Partitioning: UPDATE and INSERT statements affecting partitioned tables performed poorly when using row-based replication. (Bug #52517)
  • Partitioning: INSERT ON DUPLICATE KEY UPDATE statements performed poorly on tables having many partitions. This was because the handler function for reading a row from a specific index was not optimized in the partitioning handler. (Bug #52455)
  • Replication: When using the row-based logging format, a failed CREATE TABLE ... SELECT statement was written to the binary log, causing replication to break if the failed statement was later re-run on the master. In such cases, a DROP TABLE ... IF EXIST statement is now logged in the event that a CREATE TABLE ... SELECT fails. (Bug #55625)
  • GROUP BY operations used max_sort_length inconsistently. (Bug #55188)
  • Building MySQL on Solaris 8 x86 failed when using Sun Studio due to gcc inline assembly code. (Bug #55061)
  • In debug builds, an assertion could be raised when the server tried to send an OK packet to the client after having failed to detect errors during processing of the WHERE condition of an UPDATE statement. (Bug #54734)
  • A join with an aggregated function and impossible WHERE condition returned an extra row. (Bug #54416)
  • A client could supply data in chunks to a prepared statement parameter other than of type TEXT or BLOB using the mysql_stmt_send_long_data() C API function (or COM_STMT_SEND_LONG_DATA command). This led to a crash because other data types are not valid for long data. (Bug #54041)
  • mysql_secure_installation did not properly identify local accounts and could incorrectly remove nonlocal root accounts. (Bug #54004)
  • Portability problems in SHOW STATUS could lead to incorrect results on some platforms. (Bug #53493)
  • Builds of MySQL generated a large number of warnings. (Bug #53445)
  • With lower_case_table_names set to a nonzero value, searches for table or database names in INFORMATION_SCHEMA tables could produce incorrect results. (Bug #53095)
  • The ABI check for MySQL failed to compile with gcc 4.5. (Bug #52514)
  • mysql_secure_installation sometimes failed to locate the mysql client. (Bug #52274)
  • Reading a ucs2 data file with LOAD DATA INFILE was subject to three problems. 1) Incorrect parsing of the file as ucs2 data, resulting in incorrect length of the parsed string. This is fixed by truncating the invalid trailing bytes (incomplete multibyte characters) when reading from the file. 2) Reads from a proper ucs2 file did not recognize newline characters. This is fixed by first checking whether a byte is a newline (or any other special character) before reading it as a part of a multibyte character. 3) When using user variables to hold column data, the character set of the user variable was set incorrectly to the database charset. This is fixed by setting it to the character set specified in the LOAD DATA INFILE statement, if any. (Bug #51876)
  • Searches in INFORMATION_SCHEMA tables for rows matching a nonexistent database produced an error instead of an empty query result. (Bug #49542)
  • On FreeBSD, memory mapping for MERGE tables could fail if underlying tables were empty. (Bug #47139)
  • The my_like_range_xxx() functions returned badly formed maximum strings for Asian character sets, which caused problems for storage engines. (Bug #45012)
  • A debugging assertion could be raised after a write failure to a closed socket. (Bug #42496)
  • An assertion failure occurred within yaSSL for very long keys. (Bug #29784)

See also Bug #53463.