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.17 (Not yet released)
D.1.2. Changes in release 5.0.16 (10 November 2005)
D.1.3. Changes in release 5.0.15 (19 October 2005: Production)
D.1.4. Changes in release 5.0.14 (Not released)
D.1.5. Changes in release 5.0.13 (22 Sept 2005: Release Candidate)
D.1.6. Changes in release 5.0.12 (02 Sept 2005)
D.1.7. Changes in release 5.0.11 (06 Aug 2005)
D.1.8. Changes in release 5.0.10 (27 July 2005)
D.1.9. Changes in release 5.0.9 (15 July 2005)
D.1.10. Changes in release 5.0.8 (Not released)
D.1.11. Changes in release 5.0.7 (10 June 2005)
D.1.12. Changes in release 5.0.6 (26 May 2005)
D.1.13. Changes in release 5.0.5 (Not released)
D.1.14. Changes in release 5.0.4 (16 Apr 2005)
D.1.15. Changes in release 5.0.3 (23 Mar 2005: Beta)
D.1.16. Changes in release 5.0.2 (01 Dec 2004)
D.1.17. Changes in release 5.0.1 (27 Jul 2004)
D.1.18. 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.12
D.3.2. 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.16. 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 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.11, “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 (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.9.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 Version 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 Version 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.3.2, “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 LengthColumn 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.17 (Not yet released)

Functionality added or changed:

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

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

Bugs fixed:

  • 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 recreated. (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 recreated 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.2. Changes in release 5.0.16 (10 November 2005)

Functionality added or changed:

  • 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. 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 in MySQL.

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

Bugs fixed:

  • Selecting from a table in both an outer query and a subquery could cause a server crash. (Bug #14482)

  • SHOW CREATE TABLE did not display the CONNECTION string for FEDERATED tables. (Bug #13724)

  • For some stored functions dumped by mysqldump --routines, the function definition could not be reloaded later due to a parsing error. (Bug #14723)

  • For a MyISAM table originally created in MySQL 4.1, INSERT DELAYED could cause a server crash. (Bug #13707)

  • The --exit-info=65536 option conflicted with --temp-pool and caused problems with the server's use of temporary files. Now --temp-pool is ignored if --exit-info=65536 is specified. (Bug #9551)

  • ORDER BY DESC within the GROUP_CONCAT() function was not honored when used in a view. (Bug #14466)

  • A comparison with an invalid date (such as WHERE col_name > '2005-09-31') caused any index on col_name not to be used and a string comparison for each row, resulting in slow performance. (Bug #14093)

  • Within stored routines, REPLACE() could return an empty string (rather than the original string) when no replacement was done, and IFNULL() could return garbage results. (Bug #13941)

  • Inserts of too-large DECIMAL values were handled inconsistently (sometimes set to the maximum DECIMAL value, sometimes set to 0). (Bug #13573)

  • Executing REPAIR TABLE, ANALYZE TABLE, or OPTIMIZE TABLE on a view for which an underlying table had been dropped caused a server crash. (Bug #14540)

  • A prepared statement that selected from a view processed using the merge algorithm could crash on the second execution. (Bug #14026)

  • Deletes from a CSV table could cause table corruption. (Bug #14672)

  • An update of a CSV table could cause a server crash. (Bug #13894)

  • For queries with nested outer joins, the optimizer could choose join orders that query execution could not handle. The fix is that now the optimizer avoids choosing such join orders. (Bug #13126)

  • Starting mysqld with the --skip-innodb and --default-storage-engine=innodb (or --default-table-type=innodb caused a server crash. (Bug #9815, re-fix of bug from 5.0.5)

  • mysqlmanager did not start up correctly on Windows 2003. (Bug #14537)

  • The parser did not correctly recognize wildcards in the host part of the DEFINER user in CREATE VIEW statements. (Bug #14256)

  • Memory corruption and a server crash could be caused by statements that used a cursor and generated a result set larger than max_heap_table_size. (Bug #14210)

  • mysqld_safe did not correctly start the -max version of the server (if it was present) if the --ledir option was given. (Bug #13774)

  • The mysql parser did not properly strip the delimiter from input lines less than nine characters long. For example, this could cause USE abc; to result in an Unknown database: abc; error. (Bug #14358)

  • Statements of the form CREATE TABLE … SELECT … that created a column with a multi-byte character set could incorrectly calculate the maximum length of the column, resulting in a Specified key was too long error. (Bug #14139)

  • Some updatable views could not be updated. (Bug #14027)

  • Running OPTIMIZE TABLE and other data-updating statements concurrently on an InnoDB table could cause a crash or the following warnings in the error log: Warning: Found locks from different threads in write: enter write_lock, Warning: Found locks from different threads in write: start of release lock. (Bug #11704)

  • Indexes for BDB tables were being limited incorrectly to 255 bytes. (Bug #14381)

  • Use of col_name = VALUES(col_name) in the ON DUPLICATE KEY UPDATE clause of an INSERT statement failed with an Column 'col_name' in field list is ambiguous error. (Bug #13392)

  • On Windows, the server was not ignoring hidden or system directories that Windows may have created in the data directory, and would treat them as available databases. (Bug #4375)

  • mysqldump could not dump views if the -x option was given. (Bug #12838)

  • mysqlimport now issues a SET @@character_set_database = binary statement before loading data so that a file containing mixed character sets (columns with different character sets) can be loaded properly. (Bug #12123)

  • Use of the deprecated --sql-bin-update-same option caused a server crash. (Bug #12974)

  • Maximum values were handled incorrectly for command-line options of type GET_LL. (Bug #12925)

  • For a user that has the SELECT privilege on a view, the server erroneously was also requiring the user to have the EXECUTE privilege at view execution time for stored functions used in the view definition. (Bug #9505)

  • Use of WITH ROLLUP PROCEDURE ANALYSE() could hang the server. (Bug #14138)

  • TIMEDIFF(), ADDTIME(), and STR_TO_DATE() were not reporting that they could return NULL, so functions that invoked them might misinterpret their results. (Bug #14009)

  • The example configuration files supplied with MySQL distributions listed the thread_cache_size variable as thread_cache. (Bug #13811)

  • Using ALTER TABLE to add an index could fail if the operation ran out of temporary file space. Now it automatically makes a second attempt that uses a slower method but no temporary file. In this case, problems that occurred during the first attempt can be displayed with SHOW WARNINGS. (Bug #12166)

  • The input polling loop for Instance Manager did not sleep properly. Instance Manager used up too much CPU as a result. (Bug #14388)

  • Trying to take the logarithm of a negative value is now handled in the same fashion as division by zero. That is, it produces a warning when ERROR_FOR_DIVISION_BY_ZERO is set, and an error in strict mode. (Bug #13820)

  • LOAD DATA INFILE would not accept the same character for both the ESCAPED BY and the ENCLOSED BY clauses. (Bug #11203)

  • The value of Last_query_cost was not updated for queries served from the query cache. (Bug #10303)

  • TIMESTAMPDIFF() returned an incorrect result if one argument but not the other was a leap year and a date was from March or later. (Bug #13534)

  • The server incorrectly accepted column definitions of the form DECIMAL(0,D) for D less than 11. (Bug #13667)

  • The displayed value for the CHARACTER_MAXIMUM_LENGTH column in the INFORMATION_SCHEMA.COLUMNS table was not adjusted for multi-byte character sets. (Bug #14290)

  • A bugfix in MySQL 5.0.15 caused the displayed values for the CHARACTER_MAXIMUM_LENGTH and CHARACTER_OCTET_LENGTH columns in the INFORMATION_SCHEMA.COLUMNS table to be reversed. (Bug #14207)

  • On Windows, the value of character_sets_dir in SHOW VARIABLES output was displayed inconsistenly (using both ‘/’ and ‘\’ as pathname component separators). (Bug #14137)

  • Subqueries in the FROM clause failed if the current database was INFORMATION_SCHEMA. (Bug #14089)

  • Corrected a parser precedence problem that resulted in an Unknown column … in 'on clause' error for some joins. (Bug #13832)

  • For LIKE … ESCAPE, an escape sequence longer than one character was accepted as valid. Now the sequence must be empty or one character long. If the NO_BACKSLASH_ESCAPES SQL mode is enabled, the sequence must be one character long. (Bug #12595)

  • SELECT DISTINCT CHAR(col_name) returned incorrect results after SET NAMES utf8. (Bug #13233)

  • A prepared statement failed with Illegal mix of collations if the client character set was utf8 and the statement used a table that had a character set of latin1. (Bug #12371)

  • Inserting a new row into an InnoDB table could cause DATETIME values already stored in the table to change. (Bug #13900)

  • The default value of query_prealloc_size was set to 8192, lower than its minimum of 16384. The minimum has been lowered to 8192. (Bug #13334)

  • The server did not take character set into account in checking the width of the mysql.user.Password column. As a result, it could incorrectly generate long password hashes even if the column was not long enough to hold them. (Bug #13064)

  • Inserting cp932 strings into a VARCHAR column caused a server crash rather than string truncation if the string was longer than the column definition. (Bug #12547)

  • Two threads that were creating triggers on an InnoDB table at the same time could deadlock. (Bug #12739)

  • mysqladmin and mysqldump would hang on SCO OpenServer. (Bug #13238)

  • Where one stored procedure called another stored procedure: If the second stored procedure generated an exception, the exception was not caught by the calling stored procedure. For example, if stored procedure A used an EXIT statement to handle an exception, subsequent statements in A would be executed regardless when A was called by another stored procedure B, even if an exception that should have been handled by the EXIT was generated in A. (Bug #7049)

  • Trying to create a stored routine with no database selected would crash the server. (Bug #13514, Bug #13587)

  • Specifying --default-character-set=cp-932 for mysqld would cause SQL scripts containing comments written using that character set to fail with a syntax error. (Bug #13487)

  • Trying to compile the server using the --without-geometry option caused the build to fail. (Bug #12991)

D.1.3. Changes in release 5.0.15 (19 October 2005: Production)

Functionality added or changed:

  • Warning: Incompatible change. For BINARY columns, the pad value and how it is handled has changed. The pad value for inserts now is 0x00 rather than space, and there is no stripping of the pad value for selects. For details, see Section 11.4.2, “The BINARY and VARBINARY Types”.

  • Warning: Incompatible change. The CHAR() function now returns a binary string rather than a string in the connection character set. An optional USING charset clause may be used to produce a result in a specific character set instead. Also, arguments larger than 256 produce multiple characters. They are no longer interpreted modulo 256 to produce a single character each. These changes may cause some incompatibilities, as noted in Section 2.10.2, “Upgrading from Version 4.1 to 5.0”.

  • NDBCluster: The perror utility included with the MySQL-Server RPM now provides support for the --ndb option, and so can be used to obtain error message text for MySQL Cluster error codes. (Bug #13740)

  • When executing single-table UPDATE or DELETE queries containing an ORDER BY ... LIMIT N clause, but not having any WHERE clause, MySQL can now take advantage of an index to read the first N rows in the ordering specified in the query. If an index is used, only the first N records will be read, as opposed to scanning the entire table. (Bug #12915)

  • The MySQL-server RPM now explicitly assigns the mysql system user to the mysql user group during the postinstallation process. This corrects an issue with upgrading the server on some Linux distributions whereby a previously existing mysql user was not changed to the mysql group, resulting in wrong groups for files created following the installation. (Bug #12823)

  • Added the --tz-utc option to mysqldump. This option adds SET TIME_ZONE='+00:00' to the dump file so that TIMESTAMP columns can be dumped and reloaded between servers in different time zones and protected from changes due to daylight saving time. (Bug #13052)

  • When declaring a local variable (or parameter) named password or name, and setting it with SET, e.g. SET password = '', the new error message: ERROR 42000: Variable 'nnn' must be quoted with `...`, or renamed is returned (where 'nnn' is 'password' or 'names'). This means there is a syntax conflict with special sentences like SET PASSWORD = PASSWORD(...) (for setting a user's password) and set names default (for setting charset and collation).

    This must be resolved either by quoting the variable name: SET `password` = ..., which will set the local variable `password`, or by renaming the variable to something else (if setting the user's password is the desired effect).

  • The following statements now cause an implicit COMMIT:

    • CREATE VIEW

    • ALTER VIEW

    • DROP VIEW

    • CREATE TRIGGER

    • DROP TRIGGER

    • CREATE USER

    • RENAME USER

    • DROP USER

    (Bug #13343)

  • NDBCluster: A number of new or improved error messages have been implemented in this release in order to provide better and more accurate diagnostic information regarding cluster configuration issues and problems. (Bug #11739, Bug #11749, Bug #12044, Bug #12786, Bug #13197)

  • NDBCluster: A new “smart” node allocation algorithm means that it is no longer necessary to use sequential IDs for cluster nodes, and that nodes not explicitly assigned IDs should now have IDs allocated automatically in most cases. In practical terms, this means that it is now possible to assign a set of node IDs such as 1, 2, 4, 5 without an error being generated due to the missing 3. (Bug #13009)

Bugs fixed:

  • For InnoDB tables, using a column prefix for a utf8 column in a primary key caused Cannot find record errors when attempting to locate records. (Bug #14056)

  • An expression in an ORDER BY clause failed with Unknown column 'col_name' in 'order clause' if the expression referred to a column alias. (Bug #11694)

  • mysqldump could not dump views. (Bug #14061)

  • Using an undefined variable in an IF or SET clause inside a stored routine produced an incorrect unknown column ... in 'order clause' error message. (Bug #13037)

  • Trying to create a view dynamically using a prepared statement within a stored procedure failed with error 1295. (Bug #13095)

  • mysqldump --triggers did not quote identifiers properly if the --compatible option was given, so the dump output could not be reloaded. (Bug #13146)

  • Character set conversion was not being done for FIND_IN_SET(). (Bug #13751)

  • CAST(1E+300 TO SIGNED INT) produced an incorrect result on little-endian machines. (Bug #13344)

  • Corrected a memory-copying problem for big5 values when using icc compiler on Linux IA-64 systems. (Bug #10836)

  • On BSD systems, the system crypt() call could return an error for some salt values. The error was not handled, resulting in a server crash. (Bug #13619)

  • Character set file parsing during mysql_real_connect() read past the end of a memory buffer. (Bug #6413)

  • InnoDB: Queries that were executed using an index_merge union or intersection could produce incorrect results if the underlying table used the InnoDB storage engine and had a primary key containing VARCHAR members. (Bug #13484)

  • CREATE DEFINER=... VIEW ... caused the server to crash when run with --skip-grant-tables. (Bug #13504)

  • The --interactive-timeout and --slave-net-timeout options for mysqld were not being obeyed on Mac OS X and other BSD-based platforms. (Bug #8731)

  • Queries of the form (SELECT ...) ORDER BY ... were being treated as a UNION. This improperly resulted in only distinct values being returned (because UNION by default eliminates duplicate results). Also, references to column aliases in ORDER BY clauses following parenthesized SELECT statements were not resolved properly. (Bug #7672)

  • If special characters such as '_' , '%', or the escape character were included within the prefix of a column index, LIKE pattern matching on the indexed column did not return the correct result. (Bug #13046, Bug #13919)

  • An UPDATE query using a join would be executed incorrectly on a replication slave. (Bug #12618)

  • Server crashed during a SELECT statement, writing a message like this to the error log:

    InnoDB: Error: MySQL is trying to perform a SELECT
    InnoDB: but it has not locked any tables in ::external_lock()!
    

    (Bug #12736)

  • NDBCluster: ndb_mgmd would allow a node to be stopped or restarted while another node was still starting up, which could crash the cluster. It should now not be possible to issue a node stop or restart while a different node is still restarting, and the cluster management client issues an error if an attempt is made to do so. (Bug #13461)

  • NDBCluster: Placing multiple [TCP DEFAULT] sections in the cluster config.ini file crashed ndb_mgmd. (The ndb_mgmd process now exits gracefully with an appropriate error message instead.) (Bug #13611)

  • NDBCluster: Trying to run ndbd as system root when connecting to a mysqld process running as the mysql system user via SHM caused the ndbd process to crash. (ndbd should now exit gracefully with an appropriate error message instead.) (Bug #9249)

  • Server may over-allocate memory when performing a FULLTEXT search for stopwords only. (Bug #13582)

  • Queries that use indexes in normal SELECT statements may cause range scans in VIEWs. (Bug #13327)

  • When calling a stored procedure with the syntax CALL schema.procedurename and no default schema selected, ERROR 1046 was displayed after the procedure returned. (Bug #13616)

  • With --log-slave-updates Exec_master_log_pos of SQL thread lagged IO (Bug #13023)

  • SHOW CREATE TABLE did not display any FOREIGN KEY clauses if a temporary file could not be created. Now SHOW CREATE TABLE displays an error message in an SQL comment if this occurs. (Bug #13002)

  • A column in the ON condition of a join that referenced a table in a nested join could not be resolved if the nested join was a right join. (Bug #13597)

  • A qualified reference to a view column in the HAVING clause could not be resolved. (Bug #13410)

  • comp_err did not detect when multiple error messages for a language were given for an error symbol. (Bug #13071)

  • For XA transaction IDs (gtrid.bqual.formatID), uniqueness is supposed to be assessed based on gtrid and bqual. MySQL was also including formatID in the uniqueness check. (Bug #13143)

  • Local (non-XA) and XA transactions are supposed to be mutually exclusive within a given client connection, but this prohibition was not always enforced. (Bug #12935)

  • mysqlcheck --all-databases --analyze --optimize failed because it also tried to analyze and optimize the INFORMATION_SCHEMA tables which it can't. (Bug #13783)

  • SELECT * INTO OUTFILE ... FROM INFORMATION_SCHEMA.schemata failed with an Access denied error. (Bug #13202)

  • A table or view named Ç (C-cedilla) couldn't be dropped. (Bug #13145)

  • Tests containing SHOW TABLE STATUS or INFORMATION_SCHEMA failed on opnsrv6c. (Bug, #14064, Bug #14065)

D.1.4. Changes in release 5.0.14 (Not released)

Functionality added or changed:

The limit of 255 characters on the input buffer for mysql on Windows has been lifted. The exact limit depends on what the system allows, but can be up to 64K characters. A typical limit is 16K characters. (Bug #12929)

Re-enabled the --delayed-inserts option for mysqldump, which now checks for each table dumped whether its storage engine supports DELAYED inserts. (Bug #7815)

Added the myisam_stats_method, which controls whether NULL values in indexes are considered the same or different when collecting statistics for MyISAM tables. This influences the query optimizer as described in Section 7.4.7, “MyISAM Index Statistics Collection”. (Bug #12232)

  • When an InnoDB foreign key constraint is violated, the error message now indicates which table, column, and constraint names are involved. (Bug #3443)

  • Configure-time checking for the availability of multi-byte macros and functions in the bundled readline library. This improves handling of multi-byte character sets in the mysql client. (Bug #3982)

  • The CHAR() function now takes into account the character set and collation given by the character_set_connection and collation_connection system variables. For an argument n to CHAR(), the result is n mod 256 for single-byte character sets. For multi-byte character sets, n must be a valid code point in the character set. Also, the result string from CHAR() is checked for well-formedness. For invalid arguments, or a result that is not well-formed, MySQL generates a warning (or, in strict SQL mode, an error). (Bug #10504)

  • RENAME TABLE now works for views as well, as long as you do not try to rename a view into a different database. (Bug #5508)

  • Multi-table UPDATE and DELETE statements that do not affect any rows are now written to the binary log and will replicate. (Bug #13348, Bug #12844)

  • Range scans can now be performed for queries on VIEWs such as column IN (<constants>) and column BETWEEN ConstantA AND ConstantB. (Bug #13317)

Bugs fixed:

  • NDBCluster: A trigger updating the value of an AUTO_INCREMENT column in a Cluster table would insert an error code rather than the expected value into the column. (Bug #13961)

  • NDBCluster: When performing a delete of a great many (tens of thousands of) rows at once from a Cluster table, an improperly dereferenced pointer could cause the mysqld process to crash. (Bug #9282)

  • CHECKSUM TABLE locked InnoDB tables and did not use a consistent read. (Bug #12669)

  • The --skip-innodb-doublewrite option disables use of the InnoDB doublewrite buffer. However, having this option in effect when creating a new MySQL installation prevented the buffer from even being created, resulting in a server crash later. (Bug #13367)

  • MySQL programs in binary distributions for Solaris 8/9/10 x86 systems would not run on Pentium III machines. (Bug #6772)

  • When SELECT ... FOR UPDATE or SELECT ... LOCK IN SHARE MODE for an InnoDB table were executed from within a stored function or a trigger, they were converted to a non-locking consistent read. (Bug #11238)

  • NDB Cluster: If ndb_restore could not find a free mysqld process, it crashed. (Bug #13512)

  • NDB Cluster: Receipt of several enter single user mode commands by multiple ndb_mgmd processes within a short period of time resulted in cluster shutdown. (Bug #13053)

  • NDB Cluster: Multiple ndb_mgmd processes in a cluster would not know each other's IP addresses. (Bug #12037)

  • NDB Cluster: With two mgmd processes in a cluster, ndb_mgmd output for SHOW would display the same IP address for both processes, even when they were on different hosts. (Bug #11595)

  • NDB Cluster: Queries on NDB tables that are executed using index_merge/union or index_merge/intersection could produce incorrect results. (Bug #13081)

  • The --replicate-rewrite-db and --replicate-do-table options did not work for statements in which tables were aliased to names other than those listed by the options. (Bug #11139)

  • After running configure with the --with-embedded-privilege-control option, the embedded server failed to build. (Bug #13501)

  • Nested handlers within stored procedures didn't work. (Bug #6127)

  • The optimizer chose a less efficient execution plan for col_name BETWEEN const AND const than for col_name = const, even though the two expressions are logically equivalent. Now the optimizer can use the ref access method for both expressions. (Bug #13455)

  • Incorrect creation of DECIMAL local variables in a stored procedure could cause a server crash. (Bug #12589)

  • Queries against a MERGE table that has a composite index could produce incorrect results. (Bug #9112)

  • The server was not rejecting FLOAT(M,D) or DOUBLE(M,D) columns specifications when M was less than D. (Bug #12694)

  • After running configure with the --without-server option, the distribution failed to build. (Bug #11680, Bug #13550)

  • Joins nested under NATURAL or USING joins were sometimes not initialized properly, causing a server crash. (Bug #13545)

  • Locking a view with the query cache enabled and query_cache_wlock_invalidate enabled could cause a server crash. (Bug #13424)

  • A HAVING clause that references an unqualified view column name could crash the server. (Bug #13411)

  • Comparisons involving row constructors containing constants could cause a server crash. (Bug #13356)

  • NDB Cluster: LOAD DATA INFILE with a large data file failed. (Bug #10694)

  • NDB Cluster: Adding an index to a table with a large number of columns (more then 100) crashed the storage node. (Bug #13316)

  • Calling the FORMAT() function with a DECIMAL column value caused a server crash when the value was NULL. (Bug #13361)

  • Aggregate functions sometimes incorrectly were allowed in the WHERE clause of UPDATE and DELETE statements. (Bug #13180)

  • It was possible to create a view that executed a stored function for which you did not have the EXECUTE privilege. (Bug #12812)

  • BIT columns and following columns in NDB tables were corrupt when dumped by mysqldump. (Bug #13152)

  • NATURAL joins and joins with USING against a view could return NULL rather than the correct value. (Bug #13127)

  • Use of a user-defined function within the HAVING clause of a query resulted in an Unknown column error. (Bug #11553)

  • For queries for which the optimizer determined a join type of “Range checked for each record” (as shown by EXPLAIN, the query sometimes could cause a server crash, depending on the data distribution. (Bug #12291)

  • For queries with DISTINCT and WITH ROLLUP, the DISTINCT should be applied after the rollup operation, but was not always. (Bug #12887)

  • The server crashed when processing a view that invoked the CONVERT_TZ() function. (Bug #11416)

  • Shared-memory connections were not working on Windows. (Bug #12723)

D.1.5. Changes in release 5.0.13 (22 Sept 2005: Release Candidate)

Functionality added or changed:

  • The syntax for CREATE VIEW and ALTER VIEW statements now includes DEFINER and SQL SECURITY clauses for specifying the security context to be used when checking access privileges at view invocation time. (The syntax is present in 5.0.13, but these clauses have no effect until 5.0.16.) See Section 19.2, “CREATE VIEW Syntax” for more information.

  • Added a --routines option for mysqldump that enables dumping of stored routines. (Bug #9056)

  • The connection string for FEDERATED tables now is specified using a CONNECTION table option rather than a COMMENT table option.

  • Better detection of connection timeout for replication servers on Windows allows elimination of extraneous Lost connection errors in the error log. (Bug #5588)

  • The counters for the Key_read_requests, Key_reads, Key_write_requests, and Key_writes status variables were changed from unsigned long to unsigned longlong to accommodate larger variables without rollover. (Bug #12920)

  • The restriction on the use of PREPARE, EXECUTE, and DEALLOCATE PREPARE within stored procedures was lifted. The restriction still applies to stored functions and triggers. (Bug #10975, Bug #7115, Bug #10605)

  • A new command line argument was added to mysqld to ignore client character set information sent during handshake, and use server side settings instead, to reproduce 4.0 behavior (Bug #9948):

    mysqld --skip-character-set-client-handshake

  • OPTIMIZE TABLE and HANDLER now are prohibited in stored procedures and functions and in triggers. (Bug #12953, Bug #12995)

  • InnoDB: The TRUNCATE TABLE statement for InnoDB tables always resets the counter for an AUTO_INCREMENT column now, regardless of whether there is a foreign key constraint on the table. (Beginning with 5.0.3, TRUNCATE TABLE reset the counter, but only if there was no such constraint.) (Bug #11946)

  • The LEAST() and GREATEST() functions used to return NULL only if all arguments were NULL. Now they return NULL if any argument is NULL, the same as Oracle. (Bug #12791)

  • Two new collations have been added for Esperanto: utf8_esperanto_ci and ucs2_esperanto_ci.

  • Reorder network startup to come after all other initialization, particularly storage engine startup which can take a long time. This also prevents MySQL from being run on a privileged port (any port under 1024) unless run as the root user. (Bug #11707)

  • The Windows binary packages are now compiled with the Microsoft Visual Studio 2003 compiler instead of Microsoft Visual C++ 6.0.

  • The binaries compiled with the Intel icc compiler are now built using icc 9.0 instead of icc 8.1. You will have to install new versions of the Intel icc runtime libraries, which are available from here: ( http://dev.mysql.com/downloads/os-linux.html)

Bugs fixed:

  • Incompatible change: A lock wait timeout caused InnoDB to roll back the entire current transaction. Now it rolls back only the most recent SQL statement. (Bug #12308)

  • mysqldump did not dump triggers properly. (Bug #12597)

  • NDBCluster: The average row size for Cluster tables was being calcualted incorrectly. This affected the values shown for the Data_length and Avg_row_length columns in the output generated by SHOW TABLE STATUS as well as the values for the data_length and data_length/table_rows columns shown in the TABLES table of the INFORMATION_SCHEMA database with respect to Cluster tables (tables using other storage engines were not affected by this bug). (Bug #9896)

  • Within a stored procedure, fetching a large number of rows in a loop using a cursor could result in a server crash or an out of memory error. Also, values inserted within a stored procedure using a cursor were interpreted as latin1 even if character set variables had been set to a different character set. (Bug #6513, Bug #9819)

  • For a server compiled with yaSSL, clients that used MySQL Connector/J were not able to establish SSH connections. (Bug #13029)

  • When used in view definitions, DAYNAME(expr), DAYOFWEEK(expr), WEEKDAY(expr) were incorrectly treated as though the expression was TO_DAYS(expr) or TO_DAYS(TO_DAYS(expr)). (Bug #13000)

  • Incorrect implicit nesting of joins caused the parser to fail on queries of the form SELECT ... FROM t1 JOIN t2 JOIN t3 ON t1.t1col = t3.t3col with an Unknown column 't1.t1col' in 'on clause' error. (Bug #12943)

  • NDB: A cluster shutdown following the crash of a data node would fail to terminate the remaining node processes, even though ndb_mgm showed the shutdown request as having been completed. (Bug #10938, Bug #9996, Bug #11623)

  • A column that can be NULL was not handled properly for WITH ROLLUP in a subquery or view. (Bug #12885)

  • Within a transaction, the following statements now cause an implicit commit: CREATE FUNCTION, DROP FUNCTION, DROP PROCEDURE, ALTER FUNCTION, ALTER PROCEDURE, CREATE PROCEDURE. This corrects a problem where these statements followed by ROLLBACK might not be replicated properly. (Bug #12870)

  • Simultaneous execution of DML statements and CREATE TRIGGER or DROP TRIGGER statements on the same table could cause server crashes or errors. (Bug #12704)

  • If a stored function invoked from a SELECT failed with an error, it could cause the client connection to be dropped. Now such errors generate warnings instead so as not to interrupt the SELECT. (Bug #12379)

  • A concurrency problem for CREATE ... SELECT could cause a server crash. (Bug #12845)

  • The server incorrectly generated an Unknown table error message when for attempts to drop tables in the INFORMATION_SCHEMA database. Now it issues an Access denied message. (Bug #9846)

  • The server allowed privileges to be granted explicitly for the INFORMATION_SCHEMA database. Such privileges are always implicit and should not be grantable. (Bug #10734)

  • The server allowed TEMPORARY tables and stored procedures to be created in the INFORMATION_SCHEMA database. (Bug #9683, Bug #10708)

  • The server failed to disallow SET AUTOCOMMIT in stored functions and triggers. It is allowed to change the value of AUTOCOMMIT in stored procedures, but a runtime error might occur if the procedure is invoked from a stored function or trigger. (Bug #12712)

  • Using an INOUT parameter with a DECIMAL data type in a stored procedure caused a server crash. (Bug #12979)

  • Performing an IS NULL check on the MIN() or MAX() of an indexed column in a complex query could produce incorrect results. (Bug #12695)

  • The mysql.server script contained incorrect path for the libexec directory. (Bug #12550)

  • The NDB START BACKUP command could be interrupted by a SHOW command. (Bug #13054)

  • The LIKE ... ESCAPE syntax produced invalid results when escape character was larger than one byte. (Bug #12611)

  • A client connection thread cleanup problem caused the server to crash when closing the connection if the binary log was enabled. (Bug #12517)

  • Using AS to rename a column selected from a view in a subquery made it not possible to refer to that column in the outer query. (Bug #12993)

  • The character_set_system system variable could not be selected with SELECT @@character_set_system. (Bug #11775)

  • A view-creation statement of the form CREATE VIEW name AS SELECT ... FROM tbl_name AS name failed with a Not unique table/alias: 'name' error. (Bug #6808)

  • UNION [DISTINCT] was not removing all duplicates for multi-byte character values. (Bug #12891)

  • Multiplying a DECIMAL value within a loop in a stored routine could incorrectly result in a value of NULL. (Bug #12938)

  • mysql and mysqldump were ignoring the --defaults-extra-file option. (Bug #12917)

  • Columns named in the USING() clause of JOIN ... USING() were incorrectly resolved in case-sensitive fashion. (Bug #13067)

  • Local variables in stored routines were not always initialized correctly. (Bug #13133)

  • SHOW FIELDS FROM schemaname.viewname caused error 1046 when no default schema was set. (Bug #12905)

  • The value of character_set_results could be set to NULL, but returned the string "NULL" when retrieved. (Bug #12363)

  • InnoDB: Limit recursion depth to 200 in deadlock detection to avoid running out of stack space. (Bug #12588)

  • GROUP_CONCAT() ignored an empty string if it was the first value to occur in the result. (Bug #12863)

  • Outer join elimination was erroneously applied for some queries that used a NOT BETWEEN condition, an IN(value_list) condition, or an IF() condition. (Bug #12101, Bug #12102)

  • SHOW FIELDS truncated the TYPE column to 40 characters. (Bug #7142)

  • Use of PREPARE and EXECUTE with a statement that selected from a view in a subquery could cause a server crash. (Bug #12651)

  • On HP-UX 11.x (PA-RISC), the -L option caused mysqlimport to crash. (Bug #12958)

  • If the binary log is enabled, execution of a stored procedure that modifies table data and uses user variables could cause a server crash or incorrect information to be written to the binary log. (Bug #12637)

  • Queries with subqueries, where the inner subquery uses the range or index_merge access method, could return incorrect results. (Bug #12720)

  • After changing the character set with SET CHARACTER SET, the result of the GROUP_CONCAT() function was not converted to the proper character set. (Bug #12829)

  • A bug introduced in MySQL 5.0.12 caused SHOW TABLE STATUS to display an Auto_increment value of 0 for InnoDB tables. (Bug #12973)

  • Foreign keys were not properly enforced in TEMPORARY tables. Foreign keys now are disallowed in TEMPORARY tables. (Bug #12084)

  • Replication of LOAD DATA INFILE failed between systems that use different pathname syntax (such as delimiter characters). (Bug #11815)

  • Within a stored procedure, a server crash was caused by assigning to a VARCHAR INOUT parameter the value of an expression that included the variable itself. (For example, SET c = c.) (Bug #12849)

  • SELECT ... JOIN ... ON ... JOIN ... USING caused a server crash. (Bug #12977)

  • Using GROUP BY when selecting from a view in some cases could cause incorrect results to be returned. (Bug #12922)

  • myisampack did not properly pack BLOB values larger than 224 bytes. (Bug #4214)

  • Incorrect results could be returned from a view processed using a temporary table. (Bug #12941)

  • The server crashed when one thread resized the query cache while another thread was using it. (Bug #12848)

  • mysqld_multi now quotes arguments on command lines that it constructs to avoid problems with arguments that contain shell metacharacters. (Bug #11280)

  • InnoDB: A consistent read could return inconsistent results due to a bug introduced in MySQL 5.0.5. (Bug #12947)

  • Deadlock occurred when several account management statements were run (particularly between FLUSH PRIVILEGES/SET PASSWORD and GRANT/REVOKE statements). (Bug #12423)

  • The Windows installer made a change to one of the mysql.proc table files, causing stored routine functionality to be compromised. The Windows installer now never overwrites files in the MySQL data directory. During an upgrade from one version to another, a file in the data directory will not be overwritten even if it has not been modified since it was put there by an older installer.

    If you have already lost access to stored routines because of this problem, you can get them back using the following procedure:

    • Stop the server.

    • In the mysql\data directory under your MySQL installation directory, and replace the proc.frm file with corresponding file from the version of MySQL that you were using before you upgraded.

    • Start the server

    • Start the mysql command-line client (use the root account or another account that has full database privileges) and execute the mysql_fix_privilege_tables.sql script that upgrades the grant tables to the current structure. Instructions for doing this are given in Section 2.10.3, “Upgrading the Grant Tables”.

    After this, all stored routine functionality should work. (Bug #12820)

  • On Windows, the server was preventing tables from being created if the table name was a prefix of a forbidden name. For example, nul is a forbidden name because it's the same as a Windows device name, but a table with the name of n or nu was being forbidden as well. (Bug #12325)

  • InnoDB was too permissive with LOCK TABLE ... READ LOCAL and alowed new inserts into the table. Now READ LOCAL is equivalent to READ for InnoDB. This will cause slightly more locking in mysqldump, but makes InnoDB table dumps consistent with MyISAM table dumps. (Bug #12410)

  • Use of the mysql client HELP command from within a stored routine caused a “packets out of order” error and a lost connection. Now HELP is detected and disallowed within stored routines. (Bug #12490)

  • Use of yaSSL for a secure client connection caused LOAD DATA LOCAL INFILE to fail. (Bug #11286)

  • SHOW CREATE PROCEDURE and SHOW CREATE FUNCTION no longer qualify the routine name with the database name, for consistency with the behavior of SHOW CREATE TABLE. (Bug #10362)

  • A UNION of long utf8 VARCHAR columns was sometimes returned as a column with a LONGTEXT data type rather than VARCHAR. This could prevent such queries from working at all if selected into a MEMORY table because the MEMORY storage engine does not support the TEXT data types. (Bug #12537)

  • If a client has opened an InnoDB table for which the .ibd file is missing, InnoDB would not honor a DROP TABLE statement for the table. (Bug #12852)

  • ALTER TABLE ... DISCARD TABLESPACE for non-InnoDB table caused the client to lose the connection. (The server was not returning the error properly.) (Bug #12207)

  • DO IFNULL(NULL, NULL) and SELECT CAST(IFNULL(NULL, NULL) AS DECIMAL) caused a server crash. (Bug #12841)

  • When using a cursor, a SELECT statement that uses a GROUP BY clause could return incorrect results. (Bug #11904)

  • The SYSDATE() function now returns the time at which it was invoked. In particular, within a stored routine or trigger, SYSDATE() returns the time at which it executes, not the time at which the stored routine or triggering statement began to execute. (Bug #12480)

  • CREATE VIEW inside a stored procedure caused a server crash if the table underlying the view had been deleted. (Bug #12468)

  • A memory leak resulting from repeated SELECT ... INTO statements inside a stored procedure could cause the server to crash. (Bug #11333)

D.1.6. Changes in release 5.0.12 (02 Sept 2005)

Functionality added or changed:

  • Incompatible change: Beginning with MySQL 5.0.12, natural joins and joins with USING, including outer join variants, are processed according to the SQL:2003 standard. The changes include elimination of redundant output columns for NATURAL joins and joins specified with a USING clause and proper ordering of output columns. (Bug #6136, Bug #6276, Bug #6489, Bug #6495, Bug #6558, Bug #9067, Bug #9978, Bug #10428, Bug #10646, Bug #10972.) The precedence of the comma operator also now is lower compared to JOIN. (Bug #4789, Bug #12065, Bug #13551.)

    These changes make MySQL more compliant with standard SQL. However, they can result in different output columns for some joins. Also, some queries that appeared to work correctly prior to 5.0.12 must be rewritten to comply with the standard. For details about the scope of the changes and examples that show what query rewrites are necessary, see Section 13.2.7.1, “JOIN Syntax”.

  • SHOW TABLE STATUS for a view now shows VIEW in uppercase, consistent with SHOW TABLES and INFORMATION_SCHEMA. (Bug #5501)

  • An optimizer estimate of zero rows for a non-empty InnoDB table used in a left or right join could cause incomplete rollback for the table. (Bug #12779)

  • Calls to stored procedures were written to the binary log even within transactions that were rolled back, causing them to be executed on replication slaves. (Bug #12334)

  • Interleaved execution of stored procedures and functions could be written to the binary log incorrectly, causing replication slaves to get out of sync. (Bug #12335)

  • A query of the form SHOW TABLE STATUS FROM db_name WHERE name IN (select_query) would crash the server. (Bug #12636)

  • Users created using an IP address or other alias rather than a hostname listed in /etc/hosts could not set their own passwords. (Bug #12302)

  • Using DESCRIBE on a view after renaming a column in one of the view's base tables caused the server to crash. (Bug #12533)

  • Recursive triggers are detected and disallowed. (Bug #11896, Bug #12644)

  • SHOW OPEN TABLES now supports FROM and LIKE clauses. (Bug #12183)

  • SHOW TABLE STATUS FROM INFORMATION_SCHEMA now sorts output by table name the same as it does for other databases. (Bug #12315)

  • SHOW ENGINE INNODB STATUS now can display longer query strings. (Bug #7819)

  • Added the SLEEP() function, which pauses for the number of seconds given by its argument. (Bug #6760)

  • Trying to drop the default keycache by setting @@global.key_buffer_size to zero now returns a warning that the default keycache cannot be dropped. (Bug #10473)

  • The stability of cursors when used with InnoDB tables was greatly improved. (Bug #11832, Bug #12243, Bug #11309)

  • It is no longer possible to issue FLUSH commands from within stored functions or triggers. See Section I.1, “Restrictions on Stored Routines and Triggers” for details. (Bug #12280, Bug #12307)

  • INFORMATION_SCHEMA objects are now reported as a SYSTEM VIEW table type. (Bug #11711)

Bugs fixed:

  • CHECKSUM TABLE command returned incorrect results for tables with deleted rows. After upgrading, users who used stored checksum information to detect table changes should rebuild their checksum data. (Bug #12296)

  • A data type of CHAR BINARY was not recognized as valid for stored routine parameters. (Bug #9048)

  • SET GLOBAL TRANSACTION ISOLATION LEVEL was not working. (Bug #11207)

  • NDB Cluster: Corrected the parsing of the CLUSTERLOG command by ndb_mgm to allow multiple items. (Bug #12833)

  • NDB Cluster: Improved error messages related to filesystem issues. (Bug #11218)

  • NDB Cluster: When a schema was detected to be corrupt, ndb neglected to close it, resulting in a “file already open” error if the schema was opened again later. written. (Bug #12027)

  • NDB Cluster: When it could not copy a fragment, ndbd exited without printing a message about the condition to the error log. Now the message is written. (Bug #12900)

  • NDB Cluster: When a disk full condition occurred, ndbd exited without printing a message about the condition to the error log. Now the message is written. (Bug #12716)

  • mysql_fix_privilege_tables.sql was missing a comma, causing a syntax error when executed. (Bug #12705)

  • STRCMP() was not handled correctly in views. (Bug #12489)

  • NDB Cluster: Bad values in config.ini caused ndb_mdmd to crash. (Bug #12043)

  • TRUNCATE TABLE did not work with TEMPORARY InnoDB tables. (Bug #11816)

  • Built-in commands for the mysql client, such as delimiter and \d are now always parsed within files that are read using the \. and source commands. (Bug #11523)

  • ALTER TABLE db_name.t RENAME t did not move the table to default database unless the new name was qualified with the database name. (Bug #11493)

  • It was not possible to create a stored function with a spatial return value data type. (Bug #10499)

  • The only valid values for the PACK_KEYS table option are 0 and 1, but other values were being accepted. (Bug #10056)

  • If a DROP DATABASE fails on a master server due to the presence of a non-database file in the database directory, the master have have the database tables deleted, but not the slaves. To deal with failed database drops, we now write DROP TABLE statements to the binary log for the tables so that they are dropped on slav