Released on 19 Oct 2005
MySQL 5.0.15 Changelog
  • Functionality Added or Changed

  • Bugs Fixed

Functionality Added or Changed

  • 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 Upgrading from MySQL 4.1 to 5.0.

  • 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 The BINARY and VARBINARY Types.

  • MySQL Cluster: The ndb_mgm client now reports node startup phases automatically. (Bug #16197)

  • MySQL Cluster: 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)

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

  • The following statements now cause an implicit COMMIT:









    (Bug #13343)

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

  • When declaring a local variable (or parameter) named password or name, and setting it with SET (for example, 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 maximum key length for InnoDB indexes was increased from 1024 bytes to 3072 bytes for 64-bit builds.

Bugs Fixed

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

  • MySQL Cluster: Placing multiple [tcp default] sections in the cluster's config.ini file crashed ndb_mgmd. (The process now exits gracefully in such cases, with an appropriate error message.) (Bug #13611)

  • MySQL Cluster: ndb_mgmd permitted 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 should issue an error when such an attempt is made. (Bug #13461)

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

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

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

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

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

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

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

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

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

  • The server could over-allocate memory when performing a FULLTEXT search for stopwords only. (Bug #13582)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    (Bug #12736)

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

  • Issuing STOP SLAVE after having acquired a global read lock with FLUSH TABLES WITH READ LOCK caused a deadlock. Now STOP SLAVE is generates an error in such circumstances. (Bug #10942)

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

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

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