Released on 15 Jul 2005
MySQL 5.0.9 Changelog
  • Functionality Added or Changed

  • Bugs Fixed

Functionality Added or Changed

  • The handling of BIT columns has been improved, and should now be much more reliable in a number of cases. (Bug #11572, Bug #11091, Bug #10617)

  • Recursion in stored routines is now disabled because it was crashing the server. (Bug #11394)

  • An attempt to create a TIMESTAMP column with a display width (for example, TIMESTAMP(6)) now results in a warning. Display widths have not been supported for TIMESTAMP since MySQL 4.1. (Bug #10466)

  • mysql_real_escape_string() API function now respects NO_BACKSLASH_ESCAPES SQL mode. (Bug #10214)

  • InnoDB: Made CHECK TABLE killable. (Bug #9730)

  • InnoDB: Various optimizations. Removed unreachable debug code from nondebug builds. Added hints for the branch predictor in gcc. Made assertions occupy less space.

  • InnoDB: Make innodb_thread_concurrency = 20 by default. Bypass the concurrency checking if the setting is greater than or equal to 20.

  • InnoDB: When creating or extending an InnoDB data file, at most one megabyte at a time is allocated for initializing the file. Previously, InnoDB allocated and initialized 1 or 8 megabytes of memory, even if only a few 16-kilobyte pages were to be written. This improves the performance of CREATE TABLE in innodb_file_per_table mode.

Bugs Fixed

  • MySQL Cluster: When trying to open a table that could not be discovered or unpacked, the cluster returned error codes which the MySQL server falsely interpreted as operating system errors. (Bug #10365)

  • The --master-data option for mysqldump resulted in no error if the binary log was not enabled. Now an error occurs unless the --force option is given. (Bug #11678)

  • When a table had a primary key containing a BLOB column, creation of another index failed with the error BLOB/TEXT column used in key specification without keylength, even when the new index did not contain a BLOB column. (Bug #11657)

  • Incorrect results when using GROUP BY ... WITH ROLLUP on a VIEW. (Bug #11639)

  • MySQL would not compile correctly on QNX due to missing rint() function. (Bug #11544)

  • A SELECT DISTINCT col_name would work correctly with a MyISAM table only when there was an index on col_name. (Bug #11484)

  • Using CONCAT_WS() on a column set NOT NULL caused incorrect results when used in a LEFT JOIN. (Bug #11469)

  • Temporary tables were created in the data directory instead of tmpdir. (Bug #11440)

  • Running a CHECK TABLES on multiple views crashed the server. (Bug #11337)

  • Manually inserting a row with host='' into mysql.tables_priv and performing a FLUSH PRIVILEGES would cause the server to crash. (Bug #11330)

  • Wrong comparison method used in VIEW when relaxed date syntax used (for example, 2005.06.10). (Bug #11325)

  • Signed BIGINT would not accept -9223372036854775808 as a DEFAULT value. (Bug #11215)

  • Optimizer performed range check when comparing unsigned integers to negative constants, could cause errors. (Bug #11185)

  • A cursor using a query with a filter on a DATE or DATETIME column would cause the server to crash server after the data was fetched. (Bug #11172)

  • The mysql_config script did not handle symbolic linking properly. (Bug #10986)

  • mysqldump failed when reloading a view if the view was defined in terms of a different view that had not yet been reloaded. mysqldump now creates a dummy table to handle this case. (Bug #10927)

  • If a prepared statement cursor is opened but not completely fetched, attempting to open a cursor for a second prepared statement will fail. (Bug #10794)

  • Combining cursors and subqueries could cause server crash or memory leaks. (Bug #10736)

  • Instances of the VAR_SAMP() function in view definitions were converted to VARIANCE(). This is incorrect because VARIANCE() is the same as VAR_POP(), not VAR_SAMP(). (Bug #10651)

  • DES_ENCRYPT() and DES_DECRYPT() require SSL support to be enabled, but were not checking for it. Checking for incorrect arguments or resource exhaustion was also improved for these functions. (Bug #10589)

  • For MEMORY tables, it was possible for updates to be performed using outdated key statistics when the updates involved only very small changes in a very few rows. This resulted in the random failures of queries such as UPDATE t SET col = col + 1 WHERE col_key = 2; where the same query with no WHERE clause would succeed. (Bug #10178)

  • When used in joins, SUBSTRING() failed to truncate to zero those string values that could not be converted to numbers. (Bug #10124)

  • Views did not use indexes on all appropriate queries. (Bug #10031)

  • Closing a cursor that was already closed would cause MySQL to hang. (Bug #9814)

  • The server would lose table-level CREATE VIEW and SHOW VIEW privileges following a FLUSH PRIVILEGES or server restart. (Bug #9795)

  • mysqldump --xml did not format NULL column values correctly. (Bug #9657)

  • The --no-data option for mysqldump was being ignored if table names were given after the database name. (Bug #9558)

  • Clients would hang following some errors with stored procedures. (Bug #9503)

  • mysqldump could crash for illegal or nonexistent table names. (Bug #9358)

  • A compression algorithm issue caused myisampackto fail for very large data sets (where the total size of all records in a single column was on the order of 3 GB or more) on 64-bit platforms. (A fix for other platforms was made in MySQL 5.0.6.) (Bug #8321)

  • The ENCRYPT() and SUBSTRING_INDEX() functions would cause errors when used with a VIEW. (Bug #7024)

  • SHOW CREATE VIEW did not take the ANSI SQL mode into account when quoting identifiers. (Bug #6903)

  • In strict mode, an INSERT into a view that did not include a value for a NOT NULL column but that did include a WHERE test on the same column would succeed, This happened even though the INSERT should have been prevented due to the failure to supply a value for the NOT NULL column. (Bug #6443)