w3-tools.com - Free Webmaster Tools and Resources
 
w3-tools.com - Free Webmaster Tools and Resources
 Free Webmaster Tools and Resources

 



MySQL Manual

This manual is provided as a courtesy. It is not an official source. Please check mysql.com for updated information.

PHP Manual

PHP Manual

Appendix D. MySQL Change History

Table of Contents

D.1. Changes in release 5.0.x (Production)
D.1.1. Changes in release 5.0.20 (Not yet released)
D.1.2. Changes in release 5.0.19 (04 March 2006)
D.1.3. Changes in release 5.0.18 (21 December 2005)
D.1.4. Changes in release 5.0.17 (14 December 2005)
D.1.5. Changes in release 5.0.16 (10 November 2005)
D.1.6. Changes in release 5.0.15 (19 October 2005: Production)
D.1.7. Changes in release 5.0.14 (Not released)
D.1.8. Changes in release 5.0.13 (22 Sept 2005: Release Candidate)
D.1.9. Changes in release 5.0.12 (02 Sept 2005)
D.1.10. Changes in release 5.0.11 (06 Aug 2005)
D.1.11. Changes in release 5.0.10 (27 July 2005)
D.1.12. Changes in release 5.0.9 (15 July 2005)
D.1.13. Changes in release 5.0.8 (Not released)
D.1.14. Changes in release 5.0.7 (10 June 2005)
D.1.15. Changes in release 5.0.6 (26 May 2005)
D.1.16. Changes in release 5.0.5 (Not released)
D.1.17. Changes in release 5.0.4 (16 Apr 2005)
D.1.18. Changes in release 5.0.3 (23 Mar 2005: Beta)
D.1.19. Changes in release 5.0.2 (01 Dec 2004)
D.1.20. Changes in release 5.0.1 (27 Jul 2004)
D.1.21. Changes in release 5.0.0 (22 Dec 2003: Alpha)
D.2. Changes in MySQL Cluster
D.2.1. Changes in MySQL Cluster-5.0.7 (Not yet released)
D.2.2. Changes in MySQL Cluster-5.0.6 (26 May 2005)
D.2.3. Changes in MySQL Cluster-5.0.5 (Not released)
D.2.4. Changes in MySQL Cluster-5.0.4 (16 Apr 2005)
D.2.5. Changes in MySQL Cluster-5.0.3 (23 Mar 2005: Beta)
D.2.6. Changes in MySQL Cluster-5.0.1 (27 Jul 2004)
D.2.7. Changes in MySQL Cluster-4.1.13 (15 Jul 2005)
D.2.8. Changes in MySQL Cluster-4.1.12 (13 May 2005)
D.2.9. Changes in MySQL Cluster-4.1.11 (01 Apr 2005)
D.2.10. Changes in MySQL Cluster-4.1.10 (12 Feb 2005)
D.2.11. Changes in MySQL Cluster-4.1.9 (13 Jan 2005)
D.2.12. Changes in MySQL Cluster-4.1.8 (14 Dec 2004)
D.2.13. Changes in MySQL Cluster-4.1.7 (23 Oct 2004)
D.2.14. Changes in MySQL Cluster-4.1.6 (10 Oct 2004)
D.2.15. Changes in MySQL Cluster-4.1.5 (16 Sep 2004)
D.2.16. Changes in MySQL Cluster-4.1.4 (31 Aug 2004)
D.2.17. Changes in MySQL Cluster-4.1.3 (28 Jun 2004)
D.3. Changes in MyODBC
D.3.1. Changes in MyODBC 3.51.13
D.3.2. Changes in MyODBC 3.51.12
D.3.3. Changes in MyODBC 3.51.11

This appendix lists the changes from version to version in the MySQL source code through the latest version of MySQL 5.0, which is currently MySQL 5.0.19. Starting with MySQL 5.0, we began offering a new version of the Manual for each new series of MySQL releases (5.0, 5.1, and so on). For information about changes in previous release series of the MySQL database software, see the corresponding version of this Manual. For information about legacy versions of the MySQL software through the 4.1 series, see MySQL 3.23, 4.0, 4.1 Reference Manual.

We update this section as we add new features in the 5.0 series, so that everybody can follow the development process.

Note that we tend to update the manual at the same time we make changes to MySQL. If you find a recent version of MySQL listed here that you can't find on our download page (http://dev.mysql.com/downloads/), it means that the version has not yet been released.

The date mentioned with a release version is the date of the last BitKeeper ChangeSet on which the release was based, not the date when the packages were made available. The binaries are usually made available a few days after the date of the tagged ChangeSet, because building and testing all packages takes some time.

The manual included in the source and binary distributions may not be fully accurate when it comes to the release changelog entries, because the integration of the manual happens at build time. For the most up-to-date release changelog, please refer to the online version instead.

D.1. Changes in release 5.0.x (Production)

The following changelog shows what has been done in the 5.0 tree:

  • Basic support for read-only server side cursors. For information about using cursors within stored routines, see Section 17.2.9, “Cursors”. For information about using cursors from within the C API, see Section 22.2.7.3, “mysql_stmt_attr_set().

  • Basic support for (updatable) views. See, for example, Section 19.2, “CREATE VIEW Syntax”.

  • Basic support for stored procedures and functions (SQL:2003 style). See Chapter 17, Stored Procedures and Functions.

  • Initial support for rudimentary triggers.

  • Added SELECT INTO list_of_vars, which can be of mixed (that is, global and local) types. See Section 17.2.7.3, “SELECT ... INTO Statement”.

  • Removed the update log. It is fully replaced by the binary log. If the MySQL server is started with --log-update, it is translated to --log-bin (or ignored if the server is explicitly started with --log-bin), and a warning message is written to the error log. Setting SQL_LOG_UPDATE silently sets SQL_LOG_BIN instead (or do nothing if the server is explicitly started with --log-bin).

  • Support for the ISAM storage engine has been removed. If you have ISAM tables, you should convert them before upgrading. See Section 2.10.2, “Upgrading from MySQL 4.1 to 5.0”.

  • Support for RAID options in MyISAM tables has been removed. If you have tables that use these options, you should convert them before upgrading. See Section 2.10.2, “Upgrading from MySQL 4.1 to 5.0”.

  • User variable names are now case insensitive: If you do SET @a=10; then SELECT @A; now returns 10. Case sensitivity of a variable's value depends on the collation of the value.

  • Strict mode, which in essence means that you get an error instead of a warning when inserting an incorrect value into a column. See Section 5.2.5, “The Server SQL Mode”.

  • VARCHAR and VARBINARY columns remember end space. A VARCHAR() or VARBINARY column can contain up to 65,535 characters or bytes, respectively.

  • MEMORY (HEAP) tables can have VARCHAR() columns.

  • When using a constant string or a function that generates a string result in CREATE ... SELECT, MySQL creates the result field based on the maximum length of the string or expression:

    Maximum LengthData type
    = 0CHAR(0)
    < 512VARCHAR(max_length)
    >= 512TEXT

For a full list of changes, please refer to the changelog sections for each individual 5.0.x release.

D.1.1. Changes in release 5.0.20 (Not yet released)

Functionality added or changed:

  • Windows builds now have SSL support enabled. (Bug#18195)

  • 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 Section 17.2.1, “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.

  • Security Improvement: Checks for permissions on database operations were performed in a case-insensitive manner, meaning that a user with permissions on database MYDATABASE also had permissions on database myDataBase. (Bug #17279)

Bugs fixed:

  • If InnoDB encountered a HA_ERR_LOCK_TABLE_FULL error and rolled-back a transaction, the transaction was still written to the binary log. (Bug #18283)

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

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

  • 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)

  • Views that incorporate tables from the INFORMATION_SCHEMA resulted in a server crash when queried. (Bug #18224)

  • A SELECT * query on an INFORMATION_SCHEMA table by a user with limited privileges resulted in a server crash. (Bug #18113)

  • Attempting to access an InnoDB table after starting the server with --skip-innodb caused a server crash. (Bug #14575)

  • InnoDB used table locks (not row locks) within stored functions. (Bug #18077)

  • Replication slaves could not replicate triggers from older servers that included no DEFINER clause in the trigger definition. Now the trigger executes with the privileges of the invoker (which on the slave is the slave SQL thread). (Bug #16266)

  • 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 DEFINER value for stored routines was not replicated. (Bug #15963)

  • Use of stored functions with DISTINCT or GROUP BY can produce incorrect results when ORDER BY is also used. (Bug #13575)

  • 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)

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

  • A LEFT JOIN with a UNION that selects literal values could crash the server. (Bug #17366)

  • Large file support did not work in AIX server binaries. (Bug #10776)

  • 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)

  • Certain combinations of joins with mixed ON and USING clauses caused unknown column errors. (Bug #15229)

  • NDB Cluster: Inserting and deleting BLOB column values while a backup was in process could cause the loss of an ndbd node. (Bug #14028)

  • 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)

  • COUNT(DISTINCT col1, col2) and COUNT(DISTINCT CONCAT(col1, col2)) operations produced different results if one of the columns was an indexed DECIMAL column. (Bug #15745)

  • The server displayed garbage in the error message warning about bad assignments to DECIMAL columns or routine variables. (Bug #15480)

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

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

  • The FORMAT() function returned an incorrect result when the client's character_set_connection value was utf8. (Bug #16678)

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

  • Updating the value of a Unicode VARCHAR column with the result returned by a stored function would cause the insertion of ASCII characters into the column instead of Unicode, even where the function's return type was also declared as Unicode. (Bug #17615)

D.1.2. Changes in release 5.0.19 (04 March 2006)

Functionality added or changed:

  • Incompatible change: The InnoDB storage engine no longer ignores trailing spaces when comparing BINARY or VARBINARY column values. This means that (for example) the binary values 'a' and 'a ' are now regarded as unequal any time they are compared, as they are in MyISAM tables. (Bug #14189)

    See Section 11.4.2, “The BINARY and VARBINARY Types” for more information about the BINARY and VARBINARY types.

  • The result type of the GROUP_CONCAT() function is now VARCHAR only if the the value of the group_concat_max_len system variable is less than or equal to 512. Otherwise, this funciton returns a BLOB. (Bug #14169)

  • Added the mysql_upgrade program that checks all tables for incompatibilities with the current version of MySQL Server and repairs them if necessary. This program should be run for each MySQL upgrade (rather than mysql_fix_privilege_tables). See Section 5.6.2, “mysql_upgrade — Check Tables for MySQL Upgrade”.

  • Added the FOR UPGRADE option for the CHECK TABLE statement. This option checks whether tables are incompatible with the current version of MySQL Server. Also added the --check-upgrade to mysqlcheck that invokes CHECK TABLE with the FOR UPGRADE option.

  • mysql no longer terminates data value display when it encounters a NUL byte. Instead, it displays NUL bytes as spaces. (Bug #16859)

  • Added the --wait-timeout option to mysqlmanager to allow configuration of the timeout for dropping an inactive connection, and increased the default timeout from 30 seconds to 28,800 seconds (8 hours). (Bug #12674)

  • A number of performance issues were resolved that had previously been encountered when using statements that repeatedly invoked stored functions. For example, calling BENCHMARK() using a stored function executed much more slowly than when invoking it with inline code that accomplished the same task. In most cases the two should now execute with approximately the same speed. (Bug #15014, Bug #14946)

  • libmysqlclient now uses versioned symbols with GNU ld. (Bug #3074)

  • NDB Cluster: More descriptive warnings are now issued when inappropriate logging parameters are set in config.ini. (Formerly, the warning issued was simply Could not add logfile destination.) (Bug #11331)

  • Added the --port-open-timeout option to mysqld to control how many seconds the server should wait for the TCP/IP port to become free if it cannot be opened. (Bug #15591)

  • Repeated invocation of my_init() and my_end() caused corruption of character set data and connection failure. (Bug #6536)

  • Two new Hungarian collations are included: utf8_hungarian_ci and ucs2_hungarian_ci. These support the correct sort order for Hungarian vowels. However, they do not support the correct order for sorting Hungarian consonant contractions; this issue will be fixed in a future release.

  • Wording of error 1329 changed to No data - zero rows fetched, selected, or processed. (Bug #15206)

  • The INFORMATION_SCHEMA now skips data contained in unlistable/unreadable directories rather than returning an error. (Bug #15851)

  • InnoDB now caches a list of unflushed files instead of scanning for unflushed files during a table flush operation. This improves performance when --innodb-file-per-table is set on a system with a large number of InnoDB tables. (Bug #15653)

  • The message for error 1109 changed from Unknown table ... in order clause to Unknown table ... in field list. (Bug #15091)

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

  • 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)

  • 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)

  • New charset command added to mysql command-line client. By typing charset name or \C name (such as \C UTF8), the client character set can be changed without reconnecting. (Bug #16217)

  • Client API will now attempt reconnect on TCP/IP if the reconnect flag is set, as is the case with sockets. (Bug #2845)

Bugs fixed:

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

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

  • When using the GROUP_CONCAT() function where the group_concat_max_len system variable was greater than 512, the type of the result was BLOB only if the query included an ORDER BY clause; otherwise the result was a VARCHAR. (Bug #14169)

  • 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)

  • type_decimal failed with the prepared statement protocol. (Bug #17826)

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

  • A stored procedure failed to return data the first time it was called per connection. (Bug #17476)

  • Using DROP FUNCTION IF EXISTS func_name to drop a user-defined function caused a server crash if the server was running with the --skip-grant-tables option. (Bug #17595)

  • 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)

  • A large BIGINT value specified in a WHERE clause could be treated differently depending on whether it is specified as a quoted string. (For example, WHERE bigint_col = 17666000000000000000 versus WHERE bigint_col = '17666000000000000000'). (Bug #9088)

  • A natural join between INFORMATION_SCHEMA tables failed. (Bug #17523)

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

  • The embedded server did not allow binding of columns to the MYSQL_TYPE_VAR_STRING data type in prepared statements. (Bug #12070)

  • The embedded server failed various tests in the automated test suite. (Bug #9630, Bug #9631, Bug #9633, Bug #10801, Bug #10911, Bug #10924, Bug #10925, Bug #10926, Bug #10930, Bug #15433)

  • Instance Manager erroneously accepted a list of instance identifiers for the START INSTANCE and STOP INSTANCE commands (should accept only a single identifier). (Bug #12813)

  • For a transaction that used MyISAM and InnoDB tables, interruption of the transaction due to a dropped connection on a master server caused slaves to lose synchrony. (Bug #16559)

  • SELECT with GROUP BY on a view can cause a server crash. (Bug #16382)

  • If the query optimizer transformed a GROUP BY clause in a subquery, it did not also transform the HAVING clause if there was one, producing incorrect results. (Bug #16603)

  • SUBSTRING_INDEX() could yield inconsistent results when applied with the same arguments to consecutive rows in a query. (Bug #14676)

  • The parser allowed CREATE AGGREGATE FUNCTION for creating stored functions, even though AGGREGATE does not apply. (It is used only for CREATE FUNCTION only when creating user-defined functions.) (Bug #16896)

  • Data truncations on non-UNIQUE indexes could crash InnoDB when using multi-byte character sets. (Bug #17530)

  • Triggers created without BEGIN and END clauses could not be properly restored from a mysqldump file. (Bug #16878)

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

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

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

  • For certain MERGE tables, the optimizer wrongly assumed that using index_merge/intersection was too expensive. (Bug #17314)

  • Executing a SHOW CREATE VIEW query of an invalid view caused the mysql_next_result function of libMySQL.dll to hang. (Bug #15943)

  • BIT fields were not properly handled when using row-based replication. (Bug #13418)

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

  • NDB Cluster: ndb_delete_all would run out of memory on tables containing BLOB columns. (Bug #16693)

  • NDB Cluster: UNIQUE keys in Cluster tables were limited to 225 bytes in length. (Bug #15918)

  • 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)

  • Previously, a stored function invocation was written to the binary log as DO func_name() if the invocation changes data and occurs within a non-logged statement, or if the function invokes a stored procedure that produces an error. These invocations now are logged as SELECT func_name() instead for better control over error code checking (slave servers could stop due to detecting a different error than occurred on the master). (Bug #14769)

  • CHECKSUM TABLE returned different values on MyISAM table depending on whether the QUICK or EXTENDED options were used. (Bug #8841)

  • MySQL server dropped client connection for certain SELECT statements against views defined that used MERGE algorithm. (Bug #16260)

  • A call to the IF() function using decimal arguments could return incorrect results. (Bug #16272)

  • A statement containing GROUP BY and HAVING clauses could return incorrect results when the HAVING clause contained logic that returned FALSE for every row. (Bug #14927)

  • Using GROUP BY on column used in WHERE clause could cause empty set to be returned. (Bug #16203)

  • For a MySQL 5.0 server, using MySQL 4.1 tables in queries with a GROUP BY clause could result in buffer overrun or a server crash. (Bug #16752)

  • SET sql_mode = N, where N > 31, did not work properly. (Bug #13897)

  • NDB Cluster: Cluster log file paths were truncated to 128 characters. They may now be as long as MAX_PATH (the maximum path length permitted by the operating system). (Bug #17411)

  • The mysql_stmt_store_result() C API function could not be used for a prepared statement if a cursor had been opened for the statement. (Bug #14013)

  • The mysql_stmt_sqlstate() C API function incorrectly returned an empty string rather than '00000' when no error occurred. (Bug #16143)

  • Using the TRUNCATE() function with a negative number for the second argument on a BIGINT column returned incorrect results. (Bug #8461)

  • Instance Manager searched wrong location for password file on some platforms. (Bug #16499)

  • NDB Cluster: Following multiple forced shutdowns and restarts of data nodes, DROP DATABASE could fail. (Bug #17325)

  • NDB Cluster: An UPDATE with an inner join failed to match any records if both tables in the join did not have a primary key. (Bug #17257)

  • NDB Cluster: A DELETE with a join in the WHERE clause failed to retrieve any records if both tables in the join did not have a primary key. (Bug #17249)

  • The error message returned by perror --ndb was prefixed with OS error code: instead of NDB error code:. (Bug #17235)

  • NDB Cluster: In some cases, LOAD DATA INFILE did not load all data into NDB tables. (Bug #17081)

  • NDB Cluster: The REDO log would become corrupted (and thus unreadable) in some circumstances, due to a failure in the query handler. (Bug #17295)

  • NDB Cluster: No error message was generated for setting NoOfFragmentLogFiles too low. (Bug #13966)

  • NDB Cluster: No error message was generated for setting MaxNoOfAttributes too low. (Bug #13965)

  • Binary distributions for Solaris contained files with group ownership set to the non-existing wheel group. Now the bin group is used. (Bug #15562)

  • The DECIMAL data type was not being handled correctly with prepared statements. (Bug #16511)

  • The SELECT privilege was required for triggers that performed no selects. (Bug #15196)

  • The UPDATE privilege was required for triggers that performed no updates. (Bug #15166)

  • CAST(... AS TIME) operations returned different results when using versus not using prepared-statement protocol. (Bug #15805)

  • Improper memory handling for stored routine variables could cause memory overruns and binary log corruption. (Bug #15588)

  • Killing a long-running query containing a subquery could cause a server crash. (Bug #14851)

  • A FULLTEXT query in a prepared statement could result in unexpected behavior. (Bug #14496)

  • A RETURN statement within a trigger caused a server crash. RETURN now is disallowed within triggers. To exit immediately, use LEAVE. (Bug #16829)

  • STR_TO_DATE(1,NULL) caused a server crash. (Bug #15828)

  • An invalid stored routine could not be dropped. (Bug #16303)

  • When evaluation of the test in a CASE failed in a stored procedure that contained a CONTINUE handler, execution resumed at the beginning of the CASE statement instead of at the end. (Bug #16568)

  • An INSERT statement in a stored procedure corrupted the binary log. (Bug #16621)

  • When MyODBC or any other client called my_init()/my_end() several times, it caused corruption of charset data stored in once_mem_pool. (Bug #11892)

  • When multiple handlers are created for the same MySQL error number within nested blocks, the outermost handler took precedence. (Bug #15011)

  • Certain LEAVE statements in stored procedures were not properly optimized. (Bug #15737)

  • Setting InnoDB path settings to an empty string caused InnoDB storage engine to crash upon server startup. (Bug #16157)

  • InnoDB used full explicit table locks in trigger processing. (Bug #16229)

  • Server crash when dropping InnoDB constraints named TABLENAME_ibfk_0. (Bug #16387)

  • Corrected race condition when dropping the adaptive hash index for a B-tree page in InnoDB. (Bug #16582)

  • MYSQL_OPT_RECONNECT option was modified by calls to the mysql_real_connect() function. (Bug #15719)

  • InnoDB: After upgrading an InnoDB table having a VARCHAR BINARY column created in MySQL 4.0 to MySQL 5.0, update operations on the table would cause the server to crash. (Bug #16298)

  • Trying to compile the server on Windows generated a stack overflow warning due to a recursive definition of the internal Field_date::store() method. (Bug #15634)

  • The use of LOAD INDEX within a stored routine was permitted and caused the server to crash. Note: LOAD INDEX statements within stored routines are not supported, and now yield an error if attempted. This behavior is intended. (Bug #14270)

  • The mysqlbinlog utility did not output DELIMITER statements, causing syntax errors for stored routine creation statements. (Bug #11312)

  • NDB Cluster returned incorrect Can't find file error for OS error 24, changed to Too many open files. (Bug #15020)

  • Performing a RENAME TABLE on an InnoDB table when the server is started with the --innodb-file-per-table and the data directory is a symlink caused a server crash. (Bug #15991)

  • The mysql_stmt_attr_get function returned an unsigned int instead of a boolean for STMT_ATTR_UPDATE_MAX_LENGTH. (Bug #16144)

  • Multi-byte path names for LOAD DATA and SELECT ... INTO OUTFILE caused errors. Added the character_set_filesystem system variable, which controls the interpretation of string literals that refer to filenames. (Bug #12448)

  • Certain subqueries where the inner query is the result of a aggregate function would return different results on MySQL 5.0 than on MySQL 4.1. (Bug #15347)

  • Attempts to create FULLTEXT indexes on VARCHAR columns larger than 1000 bytes resulted in error. (Bug #13835)

  • Characters in the gb2312 and euckr character sets which did not have Unicode mappings were truncated. (Bug #15377)

  • Certain nested LEFT JOIN operations were not properly optimized. (Bug #16393)

  • GRANT statements specifying schema names that included underscore characters (i.e. my_schema) did not match if the underscore was escaped in the GRANT statement (i.e. GRANT ALL ON `my\_schema` ...). (Bug #14834)

  • Running out of diskspace in the location specified by the tmpdir option resulted in incorrect error message. (Bug #14634)

  • Test suite sp test left behind tables when the test failed that could cause future tests to fail. (Bug #15866)

  • UPDATE statement crashed multi-byte character set FULLTEXT index if update value was almost identical to initial value only differing in some spaces being changed to &nbsp;. (Bug #16489)

  • A SELECT query which contained a GROUP_CONCAT() and an ORDER BY clause against the INFORMATION_SCHEMA resulted in an empty result set. (Bug #15307)

  • The --replicate-do and --replicate-ignore options were not being enforced on multiple-table statements. (Bug #15699, Bug #16487)

  • A prepared statement created from a SELECT ... LIKE query (such as PREPARE stmt1 FROM 'SELECT col_1 FROM tedd_test WHERE col_1 LIKE ?';) would begin to produce erratic results after being executed repeatedly numerous (thousands) of times. (Bug #12734)

  • The server would crash when the size of an ARCHIVE table grew beyond 2GB. (Bug #15787)

  • Created a user function with an empty string (that is, CREATE FUNCTION ''()), was accepted by the server. Following this, calling SHOW FUNCTION STATUS would cause the server to crash. (Bug #15658)

  • In some cases the query optimizer did not properly perform multiple joins where inner joins followed left joins, resulting in corrupted result sets. (Bug #15633)

  • The absence of a table in the left part of a left or right join was not checked prior to name resolution, which resulted in a server crash. (Bug #15538)

  • NDBCluster: A bitfield whose offset and length totaled 32 would crash the cluster. (Bug #16125)

  • NDBCluster: Upon the completion of a scan where a key request remained outstanding on the primary replica and a starting node died, the scan did not terminate. This caused incompleted error handling of the failed node. (Bug #15908)

  • NDBCluster: The ndb_autodiscover test failed sporadically due to a node not being permitted to connect to the cluster. (Bug #15619)

  • NDBCluster: When running more than one management process in a cluster:

    • ndb_mgm -c host:port -e "node_id stop" would stop a management process running only on the same system on which the command was issued.

    • ndb_mgm -e "shutdown" failed to shut down any management processes at all.

    (Bug #12045, Bug #12124)

  • The contents of fill_help_tables.sql could not be loaded in strict SQL mode. (Bug #15760)

  • fill_help_tables.sql was not included in binary distributions for several platforms. (Bug #15759)

  • An INSERT ... SELECT statement between tables in a MERGE set can return errors when statement involves insert into child table from merge table or vice-versa. (Bug #5390)

  • Certain permission management statements could create a NULL hostname for a user, resulting in a server crash. (Bug #15598)

  • A COMMIT statement followed by a ALTER TABLE statement on a BDB table caused server crash. (Bug #14212)

  • A DELETE statement involving a LEFT JOIN and an IS NULL test on the right-hand table of the join crashed the server when the innodb_locks_unsafe_for_binlog option was enabled. (Bug #15650)

  • Performing an ORDER BY on an indexed ENUM column returned error. (Bug #15308)

  • The NOT FOUND condition handler for stored procedures did not distinguish between a NOT FOUND condition and an exception or warning. (Bug #15231)

  • A stored procedure with an undefined variable and an exception handler would hang the client when called. (Bug #14498)

  • Subselect could return wrong results when records cache and grouping was involved. (Bug #15347)

  • Temporary table aliasing did not work inside stored functions. (Bug #12198)

  • MIN() and MAX() operations were not optimized for views. (Bug #16016)

  • Using an aggregate function as the argument for a HAVING clause would result in the aggregate function always returning FALSE. (Bug #14274)

  • Parallel builds occasionally failed on Solaris. (Bug #16282)

  • The FORCE INDEX keyword in a query would prevent an index merge from being used where an index merge would normally be chosen by the optimizer. (Bug #16166)

  • The COALESCE() function truncated data in a TINYTEXT column. (Bug #15581)

  • InnoDB: Comparison of indexed VARCHAR CHARACTER SET ucs2 COLLATE ucs2_bin columns using LIKE could fail. (Bug #14583)

  • An attempt to open a table that requires a disabled storage engine could cause a server crash. (Bug #15185)

  • Issuing a DROP USER command could cause some users to encounter a hostname is not allowed to connect to this MySQL server error. (Bug #15775)

  • Setting innodb_log_file_size to a value greater than 4G crashed the server. (Bug #15108)

  • A SELECT of a stored function that references the INFORMATION_SCHEMA could crash the server. (Bug #15533)

  • Tarball install package was missing a proper fill_help_tables.sql file. (Bug #15151)

D.1.3. Changes in release 5.0.18 (21 December 2005)

Functionality added or changed:

  • It is now possible to build the server such that MyISAM tables can support up to 128 keys rather than the standard 64. This can be done by configuring the build using the option --with-max-indexes=N, where N≤128 is the maximum number of indexes to permit per table. (Bug #10932)

  • The server treats stored routine parameters and local variables (and stored function return values) according to standard SQL. Previously, parameters, variables, and return values were treated as items in expressions and were subject to automatic (silent) conversion and truncation. Now the data type is observed. Data type conversion and overflow problems that occur in assignments result in warnings, or errors in strict mode. The CHARACTER SET clause for character data type declarations is used. Parameters, variables, and return values must be scalars; it is no longer possible to assign a row value. Also, stored functions execute using the sql_mode value in force at function creation time rather than ignoring it. For more information, see Section 17.2.1, “CREATE PROCEDURE and CREATE FUNCTION Syntax”. (Bug #8702, Bug #8768, Bug #8769, Bug #9078, Bug #9572, Bug #12903, Bug #13705, Bug #13808, Bug #13909, Bug #14161, Bug #15148)

Bugs fixed:

  • API function mysql_stmt_prepare returned wrong field length for TEXT columns. (Bug #15613)

  • The output of mysqldump --triggers did not contain the DEFINER clause in dumped trigger definitions. (Bug #15110)

  • The output of SHOW TRIGGERS contained extraneous whitespace. (Bug #15103)

  • Creating a trigger caused a server crash if the table or trigger database was not known because no default database had been selected. (Bug #14863)

  • SHOW [FULL] COLUMNS and SHOW INDEX FROM did not function with temporary tables. (Bug #14271, Bug #14387, Bug #15224)

  • The INFORMATION_SCHEMA.COLUMNS table did not report the size of BINARY or VARBINARY columns. (Bug #14271)

  • The server would not compile under Cygwin. (Bug #13640)

  • DESCRIBE did not function with temporary tables. (Bug #12770)

  • Reversing the order of operands in a WHERE clause testing a simple equality (such as WHERE t1.col1 = t2.col2) would produce different output from EXPLAIN. (Bug #15106)

  • Column aliases were displayed incorrectly in a SELECT from a view following an update to a base table of the view. (Bug #14861)

  • Set functions could not be aggregated in outer subqueries. (Bug #12762)

  • When a connection using yaSSL was aborted, the server would continue to try to read the closed socket, and the thread continued to appear in the output of SHOW PROCESSLIST. Note that this issue did not affect secure connection attempts using OpenSSL. (Bug #15772)

  • InnoDB: Having two tables in a parent-child relationship enforced by a foreign key where one table used ROW_FORMAT=COMPACT and the other used ROW_FORMAT=REDUNDANT could result in a MySQL server crash. Note that this problem did not exist prior to MySQL 5.0.3, when the compact row format for InnoDB was introduced. (Bug #15550)

  • BDB: A DELETE, INSERT, or UPDATE of a BDB table could cause the server to crash where the query contained a subquery using an index read. (Bug #15536)

  • A left join on a column that having a NULL value could cause the server to crash. (Bug #15268)

  • A replication slave server could sometimes crash on a BEFORE UPDATE trigger if the UPDATE query was not executed in the same database as the table with the trigger. (Bug #14614)

  • A race condition when creating temporary files caused a deadlock on Windows with threads in Opening tables or Waiting for table states. (Bug #12071)

  • InnoDB: If FOREIGN_KEY_CHECKS was 0, InnoDB allowed inconsistent foreign keys to be created. (Bug #13778)

  • NDB Cluster: Under some circumstances, it was possible for a restarting node to undergo a forced shutdown. (Bug #15632)

  • NDB Cluster: If an abort by the Transaction Coordinator timed out, the abort condition was incorrectly handled, causing the transaction record to be released prematurely. (Bug #15685)

  • NDB Cluster: The ndb_read_multi_range.test script failed to drop a table, causing the test to fail. (Bug #15675) (See also Bug #15401.)

  • NDB Cluster: A node which failed during cluster startup was sometimes not removed from the internal list of active nodes. (Bug #15587)

  • Resolution of the argument to the VALUES() function to a variable inside a stored routine caused a server crash. The argument must be a table column. (Bug #15441)

D.1.4. Changes in release 5.0.17 (14 December 2005)

Functionality added or changed:

  • The original Linux RPM packages (5.0.17-0) had an issue with a zlib dependency that would result in an error during an install or upgrade. They were replaced by new binaries, 5.0.17-1. (Bug #15223) Here is a list of the new RPM binaries:

    • MySQL-{Max,client,devel,server,shared,ndb*}-5.0.17-1.i386.rpm

    • MySQL-*-standard-5.0.17-1.rhel3.i386.rpm, MySQL-*-standard-5.0.17-1.rhel3.ia64.rpm, MySQL-*-standard-5.0.17-1.rhel3.x86_64.rpm

    • MySQL-*-pro-5.0.17-1.rhel3.i386.rpm, MySQL-*-pro-5.0.17-1.rhel3.ia64.rpm, MySQL-*-pro-5.0.17-1.rhel3.x86_64.rpm

    • MySQL-*-pro-gpl-5.0.17-1.rhel3.i386.rpm, MySQL-*-pro-gpl-5.0.17-1.rhel3.ia64.rpm, MySQL-*-pro-gpl-5.0.17-1.rhel3.x86_64.rpm

  • The syntax for CREATE TRIGGER now includes a DEFINER clause for specifying which access privileges to check at trigger invocation time. See Section 18.1, “CREATE TRIGGER Syntax”, for more information.

    Known issue: If you attempt to replicate from a master server older than MySQL 5.0.17 to a slave running MySQL 5.0.17 through 5.0.19, replication of CREATE TRIGGER statements fails on the slave with a Definer not fully qualified error. A workaround is to create triggers on the master using a version-specific comment embedded in each CREATE TRIGGER statement:

    CREATE /*!50017 DEFINER = 'root'@'localhost' */ TRIGGER ... ;
    

    CREATE TRIGGER statements written this way will replicate to newer slaves, which pick up the DEFINER clause from the comment and execute successfully. (Bug #16266)

  • Added a DEFINER column to the INFORMATION_SCHEMA.TRIGGERS table.

  • Invoking a stored function or trigger creates a new savepoint level. When the function or trigger finishes, the previous savepoint level is restored. (See Bug #13825 for more information.)

  • Recursion is allowed in stored procedures. Recursive stored functions and triggers still are disallowed. (Bug #10100)

  • In the latin5_turkish_ci collation, the order of the characters A WITH CIRCUMFLEX, I WITH CIRCUMLEX, and U WITH CIRCUMFLEX was changed. If you have used these characters in any indexed columns, you should rebuild those indexes. (Bug #13421)

  • Support files for compiling with Visual Studio 6 have been removed. (Bug #15094)

Bugs fixed:

  • RPM packages had an incorrect zlib dependency. (Bug #15223)

  • NDB Cluster: REPLACE failed when attempting to update a primary key value in a Cluster table. (Bug #14007)

  • make failed when attempting to build MySQL in different directory than source. (Bug #11827)

  • Corrected an error-handling problem within stored routines on 64-bit platforms. (Bug #15630)

  • Slave SQL thread cleanup was not handled properly on Mac OS X when a statement was killed, resulting in a slave crash. (Bug #15623, Bug #15668)

  • Symbolic links did not function properly on Windows platforms. (Bug #14960, Bug #14310)

  • mysqld would not start on Windows 9X operating systems including Windows Me. (Bug #15209)

  • InnoDB: During replication, There was a failure to record events in the binary log that still occurred even in the event of a ROLLBACK. For example, this sequence of commands:

    BEGIN;
    CREATE TEMPORARY TABLE t1 (a INT) ENGINE=INNODB;
    ROLLBACK;
    INSERT INTO t1 VALUES (1);
    

    would succeed on the replication master as expected. However, the INSERT would fail on the slave because the ROLLBACK would (erroneously) cause the CREATE TEMPORARY TABLE statement not to be written to the binlog. (Bug #7947)

  • A bug in mysql-test/t/mysqltest.test caused that test to fail. (Bug #15605)

  • The CREATE test case in mysql-test-run.pl failed on AIX and SCO. (Bug #15607)

  • NDB Cluster: Creating a table with packed keys failed silently. NDB now supports the PACK_KEYS option to CREATE TABLE correctly. (Bug #14514)

  • NDB Cluster: Using ORDER BY primary_key_column when selecting from a table having the primary key on a VARCHAR column caused a forced shutdown of the cluster. (Bug #14828, Bug #15240, Bug #15682, Bug #15517)

  • NDB Cluster: Under certain circumstances, when mysqld connects to a cluster management server, the connection would fail before a node ID could be allocated. (Bug #15215)

  • NDB Cluster: There was a small window for a node failure to occur during a backup without an error being reported. (Bug #15425)

  • mysql --help was missing a newline after the version string when the bundled readline library was not used. (Bug #15097)

  • Implicit versus explicit conversion of float to integer (such as inserting a float value into an integer column versus using CAST(... AS UNSIGNED before inserting the value) could produce different results. Implicit and explicit typecasts now are done the same way, with a value equal to the nearest integer according to the prevailing rounding mode. (Bug #12956)

  • GROUP BY on a view column did not correctly account for the possibility that the column could contain NULL values. (Bug #14850)

  • ANALYZE TABLE did not properly update table statistics for a MyISAM table with a FULLTEXT index containing stopwords, so a subsequent ANALYZE TABLE would not recognize the table as having already been analyzed. (Bug #14902)

  • The maximum value of MAX_ROWS was handled incorrectly on 64-bit systems. (Bug #14155)

  • NDB Cluster: A forced cluster shutdown occurred when the management daemon was restarted with a changed config.ini file that added an API/SQL node. (Bug #15512)

  • Multiple-table update operations were counting updates and not updated rows. As a result, if a row had several updates it was counted several times for the “rows matched” value but updated only once. (Bug #15028)

  • A statement that produced a warning, when fetched via mysql_stmt_fetch(), did not produce a warning count according to mysql_warning_count(). (Bug #15510)

  • Manual manipulation of the mysql.proc table could cause a server crash. This should not happen, but it is also not supported that the server will notice such changes. (Bug #14233)

  • Revised table locking to allow proper assessment of view security. (Bug #11555)

  • Within a stored procedure, inserting with INSERT ... SELECT into a table with an AUTO_INCREMENT column did not generate the correct sequence number. (Bug #14304)

  • SELECT queries that began with an opening parenthesis were not being placed in the query cache. (Bug #14652)

  • Space truncation was being ignored when inserting into BINARY or VARBINARY columns. Now space truncation results in a warning, or an error in strict mode. (Bug #14299)

  • The database-changing code for stored routine handling caused an error-handling problem resulting in a server crash. (Bug #15392)

  • Selecting from a view processed with the temptable algorithm caused a server crash if the query cache was enabled. (Bug #15119)

  • REPAIR TABLES, BACKUP TABLES, RESTORE TABLES within a stored procedure caused a server crash. (Bug #13012)

  • Creating a view that referenced a stored function that selected from a view caused a crash upon selection from the view. (Bug #15096)

  • ALTER TABLE ... SET DEFAULT had no effect. (Bug #14693)

  • Creating a view within a stored procedure could result in an out of memory error or a server crash. (Bug #14885)

  • InnoDB: A race condition allowed two threads to drop a hash index simultaneously. (Bug #14747)

  • mysqlhotcopy tried to copy INFORMATION_SCHEMA tables. (Bug #14610)

  • CHAR(... USING ...) and CONVERT(CHAR(...) USING ...), though logically equivalent, could produce different results. (Bug #14146)

  • The value of INFORMATION_SCHEMA.TABLES.TABLE_TYPE sometimes was reported as empty. (Bug #14476)

  • InnoDB: Activity on an InnoDB table caused execution time for SHOW CREATE TABLE for the table to increase. (Bug #13762)

  • DELETE from CSV tables reported an incorrect rows-affected value. (Bug #13406)

  • The server crashed if compiled without any transactional storage engines. (Bug #15047)

  • Declaring a stored routine variable to have a DEFAULT value that referred to a variable of the same name caused a server crash. (For example: DECLARE x INT DEFAULT x) Now the DEFAULT variable is interpreted as referring to a variable in an outer scope, if there is one. (Bug #14376)

  • Perform character set conversion of constant values whenever possible without data loss. (Bug #10446)

  • mysql ignored the MYSQL_TCP_PORT environment variable. (Bug #5792)

  • ROW_COUNT() returned an incorrect result after EXECUTE of a prepared statement. (Bug #14956)

  • A UNION of DECIMAL columns could produce incorrect results. (Bug #14216)

  • Queries that select records based on comparisons to a set of column could crash the server if there was one index covering the columns, and a set of other non-covering indexes that taken together cover the columns. (Bug #15204)

  • When using an aggregate function to select from a table that has a multiple-column primary key, adding ORDER BY to the query could produce an incorrect result. (Bug #14920)

  • SHOW CREATE TABLE for a view could fail if the client had locked the view. (Bug #14726)

  • For binary string data types, mysqldump --hex-blob produced an illegal output value of 0x rather than ''. (Bug #13318)

  • Some comparisons for the IN() operator were inconsistent with equivalent comparisons for the = operator. (Bug #12612)

  • In a stored procedure, continuing (via a condition handler) after a failed variable initialization caused a server crash. (Bug #14643)

  • Within a stored procedure, exception handling for UPDATE statements that caused a duplicate-key error caused a Packets out of order error for the following statement. (Bug #13729)

  • Creating a table containing an ENUM or SET column from within a stored procedure or prepared statement caused a server crash later when executing the procedure or statement. (Bug #14410)

  • Selecting from a view used filesort retrieval when faster retrieval was possible. (Bug #14816)

  • Warnings from a previous command were not being reset when fetching from a cursor. (Bug #13524)

  • RESET MASTER failed to delete log files on Windows. (Bug #13377)

  • Using ORDER BY on a column from a view, when also selecting the column normally, and via an alias, caused a mistaken Column 'x' in order clause is ambiguous error. (Bug #14662)

  • Invoking a stored procedure within another stored procedure caused the server to crash. (Bug #13549)

  • Stored functions making use of cursors were not replicated. (Bug #)

  • CAST(expr AS BINARY(N)) did not pad with 0x00 to a length of N bytes. (Bug #14255)

  • Casting a FLOAT or DOUBLE whose value was less than 1.0E-06 to DECIMAL would yield an inappropriate value. (Bug #14268)

  • In some cases, a left outer join could yield an invalid result or cause the server to crash, due to a MYSQL_DATA_TRUNCATED error. (Bug #13488)

  • For a invalid view definition, selecting from the INFORMATION_SCHEMA.VIEWS table or using SHOW CREATE VIEW failed, making it difficult to determine what part of the definition was invalid. Now the server returns the definition and issues a warning. (Bug #13818)

  • The server could misinterpret old trigger definition files created before MySQL 5.0.17. Now they are interpreted correctly, but this takes more time and the server issues a warning that the trigger should be re-created. (Bug #14090)

  • mysqldump --triggers did not account for the SQL mode and could dump trigger definitions with missing whitespace if the IGNORE_SPACE mode was enabled. (Bug #14554)

  • Within a trigger definition the CURRENT_USER() function evaluated to the user whose actions caused the trigger to be activated. Now that triggers have a DEFINER value, CURRENT_USER() evaluates to the trigger definer. (Bug #5861)

  • CREATE TABLE tbl_name (...) SELECT ... could crash the server and write invalid data into the .frm file if the CREATE TABLE and SELECT both contained a column with the same name. Also, if a default value is specified in the column definition, it is now actually used. (Bug #14480)

  • A newline character in a column alias in a view definition caused an error when selecting from the view later. (Bug #13622)

  • mysql_fix_privilege_tables.sql contained an erroneous comment that resulted in an error when the file contents were processed. (Bug #14469)

  • On Windows, the server could crash during shutdown if both replication threads and normal client connection threads were active. (Re-fix of Bug #11796)

  • The grammar for supporting the DEFINER = CURRENT_USER clause in CREATE VIEW and ALTER VIEW was incorrect. (Bug #14719)

  • Queries on ARCHIVE tables that used the filesort sorting method could result in a server crash. (Bug #14433)

  • The mysql_stmt_fetch() C APP function could return MYSQL_NO_DATA for a SELECT COUNT(*) FROM tbl_name WHERE 1 = 0 statement, which should return 1 row. (Bug #14845)

  • A LIMIT-related optimization failed to take into account that MyISAM table indexes can be disabled, causing Error 124 when it tried to use such an index. (Bug #14616)

  • A server crash resulted from the following sequence of events: 1) With no default database selected, create a stored procedure with the procedure name explicitly qualified with a database name (CREATE PROCEDURE db_name.proc_name ...). 2) Create another stored procedure with no database name qualifier. 3) Execute SHOW PROCEDURE STATUS. (Bug #14569)

  • Complex subqueries could cause improper internal query execution environment initialization and crash the server. (Bug #14342)

  • For a table that had been opened with HANDLER OPEN, issuing OPTIMIZE TABLE, ALTER TABLE, or REPAIR TABLE caused a server crash. (Bug #14397)

  • A server crash could occur if a prepared statement invoked a stored procedure that existed when the statement was prepared but had been dropped and re-created prior to statement execution. (Bug #12329)

  • A server crash could occur if a prepared statement updated a table for which a trigger existed when the statement was prepared but had been dropped prior to statement execution. (Bug #13399)

  • Statements that implicitly commit a transaction are prohibited in stored functions and triggers. An attempt to create a function or trigger containing such a statement produces an error. (Bug #13627) (The originally reported symptom was that a trigger that dropped another trigger could cause a server crash. That problem was fixed by the patch for Bug #13343.)

D.1.5. Changes in release 5.0.16 (10 November 2005)

Functionality added or changed:

  • When trying to run the server with yaSSL enabled, MySQL now tries to open /dev/random automatically if /dev/urandom is not available. (Bug #13164)

  • The read_only system variable no longer applies to TEMPORARY tables. (Bug #4544)

  • Due to changes in binary logging, the restrictions on which stored routine creators can be trusted not to create unsafe routines have been lifted for stored procedures (but not stored functions). Consequently, the log_bin_trust_routine_creators system variable and the corresponding --log-bin-trust-routine-creators server option were renamed to log_bin_trust_function_creators and --log-bin-trust-function-creators. For backward compatibility, the old names are recognized but result in a warning. See Section 17.4, “Binary Logging of Stored Routines and Triggers”.

  • Added the Compression status variable, which indicates whether the client connection uses compression in the client/server protocol.

  • In MySQL 5.0.13, syntax for DEFINER and SQL SECURITY clauses was added to the CREATE VIEW and ALTER VIEW statements, but the clauses had no effect. They now are enabled. They specify the security context to be used when checking access privileges at view invocation time. See Section 19.2, “CREATE VIEW Syntax”, for more information.

  • The InnoDB, NDB, BDB, and ARCHIVE storage engines now support spatial columns. See Chapter 16, Spatial Extensions.

  • The CHECK TABLE statement now works for ARCHIVE tables.

  • You must now declare a prefix for an index on any column of any Geometry class, the only exception being when the column is a POINT. (Bug #12267)

  • Added a --hexdump option to mysqlbinlog that displays a hex dump of the log in comments. This output can be helpful for replication debugging.

  • MySQL 5.0 now supports character set conversion for seven additional cp950 characters into the big5 character set: 0xF9D6, 0xF9D7, 0xF9D8, 0xF9D9, 0xF9DA, 0xF9DB, and 0xF9DC. Note: If you move data containing these additional characters to an older MySQL installation which does not support them, you may encounter errors. (Bug #12476)

  • When a date column is set NOT NULL and contains 0000-00-00, it will be updated for UPDATE statements that contains columnname IS NULL in the WHERE clause. (Bug #14186)

Bugs fixed:

  • When the DATE_FORMAT() function appeared in both the SELECT and ORDER BY clauses of a query but with arguments that differ by case (i.e. %m and %M), incorrect sorting may have occurred. (Bug #14016)

  • For InnoDB tables, using a column prefix for