Documentation Home
MySQL 5.0 Release Notes
Related Documentation Download these Release Notes
PDF (US Ltr) - 2.1Mb
PDF (A4) - 2.1Mb

MySQL 5.0 Release Notes  /  Changes in MySQL 5.0.7 (2005-06-10)

Changes in MySQL 5.0.7 (2005-06-10)

Functionality Added or Changed

  • Security Fix: A UDF library-loading vulnerability could result in a buffer overflow and code execution. (CVE-2005-2558)

  • Improved the optimizer to be able to use indexes for expressions of the form indexed_col NOT IN (val1, val2, ...) and indexed_col NOT BETWEEN val1 AND val2. (Bug #10561)

  • The table, type, and rows columns of EXPLAIN output can now be NULL. This is required for using EXPLAIN on SELECT queries that use no tables, such as EXPLAIN SELECT 1). (Bug #9899)

  • All characters occurring on the same line following the DELIMITER keyword will be set as delimiter. For example, DELIMITER :; will set :; as the delimiter. This behavior is now consistent between MySQL 5.1 and MySQL 5.0. (Bug #9879)

  • Added mysql_set_character_set() C API function for setting the default character set of the current connection. This enables clients to affect the character set used by mysql_real_escape_string(). (Bug #8317)

  • The --delayed-insert option for mysqldump was disabled to avoid causing problems with storage engines that do not support INSERT DELAYED. (Bug #7815)

  • Placeholders now can be used for LIMIT in prepared statements. (Bug #7306)

  • Removed mysqlshutdown.exe and mysqlwatch.exe from the Windows No Installer distribution (they had already been removed from the With Installer distribution before). Removed those programs from the source distribution.

  • InnoDB: In stored procedures and functions, InnoDB no longer takes full explicit table locks for every involved table. Only intention locks are taken, similar to those in the execution of an ordinary SQL statement. This greatly reduces the number of deadlocks.

  • SHOW BINARY LOGS now displays a File_size column that indicates the size of each file.

  • Removed WinMySQLAdmin from the source distribution and from the No Installer Windows distribution (it had already been removed from the With Installer distribution before).

  • The behavior of the Last_query_cost system variable has been changed. The default value is now 0 (rather than -1) and it now has session-level scope (rather than being global). See Server Status Variables, for additional information.

Bugs Fixed

  • MySQL would pass an incorrect key length to storage engines for MIN(). This could cause spurious warnings such as InnoDB: Warning: using a partial-field key prefix in search to appear in the .err log. (Bug #13218, Bug #11039)

  • Build failures occurred when compiling the server on Windows using Visual Studio 6. (Bug #11153)

  • Corrected a problem where an incorrect data type was returned in the result set metadata when using a prepared SELECT DISTINCT statement to select from a view. (Bug #11111)

  • The server could crash due to an attempt to allocate too much memory when GROUP BY blob_col and COUNT(DISTINCT) were used. (Bug #11088)

  • Multiple-row REPLACE could fail on a duplicate-key error when having one AUTO_INCREMENT key and one unique key. (Bug #11080)

  • InnoDB: A duplicate key error occurred with REPLACE in a table having an AUTO_INCREMENT column. (Bug #11005)

  • WITH ROLLUP did not sum values properly. (Bug #10982)

  • Security update: A user with limited privileges could obtain information about the privileges of other users by querying objects in the INFORMATION_SCHEMA database for which that user did not have the requisite privileges. (Bug #10964)

  • The value returned by the FIELD() function was incorrect when its parameter list contained one or more instances of NULL. (Bug #10944)

  • Failure of a BEFORE trigger did not prevent the triggering statement from performing its operation on the row for which the trigger error occurred. Now the triggering statement fails as described in Using Triggers. (Bug #10902)

  • The FEDERATED storage engine properly handled outer joins, but not inner joins. (Bug #10848)

  • Executing LOAD INDEX INTO CACHE for a table while other threads where selecting from the table caused a deadlock. (Bug #10602)

  • The TIME_FORMAT() function returned incorrect results with some format specifiers. See Date and Time Functions. (Bug #10590)

  • The LAST_DAY() failed to return NULL when supplied with an invalid argument. See Date and Time Functions. (Bug #10568)

  • A problem with the my_global.h file caused compilation of MySQL to fail on single-processor Linux systems running 2.6 kernels. (Bug #10364)

  • Corrected inappropriate error messages that were displayed when attempting to set the read-only warning_count and error_count system variables. (Bug #10339)

  • The MySQL Instance manager caused the version to be displayed as unknown by SHOW INSTANCE STATUS. (Bug #10229)

  • A simultaneous CREATE TABLE ... SELECT FROM table and ALTER TABLE table on the same table caused the server to crash. (Bug #10224)

  • Under certain rare circumstances, inserting into the table could cause the server to crash. (Bug #10181)

  • Consistently report INFORMATION_SCHEMA table names in uppercase in SHOW TABLE STATUS output. (Bug #10059)

  • Accessing InnoDB tables within stored functions caused the MySQL server to crash. Now, statements that perform an implicit or explicit commit or rollback are prohibited within stored functions or triggers. (Bug #10015)

  • Issuing a write lock for a table from one client prevented other clients from accessing the table's metadata. For example, if one client issued a LOCK TABLES mydb.mytable WRITE, then a second client attempting to execute a USE mydb; would hang. (Bug #9998)

  • Dropping stored routines when the MySQL server had been started with --skip-grant-tables generated extraneous warnings. (Bug #9993)

  • The mysql_next_result() function could hang if you were executing many statements in a mysql_real_query() call and one of those statements raised an error. (Bug #9992)

  • The functions COALESCE(), IF(), and IFNULL() performed incorrect conversions of their arguments. (Bug #9939)

  • An incorrect result was returned from a view that selected a COALESCE() expression from the result of an outer join. (Bug #9938)

  • InnoDB: Do very fast shutdown only if innodb_fast_shutdown = 2, but wait for threads to exit and release allocated memory if innodb_fast_shutdown = 1. Starting with MySQL/InnoDB 5.0.5, InnoDB would do brutal shutdown also when innodb_fast_shutdown = 1. (Bug #9673)

  • Using ORDER BY to sort the results of an IF() that contained a FROM_UNIXTIME() expression returned incorrect results due to integer overflow. (Bug #9669)

  • On Windows, with lower_case_table_names set to 2, using ALTER TABLE to alter a MEMORY or InnoDB table that had a mixed-case name also improperly changed the name to lowercase. (Bug #9660)

  • The combination of COUNT(), DISTINCT, and CONCAT() sometimes triggered a memory deallocation bug on Windows resulting in a server crash. (Bug #9593)

  • INSERT BEFORE triggers were not being activated for implicit inserts (LOAD DATA). (Bug #8755)

  • The ucs2_turkish_ci collation failed with upper('i'). UPPER/LOWER now can return a string with different length. (Bug #8610)

  • The server timed out SSL connections too quickly on Windows. (Bug #8572)

  • If a stored function contained a FLUSH statement, the function crashed when invoked. FLUSH is no longer permitted within stored functions. (Bug #8409)

  • OPTIMIZE run on an InnoDB table did not return a Table is full error if there was insufficient room in the tablespace. (Bug #8135)

  • An incorrect result was obtained for columns that included an aggregate function as part of an expression, and when WITH ROLLUP was used with GROUP BY. (Bug #7914)

  • Queries with ROLLUP returned wrong results for expressions containingGROUP BY columns. (Bug #7894)

  • The second invocation of a stored procedure that selected from a view defined as a join using ON in the join condition could cause the server to crash. (Bug #6866)

  • INSERT BEFORE triggers were not being activated for INSERT ... SELECT statements. (Bug #6812)

  • INSERT or UPDATE when the WHERE clause contained a correlated subquery that referred to a column of the table being modified caused the server to crash. (Bug #6384)

  • MySQL was adding a DEFAULT clause to ENUM columns that included no explicit DEFAULT and were defined as NOT NULL. (This is supposed to happen only for columns that are NULL.) (Bug #6267)

  • Using ALTER TABLE for a table that had a trigger caused a crash when executing a statement that activated the trigger, and also a crash later with USE db_name for the database containing the table. (Bug #5894)

  • Triggers with dropped functions caused crashes. (Bug #5893)

  • Triggers were not being activated for multiple-table UPDATE or DELETE statements. (Bug #5860)

  • The incorrect sequence of statements HANDLER tbl_name READ index_name NEXT without a preceding HANDLER tbl_name READ index_name = (value_list) for an InnoDB table resulted in a server crash rather than an error. (Bug #5373)

  • Multiple-table DELETE always deleted on the fly from the first table that was to be deleted from. In some cases, when using many tables and when necessary to access the same row twice in the first table, some rows to be deleted from other tables could be missed.