Released on 10 Nov 2005
MySQL 5.0.16 Changelog
  • Functionality Added or Changed

  • Bugs Fixed

Functionality Added or Changed

  • MySQL Cluster: The InnoDB, NDB, BDB, and ARCHIVE storage engines now support spatial columns. See Extensions for Spatial Data.

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

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

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

  • MySQL now supports character set conversion for seven additional cp950 characters into the big5 character set: 0xF9D6, 0xF9D7, 0xF9D8, 0xF9D9, 0xF9DA, 0xF9DB, and 0xF9DC.


    If you move data containing these additional characters to an older MySQL installation which does not support them, you may encounter errors.

    (Bug #12476)

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

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

  • The CHECK TABLE statement now works for ARCHIVE tables.

  • 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 CREATE VIEW Syntax, for more information.

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

  • 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 Binary Logging of Stored Programs.

Bugs Fixed

  • MySQL Cluster: Repeated transactions using unique index lookups could cause a memory leak leading to error 288, Out of index operations in transaction coordinator. (Bug #14199)

  • MySQL Cluster: A memory leak occurred when performing ordered index scans using indexes on columns larger than 32 bytes. This would eventually lead to the forced shutdown of all mysqld server processes used with the cluster. (Bug #13078)

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

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

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

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

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

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

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

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

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

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

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

  • A bug fix 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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • InnoDB: When dropping and adding a PRIMARY KEY, if a loose index scan using only the second part of multiple-part index was chosen, incorrect keys were created and an endless loop resulted. (Bug #13293)

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

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

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

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

  • The source distribution failed to compile when configured with the --without-geometry option. (Bug #12991)

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

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

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

  • InnoDB: Large innobase_buffer_pool_size and innobase_log_file_size values were displayed incorrectly on 64-bit systems. (Bug #12701)

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

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

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

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

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

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

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

  • Starting mysqld with the --skip-innodb and --default-storage-engine=innodb (or --default-table-type=innodb caused a server crash. (Bug #9815)

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

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

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

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