Released on 27 Jul 2005
MySQL 5.0.10 Changelog
  • Functionality Added or Changed

  • Bugs Fixed

Functionality Added or Changed

  • Incompatible Change: The namespace for triggers has changed. Previously, trigger names had to be unique per table. Now they must be unique within the schema (database). An implication of this change is that DROP TRIGGER syntax now uses a schema name instead of a table name (schema name is optional and, if omitted, the current schema will be used).


    When upgrading from a version of MySQL 5 older than 5.0.10 to MySQL 5.0.10 or newer, you must drop all triggers and re-create them or DROP TRIGGER will not work after the upgrade. A suggested procedure for doing this is given in Upgrading from MySQL 4.1 to 5.0.

    (Bug #5892)

  • MySQL Cluster: A new -P option is available for use with the ndb_mgmd client. When called with this option, ndb_mgmd prints all configuration data to stdout, then exits.

  • On Windows, the search path used by MySQL applications for my.ini now includes ..\my.ini (that is, the application's parent directory, and hence, the installation directory). (Bug #10419)

  • The viewing of triggers and trigger metadata has been enhanced as follows:

    • An extension to the SHOW command has been added: SHOW TRIGGERS can be used to view a listing of triggers. See SHOW TRIGGERS Syntax, for details.

    • The INFORMATION_SCHEMA database now includes a TRIGGERS table. See The INFORMATION_SCHEMA TRIGGERS Table, for details.

    (Bug #9586)

  • It is no longer necessary to issue an explicit LOCK TABLES for any tables accessed by a trigger prior to executing any statements that might invoke the trigger.

    Previously, executing a statement that invoked a trigger would cause problems unless a LOCK TABLES was first issued for any tables accessed by the trigger. The exact nature of the problem depended upon the MySQL 5.0 release being used: prior to 5.0.3, this resulted in a crash; from 5.0.3 to 5.0.7, MySQL would issue a warning; in 5.0.9, the server would issue an error.

    The same issue caused LOCK TABLES to fail following UNLOCK TABLES if triggers were involved. (Bug #8406, Bug #9581)

  • The MySQL server now starts correctly with all combinations of --basedir and --datadir, resolving an issue introduced by the original fix for this bug in MySQL 4.1.9. (Bug #7249)

    References: See also Bug #7518.

  • Add the --defaults-group-suffix option. See Using Option Files.

  • Triggers can now reference tables by name. See CREATE TRIGGER Syntax, for more information.

  • The bundled version of the readline library was upgraded to version 5.0.

  • Added mysql_get_character_set_info() C API function for obtaining information about the default character set of the current connection.

  • An extension to the SHOW statement has been added: SHOW TRIGGERS can be used to view a listing of triggers. See SHOW TRIGGERS Syntax, for details.

  • Add table_lock_wait_timeout global system variable.

Bugs Fixed

  • Security Fix: A vulnerability in zlib could result in a buffer overflow and arbitrary code execution. (Bug #11844, CVE-2005-2096, CVE-2005-1849)

  • MySQL Cluster: The temporary tables created by an ALTER TABLE on an NDB table were visible to all SQL nodes in the cluster. (Bug #12055)

  • MySQL Cluster: NDB ignored the Hostname option in the [ndbd default] section of the cluster configuration file. (Bug #12028)

  • MySQL Cluster: The output of perror --help did not display any information about the --ndb option. (Bug #11999)

  • MySQL Cluster: Attempting to create or drop tables during a backup would cause the cluster to shut down. (Bug #11942)

  • MySQL Cluster: ndb_mgmd leaked file descriptors. (Bug #11898)

  • MySQL Cluster: The MySQL Server left core files following shutdown if data nodes had failed. (Bug #11516)

  • MySQL Cluster: When attempting to drop a table with a broken unique index, NDB failed to drop the table and erroneously report that the table was unknown. (Bug #11355)

  • MySQL Cluster: Trying to use a greater number of tables than specified by the value of MaxNoOfTables caused table corruption such that data nodes could not be restarted. (Bug #9994)

  • The server did not compile correctly when using gcc4 on AMD64 platforms. (Bug #12040)

  • SHOW BINARY LOGS displayed a file size of 0 for all log files but the current one if the files were not located in the data directory. (Bug #12004)

  • Increased the version number of the libmysqlclient shared library from 14 to 15 because it is binary incompatible with the MySQL 4.1 client library. (Bug #11893)

  • The server crashed when dropping a trigger that invoked a stored procedure, if the procedure was not yet in the connection-specific stored routine cache. (Bug #11889)

  • SELECT ... NOT IN() gave unexpected results when only static value present between the (). (Bug #11885)

  • A recent optimizer change caused DELETE ... WHERE ... NOT LIKE and DELETE ... WHERE ... NOT BETWEEN to not properly identify the rows to be deleted. (Bug #11853)

  • Execution of a prepared statement that invoked a nonexistent or dropped stored routine would crash the server. (Bug #11834)

  • Selecting the result of an aggregate function for an ENUM or SET column within a subquery could result in a server crash. (Bug #11821)

  • Creating a table with a SET or ENUM column with the DEFAULT 0 clause caused a server crash if the table's character set was utf8. (Bug #11819)

  • Incorrect column values could be retrieved from views defined using statements of the form SELECT * FROM tbl_name. (Bug #11771)

  • When invoked within a view, SUBTIME() returned incorrect values. (Bug #11760)

  • For several character sets, MySQL incorrectly converted the character code for the division sign to the eucjpms character set. (Bug #11717)

  • Performing an ORDER BY on a SELECT from a VIEW produced unexpected results when VIEW and underlying table had the same column name on different columns. (Bug #11709)

  • Execution of SHOW TABLES failed to increment the Com_show_tables status variable. (Bug #11685)

  • LIKE pattern matching using prefix index didn't return correct result. (Bug #11650)

  • Invoking the DES_ENCRYPT() function could cause a server crash if the server was started without the --des-key-file option. (Bug #11643)

  • IP addresses not shown in ndb_mgm SHOW command on second ndb_mgmd (or on ndb_mgmd restart). (Bug #11596)

  • SHOW PROCEDURE/FUNCTION STATUS didn't work for users with limited access. (Bug #11577)

  • mysqlbinlog was failing the test suite on Windows due to BOOL being incorrectly cast to INT. (Bug #11567)

  • The server crashed upon execution of a statement that used a stored function indirectly (via a view) if the function was not yet in the connection-specific stored routine cache and the statement would update a Handler_xxx status variable. This fix enables the use of stored routines under LOCK TABLES without explicitly locking the mysql.proc table. However, you cannot use mysql.proc in statements that will combine locking of it with modifications for other tables. (Bug #11554)

  • Aliasing the column names in a VIEW did not work when executing a SELECT query on the VIEW. (Bug #11399)

  • The mysql.proc table was not being created properly with the proper utf8 character set and collation, causing server crashes for stored procedure operations if the server was using a multibyte character set. To take advantage of the bug fix, mysql_fix_privilege_tables should be run to correct the structure of the mysql.proc table.

    Note that it is necessary to run mysql_fix_privileges_tables when upgrading from a previous installation that contains the mysql.proc table (that is, from a previous 5.0 installation). Otherwise, creating stored procedures might not work. (Bug #11365)

  • For prepared statements, the SQL parser did not disallow ? parameter markers immediately adjacent to other tokens, which could result in malformed statements in the binary log. (For example, SELECT * FROM t WHERE? = 1 could become SELECT * FROM t WHERE0 = 1.) (Bug #11299)

  • The C API function mysql_stmt_reset() did not clear error information. (Bug #11183)

  • INFORMATION_SCHEMA.COLUMNS had some inaccurate values for some data types. (Bug #11057)

  • MySQL server would crash is a fetch was performed after a ROLLBACK when cursors were involved. (Bug #10760)

  • When two threads competed for the same table, a deadlock could occur if one thread also had a lock on another table through LOCK TABLES and the thread was attempting to remove the table in some manner while the other thread tried to place locks on both tables. (Bug #10600)

  • When used within a subquery, SUBSTRING() returned an empty string. (Bug #10269)

  • Multiple-table UPDATE queries using CONVERT_TZ() failed with an error. (Bug #9979)

  • With strict SQL mode enabled, ALTER TABLE reported spurious Invalid default value messages for columns that had no DEFAULT clause. (Bug #9881)

  • mysql_fetch_fields() returned incorrect length information for MEDIUM and LONG TEXT and BLOB columns. (Bug #9735)

  • Within a stored procedure, selecting from a table through a view caused subsequent updates to the table to fail with a message that the table was read-locked. (Bug #9597)

  • Within a stored procedure that selects from a table, invoking another procedure that requires a write lock for the table caused that procedure to fail with a message that the table was read-locked. (Bug #9565)

  • Server-side prepared statements failed for columns with a character set of ucs2. (Bug #9442)

  • In SQL prepared statements, comparisons could fail for values not equally space-padded. For example, SELECT 'a' = 'a '; returns 1, but PREPARE s FROM 'SELECT ?=?'; SET @a = 'a', @b = 'a '; PREPARE s FROM 'SELECT ?=?'; EXECUTE s USING @a, @b; incorrectly returned 0. (Bug #9379)

  • References to system variables in an SQL statement prepared with PREPARE were evaluated during EXECUTE to their values at prepare time, not to their values at execution time. (Bug #9359)

  • The server did not accept some fully qualified trigger names. (Bug #8758)

  • Creating a trigger in one database that references a table in another database was being permitted without generating errors. (Bug #8751)

  • For a stored procedure defined with SQL SECURITY DEFINER characteristic, CURRENT_USER() incorrectly reported the use invoking the procedure, not the user who defined it. (Bug #7291)

  • Labels in stored routines did not work if the character set was not latin1. (Bug #7088)

  • Duplicate trigger names were permitted within a single schema. (Bug #6182)

  • For execution of a stored procedure that refers to a view, changes to the view definition were not seen. The procedure continued to see the old contents of the view. (Bug #6120)

  • The traditional SQL mode accepted invalid dates if the date value provided was the result of an implicit type conversion. (Bug #5906)

  • In a shared Windows environment, MySQL could not find its configuration file unless the file was in the C:\ directory. (Bug #5354)

  • Functions that evaluate to constants (such as NOW() and CURRENT_USER() were being evaluated in the definition of a VIEW rather than included verbatim. (Bug #4663)