MySQL 5.1.8 Changelog

This was an internal release only, and no binaries were published.

  • Functionality Added or Changed

  • Bugs Fixed

Functionality Added or Changed

  • Incompatible Change; Cluster Replication: The cluster_replication database has been renamed to cluster. This will effect replication between MySQL Clusters where one cluster is running MySQL 5.1.8 or later, and the other is running MySQL 5.1.7 or earlier. See MySQL Cluster Replication, and especially MySQL Cluster Replication Schema and Tables.

  • Incompatible Change: The semantics of ALTER TABLE t ENGINE=X; for partitioned tables is changed, and now means that the storage engine used for table t is changed to X.

    The previous statement formerly (prior to MySQL 5.1.8) meant that all partitioning was removed from the table. To remove the partitioning of a table, the syntax ALTER TABLE t REMOVE PARTITIONING; is introduced. The REMOVE PARTITIONING option can be used in combination with existing ALTER TABLE options such as those employed for adding or dropping columns or indexes. (Bug #17754)

  • Incompatible Change: For purposes of determining placement, RANGE partitioning now treats NULL as less than any other value. (Formerly, NULL was treated as equal to zero.) See How MySQL Partitioning Handles NULL. (Bug #15447)

  • MySQL Cluster: The stability of CREATE and DROP operations on NDB tables containing BLOB columns has been improved. (Bug #17761)

  • MySQL Cluster: The NDBCLUSTER storage engine now supports INSERT IGNORE and REPLACE statements. Previously, these statements failed with an error. (Bug #17431)

  • Replication: Triggers from older servers that included no DEFINER clause in the trigger definition now execute with the privileges of the invoker (which on the slave is the slave SQL thread). Previously, replication slaves could not replicate such triggers. (Bug #16266)

  • Replication: A slave server may now switch the replication format automatically. This happens when the server is running in either STATEMENT or MIXED format and encounters a row in the binary log that is written in ROW logging format. In that case, the slave switches to row-based replication temporarily for that event, and switches back to the previous format afterward.

  • Replication: The binlog_format system variable now is dynamic and can be changed at runtime, as described in Replication Formats.

  • Replication: The binlog_format system variable now can be set to a third format, MIXED, as described in Replication Formats.

  • Disk Data: You can now have only one log file group at any one time. See CREATE LOGFILE GROUP Syntax. (Bug #16386)

  • Builds for Windows, Linux, and Unix (except AIX) platforms now have SSL support enabled, in the server as well as in the client libraries. Because part of the SSL code is written in C++, this does introduce dependencies on the system's C++ runtime libraries in several cases, depending on compiler specifics. (Bug #18195)

  • Partition pruning was made more stable, particularly in cases involving queries using tests for NULL values in the WHERE clause against subpartitioned tables which were partitioned by LIST( some_function(col1, ... ,colN) ). (Bug #17891)

  • The output of SHOW CREATE EVENT no longer qualifies the event name with the name of the schem to which the event belongs. (Bug #17714)

  • The following deprecated constructs now generate warnings, and they are removed as of MySQL 5.5. Where alternatives are shown, applications should be updated to use them. Existing applications that depend on the deprecated constructs should be converted to make use of the current equivalents as soon as possible. You should not employ them in new applications.

    • The log_bin_trust_routine_creators system variable (use log_bin_trust_function_creators).

    • The table_type system variable (use storage_engine).

    • The TYPE table option to specify the storage engine for CREATE TABLE or ALTER TABLE (use ENGINE).

    • The SHOW TABLE TYPES SQL statement (use SHOW ENGINES).


    • The SHOW PLUGIN SQL statement (use SHOW PLUGINS).

    • The LOAD TABLE ... FROM MASTER and LOAD DATA FROM MASTER SQL statements (use mysqldump or mysqlhotcopy to dump tables and mysql to reload dump files).

    • The BACKUP TABLE and RESTORE TABLE SQL statements (use mysqldump or mysqlhotcopy to dump tables and mysql to reload dump files).

    • TIMESTAMP(N) data type: The ability to specify a display width of N (use without N).

    • The --master-xxx server options to set replication parameters (use the CHANGE MASTER TO statement instead): --master-host, --master-user, --master-password , --master-port, --master-connect-retry, --master-ssl, --master-ssl-ca, --master-ssl-capath, --master-ssl-cert, --master-ssl-cipher, --master-ssl-key.

    In addition, SHOW BDB LOGS and SHOW LOGS are removed as of MySQL 5.1.12.


    TYPE vs ENGINE In order not to break legacy applications, support for TYPE = engine_name —deprecated since MySQL 4.0—has been restored, but now generates a warning.

    Beginning with MySQL 5.5, TYPE = engine_name will no longer be available and will produce a syntax error.

    You should not use TYPE in any new applications, and you should immediately begin conversion of existing applications to use the ENGINE = engine_name syntax instead.

    (Bug #17501)

  • Temporary tables may no longer be partitioned. (Bug #17497)

  • More specific error messages are now given when attempting to create an excessive number of partitions or subpartitions. (Previously, no distinction was made between an excessive number of partitions and an excessive number of subpartitions.) (Bug #17393)

  • Added the --events option to mysqldump to enable events to be included in the dump output. (Bug #16853)

  • For an event having no STARTS time specified when it was created, the mysql.event table's start column now displays the creation time rather than NULL.

    In addition, both the SHOW EVENTS statement's Starts column and the STARTS column of the INFORMATION_SCHEMA.EVENTS table are now empty rather than NULL when STARTS was not used in the CREATE EVENT statement. (Bug #16537)

  • Event names are now case-insensitive. That is (for example), you cannot have events with the names Myevent and MyEvent belonging to the same database and definer. (Bug #16415)

  • Description of the EVENT privilege has been changed to To create, alter, drop, and execute events. (Bug #16412)

  • MICROSECOND intervals are no longer permitted for events. (Bug #16411)

  • Events no longer support times past the end of the Unix epoch. (Formerly, such dates were interpreted as being at the beginning of the Unix epoch.) (Bug #16396)

  • The XPath last() function is now implemented for use with ExtractValue(). (Bug #16318)

  • The ExtractValue() function with contains() now uses the SQL collation in making comparisons. Previously, comparisons were always binary (that is, case-sensitive). (Bug #16316)

  • Names of subpartitions must now be unique for an entire table, and not merely within the same partition. (Bug #15408)

  • Added the --sysdate-is-now option to mysqld to enable SYSDATE() to be treated as an alias for NOW(). See Date and Time Functions. (Bug #15101)

  • mysqldump now surrounds the DEFINER, SQL SECURITY DEFINER and WITH CHECK OPTION clauses of a CREATE VIEW statement with "not in version" comments to prevent errors in earlier versions of MySQL. (Bug #14871)

  • The mysql_ping() function will now retry if the reconnect flag is set and error CR_SERVER_LOST is encountered during the first attempt to ping the server. (Bug #14057)

  • The mysqltest utility now converts all CR/LF combinations to LF to enable test cases intended for Windows to work properly on UNIX-like systems. (Bug #13809)

  • The output from SHOW CREATE TABLE is more consistent about using uppercase for keywords. Data types still are in lowercase. (Bug #10460)

  • The client API now attempts to reconnect using TCP/IP if the reconnect flag is set, as is the case with sockets. (Bug #2845)

  • The syntax for CREATE PROCEDURE and CREATE FUNCTION statements now includes a DEFINER clause. The DEFINER value specifies the security context to be used when checking access privileges at routine invocation time if the routine has the SQL SECURITY DEFINER characteristic. See CREATE PROCEDURE and CREATE FUNCTION Syntax, for more information.

    When mysqldump is invoked with the --routines option, it now dumps the DEFINER value for stored routines.

Bugs Fixed

  • MySQL Cluster; Partitioning: Trying to insert a value into a nonexistent LIST partition of an NDB table would cause the server to crash.


    Beginning with MySQL 5.1.12, user-defined partitioning types other than KEY or LINEAR KEY were disabled for NDB tables.

    (Bug #17763)

  • MySQL Cluster; Partitioning: A repeated SELECT on a partitioned table that used the NDB storage engine could cause the server to crash. (Bug #17390)

  • MySQL Cluster; Replication: AUTO_INCREMENT values were not propagated correctly in statement-based replication. (Bug #18208)

  • MySQL Cluster; Replication: Memory was mistakenly freed for NdbRecAttr objects during addition of an index while replicating the cluster, which could cause mysqld to crash. (Bug #18106)

  • MySQL Cluster; Replication: Row-based replication could fail with tables using VARCHAR columns for primary keys and having BLOB columns. (Bug #18067)

  • MySQL Cluster; Replication: (Replication): The binary log on the secondary master was not being set up correctly following a table rename. (Bug #17838)

  • MySQL Cluster: Attempting to restart a node with dropped events still pending failed. (Bug #18491)

  • MySQL Cluster: Two mysqld processes starting at the same time could cause a race condition. (Bug #18472)

  • MySQL Cluster: A timeout in the handling of an ABORT condition with more that 32 operations could yield a node failure. (Bug #18414)

  • MySQL Cluster: Two mysqld processes did not synchronize DROP TABLE binary log events correctly. (Bug #18395)

  • MySQL Cluster: A node restart immediately following a CREATE TABLE failed.


    This fix supports 2-node Clusters only.

    (Bug #18385)

  • MySQL Cluster: In event of a node failure during a rollback, a false lock could be established on the backup for that node, which lock could not be removed without restarting the node. (Bug #18352)

  • MySQL Cluster: When multiple node restarts were attempted without permitting each restart to complete, the error message returned was Array index out of bounds rather than Too many crashed replicas. (Bug #18349)

  • MySQL Cluster: The cluster created a crashed replica of a table having an ordered index—or when logging was not enabled, of a table having a table or unique index—leading to a crash of the cluster following 8 successive restarts. (Bug #18298)

  • MySQL Cluster: Issuing a DROP LOGFILE GROUP statement would cause ndbd processes to crash if MySQL had been compiled with gcc4. (Bug #18295)

  • MySQL Cluster: When replacing a failed master node, the replacement node could cause the cluster to crash from a buffer overflow if it had an excessively large amount of data to write to the cluster log. (Bug #18118)

  • MySQL Cluster: Insufficient StringBuffer memory when attempting to create a trigger caused the server to crash. (Bug #18101)

  • MySQL Cluster: Variable-length columns used as primary keys were not handled correctly. (Bug #18075)

  • MySQL Cluster: CREATE UNIQUE INDEX on a column containing nonunique data could cause one or more ndbd nodes to hang or crash. (Bug #18040)

  • MySQL Cluster: Node recovery of tables with VARCHAR columns using character sets was inconsistent, which could cause a number of issues, including the data nodes failing to restart and ALTER TABLE statements to hang. (Bug #18026)

  • MySQL Cluster: A SELECT ... ORDER BY query on an explicitly partitioned Cluster table with no explicit indexes would crash the server. (Bug #17899)

  • MySQL Cluster: ALTER TABLE ... ADD INDEX failed with ERROR 756: Index on disk column is not supported when run against a Disk Data table having a primary key. (Bug #17888)

  • MySQL Cluster: In some cases, a single ndbd node failed following a system restart. (Bug #17854)

  • MySQL Cluster: A simultaneous RENAME of several tables was logged multiple times. (Bug #17827)

  • MySQL Cluster: Trying to perform a DELETE from an NDB table following a LOCK TABLES caused the ndbd processes to hang. (Bug #17812)

  • MySQL Cluster: Trying to update very large partitioned tables using the NDB storage engine sometimes caused the server to crash. (Bug #17806, Bug #16385)

  • MySQL Cluster: Using ALTER TABLE ... ADD PARTITION on a table partitioned by LIST would cause the client to hang. (Bug #17701)

  • MySQL Cluster: With a single replica, transactions waiting in the log synchronization queue were not being restarted, causing them to be aborted. (Bug #17536)

  • MySQL Cluster: ALTER TABLE on a partitioned NDB table could cause the server to crash. (Bug #17499)

  • MySQL Cluster: DELETE operations on NDB tables could cause memory leaks. (Bug #16874)

  • MySQL Cluster: Some query cache statistics were not always correctly reported for Cluster tables. (Bug #16795)

  • MySQL Cluster: Restarting nodes were permitted to start and join the cluster too early. (Bug #16772)

  • MySQL Cluster: UNDO_BUFFER_SIZE was limited to 17 MB. (Bug #16657, Bug #17890)

  • MySQL Cluster: Inserting and deleting BLOB column values while a backup was in process could cause data nodes to shut down. (Bug #14028)

  • Replication: Replication of data stored in a partitioned table would cause slave servers to issue a assertion and terminate. (Bug #18436)

  • Replication: Use of TRUNCATE TABLE for a TEMPORARY table on a master server was propagated to slaves properly, but slaves did not decrement the Slave_open_temp_tables counter properly. (Bug #17137)

  • Replication: Slave servers would retry the execution of an SQL statement an infinite number of times, ignoring the value SLAVE_TRANSACTION_RETRIES when using the NDB engine. (Bug #16228)

  • Replication: The DEFINER value for stored routines was not replicated. (Bug #15963)

  • Disk Data: CREATE UNIQUE INDEX failed with Error 4243: Index not found. (Bug #18039)

  • Disk Data: It was not possible to create more than 9 tablespaces. (Bug #16913)

  • A SELECT ... ORDER BY ... from a view defined using a function could crash the server. An example of such a view is CREATE VIEW v1 AS SELECT SQRT(c1) FROM t1. (Bug #18386)

  • The server would crash when SHOW STATUS was called on a server linked with yaSSL. (Bug #18310)

  • The ExtractValue() function did not return an error when passed an invalid XPath string. (Bug #18172)

  • Using the position() function in the XPath argument to ExtractValue() crashed the server. (Bug #18171)

  • REPAIR TABLE, OPTIMIZE TABLE, and ALTER TABLE operations on transactional tables (or on tables of any type on Windows) could corrupt triggers associated with those tables. (Bug #18153)

  • Connecting to a server with a UCS2 default character set with a client using a non-UCS2 character set crashed the server. (Bug #18004)

  • Using ALTER TABLE ... REBUILD PARTITION without specifying the name of the partition caused the server to crash, rather than reporting a syntax error. (Bug #17947)

  • ALTER TABLE ... REBUILD PARTITION with no partition name specified would crash the server. (Bug #17940)

  • A query with a WHERE date_column > date_value condition failed on a table partitioned by RANGE. (Bug #17894)

  • Renaming and adding a new column to a partitioned table in the same ALTER TABLE statement caused the server to crash. (Bug #17772)

  • MyISAM: Performing a bulk insert on a table referenced by a trigger would crash the table. (Bug #17764)

  • Using triggers with partitioned InnoDB tables led to incorrect results. (Bug #17744)

  • Updating a view that filters certain rows to set a filtered out row to be included in the table caused infinite loop. For example, if the view has a WHERE clause of salary > 100 then issuing an UPDATE statement of SET salary = 200 WHERE id = 10, caused an infinite loop. (Bug #17726)

  • A security enhancement in Visual Studio 8 could cause a MySQL debug server compiled with it to hang when running SELECT queries against partitioned tables. (Bug #17722)

  • The EXAMPLE storage engine did not work on Windows. (Bug #17721)

  • ALTER TABLE ... REORGANIZE PARTITION failed with Error on rename of filename ... on Windows. (Bug #17720)

  • The MySQL server could crash with out of memory errors when performing aggregate functions on a DECIMAL column. (Bug #17602)

  • NULL values were written to the mysql.slow_log table incorrectly. (Bug #17600)

  • mysql_fix_privilege_tables did not create the mysql.plugin table. (Bug #17568)

  • Improper checking of binary log statements could result in a server crash. (Bug #17457)

  • Repeated invocations of a stored procedure containing a SHOW CREATE EVENT statement would result in the error Packets out of order. (Bug #17403)

  • For FEDERATED tables, a SELECT statement with an ORDER BY clause did not return rows in the proper order. (Bug #17377)

  • SELECT ... WHERE column LIKE 'A%', when column had a key and used the latin2_czech_cs collation, caused the wrong number of rows to be returned. (Bug #17374)

  • Calling CREATE TABLE or ALTER TABLE twice on a partitioned table in a stored procedure or a prepared statement resulted in errors and sometimes server crashes. (Bug #17290)

  • Checks for permissions on database operations could be performed in a case-insensitive manner (a user with permissions on database MYDATABASE could by accident get permissions on database myDataBase), if the privilege data were still cached from a previous check. (Bug #17279)

  • Stored procedures that call UDFs and pass local string variables caused server crashes. (Bug #17261)

  • A problem with NULLs and interval mapping sometimes caused incorrect results or crashes when trying to use less-than searches on partitioned tables. (Bug #17173)

  • Attempting to add a new partition to a table partitioned by a unique key would cause an Out of memory error. (Bug #17169)

  • Creating a table with the same name as the mapped name of another table caused a server crash. For example, if MySQL maps the table name txu#P#p1 to txu@0023P@0023p1 on disk, creating another table named txu@0023P@0023p1 crashed the server. (Bug #17142)

  • Trying to add a partition to a table having subpartitions could crash the server. (Bug #17140)

  • Attempting to use a conflicting VALUES clause in ALTER TABLE ... ADD PARTITION caused the server to crash. An example of such a conflicting clause would be that uses VALUES LESS THAN (constant) (which indicates a range) with a table that is partitioned by LIST. (Bug #17127)

  • A failed ALTER TABLE ... ADD PRIMARY KEY on a partitioned table would result in bad table metadata and could possibly crash the server. (Bug #17097)

  • Stored routine names longer than 64 characters were silently truncated. Now the limit is properly enforced and an error occurs. (Bug #17015)

  • Cursors in stored routines could cause a server crash. (Bug #16887)

  • Triggers created without BEGIN and END clauses resulted in You have an error in your SQL syntax errors when dumping and replaying a binary log. (Bug #16878)

  • Using ALTER TABLE to increase the length of a BINARY(M) column caused column values to be padded with spaces rather than 0x00 bytes. (Bug #16857)

  • ALTER TABLE ... COALESCE PARTITION failed with an Out of Memory error. (Bug #16810)

  • ALTER TABLE ... ADD COLUMN ... AFTER ... failed when used on partitioned tables. (Bug #16806)

  • If the server was started with the --skip-grant-tables option, it was impossible to create a trigger or a view without explicitly specifying a DEFINER clause. (Bug #16777)

  • In a highly concurrent environment, a server crash or deadlock could result from execution of a statement that used stored functions or activated triggers coincident with alteration of the tables used by these functions or triggers. (Bug #16593)

  • Clients compiled from source with the --without-readline did not save command history from session to session. (Bug #16557)

  • Using ORDER BY intvar within a stored procedure (where intvar is an integer variable or expression) would crash the server.


    The use of an integer i in an ORDER BY i clause for sorting the result by the i th column is deprecated (and nonstandard). It should not be used in new applications. See SELECT Syntax.

    (Bug #16474)

  • Slow queries executed by scheduled events were not being written to the slow query log. (Bug #16426)

  • INSERT statements executed by scheduled events were not written to the general log. (Bug #16413)

  • Repeated invocations of a stored procedure containing a CREATE EVENT or ALTER EVENT statement would crash the server. (Bug #16408)

  • Names of subpartitions were not displayed in the output of SHOW CREATE TABLE. (Bug #16370)

  • The ExtractValue() function would not accept expressions which matched element names containing an underscore character. (Bug #16320)

  • The self() XPath function was not handled correctly by ExtractValue(). (Bug #16315)

  • The ExtractValue() function permitted the use of the ! character in identifiers by ignoring the illegal character. This is now correctly reported as a syntax error. (Bug #16313)

  • A memory leak caused warnings on slaves for certain statements that executed without warning on the master. (Bug #16175)

  • No error was reported when subpartitions were defined for a nonsubpartitioned table. (Bug #15961)

  • Character set conversion of string constants for UNION of constant and table column was not done when it was safe to do so. (Bug #15949)

  • The mysql_close() C API function leaked handles for shared-memory connections on Windows. (Bug #15846)

  • A SELECT using a function against a nested view would crash the server. (Bug #15683)

  • Setting up subpartitions on at least one but not all the partitions of a partitioned table caused the server to crash. (Bug #15407)

  • During conversion from one character set to ucs2, multibyte characters with no ucs2 equivalent were converted to multiple characters, rather than to 0x003F QUESTION MARK. (Bug #15375)

  • CREATE TABLE ... PARTITION ... AS SELECT ... would cause the server to crash. (Bug #15336)

  • When attempting to insert a 0 into a LIST-partitioned table that had no value-list containing 0, no error was reported. (Bug #15253)

  • SELECT COUNT(*) for a MyISAM table could return different results depending on whether an index was used. (Bug #14980)

  • Stored routines that contained only a single statement were not written properly to the dumpfile when using mysqldump. (Bug #14857)

  • Execution of a stored function or trigger which inserted data into a table while running concurrent selects on the same table could result in storing incorrect data in the query cache. (Bug #14767)

  • Naming a partition using the characters Ç or ç (c-cedilla; Unicode 00C7 or 00E7) made unreadable the table containing the partition. (Bug #14527)

  • Searches on indexed columns of partitioned tables failed to find all matching rows following updates of the indexed columns. (Bug #14526)

  • Creating a partition which depends on an expression containing a column using the UTF8 character set would cause the server to crash. (Bug #14367)

  • On Linux, creation of table partitions failed within a stored procedure. (Bug #14363)

  • Invoking more than once a prepared statement that creates a partitioned table would crash the server. (Bug #14350)

  • The RENAME TABLE statement did not move triggers to the new table. (Bug #13525)

  • The server would execute stored routines that had a nonexistent definer. (Bug #13198)

  • The length of a VARCHAR() column that used the utf8 character set would increase each time the table was re-created in a stored procedure or prepared statement, eventually causing the CREATE TABLE statement to fail. (Bug #13134)

  • Loading of UDFs in a statically linked MySQL caused a server crash. UDF loading is now blocked if the MySQL server is statically linked. (Bug #11835)

  • Setting the myisam_repair_threads system variable to a value larger than 1 could cause corruption of large MyISAM tables. (Bug #11527)

  • Issuing GRANT EXECUTE on a procedure would display any warnings related to the creation of the procedure. (Bug #7787)