Released on 13 Jul 2007
MySQL 5.0.46 Changelog

This is a Monthly Rapid Update release of the MySQL Enterprise Server 5.0.

This section documents all changes and bugfixes that have been applied since the last MySQL Enterprise Server release (5.0.44). 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

  • MySQL Cluster: auto_increment_increment and auto_increment_offset are now supported for NDB tables. (Bug #26342)

  • Replication: The sql_mode, foreign_key_checks, unique_checks, character set/collations, and sql_auto_is_null session variables are written to the binary log and honored during replication. See The Binary Log.

  • If a MERGE table cannot be opened or used because of a problem with an underlying table, CHECK TABLE now displays information about which table caused the problem. (Bug #26976)

Bugs Fixed

  • MySQL Cluster: When restarting a data node, queries could hang during that node's start phase 5, and continue only after the node had entered phase 6. (Bug #29364)

  • MySQL Cluster: Replica redo logs were inconsistently handled during a system restart. (Bug #29354)

  • MySQL Cluster: The management client's response to START BACKUP WAIT COMPLETED did not include the backup ID. (Bug #27640)

  • Replication: DROP USER statements that named multiple users, only some of which could be dropped, were replicated incorrectly. (Bug #29030)

  • On the IBM i5 platform, the installation script in the .savf binaries unconditionally executed the mysql_install_db script. (Bug #30084)

  • gcov coverage-testing information was not written if the server crashed. (Bug #29543)

  • Corrupt data resulted from use of SELECT ... INTO OUTFILE 'file_name' FIELDS ENCLOSED BY 'c', where c is a digit or minus sign, followed by LOAD DATA INFILE 'file_name' FIELDS ENCLOSED BY 'c'. (Bug #29442)

  • Use of SHOW BINLOG EVENTS for a nonexistent log file followed by PURGE BINARY LOGS caused a server crash. (Bug #29420)

  • Assertion failure could occur for grouping queries that employed DECIMAL user variables with assignments to them. (Bug #29417)

  • For CAST(expr AS DECIMAL(M,D)), the limits of 65 and 30 on the precision (M) and scale (D) were not enforced. (Bug #29415)

  • Results for a select query that aliases the column names against a view could duplicate one column while omitting another. This bug could occur for a query over a multiple-table view that includes an ORDER BY clause in its definition. (Bug #29392)

  • mysqldump created a stray file when a given a too-long file name argument. (Bug #29361)

  • FULLTEXT indexes could be corrupted by certain gbk characters. (Bug #29299)

  • SELECT ... INTO OUTFILE followed by LOAD DATA could result in garbled characters when the FIELDS ENCLOSED BY clause named a delimiter of '0', 'b', 'n', 'r', 't', 'N', or 'Z' due to an interaction of character encoding and doubling for data values containing the enclosed-by character. (Bug #29294)

  • Sort order of the collation wasn't used when comparing trailing spaces. This could lead to incorrect comparison results, incorrectly created indexes, or incorrect result set order for queries that include an ORDER BY clause. (Bug #29261)

  • If an ENUM column contained '' as one of its members (represented with numeric value greater than 0), and the column contained error values (represented as 0 and displayed as ''), using ALTER TABLE to modify the column definition caused the 0 values to be given the numeric value of the nonzero '' member. (Bug #29251)

  • Calling mysql_options() after mysql_real_connect() could cause clients to crash. (Bug #29247)

  • CHECK TABLE for ARCHIVE tables could falsely report table corruption or cause a server crash. (Bug #29207)

  • Mixing binary and utf8 columns in a union caused field lengths to be calculated incorrectly, resulting in truncation. (Bug #29205)

  • AsText() could fail with a buffer overrun. (Bug #29166)

  • LOCK TABLES was not atomic when more than one InnoDB tables were locked. (Bug #29154)

  • A network structure was initialized incorrectly, leading to embedded server crashes. (Bug #29117)

  • An assertion failure occurred if a query contained a conjunctive predicate of the form view_column = constant in the WHERE clause and the GROUP BY clause contained a reference to a different view column. The fix also enables application of an optimization that was being skipped if a query contained a conjunctive predicate of the form view_column = constant in the WHERE clause and the GROUP BY clause contained a reference to the same view column. (Bug #29104)

  • If an INSERT INTO ... SELECT statement inserted into the same table that the SELECT retrieved from, and the SELECT included ORDER BY and LIMIT clauses, different data was inserted than the data produced by the SELECT executed by itself. (Bug #29095)

  • Queries that performed a lookup into a BINARY index containing key values ending with spaces caused an assertion failure for debug builds and incorrect results for nondebug builds. (Bug #29087)

  • The semantics of BIGINT depended on platform-specific characteristics. (Bug #29079)

  • If one of the queries in a UNION used the SQL_CACHE option and another query in the UNION contained a nondeterministic function, the result was still cached. For example, this query was incorrectly cached:


    (Bug #29053)

  • REPLACE, INSERT IGNORE, and UPDATE IGNORE did not work for FEDERATED tables. (Bug #29019)

  • Inserting into InnoDB tables and executing RESET MASTER in multiple threads cause assertion failure in debug server binaries. (Bug #28983)

  • For a ucs2 column, GROUP_CONCAT() did not convert separators to the result character set before inserting them, producing a result containing a mixture of two different character sets. (Bug #28925)

  • Queries using UDFs or stored functions were cached. (Bug #28921)

  • For a join with GROUP BY or ORDER BY and a view reference in the FROM list, the query metadata erroneously showed empty table aliases and database names for the view columns. (Bug #28898)

  • Non-utf8 characters could get mangled when stored in CSV tables. (Bug #28862)

  • ALTER VIEW is not supported as a prepared statement but was not being rejected. ALTER VIEW is now prohibited as a prepared statement or when called within stored routines. (Bug #28846)

  • In strict SQL mode, errors silently stopped the SQL thread even for errors named using the --slave-skip-errors option. (Bug #28839)

  • Runtime changes to the log_queries_not_using_indexes system variable were ignored. (Bug #28808)

  • Selecting a column not present in the selected-from table caused an extra error to be produced by SHOW ERRORS. (Bug #28677)

  • For a statement of the form CREATE t1 SELECT integer_constant, the server created the column using the DECIMAL data type for large negative values that are within the range of BIGINT. (Bug #28625)

  • When one thread attempts to lock two (or more) tables and another thread executes a statement that aborts these locks (such as REPAIR TABLE, OPTIMIZE TABLE, or CHECK TABLE), the thread might get a table object with an incorrect lock type in the table cache. The result is table corruption or a server crash. (Bug #28574)

  • mysqlbinlog --hexdump generated incorrect output due to omission of the # comment character for some comment lines. (Bug #28293)

  • The LOCATE() function returned NULL if any of its arguments evaluated to NULL. Likewise, the predicate, LOCATE(str,NULL) IS NULL, erroneously evaluated to FALSE. (Bug #27932)

  • The modification of a table by a partially completed multi-column update was not recorded in the binlog, rather than being marked by an event and a corresponding error code. (Bug #27716)

  • A stack overrun could occur when storing DATETIME values using repeated prepared statements. (Bug #27592)

  • Dropping a user-defined function could cause a server crash if the function was still in use by another thread. (Bug #27564)

  • Unsafe aliasing in the source caused a client library crash when compiled with gcc 4 at high optimization levels. (Bug #27383)

  • Index-based range reads could fail for comparisons that involved contraction characters (such as ch in Czech or ll in Spanish). (Bug #27345)

  • Aggregations in subqueries that refer to outer query columns were not always correctly referenced to the proper outer query. (Bug #27333)

  • Error returns from the time() system call were ignored. (Bug #27198)

  • Phantom reads could occur under InnoDB SERIALIZABLE isolation level. (Bug #27197)

  • The SUBSTRING() function returned the entire string instead of an empty string when it was called from a stored procedure and when the length parameter was specified by a variable with the value 0. (Bug #27130)

  • ALTER TABLE ... ENABLE KEYS could cause mysqld to crash when executed on a table containing on a MyISAM table containing billions of rows. (Bug #27029)

  • Binary content 0x00 in a BLOB column sometimes became 0x5C 0x00 following a dump and reload, which could cause problems with data using multibyte character sets such as GBK (Chinese). This was due to a problem with SELECT INTO OUTFILE whereby LOAD DATA later incorrectly interpreted 0x5C as the second byte of a multibyte sequence rather than as the SOLIDUS (\) character, used by MySQL as the escape character. (Bug #26711)

  • Index creation could corrupt the table definition in the .frm file: 1) A table with the maximum number of key segments and maximum length key name would have a corrupted .frm file, due to incorrect calculation of the total key length. 2) MyISAM would reject a table with the maximum number of keys and the maximum number of key segments in all keys. (It would permit one less than this total maximum.) Now MyISAM accepts a table defined with the maximum. (Bug #26642)

  • The index merge union access algorithm could produce incorrect results with InnoDB tables. The problem could also occur for queries that used DISTINCT. (Bug #25798)

  • Under ActiveState Perl, could kill itself when attempting to kill other processes. (Bug #25657)

  • A query with DISTINCT in the select list to which the loose-scan optimization for grouping queries was applied returned an incorrect result set when the query was used with the SQL_BIG_RESULT option. (Bug #25602)

  • For a multiple-row insert into a FEDERATED table that refers to a remote transactional table, if the insert failed for a row due to constraint failure, the remote table would contain a partial commit (the rows preceding the failed one) instead of rolling back the statement completely. This occurred because the rows were treated as individual inserts.

    Now FEDERATED performs bulk-insert handling such that multiple rows are sent to the remote table in a batch. This provides a performance improvement and enables the remote table to perform statement rollback properly should an error occur. This capability has the following limitations:

    • The size of the insert cannot exceed the maximum packet size between servers. If the insert exceeds this size, it is broken into multiple packets and the rollback problem can occur.

    • Bulk-insert handling does not occur for INSERT ... ON DUPLICATE KEY UPDATE.

    (Bug #25513)

  • The FEDERATED storage engine failed silently for INSERT ... ON DUPLICATE KEY UPDATE if a duplicate key violation occurred. FEDERATED does not support ON DUPLICATE KEY UPDATE, so now it correctly returns an ER_DUP_KEY error if a duplicate key violation occurs. (Bug #25511)

  • A too-long shared-memory-base-name value could cause a buffer overflow and crash the server or clients. (Bug #24924)

  • The server deducted some bytes from the key_cache_block_size option value and reduced it to the next lower 512 byte boundary. The resulting block size was not a power of two. Setting the key_cache_block_size system variable to a value that is not a power of two resulted in MyISAM table corruption. (Bug #23068, Bug #28478, Bug #25853)

  • SHOW BINLOG EVENTS displayed incorrect values of End_log_pos for events associated with transactional storage engines. (Bug #22540)

  • Under ActiveState Perl, would not run. (Bug #18415)

  • The server crashed when the size of an ARCHIVE table grew larger than 2GB. (Bug #15787)

  • On 64-bit Windows systems, the Config Wizard failed to complete the setup because 64-bit Windows does not resolve dynamic linking of the 64-bit libmysql.dll to a 32-bit application like the Config Wizard. (Bug #14649)

  • The server returned data from SHOW CREATE TABLE statement or a SELECT statement on an INFORMATION_SCHEMA table using the binary character set. (Bug #10491)