Licence: GPL
Version 5.5.21 | Release Date: 2012-02-17 | Download

D.1.2. Changes in MySQL 5.5.21 (17 February 2012)
Functionality Added or Changed

A new CMake option, MYSQL_PROJECT_NAME, can be set on Windows or Mac OS X to be used in the project name. (Bug #13551687)

Bugs Fixed

Performance: InnoDB Storage Engine: Memory allocation for InnoDB tables was reorganized to reduce the memory overhead for large numbers of tables or partitions, avoiding situations where the “resident set size” could grow regardless of FLUSH TABLES statements. The problem was most evident for tables with large row size. Some of the memory that was formerly allocated for every open table is now allocated only when the table is modified for the first time. (Bug #11764622, Bug #57480)

Incompatible Change: An earlier change (in MySQL 5.1.59 and 5.5.16) was found to modify date-handling behavior in General Availability-status series (MySQL 5.1 and 5.5). This change has been reverted.

The change was that several functions became more strict when passed a DATE function value as their argument, thus they rejected incomplete dates with a day part of zero. These functions were affected: CONVERT_TZ(), DATE_ADD(), DATE_SUB(), DAYOFYEAR, LAST_DAY(), TIMESTAMPDIFF, TO_DAYS(), TO_SECONDS(), WEEK, WEEKDAY, WEEKOFYEAR, YEARWEEK. The previous behavior has been restored. (Bug #13458237)

InnoDB Storage Engine: A Valgrind error was fixed in the function os_aio_init(). (Bug #13612811)

InnoDB Storage Engine: The server could crash when creating an InnoDB temporary table under Linux, if the $TMPDIR setting points to a tmpfs filesystem and innodb_use_native_aio is enabled, as it is by default in MySQL 5.5.4 and higher. The entry in the error log looked like:

101123 2:10:59 InnoDB: Operating system error number 22 in a file operation.
InnoDB: Error number 22 means 'Invalid argument'.
The crash occurred because asynchronous I/O is not supported on tmpfs in some Linux kernel versions. The workaround was to turn off the innodb_use_native_aio setting or use a different temporary directory. The fix causes InnoDB to turn off the innodb_use_native_aio setting automatically if it detects that the temporary file directory does not support asynchronous I/O. (Bug #13593888, Bug #11765450, Bug #58421)

InnoDB Storage Engine: References to C preprocessor symbols and macros HAVE_purify, UNIV_INIT_MEM_TO_ZERO, and UNIV_SET_MEM_TO_ZERO were removed from the InnoDB source code. They were only used in debug builds instrumented for Valgrind. They are replaced by calls to the UNIV_MEM_INVALID() macro. (Bug #13418934)

InnoDB Storage Engine: The MySQL server could halt with an assertion error:

InnoDB: Failing assertion: page_get_n_recs(page) > 1
Subsequent restarts could fail with the same error. The error occurred during a purge operation involving the InnoDB change buffer. The workaround was to set the configuration option innodb_change_buffering=inserts. (Bug #13413535, Bug #61104)

InnoDB Storage Engine: With 1024 concurrent InnoDB transactions running concurrently and the innodb_file_per_table setting enabled, a CREATE TABLE operation for an InnoDB table could fail. The .ibd file from the failed CREATE TABLE was left behind, preventing the table from being created later, after the load had dropped.

The fix adds error handling to delete the erroneous .ibd file. This error was less likely to occur in MySQL 5.5 and 5.6, because raising the number of InnoDB undo slots increased the number of simultaneous transactions needed to trigger the bug, from 1K to 128K. (Bug #12400341)

Replication: Executing mysqlbinlog with the --start-position=N option, where N was equal either to 0 or to a value greater than the length of the dump file, caused it to crash.

This issue was introduced in MySQL 5.5.18 by the fix for Bug #32228 and Bug #11747416. (Bug #13593869, Bug #64035)

Replication: On Windows replication slave hosts, STOP SLAVE took an excessive length of time to complete when the master was down. (Bug #11752315, Bug #43460)

The shared version of libmysqlclient did not export these functions for linking by client programs: get_tty_password(), handle_options(), my_print_help(). (Bug #13604121)

A query that used an index on a CHAR column referenced in a BETWEEN clause could return invalid results. (Bug #13463488, Bug #63437)

Expressions that compared a BIGINT column with any non-integer constant were performed using integers rather than decimal or float values, with the result that the constant could be truncated. This could lead to any such comparison that used <, >, <=, >=, =, !=/<>, IN, or BETWEEN yielding false positive or negative results. (Bug #13463415, Bug #11758543, Bug #63502, Bug #50756)

When the optimizer performed conversion of DECIMAL values while evaluating range conditions, it could produce incorrect results. (Bug #13453382)

When running mysqldump with both the --single-transaction and --flush-logs options, the flushing of the log performed an implicit COMMIT (see Section 12.3.3, “Statements That Cause an Implicit Commit”), causing more than one transaction to be used and thus breaking consistency. (Bug #12809202, Bug #61854)

When used with the --xml option, mysqldump --routines failed to dump any stored routines, triggers, or events. (Bug #11760384, Bug #52792)

It was possible in the event of successive failures for mysqld_safe to restart quickly enough to consume excessive amounts of CPU. Now, on systems that support the sleep and date system utilities, mysqld_safe checks to see whether it has restarted more than 5 times in the current second, and if so, waits 1 second before attempting another restart. (Bug #11761530, Bug #54035)

It was possible on replication slaves where FEDERATED tables were in use to get timeouts on long-running operations, such as Error 1160 Got an error writing communication packets. The FEDERATED tables did not need to be replicated for the issue to occur. (Bug #11758931, Bug #51196)

References: See also Bug #12896628, Bug #61790.

If an attempt to initiate a statement failed, the issue could not be reported to the client because it was not prepared to receive any error messages prior to the execution of any statement. Since the user could not execute any queries, they were simply disconnected without providing a clear error.

After the fix for this issue, the client is prepared for an error as soon as it attempts to initiate a statement, so that the error can be reported prior to disconnecting the user. (Bug #11755281, Bug #47032)

On Windows, the server incorrectly constructed the full path name of the plugin binary for INSTALL PLUGIN and CREATE FUNCTION ... SONAME. (Bug #45549, Bug #11754014)

Using myisamchk with the sort recover method to repair a table having fixed-width row format could cause the row pointer size to be reduced, effectively resulting in a smaller maximum data file size. (Bug #48848, Bug #11756869)

The stored routine cache was subject to a small memory leak that over time or with many routines being used could result in out-of-memory errors. (Bug #44585, Bug #11753187)

Version 5.5.19 | Release Date: 2011-11-24 | Download

MySQL Community Server
Mac OS X ver. 10.6 (x86, 64-bit), DMG Archive

Version 5.1.52 | Release Date: 2010-10-11 | Download

InnoDB Storage Engine: Security Fix: Issuing TRUNCATE TABLE and examining the same table's information in the INFORMATION_SCHEMA database at the same time could cause a crash in the debug version of the server. (Bug#54678)

Security Fix: The server crashed for assignment of values of types other than Geometry to items of type GeometryCollection (MultiPoint, MultiCurve, MultiSurface). Now the server checks the field type and fails with bad geometry value if it detects incorrect parameters. (Bug#55531)

Security Fix: EXPLAIN EXTENDED caused a server crash with some prepared statements. (Bug#54494)

Security Fix: In prepared-statement mode, EXPLAIN for a SELECT from a derived table caused a server crash. (Bug#54488)

InnoDB Storage Engine: The server could crash with a high volume of concurrent LOCK TABLES and UNLOCK TABLES statements. (Bug#57345)

InnoDB Storage Engine: InnoDB incorrectly reported an error when a cascading foreign key constraint deleted more than 250 rows. (Bug#57255)

InnoDB Storage Engine: A SELECT ... FOR UPDATE statement affecting a range of rows in an InnoDB table could cause a crash in the debug version of the server. (Bug#56716)

InnoDB Storage Engine: Improved the performance of UPDATE operations on InnoDB tables, when only non-indexed columns are changed. (Bug#56340)

InnoDB Storage Engine: The server could crash on shutdown, if started with --innodb-use-system-malloc=0. (Bug#55627)

InnoDB Storage Engine: For an InnoDB table with an auto-increment column, the server could crash if the first statement that references the table after a server restart is a SHOW CREATE TABLE statement. (Bug#55277)

InnoDB Storage Engine: Setting the PACK_KEYS=0 table option for an InnoDB table prevented new indexes from being added to the table. (Bug#54606)

InnoDB Storage Engine: Changed the locking mechanism for the InnoDB data dictionary during ROLLBACK operations, to improve concurrency for REPLACE statements. (Bug#54538)

InnoDB Storage Engine: InnoDB transactions could be incorrectly committed during recovery, rather than rolled back, if the server crashed and was restarted after performing ALTER TABLE...ADD PRIMARY KEY on an InnoDB table, or some other operation that involves copying the entire table. (Bug#53756)

Partitioning: Replication: Attempting to execute LOAD DATA on a partitioned MyISAM table while using statement-based logging mode caused the master to hang or crash. (Bug#51851)

Partitioning: Multi-table UPDATE statements involving a partitioned MyISAM table could cause this table to become corrupted. Not all tables affected by the UPDATE needed to be partitioned for this issue to be observed. (Bug#55458)

Partitioning: EXPLAIN PARTITIONS returned bad estimates for range queries on partitioned MyISAM tables. In addition, values in the rows column of EXPLAIN PARTITIONS output did not take partition pruning into account. (Bug#53806, Bug#46754)

Replication: Backticks used to enclose idenitfiers for savepoints were not preserved in the binary log, which could lead to replication failure when the identifier, stripped of backticks, could be misinterpreted, causing a syntax or other error.

This could cause problems with MySQL application programs making use of generated savepoint IDs. If, for instance, java.sql.Connection.setSavepoint() is called without any parameters, Connector/J automatically generates a savepoint identifier consisting of a string of hexadecimal digits 0-F encased in backtick (`) characters. If such an ID took the form `NeN` (where N represents a string of the decimal digits 0-9, and e is a literal uppercase or lowercase “E” character). Removing the backticks when writing the identifier into the binary log left behind a substring which the slave MySQL server tried to interpret as a floating point number, rather than as an identifier. The resulting syntax error caused loss of replication. (Bug#55961)

See also Bug#55962.

When mysqld was started as a service on Windows and mysqld was writing the error log to a file (for example, if it was started with the --log-error option), the server reassign the file descriptors of the stdout and stderr streams to the file descriptor of the log file. On Windows, if stdout or stderr is not associated with an output stream, the file descriptor returns a negative value. Previously, this would cause the file descriptor reassignment to fail and the server to abort. To avoid this problem on Windows, stdout and stderr streams are now first assigned to the log file stream by opening this file. This causes stdout and stderr file descriptors to be nonzero and the server can successfully reassign them to the file descriptor of the log file. (Bug#56821)

Memory leaks detected by Valgrind were corrected. (Bug#56709)

If a query specified a DATE or DATETIME value in a format different from 'YYYY-MM-DD HH:MM:SS', a greater-than-or-equal (>=) condition matched only greater-than values in an indexed TIMESTAMP column. (Bug#55779)

If there was an active SELECT statement, an error arising during trigger execution could cause a server crash. (Bug#55421)

With an UPDATE IGNORE statement including a subquery that was evaluated using a temporary table, an error transferring the data from the temporary was ignored, causing an assertion to be raised. (Bug#54543)

Row subqueries producing no rows were not handled as UNKNOWN values in row comparison expressions. (Bug#54190)

The max_length metadata value of MEDIUMBLOB types was reported as 1 byte greater than the correct value. (Bug#53296)

In some cases, when the left part of a NOT IN subquery predicate was a row and contained NULL values, the query result was incorrect. (Bug#51070)

For some queries, the optimizer produced incorrect results using the Index Merge access method with InnoDB tables. (Bug#50402)

EXPLAIN produced an incorrect rows value for queries evaluated using an index scan and that included LIMIT, GROUP BY, and ORDER BY on a computed column. (Bug#50394)

mysql_store_result() and mysql_use_result() are not for use with prepared statements and are not intended to be called following mysql_stmt_execute(), but failed to return an error when invoked that way. (Bug#47485)

Using REPAIR TABLE table USE_FRM on a MERGE table caused the server to crash. (Bug#46339)

A malformed packet sent by the server when the query cache was in use resulted in lost-connection errors. (Bug#42503)

CREATE TABLE failed if a column referred to in an index definition and foreign key definition was in different lettercases in the two definitions. (Bug#39932)

Version 5.1.48 | Release Date: 2010-06-02 | Download


Version 5.1.42 | Release Date: 2009-12-15 | Download

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 ×86/x64

HP-UX 11.31 IA64

SLES 11 ×86/x64

InnoDB Plugin Notes:

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

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)

See also Bug#21074.

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









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)

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)

This regression was introduced by Bug#45807.

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

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)

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 Section 5.1.8, “Server SQL Modes”. (Bug#38173)

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)

See also Bug#43668.

InnoDB did not reset table AUTO_INCREMENT values to the last used values after a server restart. (Bug#49032)

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)

See also Bug#41049.

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

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

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)

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)

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)

If the InnoDB tablespace was configured with too small a value, the server could crash and corrupt the tablespace. (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)

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 would fail if the root password contained multiple spaces, \, # 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 coumn in an InnoDB table caused the table auto-increment value to be updated to 2147483647. (Bug#47720)

If a session held a global read lock acquired with FLUSH TABLES WITH READ LOCK, a lock for one table acquired 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)

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)

After a binary upgrade to MySQL 5.1 from a MySQL 5.0 installation that contains ARCHIVE tables, accessing those tables caused the server to crash, even if you had run mysql_upgrade or CHECK TABLE ... FOR UPGRADE.

To work around this problem, use mysqldump to dump all 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)

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)

See also Bug#48370.

For YEAR 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)

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)

When running mysql_secure_installation on Windows, the command would fail to load a required module, Term::ReadKey, 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)

Version 5.1.41 | Release Date: 2009-11-05 | Download

Version 5.1.38 | Release Date: 2009-09-01 | Download

- Includes InnoDB plugin
- Fixes to partioning and replication
- Other fixes

Version 5.1.32 | Release Date: 2009-02-14 | Download

Version 5.1.24 | Release Date: 2008-07-26 | Download

Beta release candidate.

Version 5.1.24 | Release Date: 2008-05-01 | Download

Beta release candidate.

Version 5.0 | Release Date: 2006-07-11 | Download
No changes specified