Released on 24 Oct 2006
MySQL 5.1.12 Changelog

This is a new Beta development release, fixing recently discovered bugs.

This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Enterprise (a commercial MySQL offering). For more details, please see (

  • Functionality Added or Changed

  • Bugs Fixed

Functionality Added or Changed

  • Incompatible Change; MySQL Cluster: MySQL Cluster node and system restarts formerly required that all fragments use the same local checkpoint (LCP); beginning with this version, it is now possible for different fragments to use different LCPs during restarts. This means that data node file systems must be rebuilt as part of any upgrade to this version by restarting all data nodes with the --initial option.

    See Upgrade and downgrade compatibility: MySQL 5.1, and related sections of the Manual before upgrading a MySQL Cluster to version 5.1.12 or later. (Bug #21478, Bug #21271)

  • Incompatible Change: In the INFORMATION_SCHEMA.EVENTS table, the EVENT_DEFINITION column now contains the SQL executed by a scheduled event.

    The EVENT_BODY column now contains the language used for the statement or statements shown in EVENT_DEFINITION. In MySQL 5.1, the value shown in EVENT_BODY is always SQL.

    These changes were made to bring this table into line with the INFORMATION_SCHEMA.ROUTINES table, and that table's ROUTINE_BODY and ROUTINE_DEFINITION columns. (Bug #16992)

  • Incompatible Change: The plugin interface has changed: The st_mysql_plugin structure has a new license member to indicate the license type. (The permissible values are defined in mysql/plugin.h.) This change is not backward compatible, so the API version (MYSQL_PLUGIN_INTERFACE_VERSION) has changed. For additional information, see Writing Plugins.

  • Incompatible Change: Support for the BerkeleyDB (BDB) engine has been dropped from this release. Any existing tables that are in BDB format will not be readable from within MySQL from 5.1.12 or newer. You should convert your tables to another storage engine before upgrading to 5.1.12.

    Because of this change, the SHOW [BDB] LOGS statement has been dropped.

  • Incompatible Change: The permitted values for and behavior of the event_scheduler system variable have changed. Permitted values are now ON, OFF, and DISABLED, with OFF being the default. It is not possible to change its value to or from DISABLED while the server is running.

    For details, see Event Scheduler Overview.

  • Incompatible Change: The namespace for scheduled events has changed, such that events are no longer unique to individual users. This also means that a user with the EVENT privilege on a given database can now view, alter, or drop any events defined on that database.

    If you used scheduled events in an earlier MySQL 5.1 release, you should rename any of them having the same name and defined on the same database but belonging to different users—so that all events in a given database have unique names—before upgrading to 5.1.12 (or newer).

    For additional information, see The Event Scheduler and MySQL Privileges.

  • Incompatible Change: Storage engines can be pluggable at runtime, so the distinction between disabled and invalid storage engines no longer applies. This affects the NO_ENGINE_SUBSTITUTION SQL mode, as described in Server SQL Modes.

  • Incompatible Change: The full-text parser plugin interface has changed in two ways:

    • The MYSQL_FTPARSER_PARAM structure has a new flags member. This is zero if there are no special flags, or MYSQL_FTFLAGS_NEED_COPY, which means that mysql_add_word() must save a copy of the word (that is, it cannot use a pointer to the word because the word is in a buffer that will be overwritten.)

      This flag might be set or reset by MySQL before calling the parser plugin, by the parser plugin itself, or by the mysql_parse() function.

    • The mysql_parse() and mysql_add_word() functions now take a MYSQL_FTPARSER_PARAM as their first argument, not a MYSQL_FTPARSER_PARAM::mysql_ftparam as before.

    These changes are not backward compatible, so the API version (MYSQL_FTPARSER_INTERFACE_VERSION) has changed. For additional information, see Writing Plugins.

  • Incompatible Change: For GRANT and REVOKE, ON * previously granted and revoked privileges for the default database if there was a default database and global privileges if there was none. Now ON * requires a default database and produces an error if there is none.

  • Incompatible Change: A number of MySQL constructs are now prohibited in partitioning expressions, beginning with this release. These include the following:

    • A number of MySQL functions. For a complete list of these, see Partitioning Limitations Relating to Functions.

    • The bit operators |, &, ^, <<, >>, and ~.

    • Nested function calls.

    • Calls to stored routines, UDFs, or plugins.

    • Character-to-integer conversions involving non-8-bit character sets or any of the latin1_german2_ci, latin2_czech_cs, or cp1250_czech_cs collations.

    These restrictions were added in part as a result of Bug #18198 and related bug reports.

    For more information about these and other restrictions on partitioned tables in MySQL, see Restrictions and Limitations on Partitioning.

  • Important Change; MySQL Cluster; Partitioning: It is no longer possible to create Cluster tables using any partitioning type other than [LINEAR] KEY. Attempting to do so now raises an error.

  • Important Change; MySQL Cluster: LOAD DATA INFILE no longer causes an implicit commit for all storage engines. It now causes an implicit commit only for tables using the NDB storage engine. (Bug #11151)

  • Important Change; MySQL Cluster: The status variables Ndb_connected_host and Ndb_connected_port were renamed to Ndb_config_from_host and Ndb_config_from_port, respectively.

  • Important Change; Replication: The default value for the --binlog-format server option is now MIXED.

  • MySQL Cluster: The ndb_config utility now accepts -c as a short form of the --ndb-connectstring option. (Bug #22295)

  • MySQL Cluster: Added the --bind-address option for ndbd. This permits a data node process to be bound to a specific network interface. (Bug #22195)

  • MySQL Cluster: The Ndb_number_of_storage_nodes system variable was renamed to Ndb_number_of_data_nodes. (Bug #20848)

  • MySQL Cluster: The HELP command in the Cluster management client now provides command-specific help. For example, HELP RESTART in ndb_mgm provides detailed information about the RESTART command. (Bug #19620)

  • MySQL Cluster: A number of erroneous, misleading, or missing error messages have been corrected. (Bug #17297, Bug #19543)

  • MySQL Cluster: Backup messages are no longer printed to the cluster log.

  • MySQL Cluster: Added the --ndb-use-copying-alter-table option to mysqld to provide a fallback in case of problems with online ALTER TABLE operations on NDB tables.

  • Replication: The default binary log format (as used during replication) is now Mixed based, automatically using a combination of row-based and statement based log events as appropriate.

  • Cluster API: Two new NDB API methods aggregate() and validate() were added to the Table class. This was done to rectify the following issues:

    • Under some conditions, the data distribution could become unbalanced in a MySQL Cluster with 2 or more node groups following the creation of a new table.

    • Data was stored unevenly between partitions due to all BLOB data being placed in partition 0.

    (Bug #21690)

  • The number of InnoDB threads is no longer limited to 1,000 on Windows. (Bug #22268)

  • The STATE column of the INFORMATION_SCHEMA.PROCESSLIST table was increased from 30 to 64 characters to accommodate longer state values. (Bug #21652)

  • mysqldump now has a --flush-privileges option. It causes mysqldump to emit a FLUSH PRIVILEGES statement after dumping the mysql database. This option should be used any time the dump contains the mysql database and any other database that depends on the data in the mysql database for proper restoration. (Bug #21424)

  • mysqlslap threads now try to connect up to 10 times if the initial connect attempt fails. (Bug #21297)

  • For mysqldump, the output generated by the server when using the --xml option has changed with regard to null values. It now matches the output from mysqldump --xml. That is, a column containing a NULL value is now reported as

    <field name="column_name" xsi:nil="true" />

    whereas a column containing the string value 'NULL' is reported as

    <field name="column_name">NULL</field>

    and a column containing an empty string is reported as

    <field name="column_name"></field>

    (Bug #21263)

  • The mysqld and mysqlmanager man pages have been reclassified from volume 1 to volume 8. (Bug #21220)

  • InnoDB now honors IGNORE INDEX. Previously using IGNORE INDEX in cases where an index sort would be slower than a filesort had no effect when used with InnoDB tables. (Bug #21174)

  • TIMESTAMP columns that are NOT NULL now are reported that way by SHOW COLUMNS and INFORMATION_SCHEMA. (Bug #20910)

  • Memory consumption of the InnoDB data dictionary cache was roughly halved by cleaning up the data structures. (Bug #20877)

  • The BINARY keyword now is forbidden as a data type attribute in stored routines (for example, DECLARE v1 VARCHAR(25) BINARY), because DECLARE does not support collations, and in this context BINARY specifies the binary collation of the variable's character set. (Bug #20701)

  • The following statements now can be executed as prepared statements (using PREPARE plus EXECUTE):


    (Bug #20665)

  • In the INFORMATION_SCHEMA.ROUTINES table the ROUTINE_DEFINITION column now is defined as NULL rather than NOT NULL. Also, NULL rather than the empty string is returned as the column value if the user does not have sufficient privileges to see the routine definition. (Bug #20230)

  • The mysqldumpslow script has been moved from client RPM packages to server RPM packages. This corrects a problem where mysqldumpslow could not be used with a client-only RPM install, because it depends on my_print_defaults which is in the server RPM. (Bug #20216)

  • The MySQL distribution now compiles on UnixWare 7.13. (Bug #20190)

  • configure now defines the symbol DBUG_ON in config.h to indicate whether the source tree is configured to be compiled with debugging support. (Bug #19517)

  • TEXT and BLOB columns do not support DEFAULT values. However, when a default of '' was specified, the specification was silently ignored. This now results in a warning, or an error in strict mode. (Bug #19498)

  • For mysqlshow, if a database name argument contains wildcard characters (such as _) but matches a single database name exactly, treat the name as a literal name. This enables a command such as mysqlshow information_schema to work without having to escape the wildcard character. (Bug #19147)

  • The source distribution has been updated so that the UDF example can be compiled under Windows with CMake. See Compiling and Installing User-Defined Functions. (Bug #19121)

  • The default value of the tmp_table_size system variable was lowered from 32MB to 16MB because it is bounded by the value of max_heap_table_size, which has a default of 16MB. (Bug #18875)

  • Log table changes: By default, the log tables use the CSV storage engine, as before. But now the log tables can be altered to use the MyISAM storage engine. You cannot use ALTER TABLE to alter a log table that is in use. The log must be disabled first. No engines other than CSV or MyISAM are legal for the log tables. The use of DROP TABLE for log tables is similarly restricted: It cannot be used to drop a log table that is in use. The log must be disabled first. (These changes also correct a deadlock that occurred for an attempt to drop an in-use log table.) (Bug #18559)

  • Added the --set-charset option to mysqlbinlog to enable the character set to be specified for processing binary log files. (Bug #18351)

  • The ExtractValue() function now produces an error when passed an XML fragment that is not well-formed.

    (Previously, the function permitted invalid XML fragments to be used.) (Bug #18201)

  • On Windows, typing Control+C while a query was running caused the mysql client to crash. Now it causes mysql to attempt to kill the current statement. If this cannot be done, or Control+C is typed again before the statement is killed, mysql exits. (In other words, mysql's behavior with regard to Control+C is now the same as it is on Unix platforms.) (Bug #17926)

    References: See also Bug #1989.

  • The bundled yaSSL library licensing has added a FLOSS exception similar to MySQL to resolve licensing incompatibilities with MySQL. (See the extra/yassl/FLOSS-EXCEPTIONS file in a MySQL source distribution for details.) (Bug #16755)

  • SHOW CREATE TABLE now shows constraints for InnoDB tables. (Bug #16614)

  • EXPLAIN EXTENDED now shows a filtered column that is an estimated percentage of the examined rows that will be joined with the previous tables. This was added while dealing with a problem of MySQL choosing the wrong index for some queries. (Bug #14940)

  • The mysql client now permits \l in the prompt command argument, to insert the current delimiter into the prompt. (Bug #14448)

  • The mysql client used the default character set if it automatically reconnected to the server, which is incorrect if the character set had been changed. To enable the character set to remain synchronized on the client and server, the mysql command charset (or \C) that changes the default character set and now also issues a SET NAMES statement. The changed character set is used for reconnects. (Bug #11972)

  • The LEFT() and RIGHT() functions return NULL if any argument is NULL. (Bug #11728)

  • If a DROP VIEW statement named multiple views, it stopped with an error if a nonexistent view was named and did not drop the remaining views. Now it continues on and reports an error at the end, similar to DROP TABLE. (Bug #11551)

  • For a successful dump, mysqldump now writes a SQL comment to the end of the dump file in the following format:

    -- Dump completed on YYYY-MM-DD hh:mm:ss

    (Bug #10877)

  • There were several issues regarding how SHOW STATUS affected some status variables and logging which could impact monitoring the MySQL Server. The behavior of this statement has been modified in two ways:

    • SHOW STATUS is no longer logged to the slow query log.

    • SHOW STATUS no longer updates any session status variables, except for com_show_status.

    However, SHOW STATUS continues to update global status variables to enable monitoring of what the server is actually doing. This is because SHOW STATUS creates temporary tables that may affect performance if it is called excessively often. (Bug #10210)

    References: See also Bug #19764.

  • For spatial data types, the server formerly returned these as VARSTRING values with a binary collation. Now the server returns spatial values as BLOB values. (Bug #10166)

  • The LOAD DATA FROM MASTER and LOAD TABLE FROM MASTER statements are deprecated. See LOAD DATA FROM MASTER Syntax, for recommended alternatives. (Bug #9125, Bug #20596, Bug #14399, Bug #12187, Bug #15025, Bug #18822)

  • For the mysql client, typing Control+C causes mysql to attempt to kill the current statement. If this cannot be done, or Control+C is typed again before the statement is killed, mysql exits. Previously, Control+C caused mysql to exit in all cases. (Bug #1989)


  • The Instance Manager --passwd option has been renamed to --print-password-line. Other options were added to enable management of the IM password file from the command line: --add-user, --drop-user, --edit-user, --list-users, --check-password-file, --clean-password-file, --username, and --password. The --mysqld-safe-compatible option was added to cause the Instance Manner to act similarly to mysqld_safe.

  • It is no longer possible to create partitioned tables using the CSV storage engine.

  • The bundled yaSSL library was upgraded to version 1.3.7.

  • The general query log and slow query logs now can be enabled or disabled at runtime with the general_log and slow_query_log system variables, and the name of the log files can be changed by setting the general_log_file and slow_query_log_file system variables. See The General Query Log, and The Slow Query Log.

  • Binary MySQL distributions no longer include a mysqld-max server. Instead, distributions contain a binary that includes the features previously included in the mysqld-max binary.

  • A new system variable, lc_time_names, specifies the locale that controls the language used to display day and month names and abbreviations. This variable affects the output from the DATE_FORMAT(), DAYNAME() and MONTHNAME() functions. See MySQL Server Locale Support.

  • SHOW STATUS no longer updates any session status variables, except for com_show_status.

  • SHOW STATUS is no longer logged to the slow query log.

  • Program Database (PDB) files (with file name extension .pdb) are now included by default in Windows distributions. These can be used to help diagnose problems with mysqld and other tools. See Debugging a MySQL Server.

  • Added the SHOW CONTRIBUTORS statement.

  • Using --with-debug to configure MySQL with debugging support enables you to use the --debug="d,parser_debug" option when you start the server. This causes the Bison parser that is used to process SQL statements to dump a parser trace to the server's standard error output. Typically, this output is written to the error log.

Bugs Fixed

  • Security Fix: A stored routine created by one user and then made accessible to a different user using GRANT EXECUTE could be executed by that user with the privileges of the routine's definer. (Bug #18630, CVE-2006-4227)

  • Security Fix: On Linux, and possibly other platforms using case-sensitive file systems, it was possible for a user granted rights on a database to create or access a database whose name differed only from that of the first by the case of one or more letters. (Bug #17647, CVE-2006-4226)

  • Security Fix: If a user has access to MyISAM table t, that user can create a MERGE table m that accesses t. However, if the user's privileges on t are subsequently revoked, the user can continue to access t by doing so through m. If this behavior is undesirable, you can start the server with the new --skip-merge option to disable the MERGE storage engine. (Bug #15195, CVE-2006-4031)

  • Incompatible Change: For utf8 columns, the full-text parser incorrectly considered several nonword punctuation and whitespace characters as word characters, causing some searches to return incorrect results.

    The fix involves a change to the full-text parser, so any tables that have FULLTEXT indexes on utf8 columns must be repaired with REPAIR TABLE:

    REPAIR TABLE tbl_name QUICK;

    (Bug #19580)

  • MySQL Cluster; Packaging: The ndb_mgm program was included in both the MySQL-ndb-tools and MySQL-ndb-management RPM packages, resulting in a conflict if both were installed. Now ndb_mgm is included only in MySQL-ndb-tools. (Bug #21058)

  • MySQL Cluster; Replication: A DELETE FROM table with no WHERE clause (deleting all rows) running concurrently with INSERT statements on a storage engine with row-level locking (such as NDB) could produce inconsistent results when using statement-based replication. (Bug #19066)

  • MySQL Cluster; Replication: (Replication): A node failure could send duplicate events, causing a mysqld replicating tables containing BLOBs to crash.

  • MySQL Cluster: (NDB API): Inacivity timeouts for scans were not correctly handled. (Bug #23107)

  • MySQL Cluster: Inserting into an NDB table failed when the table had no primary key but had a unique key added after table was created on one or more NOT NULL columns. This occurred when the unique key had been adding using either ALTER TABLE or CREATE UNIQUE KEY. (Bug #22838)

  • MySQL Cluster: (NDB API): Attempting to read a nonexistent tuple using Commit mode for NdbTransaction::execute() caused node failures. (Bug #22672)

  • MySQL Cluster: The --help output from NDB binaries did not include file-related options. (Bug #21994)

  • MySQL Cluster: Setting TransactionDeadlockDetectionTimeout to a value greater than 12000 would cause scans to deadlock, time out, fail to release scan records, until the cluster ran out of scan records and stopped processing. (Bug #21800)

  • MySQL Cluster: A scan timeout returned Error 4028 (Node failure caused abort of transaction) instead of Error 4008 (Node failure caused abort of transaction...). (Bug #21799)

  • MySQL Cluster: The node recovery algorithm was missing a version check for tables in the ALTER_TABLE_COMMITTED state (as opposed to the TABLE_ADD_COMMITTED state, which has the version check). This could cause inconsistent schemas across nodes following node recovery. (Bug #21756)

  • MySQL Cluster: A memory leak occurred when running ndb_mgm -e "SHOW". (Bug #21670)

  • MySQL Cluster: The server provided a nondescriptive error message when encountering a fatally corrupted REDO log. (Bug #21615)

  • MySQL Cluster: The output for the --help option used with NDB executable programs (such as ndbd, ndb_mgm, ndb_restore, ndb_config, and others mentioned in MySQL Cluster Programs) referred to the Ndb.cfg file, instead of to my.cnf. (Bug #21585)

  • MySQL Cluster: A partial rollback could lead to node restart failures. (Bug #21536)

  • MySQL Cluster: Partition distribution keys were updated only for the primary and starting replicas during node recovery. This could lead to node failure recovery for clusters having an odd number of replicas.


    For best results, use values for NumberOfReplicas that are even powers of 2.

    (Bug #21535)

  • MySQL Cluster: The ndb_mgm management client did not set the exit status on errors, always returning 0 instead. (Bug #21530)

  • MySQL Cluster: The failure of a unique index read due to an invalid schema version could be handled incorrectly in some cases, leading to unpredictable results. (Bug #21384)

  • MySQL Cluster: Attempting to create an NDB table on a MySQL server with an existing non-Cluster table with the same name in the same database could result in data loss or corruption. Now, if such a table is encountered during autodiscovery, a warning is written to the error log of the affected mysqld, and the local table is overwritten. (Bug #21378)

  • MySQL Cluster: Cluster logs were not rotated following the first rotation cycle. (Bug #21345)

  • MySQL Cluster: In a cluster with more than 2 replicas, a manual restart of one of the data nodes could fail and cause the other nodes in the same node group to shut down. (Bug #21213)

  • MySQL Cluster: The script did not account for TEXT and BLOB column values correctly. (Bug #21204)

  • MySQL Cluster: Some queries involving joins on very large NDB tables could crash the MySQL server. (Bug #21059)

  • MySQL Cluster: Condition pushdown did not work correctly with DATETIME columns. (Bug #21056)

  • MySQL Cluster: Responses to the ALL DUMP 1000 management client command were printed multiple times in the cluster log for each cluster node. (Bug #21044)

  • MySQL Cluster: The message Error 0 in readAutoIncrementValue(): no Error was written to the error log whenever SHOW TABLE STATUS was performed on a Cluster table that did not have an AUTO_INCREMENT column. (Bug #21033)

  • MySQL Cluster: Restarting a data node while DDL operations were in progress on the cluster could cause other data nodes to fail. This could also lead to mysqld hanging or crashing under some circumstances. (Bug #21017, Bug #21050)

  • MySQL Cluster: In some situations with a high disk-load, writing of the redo log could hang, causing a crash with the error message GCP STOP detected. (Bug #20904)

  • MySQL Cluster: A race condition could in some circumstances following a DROP TABLE. (Bug #20897)

  • MySQL Cluster: Under some circumstances, local checkpointing would hang, keeping any unstarted nodes from being started. (Bug #20895)

  • MySQL Cluster: When the redo buffer ran out of space, a Pointer too large error was raised and the cluster could become unusable until restarted with --initial. (Bug #20892)

  • MySQL Cluster: A vague error message was returned when reading both schema files during a restart of the cluster. (Bug #20860)

  • MySQL Cluster: The repeated creating and dropping of a table would eventually lead to NDB Error 826, Too many tables and attributes ... Insufficient space. (Bug #20847)

  • MySQL Cluster: When attempting to restart the cluster following a data import, the cluster failed during Phase 4 of the restart with Error 2334: Job buffer congestion. (Bug #20774)

  • MySQL Cluster: REPLACE statements did not work correctly on an NDB table having both a primary key and a unique key. In such cases, proper values were not set for columns which were not explicitly referenced in the statement. (Bug #20728)

  • MySQL Cluster: The server did not honor the value set for ndb_cache_check_time in the my.cnf file. (Bug #20708)

  • MySQL Cluster: Truncating a table on one mysqld caused other mysqld processes connected to the cluster to return ERROR 1412 (HY000): Table definition has changed, please retry transaction on subsequent queries. (Bug #20705)

  • MySQL Cluster: Using an invalid node ID with the management client STOP command could cause ndb_mgm to hang. (Bug #20575)

  • MySQL Cluster: Renaming of table columns was not supported as fast a ALTER TABLE for NDB tables. (Bug #20456)

  • MySQL Cluster: and ndb_error_reporter were missing from RPM packages. (Bug #20426)

  • MySQL Cluster: Running ndbd --nowait-nodes=id where id was the node ID of a node that was already running failed with an invalid error message. (Bug #20419)

  • MySQL Cluster: Data nodes added while the cluster was running in single user mode were all assigned node ID 0, which could later cause multiple node failures. Adding nodes while in single user mode is no longer possible. (Bug #20395)

  • MySQL Cluster: The ndb_mgm client command ALL CLUSTERLOG STATISTICS=15 had no effect. (Bug #20336)

  • MySQL Cluster: A node failure during a scan could sometime cause the node to crash when restarting too quickly following the failure. (Bug #20197)

  • MySQL Cluster: The failure of a data node when preparing to commit a transaction (that is, while the node's status was CS_PREPARE_TO_COMMIT) could cause the failure of other cluster data nodes. (Bug #20185)

  • MySQL Cluster: SHOW ENGINE NDB STATUS could sometimes return an incorrect value of 0 for the latest epoch, which could cause problems with synchronizing the binlog. (Bug #20142)

  • MySQL Cluster: An internal formatting error caused some management client error messages to be unreadable. (Bug #20016)

  • MySQL Cluster: Creating tables with variable-size columns caused DataMemory to be used but not freed when the tables were dropped. (Bug #20007)

  • MySQL Cluster: Renaming a table in such a way as to move it to a different database failed to move the table's indexes. (Bug #19967)

  • MySQL Cluster: Running management client commands while mgmd was in the process of disconnecting could cause the management server to fail. (Bug #19932)

  • MySQL Cluster: Under certain conditions, a starting node could miss transactions, leading to inconsistencies between the primary and backup replicas. (Bug #19929)

  • MySQL Cluster: An uncommitted row could sometimes be checkpointed and thus incorrectly included in a backup. (Bug #19928)

  • MySQL Cluster: In some cases where SELECT COUNT(*) from an NDB table should have yielded an error, MAX_INT was returned instead. (Bug #19914)

  • MySQL Cluster: TEXT columns in Cluster tables having both an explicit primary key and a unique key were not correctly updated by REPLACE statements. (Bug #19906)

  • MySQL Cluster: The cluster's data nodes failed while trying to load data when NoOfFrangmentLogFiles was set equal to 1. (Bug #19894)

  • MySQL Cluster: Following the restart of a management node, the Cluster management client did not automatically reconnect. (Bug #19873)

  • MySQL Cluster: Restoring a backup with ndb_restore failed when the backup had been taken from a cluster whose DataMemory had been completely used up. (Bug #19852)

  • MySQL Cluster: Error messages given when trying to make online changes to parameters such as NoOfReplicas that can only be changed using a complete shutdown and restart of the cluster did not indicate the true nature of the problem. (Bug #19787)

  • MySQL Cluster: Under some circumstances, repeated DDL operations on one mysqld could cause failure of a second mysqld attached to the same cluster. (Bug #19770)

  • MySQL Cluster: ndb_restore did not always make clear that it had recovered successfully from temporary errors while restoring a cluster backup. (Bug #19651)

  • MySQL Cluster: Resources for unique indexes on Cluster table columns were incorrectly allocated, so that only one-fourth as many unique indexes as indicated by the value of UniqueHashIndexes could be created. (Bug #19623)

  • MySQL Cluster: LOAD DATA LOCAL failed to ignore duplicate keys in Cluster tables. (Bug #19496)

  • MySQL Cluster: For ndb_mgmd, Valgrind revealed problems with a memory leak and a dependency on an uninitialized variable. (Bug #19318, Bug #20333)

  • MySQL Cluster: A DELETE of many rows immediately followed by an INSERT on the same table could cause the ndbd process on the backup replica to crash. (Bug #19293)

  • MySQL Cluster: An excessive number of ALTER TABLE operations could cause the cluster to fail with NDB error code 773 (Out of string memory, please modify StringMemory). (Bug #19275)

  • MySQL Cluster: A problem with error handling when ndb_use_exact_count was enabled could lead to incorrect values returned from queries using COUNT(). A warning is now returned in such cases. (Bug #19202)

  • MySQL Cluster: In rare situations with resource shortages, a crash could result from an insufficient number of IndexScanOperation objects. (Bug #19198)

  • MySQL Cluster: Running out of DataMemory could sometimes crash ndbd and mysqld processes. (Bug #19185)

  • MySQL Cluster: It was possible to use port numbers greater than 65535 for ServerPort in the config.ini file. (Bug #19164)

  • MySQL Cluster: ndb_mgm -e show | head would hang after displaying the first 10 lines of output. (Bug #19047)

  • MySQL Cluster: The error returned by the cluster when too many nodes were defined did not make clear the nature of the problem. (Bug #19045)

  • MySQL Cluster: The management client ALL STOP command shut down mgmd processes (as well as ndbd processes). (Bug #18966)

  • MySQL Cluster: TRUNCATE TABLE failed to reset the AUTO_INCREMENT counter. (Bug #18864)

  • MySQL Cluster: Restarting a failed node could sometimes crash the cluster. (Bug #18782)

  • MySQL Cluster: Trying to create or drop a table while a node was restarting caused the node to crash. This is now handled by raising an error. (Bug #18781)

  • MySQL Cluster: Repeated CREATE - INSERT - DROP operations on tables could in some circumstances cause the MySQL table definition cache to become corrupt, so that some mysqld processes could access table information but others could not. (Bug #18595)

  • MySQL Cluster: A CREATE TABLE statement involving foreign key constraints raised an error rather than being silently ignored (see CREATE TABLE Syntax).

    This bug affected Cluster in MySQL 5.1 only. (Bug #18483)

  • MySQL Cluster: The server failed with a nondescriptive error message when out of data memory. (Bug #18475)

  • MySQL Cluster: For NDB and possibly InnoDB tables, a BEFORE UPDATE trigger could insert incorrect values. (Bug #18437)

  • MySQL Cluster: The DATA_LENGTH and AVG_ROW_LENGTH columns of the INFORMATION_SCHEMA.TABLES table did not report the size of variable-width column values correctly.

    See The INFORMATION_SCHEMA TABLES Table, for more information. (Bug #18413)

  • MySQL Cluster: SELECT ... FOR UPDATE failed to lock the selected rows. (Bug #18184)

  • MySQL Cluster: (Disk Data): Deletes from Disk Data tables used a nonoptimal scan to find the rows to be deleted, resulting in poor performance. The fix causes disk order rather than memory order to be used, and can improve performance of Disk Data deletes by up to ~300% in some cases. (Bug #17929)

  • MySQL Cluster: perror did not properly report NDB error codes. (Bug #16561)

  • MySQL Cluster: A problem with takeover during a system restart caused ordered indexes to be rebuilt incorrectly. This also adversely affected MySQL Cluster Replication. (Bug #15303)

  • MySQL Cluster: A cluster data node could crash when an ordered index became full before the table containing the index was full. (Bug #14935)

  • MySQL Cluster: The management client ALL STATUS command could sometimes report the status of some data nodes incorrectly. (Bug #13985)

  • MySQL Cluster: New mysqld processes were permitted to connect without a restart of the cluster, causing the cluster to crash. (Bug #13266)

  • MySQL Cluster: Cluster system status variables were not updated properly. (Bug #11459)

  • MySQL Cluster: The loss of one or more data nodes could sometimes cause ndb_mgmd to use a high amount of CPU (15 percent or more, as opposed to 1 to 2 percent normally).

  • MySQL Cluster: (NDBAPI): Update operations on blobs were not checked for illegal operations.


    Read locks with blob update operations are now upgraded from read committed to read shared.

  • Partitioning: Old partition and subpartition files were not always removed following ALTER TABLE ... REORGANIZE PARTITION statements. (Bug #20770)

  • Replication; Cluster Replication: In some cases, a large number of MySQL servers sending requests to the cluster simultaneously could cause the cluster to crash. This could also be triggered by many NDB API clients making simultaneous event subscriptions or unsubscriptions. (Bug #20683)

  • Replication; Cluster Replication: Data definition and data manipulation statements on different tables were not serialized correctly in the binary log. For example, there was no guarantee that a CREATE TABLE statement and an update on a different table would occur in the same order in the binary log as they did on the cluster being replicated. (Bug #18947)

  • Replication: BIT columns were not replicated properly under row-based replication. (Bug #22550)

  • Replication: For row-based replication, log rotation could occur at an improper time. (Bug #21474)

  • Replication: In mixed-format binary logging mode, stored functions, triggers, and views that use functions in their body that require row-based logging did not replicate reliably because the logging did not switch from statement-based to row-based format. For example, INSERT INTO t SELECT FROM v, where v is a view that selects UUID() could cause problems. This limitation has been removed. (Bug #20930)

  • Replication: A race condition during slave server shutdown caused an assert failure. (Bug #20850)

  • Replication: With mixed-format binary logging, INSERT DELAYED statements were logged using statement-based logging, and they did not replicate properly for statements that used values such as UUID(), RAND(), or user-defined variables that require row-based logging. To correct this, the DELAYED handler thread how switches to row-based logging if the logging format is mixed. (Bug #20633, Bug #20649)

  • Replication: With the auto_increment_increment system variable set larger than 1, if the next generated AUTO_INCREMENT value would be larger than the column's maximum value, the value would be clipped down to that maximum value and inserted, even if the resulting value would not be in the generated sequence. This could cause problems for master-master replication. Now the server clips the value down to the previous value in the sequence, which correctly produces a duplicate-key error if that value already exists in the column. (Bug #20524)

  • Replication: In mixed binary logging mode, a temporary switch from statement-based logging to row-based logging occurs when storing a row that uses a function such as UUID() into a temporary table. However, temporary table changes are not written to the binary log under row-based logging, so the row does not exist on the slave. A subsequent select from the temporary table to a nontemporary table using statement-based logging works correctly on the master, but not on the slave where the row does not exist. Replication no longer switches back from row-based logging to statement-based logging until there are no temporary tables for the session. (Bug #20499)

  • Replication: CREATE PROCEDURE, CREATE FUNCTION, CREATE TRIGGER, and CREATE VIEW statements containing multi-line comments (/* ... */) could not be replicated. (Bug #20438)

  • Replication: A stored procedure that used LAST_INSERT_ID() did not replicate properly using statement-based binary logging. (Bug #20339)

  • Replication: When using row based replication, a CREATE TABLE ... SELECT statement was replicated, even if the table creation failed on the master (for example, due to a duplicate key failure). (Bug #20265)

  • Replication: If a table on a slave server had a higher AUTO_INCREMENT counter than the corresponding master table (even though all rows of the two tables were identical), in some cases REPLACE or INSERT ... ON DUPLICATE KEY UPDATE would not replicate properly using statement-based logging. (Different values would be inserted on the master and slave.) (Bug #20188)

  • Replication: Shutting down a slave in a replication scenario where temporary tables are in use would cause the slave to produce a core dump. (Bug #19881)

  • Replication: The effect of a stored function or trigger that caused AUTO_INCREMENT values to be generated for multiple tables was not logged properly if statement-based logging was used. Only the first table's value was logged, causing replication to fail. Under mixed logging format, this is dealt with by switching to row-based logging for the function or trigger. For statement-based logging, this remains a problem. (Bug #19630)

  • Replication: For row-based replication, the BINLOG statement did not lock tables properly, causing a crash for some table types. (Bug #19459)

  • Replication: Column names supplied for a view created on a master server could be lost on a slave server. (Bug #19419)

  • Replication: The dropping of a temporary table whose name contained a backtick ('`') character was not correctly written to the binary log, which also caused it not to be replicated correctly. (Bug #19188)

  • Replication: With row-based replication, replicating a statement to a slave where the table had additional columns relative to the master table did not work. (Bug #19069)

  • Replication: Valgrind revealed an issue with mysqld that was corrected: memory corruption in replication slaves when switching databases. (Bug #19022)

  • Replication: A redundant table map event could be generated in the binary log when there were no actual changes to a table being replicated. In addition, a slave failed to stop when attempting to replicate a table that did not exist on the slave. (Bug #18948)

  • Replication: Row-based replication failed when the query cache was enabled on the slave. (Bug #17620)

  • Replication: Compilation on Windows failed if row based replication was disabled using --without-row-based-replication. (Bug #16837)

  • Replication: An invalid GRANT statement for which Ok was returned on a replication master caused an error on the slave and replication to fail. (Bug #6774)

  • Disk Data: On some platforms, ndbd compiled with gcc 4 would crash when attempting to run CREATE LOGFILE GROUP. (Bug #21981)

  • Disk Data: Trying to create a Disk Data table using a nonexistent tablespace or to drop a nonexistent data file from a tablespace produced an uninformative error message. (Bug #21751)

  • Disk Data: Errors could occur when dropping a data file during a node local checkpoint. (Bug #21710)

  • Disk Data: Creating a tablespace and log file group, then attempting to restart the cluster without using the --initial option and without having created any Disk Data tables could cause a forced shutdown of the cluster and raise a configuration error. (Bug #21172)

  • Disk Data: mysqldump did not back up tablespace or log file group information for Disk Data tables correctly.

    Specifically, UNDO_BUFFER_SIZE and INITIAL_SIZE values were misreported. This meant that trying to restore from such a backup would produce error 1296: Got error 1504 'Out of logbuffer memory' from NDB. (Bug #20809)

  • Disk Data: Running a large number of scans on Disk Data could cause subsequent scans to perform poorly. (Bug #20334)

  • Disk Data: INFORMATION_SCHEMA.FILES records for UNDO files showed incorrect values in the EXTENT_SIZE, FREE_EXTENTS, and TOTAL_EXTENTS columns. (Bug #20073)

  • Disk Data: A data file created for one tablespace could be dropped using ALTER TABLESPACE ... DROP DATAFILE using a different tablespace. (Bug #20053)

  • Disk Data: Trying to create Disk Data tables when running the cluster in diskless mode caused cluster data nodes to crash.


    Disk Data tables are now disabled when running in diskless mode.

    (Bug #20008)

  • Disk Data: An issue with disk allocation could sometimes cause a forced shutdown of the cluster when running a mix of memory and Disk Data tables. (Bug #18780)

  • Disk Data: The failure of a CREATE TABLESPACE or CREATE LOGFILE GROUP statement did not revert all changes made prior to the point of failure. (Bug #16341)

  • Cluster Replication: One or more of the mysqld processes could fail when subjecting a Cluster replication setup with multiple mysqld processes on both the master and slave clusters to high loads. (Bug #19768)

  • Cluster API: The storage/ndb directory was missing from the server binary distribution, making it impossible to compile NDB API and MGM API applications. This directory can be found as /usr/include/storage/ndb after installing that distribution. (Bug #21955)

  • Cluster API: Invoking the MGM API function ndb_mgm_listen_event() caused a memory leak. (Bug #21671)

  • Cluster API: The inclusion of my_config.h in NdbApi.h required anyone wishing to write NDB API applications against MySQL 5.1 to have a complete copy of the 5.1 sources. (Bug #21253)

  • Cluster API: The MGM API function ndb_logevent_get_fd() was not implemented. (Bug #21129)

  • Cluster API: The NdbOperation::getBlobHandle() method, when called with the name of a nonexistent column, caused a segmentation fault. (Bug #21036)

  • Cluster API: NdbScanOperation::readTuples() and NdbIndexScanOperation::readTuples() ignored the batch parameter. (Bug #20252)

  • ALTER EVENT statements including only a COMMENT clause failed with a syntax error on two platforms: Linux for S/390, and OS X 10.4 for 64-bit PowerPC. (Bug #23423)

  • When event_scheduler was set to DISABLED, its value was not displayed correctly by SHOW VARIABLES or SELECT @@global.event_scheduler. (Bug #22662)

  • ALTER EVENT in the body of a stored procedure led to a crash when the procedure was called. This affected only those ALTER EVENT statements which changed the interval of the event. (Bug #22397)

  • The optimizer could make an incorrect index choice for indexes with a skewed key distribution. (Bug #22393)

  • Deleting entries from a large MyISAM index could cause index corruption when it needed to shrink. Deletes from an index can happen when a record is deleted, when a key changes and must be moved, and when a key must be un-inserted because of a duplicate key. This can also happen in REPAIR TABLE when a duplicate key is found and in myisamchk when sorting the records by an index. (Bug #22384)

  • Instance Manager had a race condition involving mysqld PID file removal. (Bug #22379)

  • yaSSL had a conflicting definition for socklen_t on hurd-i386 systems. (Bug #22326)

  • Conversion of values inserted into a BIT column could affect adjacent columns. (Bug #22271)

  • Some Linux-x86_64-icc packages (of previous releases) mistakenly contained 32-bit binaries. Only ICC builds are affected, not gcc builds. Solaris and FreeBSD x86_64 builds are not affected. (Bug #22238)

  • mysql_com.h unnecessarily referred to the ulong type. (Bug #22227)

  • The source distribution would not build on Windows due to a spurious dependency on ib_config.h. (Bug #22224)

  • Execution of a prepared statement that uses an IN subquery with aggregate functions in the HAVING clause could cause a server crash. (Bug #22085)

  • The CSV storage engine failed to detect some table corruption. (Bug #22080)

  • Using GROUP_CONCAT() on the result of a subquery in the FROM clause that itself used GROUP_CONCAT() could cause a server crash. (Bug #22015)

  • Running SHOW MASTER LOGS at the same time as binary log files were being switched would cause mysqld to hang. (Bug #21965)

  • libmysqlclient defined a symbol BN_bin2bn which belongs to OpenSSL. This could break applications that also linked against OpenSSL's libcrypto library. The fix required correcting an error in a build script that was failing to add rename macros for some functions. (Bug #21930)

  • character_set_results can be NULL to signify no conversion, but some code did not check for NULL, resulting in a server crash. (Bug #21913)

  • A misleading error message was displayed when attempting to define a unique key that was not valid for a partitioned table. (Bug #21862)

  • A query that used GROUP BY and an ALL or ANY quantified subquery in a HAVING clause could trigger an assertion failure. (Bug #21853)

  • An InnoDB mutex was not acquired and released under the same condition, leading to deadlock in some rare situations involving XA transactions. (Bug #21833)

  • A NUL byte within a prepared statement string caused the rest of the string not to be written to the query log, permitting logging to be bypassed. (Bug #21813)

  • COUNT(*) queries with ORDER BY and LIMIT could return the wrong result.


    This problem was introduced by the fix for Bug #9676, which limited the rows stored in a temporary table to the LIMIT clause. This optimization is not applicable to nongroup queries with aggregate functions. The current fix disables the optimization in such cases.

    (Bug #21787)

  • Using DROP TABLE with concurrent queries causes mysqld to crash. (Bug #21784)

  • INSERT ... SELECT sometimes generated a spurious Column count doesn't match value count error. (Bug #21774)

  • UPGRADE was treated as a reserved word, although it is not. (Bug #21772)

  • A function result in a comparison was replaced with a constant by the optimizer under some circumstances when this optimization was invalid. (Bug #21698)

  • Selecting from INFORMATION_SCHEMA.FILES could crash the server. (Bug #21676)

  • Errors could be generated during the execution of certain prepared statements that ran queries on partitioned tables. (Bug #21658)

  • The presence of a subquery in the ON clause of a join in a view definition prevented the MERGE algorithm from being used for the view in cases where it should be permitted. (Bug #21646)

  • When records are merged from the insert buffer and the page needs to be reorganized, InnoDB used incorrect column length information when interpreting the records of the page. This caused a server crash due to apparent corruption of secondary indexes in ROW_FORMAT=COMPACT that contain prefix indexes of fixed-length columns. Data files should not be corrupted, but the crash was likely to repeat every time the server was restarted. (Bug #21638)

  • For character sets having a mbmaxlen value of 2, any ALTER TABLE statement changed TEXT columns to MEDIUMTEXT. (Bug #21620)

  • mysql displayed an empty string for NULL values. (Bug #21618)

  • Selecting from a MERGE table could result in a server crash if the underlying tables had fewer indexes than the MERGE table itself. (Bug #21617, Bug #22937)

  • A loaded storage engine plugin did not load after a server restart. (Bug #21610)

  • For INSERT ... ON DUPLICATE KEY UPDATE, use of VALUES(col_name) within the UPDATE clause sometimes was handled incorrectly. (Bug #21555)

  • Subqueries with aggregate functions but no FROM clause could return incorrect results. (Bug #21540)

  • mysqldump incorrectly tried to use LOCK TABLES for tables in the INFORMATION_SCHEMA database. (Bug #21527)

  • The server could crash for the second execution of a function containing a SELECT statement that uses an aggregating IN subquery. (Bug #21493)

  • Memory overruns could occur for certain kinds of subqueries. (Bug #21477)

  • A DATE can be represented as an integer (such as 20060101) or as a string (such as '2006.01.01'). When a DATE (or TIME) column is compared in one SELECT against both representations, constant propagation by the optimizer led to comparison of DATE as a string against DATE as an integer. This could result in integer comparisons such as 2006 against 20060101, erroneously producing a false result. (Bug #21475)

  • myisam_ftdump produced bad counts for common words. (Bug #21459)

  • Adding ORDER BY to a SELECT DISTINCT(expr) query could produce incorrect results. (Bug #21456)

  • The URL into the online manual that is printed in the stack trace message by the server was out of date. (Bug #21449)

  • Database and table names have a maximum length of 64 characters (even if they contain multibyte characters), but were truncated to 64 bytes.


    An additional fix was made in MySQL 5.1.18.

    (Bug #21432)

  • With max_sp_recursion set to 0, a stored procedure that executed a SHOW CREATE PROCEDURE statement for itself triggered a recursion limit exceeded error, though the statement involves no recursion. (Bug #21416)

  • After FLUSH TABLES WITH READ LOCK followed by UNLOCK TABLES, attempts to drop or alter a stored routine failed with an error that the routine did not exist, and attempts to execute the routine failed with a lock conflict error. (Bug #21414)

  • On 64-bit Windows, a missing table generated error 1017, not the correct value of 1146. (Bug #21396)

  • Table aliases in multiple-table DELETE statements sometimes were not resolved. (Bug #21392)

  • The optimizer sometimes produced an incorrect row-count estimate after elimination of const tables. This resulted in choosing extremely inefficient execution plans in same cases when distribution of data in joins were skewed. (Bug #21390)

  • For multiple-table UPDATE statements, storage engines were not notified of duplicate-key errors. (Bug #21381)

  • Using relative paths for DATA DIRECTORY or INDEX DIRECTORY with a partitioned table generated a warning rather than an error, and caused junk files to be created in the server's data directory. (Bug #21350)

  • Using EXPLAIN PARTITIONS with a query on a table whose partitioning expression was based on the value of a DATE column could sometimes cause the server to crash. (Bug #21339)

  • The feature of being able to recover a temporary table named #sql_id in InnoDB by creating a table named rsql_id_recover_innodb_tmp_table was broken by the introduction of the new identifier encoding in MySQL 5.1.6 (Bug #21313)

  • It was possible for a stored routine with a non-latin1 name to cause a stack overrun. (Bug #21311)

  • A query result could be sorted improperly when using ORDER BY for the second table in a join. (Bug #21302)

  • Query results could be incorrect if the WHERE clause contained t.key_part NOT IN (val_list), where val_list is a list of more than 1000 constants. (Bug #21282)

  • Queries that used the index_merge and sort_union methods to access an InnoDB table could produce inaccurate results. This issue was introduced in MySQL 5.1.10 when a new handler and bitmap interface was implemented. (Bug #21277)

  • For user-defined functions created with CREATE FUNCTION, the DEFINER clause is not legal, but no error was generated. (Bug #21269)

  • The SELECT privilege was required for an insert on a view, instead of the INSERT privilege. (Bug #21261)

    References: This bug was introduced by Bug #20989.

  • mysql_config --libmysqld-libs did not produce any SSL options necessary for linking libmysqld with SSL support enabled. (Bug #21239)

  • Subqueries on INFORMATION_SCHEMA tables could erroneously return an empty result. (Bug #21231)

  • mysql_upgrade created temporary files in a possibly insecure way. (Bug #21224)

  • When DROP DATABASE or SHOW OPEN TABLES was issued while concurrently in another connection issuing DROP TABLE, RENAME TABLE, CREATE TABLE LIKE or any other statement that required a name lock, the server crashed. (Bug #21216, Bug #19403)

  • The --master-data option for mysqldump requires certain privileges, but mysqldump generated a truncated dump file without producing an appropriate error message or exit status if the invoking user did not have those privileges. (Bug #21215)

  • Using ALTER TABLE ... REORGANIZE PARTITIONS to reduce the number of subpartitions to 1 caused the server to crash. (Bug #21210)

  • In the package of pre-built time zone tables that is available for download at, the tables now explicitly use the utf8 character set so that they work the same way regardless of the system character set value. (Bug #21208)

  • Under heavy load (executing more than 1024 simultaneous complex queries), a problem in the code that handles internal temporary tables could lead to writing beyond allocated space and memory corruption.

    Use of more than 1024 simultaneous cursors server wide also could lead to memory corruption. This applies to both stored procedure cursors and C API cursors. (Bug #21206)

  • When run with the --use-threads option, mysqlimport returned a random exit code. (Bug #21188)

  • A subquery that uses an index for both the WHERE and ORDER BY clauses produced an empty result. (Bug #21180)

  • Running SHOW TABLE STATUS on any InnoDB table having at least one record could crash the server. Note that this was not due to any issue in the InnoDB storage engine, but rather with AUTO_INCREMENT handling in the partitioning code—however, the table did not have to have an AUTO_INCREMENT column for the bug to manifest. (Bug #21173)

  • Some prepared statements caused a server crash when executed a second time. (Bug #21166)

  • The optimizer assumed that if (a=x AND b=x) is true, (a=x AND b=x) AND a=b is also true. But that is not always so if a and b have different data types. (Bug #21159)

  • Some ALTER TABLE statements affecting a table's subpartitioning could hang. (Bug #21143)

  • Certain malformed INSERT statements could crash the mysql client. (Bug #21142)

  • SHOW INNODB STATUS contained some duplicate output. (Bug #21113)

  • InnoDB was slow with more than 100,000 .idb files. (Bug #21112)

  • Creating a TEMPORARY table with the same name as an existing table that was locked by another client could result in a lock conflict for DROP TEMPORARY TABLE because the server unnecessarily tried to acquire a name lock. (Bug #21096)

  • Performing an INSERT on a view that was defined using a SELECT that specified a collation and a column alias caused the server to crash . (Bug #21086)

  • Incorrect results could be obtained from re-execution of a parametrized prepared statement or a stored routine with a SELECT that uses LEFT JOIN with a second table having only one row. (Bug #21081)

  • ALTER VIEW did not retain existing values of attributes that had been originally specified but were not changed in the ALTER VIEW statement. (Bug #21080)

  • The myisam_stats_method variable was mishandled when set from an option file or on the command line. (Bug #21054)

  • With query_cache_type set to 0, RESET QUERY CACHE was very slow and other threads were blocked during the operation. Now a cache reset is faster and nonblocking. (Bug #21051)

  • mysql crashed for very long arguments to the connect command. (Bug #21042)

  • When creating a table using CREATE...SELECT and a stored procedure, there would be a mismatch between the binary log and transaction cache which would cause a server crash. (Bug #21039)

  • A query using WHERE column = constant OR column IS NULL did not return consistent results on successive invocations. The column in each part of the WHERE clause could be either the same column, or two different columns, for the effect to be observed. (Bug #21019)

  • mysqldump sometimes did not select the correct database before trying to dump views from it, resulting in an empty result set that caused mysqldump to die with a segmentation fault. (Bug #21014)

  • Performance during an import on a table with a trigger that called a stored procedure was severely degraded. (Bug #21013)

  • mysql_upgrade produced a malformed upgrade_defaults file by overwriting the [client] group header with a password option. This prevented mysqlcheck from running successfully when invoked by mysql_upgrade. (Bug #21011)

  • A query of the form shown here caused the server to crash:

    SELECT * FROM t1 NATURAL JOIN (    t2 JOIN (        t3 NATURAL JOIN t4,        t5 NATURAL JOIN t6    )    ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5));

    (Bug #21007)

  • A SELECT that used a subquery in the FROM clause that did not select from a table failed when the subquery was used in a join. (Bug #21002)

  • REPLACE ... SELECT for a view required the INSERT privilege for tables other than the table being modified. (Bug #20989)

  • STR_TO_DATE() sometimes would return NULL if the %D format specifier was not the last specifier in the format string. (Bug #20987)

  • A query using WHERE NOT (column < ANY (subquery)) yielded a different result from the same query using the same column and subquery with WHERE (column > ANY (subquery)). (Bug #20975)

  • Under certain circumstances, AVG(key_val) returned a value but MAX(key_val) returned an empty set due to incorrect application of MIN()/MAX() optimization. (Bug #20954)

  • Closing of temporary tables failed if binary logging was not enabled. (Bug #20919)

  • Use of zero-length variable names caused a server crash. (Bug #20908)

  • Building mysql on Windows with CMake 2.4 failed to create libmysqld correctly. (Bug #20907)

  • Creating a partitioned table that used the InnoDB storage engine and then restarting mysqld with --skip-innodb caused MySQL to crash. (Bug #20871)

  • For certain queries, the server incorrectly resolved a reference to an aggregate function and crashed. (Bug #20868)

  • If the binary logging format was changed between the times when a locked table was modified and when it was unlocked, the binary log contents were incorrect. (Bug #20863)

  • It was possible to provide the ExtractValue() function with input containing tags that were not valid XML; for example, it was possible to use tag names beginning with a digit, which are not permitted by the W3C's XML 1.0 specification. Such cases caused the function to return junk output rather than an error message signalling the user as to the true nature of the problem. (Bug #20854)

  • InnoDB (Partitioning): Updating an InnoDB table using HASH partitioning with a composite primary key would cause the server to hang. (Bug #20852)

  • mysqldump did not add version-specific comments around WITH PARSER and TABLESPACE ... STORAGE DISK clauses for CREATE TABLE statements, causing dump files from servers where these features were in use to fail when loaded into older servers. (Bug #20841)

  • For multiple INSERT DELAYED statements executed in a batch by the delayed-insert handler thread, not all rows were written to the binary log. (Bug #20821)

  • The ExtractValue() function did not accept XML tag names containing a period (.) character. (Bug #20795)

  • Using aggregate functions in subqueries yielded incorrect results under certain circumstances due to incorrect application of MIN()/MAX() optimization. (Bug #20792)

  • On Windows, inserting into a MERGE table after renaming an underlying MyISAM table caused a server crash. (Bug #20789)

  • Within stored routines, some error messages were printed incorrectly. A nonnull-terminated string was passed to a message-printing routine that expected a null-terminated string. (Bug #20778)

  • Merging multiple partitions having subpartitions into a single partition with subpartitions, or splitting a single partition having subpartitions into multiple partitions with subpartitions, could sometimes crash the server. These issues were associated with a failure reported in the partition_range test. (Bug #20767, Bug #20893, Bug #20766, Bug #21357)

  • Searches against a ZEROFILL column of a partitioned table could fail when the ZEROFILL column was part of the table's partitioning key. (Bug #20733)

  • If a column definition contained a character set declaration, but a DEFAULT value began with an introducer, the introducer character set was used as the column character set. (Bug #20695)

  • An UPDATE that referred to a key column in the WHERE clause and activated a trigger that modified the column resulted in a loop. (Bug #20670)

  • Issuing a SHOW CREATE FUNCTION or SHOW CREATE PROCEDURE statement without sufficient privileges could crash the mysql client. (Bug #20664)

  • INSERT DELAYED did not honor SET INSERT_ID or the auto_increment_* system variables. (Bug #20627, Bug #20830)

  • A buffer overwrite error in Instance Manager caused a crash. (Bug #20622)

  • Loading a plugin caused any an existing plugin with the same name to be lost. (Bug #20615)

  • A query selecting records from a single partition of a partitioned table and using ORDER BY ic DESC (where ic represents an indexed column) could cause errors or crash the server. (Bug #20583)

  • Valgrind revealed several issues with mysqld that were corrected: A dangling stack pointer being overwritten; possible uninitialized data in a string comparison; syscall() write parameter pointing to an uninitialized byte. (Bug #20579, Bug #20769, Bug #20783, Bug #20791)

  • If the auto_increment_offset setting causes MySQL to generate a value larger than the column's maximum possible value, the INSERT statement is accepted in strict SQL mode, whereas but should fail with an error. (Bug #20573)

  • In a view defined with SQL SECURITY DEFINER, the CURRENT_USER() function returned the invoker, not the definer. (Bug #20570)

  • The fill_help_tables.sql file did not contain a SET NAMES 'utf8' statement to indicate its encoding. This caused problems for some settings of the MySQL character set such as big5. (Bug #20551)

  • Scheduled events that invoked stored procedures executing DDL operations on partitioned tables could crash the server. (Bug #20548)

  • Users who had the SHOW VIEW privilege for a view and privileges on one of the view's base tables could not see records in INFORMATION_SCHEMA tables relating to the base table. (Bug #20543)

  • The fill_help_tables.sql file did not load properly if the ANSI_QUOTES SQL mode was enabled. (Bug #20542)

  • The MD5(), SHA1(), and ENCRYPT() functions should return a binary string, but the result sometimes was converted to the character set of the argument. MAKE_SET() and EXPORT_SET() now use the correct character set for their default separators, resulting in consistent result strings which can be coerced according to normal character set rules. (Bug #20536)

  • If a partitioned InnoDB table contained an AUTO_INCREMENT column, a SHOW statement could cause an assertion failure with more than one connection. (Bug #20493)

  • Using EXPLAIN PARTITIONS with a UNION query could crash the server. This could occur whether or not the query actually used any partitioned tables. (Bug #20484)

  • Creation of a view as a join of views or tables could fail if the views or tables are in different databases. (Bug #20482)

  • SELECT statements using GROUP BY against a view could have missing columns in the output when there was a trigger defined on one of the base tables for the view. (Bug #20466)

  • For connections that required a SUBJECT value, a check was performed to verify that the value was correct, but the connection was not refused if not. (Bug #20411)

  • mysql_upgrade was missing from binary MySQL distributions. (Bug #20403, Bug #18516, Bug #20556)

  • Some user-level errors were being written to the server's error log, which is for server errors. (Bug #20402)

  • Using ALTER TABLE ... ENGINE = x, where x was not a storage engine supported by the server, would cause mysqld to crash. (Bug #20397)

  • User names have a maximum length of 16 characters (even if they contain multibyte characters), but were being truncated to 16 bytes. (Bug #20393)

  • Some queries using ORDER BY ... DESC on subpartitioned tables could crash the server. (Bug #20389)

  • mysqlslap did not enable the CLIENT_MULTI_RESULTS flag when connecting, which is necessary for executing stored procedures. (Bug #20365)

  • Queries using an indexed column as the argument for the MIN() and MAX() functions following an ALTER TABLE .. DISABLE KEYS statement returned Got error 124 from storage engine until ALTER TABLE ... ENABLE KEYS was run on the table. (Bug #20357)

  • When a statement used a stored function that inserted into an AUTO_INCREMENT column, the generated AUTO_INCREMENT value was not written into the binary log, so a different value could in some cases be inserted on the slave. (Bug #20341)

  • Partitions were represented internally as the wrong data type, which led in some cases to failures of queries such as SELECT COUNT(*) FROM INFORMATION_SCHEMA.PARTITIONS WHERE PARTITION_NAME = 'partition_name'. (Bug #20340)

  • PROCEDURE ANALYSE() returned incorrect values of M FLOAT(M, D) and DOUBLE(M, D). (Bug #20305)

  • Defining a table partitioned by LIST with a single PARTITION ... VALUES IN (NULL) clause could lead to server crashes, particularly with queries having WHERE conditions comparing the partitioning key with a constant. (Bug #20268, Bug #19801)

  • Partition pruning could cause incorrect results from queries, such missing rows, when the partitioning expression relied on a BIGINT UNSIGNED column. (Bug #20257)

  • For a MyISAM table locked with LOCK TABLES ...WRITE, queries optimized using the index_merge method did not show rows inserted with the lock in place. (Bug #20256)

  • mysqldump produced a malformed dump file when dumping multiple databases that contained views. (Bug #20221)

  • Running InnoDB with many concurrent threads could cause memory corruption and a seg fault due to a bug introduced in MySQL 5.1.11. (Bug #20213)

  • SUBSTRING() results sometimes were stored improperly into a temporary table when multibyte character sets were used. (Bug #20204)

  • The thread for INSERT DELAYED rows was maintaining a separate AUTO_INCREMENT counter, resulting in incorrect values being assigned if DELAYED and non-DELAYED inserts were mixed. (Bug #20195)

  • The --default-storage-engine server option did not work. (Bug #20168)

  • For a table having LINEAR HASH subpartitions, the LINEAR keyword did not appear in the SUBPARTITION_METHOD column of the INFORMATION_SCHEMA.PARTITIONS table. (Bug #20161)

  • For a DATE parameter sent using a MYSQL_TIME data structure, mysql_stmt_execute() zeroed the hour, minute, and second members of the structure rather than treating them as read only. (Bug #20152)

  • perror crashed on Solaris due to NULL return value of strerror() system call. (Bug #20145)

  • FLUSH TABLES followed by a LOCK TABLES statement to lock a log table and a nonlog table caused an infinite loop and high CPU use. Now FLUSH TABLES ignores log tables. To flush the log tables, use FLUSH LOGS instead. (Bug #20139)

  • On Linux, libmysqlclient when compiled with yaSSL using the icc compiler had a spurious dependency on C++ libraries. (Bug #20119)

  • For an ENUM column that used the ucs2 character set, using ALTER TABLE to modify the column definition caused the default value to be lost. (Bug #20108)

  • For mysql, escaping with backslash sometimes did not work. (Bug #20103)

  • Queries on tables that were partitioned by KEY and had a VARCHAR column as the partitioning key produced an empty result set. (Bug #20086)

  • A number of dependency issues in the RPM bench and test packages caused installation of these packages to fail. (Bug #20078)

  • Use of MIN() or MAX() with GROUP BY on a ucs2 column could cause a server crash. (Bug #20076)

  • mysqld --flush failed to flush MyISAM table changes to disk following an UPDATE statement for which no updated column had an index. (Bug #20060)

  • In MySQL 5.1.11, the --with-openssl and --with-yassl options were replaced by --with-ssl. But no message was issued if the old options were given. Now configure produces a message indicating that the new option should be used and exits. (Bug #20002)

  • When a statement is executed that does not generate any rows, an extra table map event and associated binrows event would be generated and written to the binary log. (Bug #19995)

  • Join conditions using index prefixes on utf8 columns of InnoDB tables incorrectly ignored rows where the length of the actual value was greater than the length of the index prefix. (Bug #19960)

  • AUTHORS and CONTRIBUTORS were not treated as reserved words. (Bug #19939)

  • The query command for mysqltest did not work. (Bug #19890)

  • Identifiers with embedded escape characters were not handled correctly by some SHOW statements due to some old code that was doing some extra unescaping. (Bug #19874)

  • When executing a SELECT with ORDER BY on a view that is constructed from a SELECT statement containing a stored function, the stored function was evaluated too many times. (Bug #19862)

  • Using SELECT on a corrupt MyISAM table using the dynamic record format could cause a server crash. (Bug #19835)

  • Using cursors with READ COMMITTED isolation level could cause InnoDB to crash. (Bug #19834)

  • CREATE DATABASE, RENAME DATABASE, and DROP DATABASE could deadlock in cases where there was a global read lock. (Bug #19815)

  • The yaSSL library bundled with libmysqlclient had some conflicts with OpenSSL. Now macros are used to rename the conflicting symbols to have a prefix of ya. (Bug #19810)

  • The WITH CHECK OPTION was not enforced when a REPLACE statement was executed against a view. (Bug #19789)

  • Multiple-table updates with FEDERATED tables could cause a server crash. (Bug #19773)

  • On 64-bit systems, use of the cp1250 character set with a primary key column in a LIKE clause caused a server crash for patterns having letters in the range 128..255. (Bug #19741)

  • make install tried to build files that should already have been built by make all, causing a failure if installation was performed using a different account than the one used for the initial build. (Bug #19738)

  • InnoDB unlocked its data directory before committing a transaction, potentially resulting in nonrecoverable tables if a server crash occurred before the commit. (Bug #19727)

  • An issue with yaSSL prevented Connector/J clients from connecting to the server using a certificate. (Bug #19705)

  • For a MyISAM table with a FULLTEXT index, compression with myisampack or a check with myisamchk after compression resulted in table corruption. (Bug #19702)

  • The ENGINE clause was displayed in the output of SHOW CREATE TABLE for partitioned tables when the SQL mode included no_table_options. (Bug #19695)

  • A cast problem caused incorrect results for prepared statements that returned float values when MySQL was compiled with gcc 4.0. (Bug #19694)

  • EXPLAIN PARTITIONS would produce illegible output in the partitions column if the length of text to be displayed in that column was too long. This could occur when very many partitions were defined for the table, partitions were given very long names, or due to a combination of the two. (Bug #19684)

  • The mysql_list_fields() C API function returned the incorrect table name for views. (Bug #19671)

  • If a query had a condition of the form tableX.key = tableY.key , which participated in equality propagation and also was used for ref access, then early ref-access NULL filtering was not performed for the condition. This could make query execution slower. (Bug #19649)

  • Re-execution of a prepared multiple-table DELETE statement that involves a trigger or stored function can result in a server crash. (Bug #19634)

  • File size specifications for InnoDB data files were case sensitive. (Bug #19609)

  • CHECK TABLE on a MyISAM table briefly cleared its AUTO_INCREMENT value, while holding only a read lock. Concurrent inserts to that table could use the wrong AUTO_INCREMENT value. CHECK TABLE no longer modifies the AUTO_INCREMENT value. (Bug #19604)

  • Some yaSSL public function names conflicted with those from OpenSSL, causing conflicts for applications that linked against both OpenSSL and a version of libmysqlclient that was built with yaSSL support. The yaSSL public functions now are renamed to avoid this conflict. (Bug #19575)

  • In the INFORMATION_SCHEMA.FILES table, the INITIAL_SIZE, MAXIMUM_SIZE, and AUTOEXTEND_SIZE columns incorrectly were being stored as VARCHAR rather than BIGINT. . (Bug #19544)

  • InnoDB failed to increment the handler_read_prev counter. (Bug #19542)

  • Portions of statements related to partitioning were not surrounded by version-specific comments by mysqldump, breaking backward compatibility for dump files. (Bug #19488)

  • Repeated DROP TABLE statements in a stored procedure could sometimes cause the server to crash. (Bug #19399)

  • Renaming a database to itself caused a server crash. (Bug #19392)

  • Race conditions on certain platforms could cause the Instance Manager to fail to initialize. (Bug #19391)

  • When not running in strict mode, the server failed to convert the invalid years portion of a DATE or DATETIME value to '0000' when inserting it into a table.


    This fix was reverted in MySQL 5.1.18.

    (Bug #19370)

    References: See also Bug #25301.

  • Use of the --no-pager option caused mysql to crash. (Bug #19363)

  • Multiple calls to a stored procedure that altered a partitioned MyISAM table would cause the server to crash. (Bug #19309)

  • ALTER TABLE ... COALESCE PARTITION did not delete the files associated with the partitions that were removed. (Bug #19305)

  • Adding an index to a partitioned table that had been created using AUTO_INCREMENT = value caused the AUTO_INCREMENT value to be reset. (Bug #19281)

  • Multiple-table DELETE statements containing a subquery that selected from one of the tables being modified caused a server crash. (Bug #19225)

  • The final parenthesis of a CREATE INDEX statement occurring in a stored procedure was omitted from the binary log when the stored procedure was called. (Bug #19207)

  • An ALTER TABLE operation that does not need to copy data, when executed on a table created prior to MySQL 4.0.25, could result in a server crash for subsequent accesses to the table. (Bug #19192)

  • SSL connections using yaSSL on OpenBSD could fail. (Bug #19191)

  • ALTER TABLE ... REBUILD PARTITION could cause the server to hang or crash. (Bug #19122)

  • Using ALTER TABLE on a subpartitioned table caused the server to crash. (Bug #19067)

  • Trying to execute a query having a WHERE clause using int_col = "string_value" OR int_col IS NULL on a partitioned table whose partitioning or subpartitioning function used the integer column int_col would crash the server. (Bug #19055)

  • A SELECT with a subquery that was bound to the outer query over multiple columns returned different results when a constant was used instead of one of the dependant columns. (Bug #18925)

  • It was possible using ALTER EVENT ... RENAME ... to move an event to a database on which the user did not have the EVENT privilege. (Bug #18897)

  • When used in the DO clause of a CREATE EVENT statement, the statements CREATE EVENT, CREATE FUNCTION, and CREATE PROCEDURE caused the server to crash. (These statements are not permitted inside CREATE EVENT.) (Bug #18896, Bug #16409)

  • BIT columns in a table could cause joins that use the table to fail. (Bug #18895)

  • The build process incorrectly tried to overwrite sql/lex_hash.h. This caused the build to fail when using a shadow link tree pointing to original sources that were owned by another account. (Bug #18888)

  • Setting myisam_repair_threads caused any repair operation on a MyISAM table to fail to update the cardinality of indexes, instead making them always equal to 1. (Bug #18874)

  • The MySQL server startup script /etc/init.d/mysql (created from mysql.server) is now marked to ensure that the system services ypbind, nscd, ldap, and NTP are started first (if these are configured on the machine). (Bug #18810)

  • InnoDB: Quoted Unicode identifiers were not handled correctly. This included names of tables, columns, and foreign keys. (Bug #18800)

  • Intermediate tables created during the execution of an ALTER TABLE statement were visible in the output of SHOW TABLES. (Bug #18775)

  • FEDERATED tables raised invalid duplicate key errors when attempting on one server to insert rows having the same primary key values as rows that had been deleted from the linked table on the other server. (Bug #18764)

  • Memory used by scheduled events was not freed when the events were dropped. (Bug #18683)

  • The implementation for UNCOMPRESS() did not indicate that it could return NULL, causing the optimizer to do the wrong thing. (Bug #18539)

  • Referring to a stored function qualified with the name of one database and tables in another database caused a table doesn't exist error. (Bug #18444)

  • Identifiers could not contain bytes with a value of 255, though that should be permitted as of the identifier-encoding changes made in MySQL 5.1.6. (Bug #18396)

  • Triggers on tables in the mysql database caused a server crash. Triggers for tables in this database are no longer permitted. (Bug #18361, Bug #18005)

  • Incorrect type aggregation for IN() and CASE expressions could lead to an incorrect result. (Bug #18360)

  • The length of the pattern string prefix for LIKE operations was calculated incorrectly for multibyte character sets. As a result, the scanned range was wider than necessary if the prefix contained any multibyte characters, and rows could be missing from the result set. (Bug #18359, Bug #16674)

  • On Windows, corrected a crash stemming from differences in Visual C runtime library routines from POSIX behavior regarding invalid file descriptors. (Bug #18275)

  • Linking the pthreads library to single-threaded MySQL libraries caused dlopen() to fail at runtime on HP-UX. (Bug #18267)

  • The source distribution failed to compile when configured with the --with-libwrap option. (Bug #18246)

  • On Windows, terminating mysqld with Control+C could result in a crash during shutdown. (Bug #18235)

  • Selecting data from a MEMORY table with a VARCHAR column and a HASH index over it returned only the first row matched. (Bug #18233)

  • The use of MIN() and MAX() on columns with an index prefix produced incorrect results in some queries. (Bug #18206)

  • A UNION over more than 128 SELECT statements that use an aggregate function failed. (Bug #18175)

  • The optimizer did not take advantage of indexes on columns used for the second or third arguments of BETWEEN. (Bug #18165)

  • Performing INSERT ... SELECT ... JOIN ... USING without qualifying the column names caused ERROR 1052 "column 'x' in field list is ambiguous" even in cases where the column references were unambiguous. (Bug #18080)

  • An update that used a join of a table to itself and modified the table on both sides of the join reported the table as crashed. (Bug #18036)

  • Race conditions on certain platforms could cause the Instance Manager to try to restart the same instance multiple times. (Bug #18023)

  • Changing the definition of a DECIMAL column with ALTER TABLE caused loss of column values. (Bug #18014)

  • For table-format output, mysql did not always calculate columns widths correctly for columns containing multibyte characters in the column name or contents. (Bug #17939)

  • The character set was not being properly initialized for CAST() with a type such as CHAR(2) BINARY, which resulted in incorrect results or a server crash. (Bug #17903)

  • Checking a MyISAM table (using CHECK TABLE) having a spatial index and only one row would wrongly indicate that the table was corrupted. (Bug #17877)

  • For a reference to a nonexistent index in FORCE INDEX, the error message referred to a column, not an index. (Bug #17873)

  • A stored procedure that created and invoked a prepared statement was not executed when called in a mysqld init-file. (Bug #17843)

  • It is possible to create MERGE tables into which data cannot be inserted (by not specifying a UNION clause. However, when an insert was attempted, the error message was confusing. Now an error occurs indicating that the table is read only. (Bug #17766)

  • Attempting to insert a string of greater than 4096 bytes into a FEDERATED table resulted in the error ERROR 1296 (HY000) at line 2: Got error 10000 'Error on remote system: 1054: Unknown column 'string-value' from FEDERATED. This error was raised regardless of the type of column involved (VARCHAR, TEXT, and so on.) (Bug #17608)

  • If a file name was specified for the --log or --log-slow-queries options but the server was logging to tables and not files, the server produced no error message. (Bug #17599)

  • If the general log table reached a large enough file size (27GB), SELECT COUNT(*) on the table caused a server crash. (Bug #17589)

  • Using the extended syntax for TRIM()—that is, TRIM(... FROM ...)—in a SELECT statement defining a view caused an invalid syntax error when selecting from the view. (Bug #17526)

  • Use of the --prompt option or prompt command caused mysql to be unable to connect to the Instance Manager. (Bug #17485)

  • OPTIMIZE TABLE and REPAIR TABLE yielded incorrect messages or warnings when used on partitioned tables. (Bug #17455)

  • mysqldump would not dump views that had become invalid because a table named in the view definition had been dropped. Instead, it quit with an error message. Now you can specify the --force option to cause mysqldump to keep going and write an SQL comment containing the view definition to the dump output. (Bug #17371)

  • N'xxx' and _utf8'xxx' were not treated as equivalent because N'xxx' failed to unescape backslashes (\) and doubled apostrophe/single quote characters (''). (Bug #17313)

  • Following a failed attempt to add an index to an ARCHIVE table, it was no longer possible to drop the database in which the table had been created. (Bug #17310)

  • Assignments of values to variables of type TEXT were handled incorrectly in stored routines. (Bug #17225)

  • Views created from prepared statements inside of stored procedures were created with a definition that included both SQL_CACHE and SQL_NO_CACHE. (Bug #17203)

  • mysqldump wrote an extra pair of DROP DATABASE and CREATE DATABASE statements if run with the --add-drop-database option and the database contained views. (Bug #17201)

  • A Table ... doesn't exist error could occur for statements that called a function defined in another database. (Bug #17199)

  • A prepared statement that altered partitioned table within a stored procedure failed with the error Unknown prepared statement handler. (Bug #17138)

  • myisam_ftdump failed when trying to open a MyISAM index file that you did not have write permissions to access, even though the command would only be reading from the file. (Bug #17122)

  • ALTER TABLE on a table created prior to 5.0.3 would cause table corruption if the ALTER TABLE did one of the following:

    • Change the default value of a column.

    • Change the table comment.

    • Change the table password.

    (Bug #17001)

  • For statements that have a DEFINER clause such as CREATE TRIGGER or CREATE VIEW, long user names or host names could cause a buffer overflow. (Bug #16899)

  • The PASSWORD() function returned invalid results when used in some UNION queries. (Bug #16881)

  • ORDER BY RAND() LIMIT 1 always set a user variable to the last possible value from the table. (Bug #16861)

  • Queries containing a subquery that used aggregate functions could return incorrect results. (Bug #16792)

  • Concatenating the results of multiple constant subselects produced incorrect results. (Bug #16716)

  • When performing a GROUP_CONCAT(), the server transformed BLOB columns VARCHAR columns, which could cause erroneous results when using Connector/J and possibly other MySQL APIs. (Bug #16712)

  • Stored procedures did not use the character set defined for the database in which they were created. (Bug #16676)

  • Some server errors were not reported to the client, causing both to try to read from the connection until a hang or crash resulted. (Bug #16581)

  • If the files for an open table were removed at the OS level (external to the server), the server exited with an assertion failure. (Bug #16532)

  • On Windows, a definition for mysql_set_server_option() was missing from the C client library. (Bug #16513)

  • mysqlcheck tried to check views instead of ignoring them. (Bug #16502)

  • Updating a column of a FEDERATED table to NULL sometimes failed. (Bug #16494)

  • For SELECT ... FOR UPDATE statements that used DISTINCT or GROUP BY over all key parts of a unique index (or primary key), the optimizer unnecessarily created a temporary table, thus losing the linkage to the underlying unique index values. This caused a Result set not updatable error. (The temporary table is unnecessary because under these circumstances the distinct or grouped columns must also be unique.) (Bug #16458)

  • A scheduled event that took longer to execute than the length of time scheduled between successive executions could skip executions. For example, an event defined with EVERY 1 SECOND—but which required longer than 1 second to complete—might be executed only once every 2 seconds. (Bug #16417)

  • A subselect used in the ON SCHEDULE clause of a CREATE EVENT or ALTER EVENT statement caused the server to crash, rather than producing an error as expected. (Bug #16394)

  • Grant table modifications sometimes did not refresh the in-memory tables if the host name was '' or not specified. (Bug #16297)

  • A subquery in the WHERE clause of the outer query and using IN and GROUP BY returned an incorrect result. (Bug #16255)

  • A query could produce different results with and without and index, if the WHERE clause contained a range condition that used an invalid DATETIME constant. (Bug #16249)

  • TIMESTAMPDIFF() examined only the date and ignored the time when the requested difference unit was months or quarters. (Bug #16226)

  • Using tables from MySQL 4.x in MySQL 5.x, in particular those with VARCHAR fields and using INSERT DELAYED to update data in the table would result in either data corruption or a server crash. (Bug #16218, Bug #17294, Bug #16611)

  • The value returned by a stored function returning a string value was not of the declared character set. (Bug #16211)

  • The index_merge/Intersection optimizer could experience a memory overrun when the number of table columns covered by an index was sufficiently large, possibly resulting in a server crash. (Bug #16201)

  • Row equalities (such as WHERE (a,b) = (c,d) were not taken into account by the optimizer, resulting in slow query execution. Now they are treated as conjunctions of equalities between row elements. (Bug #16081)

  • Some memory leaks in the libmysqld embedded server were corrected. (Bug #16017)

  • Values greater than 2 gigabytes used in the VALUES LESS THAN clause of a table partitioned by RANGE were treated as negative numbers. (Bug #16002)

  • A CREATE TABLE that produced a The PARTITION function returns the wrong type error also caused an Incorrect information in file to be printed to STDERR, and a junk file to be left in the database directory. (Bug #16000)

  • The max_length metadata value for columns created from CONCAT() could be incorrect when the collation of an argument differed from the collation of the CONCAT() itself. In some contexts such as UNION, this could lead to truncation of the column contents. (Bug #15962)

  • When NOW() was used in a BETWEEN clause of the definition for a view, it was replaced with a constant in the view. (Bug #15950)

  • The server's handling of the number of partitions or subpartitions specified in a PARTITIONS or SUBPARTITIONS clause was changed. Beginning with this release, the number of partitions must:

    • be a positive, nonzero integer

    • not have any leading zeros

    • not be an expression

    Also beginning with this version, no attempt is made to convert, truncate, or evaluate a PARTITIONS or SUBPARTITIONS value; instead, the CREATE TABLE or ALTER TABLE statement containing the PARTITIONS or SUBPARTITIONS clause now fails with an appropriate error message. (Bug #15890)

  • Long multiple-row INSERT statements could take a very long time for some multibyte character sets. (Bug #15811)

  • The C API failed to return a status message when invoking a stored procedure. (Bug #15752)

  • mysqlimport sends a set @@character_set_database=binary statement to the server, but this is not understood by pre-4.1 servers. Now mysqlimport encloses the statement within a /*!40101 ... */ comment so that old servers will ignore it. (Bug #15690)

  • DELETE with LEFT JOIN for InnoDB tables could crash the server if innodb_locks_unsafe_for_binlog was enabled. (Bug #15650)

  • BIN(), OCT(), and CONV() did not work with BIT values. (Bug #15583)

  • Nested natural joins worked executed correctly when executed as a nonprepared statement could fail with an Unknown column 'col_name' in 'field list' error when executed as a prepared statement, due to a name resolution problem. (Bug #15355)

  • The MD5() and SHA() functions treat their arguments as case-sensitive strings. But when they are compared, their arguments were compared as case-insensitive strings, which leads to two function calls with different arguments (and thus different results) compared as being identical. This can lead to a wrong decision made in the range optimizer and thus to an incorrect result set. (Bug #15351)

  • Invalid escape sequences in option files caused MySQL programs that read them to abort. (Bug #15328)

  • SHOW GRANTS FOR CURRENT_USER did not return definer grants when executed in DEFINER context (such as within a stored procedure defined with SQL SECURITY DEFINER), it returned the invoker grants. (Bug #15298)

  • The --collation-server server option was being ignored. With the fix, if you choose a nondefault character set with --character-set-server, you should also use --collation-server to specify the collation. (Bug #15276)

  • Re-executing a stored procedure with a complex stored procedure cursor query could lead to a server crash. (Bug #15217)

  • The server crashed if it tried to access a CSV table for which the data file had been removed. (Bug #15205)

  • When using tables containing VARCHAR columns created under MySQL 4.1 with a 5.0 or later server, for some queries the metadata sent to the client could have an empty column name. (Bug #14897)

  • An invalid comparison between keys with index prefixes over multibyte character fields could lead to incorrect result sets if the selected query execution plan used a range scan by an index prefix over a UTF8 character field. This also caused incorrect results under similar circumstances with many other character sets. (Bug #14896)

  • When setting a column to its implicit default value as the result of inserting a NULL into a NOT NULL column as part of a multi-row insert or LOAD DATA operation, the server returned a misleading warning message. (Bug #14770)

  • For BOOLEAN mode full-text searches on nonindexed columns, NULL rows generated by a LEFT JOIN caused incorrect query results. (Bug #14708, Bug #25637)

  • The parser rejected queries that selected from a table twice using a UNION within a subquery. The parser now supports arbitrary subquery, join, and parenthesis operations within EXISTS subqueries. A limitation still exists for scalar subqueries: If the subquery contains UNION, the first SELECT of the UNION cannot be within parentheses. For example, SELECT (SELECT a FROM t1 UNION SELECT b FROM t2) will work, but SELECT ((SELECT a FROM t1) UNION (SELECT b FROM t2)) will not. (Bug #14654)

  • Using SELECT and a table join while running a concurrent INSERT operation would join incorrect rows. (Bug #14400)

  • Prepared statements caused general log and server memory corruption. (Bug #14346)

  • The binary log lacked character set information for table names when dropping temporary tables. (Bug #14157)

  • libmysqld produced some warnings to stderr which could not be silenced. These warnings now are suppressed. (Bug #13717)

  • RPM packages had spurious dependencies on Perl modules and other programs. (Bug #13634)

  • InnoDB locking was improved by removing a gap lock for the case that you try to delete the same row twice within a transaction. (Bug #13544)

  • REPLACE statements caused activation of UPDATE triggers, not DELETE and INSERT triggers. (Bug #13479)

  • The source distribution failed to compile when configured with the --without-geometry option. (Bug #12991)

  • With settings of read_buffer_size >= 2G and read_rnd_buffer_size >=2G, LOAD DATA INFILE failed with no error message or caused a server crash for files larger than 2GB. (Bug #12982)

  • A B-TREE index on a MEMORY table erroneously reported duplicate entry error for multiple NULL values. (Bug #12873)

  • Instance Manager didn't close the client socket file when starting a new mysqld instance. mysqld inherited the socket, causing clients connected to Instance Manager to hang. (Bug #12751)

  • On Mac OS X, zero-byte read() or write() calls to an SMB-mounted file system could return a nonstandard return value, leading to data corruption. Now such calls are avoided. (Bug #12620)

  • DATE_ADD() and DATE_SUB() returned NULL when the result date was on the day '9999-12-31'. (Bug #12356)

  • For very complex SELECT statements could create temporary tables that were too large, and for which the temporary files were not removed, causing subsequent queries to fail. (Bug #11824)

  • After an INSERT ... ON DUPLICATE KEY UPDATE statement that updated an existing row, LAST_INSERT_ID() could return a value not in the table. (Bug #11460)

  • USE did not refresh database privileges when employed to re-select the current database. (Bug #10979)

  • The server returns a more informative error message when it attempts to open a MERGE table that has been defined to use non-MyISAM tables. (Bug #10974)

  • The type of the value returned by the VARIANCE() function varied according to the type of the input value. The function should always return a DOUBLE value. (Bug #10966)

  • The same trigger error message was produced under two conditions: The trigger duplicated an existing trigger name, or the trigger duplicated an existing combination of action and event. Now different messages are produced for the two conditions so as to be more informative. (Bug #10946)

  • A locking safety check in InnoDB reported a spurious error stored_select_lock_type is 0 inside ::start_stmt() for INSERT ... SELECT statements in innodb_locks_unsafe_for_binlog mode. The safety check was removed. (Bug #10746)

  • CREATE USER did not respect the 16-character user name limit. (Bug #10668)

  • A server or network failure with an open client connection would cause the client to hang even though the server was no longer available.

    As a result of this change, the MYSQL_OPT_READ_TIMEOUT and MYSQL_OPT_WRITE_TIMEOUT options for mysql_options() now apply to TCP/IP connections on all platforms. Previously, they applied only to Windows. (Bug #9678)

  • INSERT INTO ... SELECT ... LIMIT 1 could be slow because the LIMIT was ignored when selecting candidate rows. (Bug #9676)

  • The optimizer could produce an incorrect result after AND with collations such as latin1_german2_ci, utf8_czech_ci, and utf8_lithuanian_ci. (Bug #9509)

  • The DATA DIRECTORY table option did not work for TEMPORARY tables. (Bug #8706)

  • A stored procedure with a CONTINUE handler that encountered an error continued to execute a statement that caused an error, rather with the next statement following the one that caused the error. (Bug #8153)

  • For ODBC compatibility, MySQL supports use of WHERE col_name IS NULL for DATE or DATETIME columns that are NOT NULL, to permit column values of '0000-00-00' or '0000-00-00 00:00:00' to be selected. However, this was not working for WHERE clauses in DELETE statements. (Bug #8143)

  • A user variable set to a value selected from an unsigned column was stored as a signed value. (Bug #7498)

  • The --with-collation option was not honored for client connections. (Bug #7192)

  • With TRADITIONAL SQL mode, assignment of out-of-bound values and rounding of assigned values was done correctly, but assignment of the same numbers represented as strings sometimes was handled differently. (Bug #6147)

  • On an INSERT into an updatable but noninsertable view, an error message was issued stating that the view was not updatable. Now the message says the view is not insertable-into. (Bug #5505)

  • EXPLAIN sometimes returned an incorrect select_type for a SELECT from a view, compared to the select_type for the equivalent SELECT from the base table. (Bug #5500)

  • Some queries that used ORDER BY and LIMIT performed quickly in MySQL 3.23, but slowly in MySQL 4.x/5.x due to an optimizer problem. (Bug #4981)

  • Incorporated portability fixes into the definition of __attribute__ in my_global.h. (Bug #2717)

  • User-created tables having a name beginning with #sql were not visible to SHOW TABLES and could collide with internal temporary table names. Now they are not hidden and do not collide. (Bug #1405)