Version History of MySQL Server 5.0.13

Functionality added or changed:

  • Replication: Better detection of connection timeout for replication servers on Windows enables elimination of extraneous Lost connection errors in the error log. (Bug #5588)
  • OPTIMIZE TABLE and HANDLER now are prohibited in stored procedures and functions and in triggers. (Bug #12953, Bug #12995)
  • The LEAST() and GREATEST() functions used to return NULL only if all arguments were NULL. Now they return NULL if any argument is NULL, the same as Oracle. (Bug #12791)
  • InnoDB: The TRUNCATE TABLE statement for InnoDB tables always resets the counter for an AUTO_INCREMENT column now, regardless of whether there is a foreign key constraint on the table. (Beginning with 5.0.3, TRUNCATE TABLE reset the counter, but only if there was no such constraint.) (Bug #11946)
  • Reorder network startup to come after all other initialization, particularly storage engine startup which can take a long time. This also prevents MySQL from being run on a privileged port (any port under 1024) unless run as the root user. (Bug #11707)
  • The restriction on the use of PREPARE, EXECUTE, and DEALLOCATE PREPARE within stored procedures was lifted. The restriction still applies to stored functions and triggers. (Bug #10975, Bug #10605)

See also Bug #7115.

  • A new command line argument was added to mysqld to ignore client character set information sent during handshake, and use server side settings instead, to reproduce 4.0 behavior :
mysqld --skip-character-set-client-handshake

(Bug #9948)

  • Added a --routines option for mysqldump that enables dumping of stored routines. (Bug #9056)
  • RAND() no longer permits nonconstant initializers. (Previously, the effect of nonconstant initializers is undefined.) (Bug #6172)
  • The syntax for CREATE VIEW and ALTER VIEW statements now includes DEFINER and SQL SECURITY clauses for specifying the security context to be used when checking access privileges at view invocation time. (The syntax is present in 5.0.13, but these clauses have no effect until 5.0.16.) See Section 12.1.12, “CREATE VIEW Syntax”, for more information.
  • The --hex-dump option for mysqldump now also applies to BIT columns.
  • Two new collations have been added for Esperanto: utf8_esperanto_ci and ucs2_esperanto_ci.
  • The Windows binary packages are now compiled with the Microsoft Visual Studio 2003 compiler instead of Microsoft Visual C++ 6.0.
  • The connection string for FEDERATED tables now is specified using a CONNECTION table option rather than a COMMENT table option.
  • The binaries compiled with the Intel icc compiler are now built using icc 9.0 instead of icc 8.1. You will have to install new versions of the Intel icc runtime libraries, which are available from here:

Bugs fixed:

  • Incompatible Change: A lock wait timeout caused InnoDB to roll back the entire current transaction. Now it rolls back only the most recent SQL statement. (Bug #12308)
  • MySQL Cluster: The cluster management client START BACKUP command could be interrupted by a SHOW command. (Bug #13054)
  • MySQL Cluster: A cluster shutdown following the crash of a data node failed to terminate any remaining node processes, even though ndb_mgm showed the shutdown request as having been completed. (Bug #9996, Bug #10938, Bug #11623)
  • MySQL Cluster: The average row size for Cluster tables was calculated incorrectly. This affected the values shown for the Data_length and Avg_row_length columns in the output generated by SHOW TABLE STATUS as well as the values for the data_length and data_length/table_rows columns shown in the TABLES table of the INFORMATION_SCHEMA database with respect to Cluster tables.

Tables using storage engines other than NDB were not affected by this bug. (Bug #9896)

  • Replication: Within a transaction, the following statements now cause an implicit commit: CREATE FUNCTION, DROP FUNCTION, DROP PROCEDURE (for stored functions, not UDFs), ALTER FUNCTION, ALTER PROCEDURE, CREATE PROCEDURE. This corrects a problem where these statements followed by ROLLBACK might not be replicated properly. (Bug #12870)
  • Replication: Replication of LOAD DATA INFILE failed between systems using different path name syntax (such as delimiter characters). (Bug #11815)
  • Local variables in stored routines were not always initialized correctly. (Bug #13133)
  • The FEDERATED storage engine does not support ALTER TABLE, but no appropriate error message was issued. (Bug #13108)
  • Columns named in the USING() clause of JOIN ... USING() were incorrectly resolved in case-sensitive fashion. (Bug #13067)
  • For a server compiled with yaSSL, clients that used MySQL Connector/J were not able to establish SSH connections. (Bug #13029)
  • When used in view definitions, DAYNAME(expr), DAYOFWEEK(expr), WEEKDAY(expr) were incorrectly treated as though the expression was TO_DAYS(expr) or TO_DAYS(TO_DAYS(expr)). (Bug #13000)
  • Using AS to rename a column selected from a view in a subquery made it not possible to refer to that column in the outer query. (Bug #12993)
  • Using an INOUT parameter with a DECIMAL data type in a stored procedure caused a server crash. (Bug #12979)
  • SELECT ... JOIN ... ON ... JOIN ... USING caused a server crash. (Bug #12977)
  • A bug introduced in MySQL 5.0.12 caused SHOW TABLE STATUS to display an Auto_increment value of 0 for InnoDB tables. (Bug #12973)
  • On HP-UX 11.x (PA-RISC), the -L option caused mysqlimport to crash. (Bug #12958)
  • InnoDB: A consistent read could return inconsistent results due to a bug introduced in MySQL 5.0.5. (Bug #12947)
  • Incorrect implicit nesting of joins caused the parser to fail on queries of the form SELECT ... FROM t1 JOIN t2 JOIN t3 ON t1.t1col = t3.t3col with an Unknown column 't1.t1col' in 'on clause' error. (Bug #12943)
  • Incorrect results could be returned from a view processed using a temporary table. (Bug #12941)
  • Multiplying a DECIMAL value within a loop in a stored routine could incorrectly result in a value of NULL. (Bug #12938)
  • Using GROUP BY when selecting from a view in some cases could cause incorrect results to be returned. (Bug #12922)
  • The counters for the Key_read_requests, Key_reads, Key_write_requests, and Key_writes status variables were changed from unsigned long to unsigned longlong to accommodate larger values before the variables roll over and restart from 0. (Bug #12920)
  • mysql and mysqldump were ignoring the --defaults-extra-file option. (Bug #12917)
  • SHOW FIELDS FROM schemaname.viewname caused error 1046 when no default schema was set. (Bug #12905)
  • UNION [DISTINCT] was not removing all duplicates for multi-byte character values. (Bug #12891)
  • A column that can be NULL was not handled properly for WITH ROLLUP in a subquery or view. (Bug #12885)
  • GROUP_CONCAT() ignored an empty string if it was the first value to occur in the result. (Bug #12863)
  • If a client has opened an InnoDB table for which the .ibd file is missing, InnoDB would not honor a DROP TABLE statement for the table. (Bug #12852)
  • Within a stored procedure, a server crash was caused by assigning to a VARCHAR INOUT parameter the value of an expression that included the variable itself. (For example, SET c = c.) (Bug #12849)
  • The server crashed when one thread resized the query cache while another thread was using it. (Bug #12848)
  • A concurrency problem for CREATE ... SELECT could cause a server crash. (Bug #12845)
  • DO IFNULL(NULL, NULL) and SELECT CAST(IFNULL(NULL, NULL) AS DECIMAL) caused a server crash. (Bug #12841)
  • After changing the character set with SET CHARACTER SET, the result of the GROUP_CONCAT() function was not converted to the proper character set. (Bug #12829)
  • The Windows installer made a change to one of the mysql.proc table files, causing stored routine functionality to be compromised. The Windows installer now never overwrites files in the MySQL data directory. During an upgrade from one version to another, a file in the data directory will not be overwritten even if it has not been modified since it was put there by an older installer.

If you have already lost access to stored routines because of this problem, you can get them back using the following procedure:

    • Stop the server.
    • In the mysql\data directory under your MySQL installation directory, and replace the proc.frm file with corresponding file from the version of MySQL that you were using before you upgraded.
    • Start the server.
    • Start the mysql command-line client (use the root account or another account that has full database privileges) and execute the mysql_fix_privilege_tables.sql script that upgrades the grant tables to the current structure. Instructions for doing this are given in Section 4.4.5, “mysql_fix_privilege_tables — Upgrade MySQL System Tables”.

After this, all stored routine functionality should work. (Bug #12820)

  • Queries with subqueries, where the inner subquery uses the range or index_merge access method, could return incorrect results. (Bug #12720)
  • The server failed to disallow SET autocommit in stored functions and triggers. It is permitted to change the value of autocommit in stored procedures, but a runtime error might occur if the procedure is invoked from a stored function or trigger. (Bug #12712)
  • Simultaneous execution of DML statements and CREATE TRIGGER or DROP TRIGGER statements on the same table could cause server crashes or errors. (Bug #12704)
  • Performing an IS NULL check on the MIN() or MAX() of an indexed column in a complex query could produce incorrect results. (Bug #12695)
  • Use of PREPARE and EXECUTE with a statement that selected from a view in a subquery could cause a server crash. (Bug #12651)
  • If the binary log is enabled, execution of a stored procedure that modifies table data and uses user variables could cause a server crash or incorrect information to be written to the binary log. (Bug #12637)
  • The LIKE ... ESCAPE syntax produced invalid results when escape character was larger than one byte. (Bug #12611)
  • mysqldump did not dump triggers properly. (Bug #12597)
  • InnoDB: Limit recursion depth to 200 in deadlock detection to avoid running out of stack space. (Bug #12588)
  • The mysql.server script contained an incorrect path for the libexec directory. (Bug #12550)
  • A UNION of long utf8 VARCHAR columns was sometimes returned as a column with a LONGTEXT data type rather than VARCHAR. This could prevent such queries from working at all if selected into a MEMORY table because the MEMORY storage engine does not support the TEXT data types. (Bug #12537)
  • A client connection thread cleanup problem caused the server to crash when closing the connection if the binary log was enabled. (Bug #12517)
  • Use of the mysql client HELP command from within a stored routine caused a “packets out of order” error and a lost connection. Now HELP is detected and not permitted within stored routines. (Bug #12490)
  • The SYSDATE() function now returns the time at which it was invoked. In particular, within a stored routine or trigger, SYSDATE() returns the time at which it executes, not the time at which the stored routine or triggering statement began to execute. (Bug #12480)
  • CREATE VIEW inside a stored procedure caused a server crash if the table underlying the view had been deleted. (Bug #12468)
  • Deadlock occurred when several account management statements were run (particularly between FLUSH PRIVILEGES/SET PASSWORD and GRANT/REVOKE statements). (Bug #12423)
  • InnoDB was too permissive with LOCK TABLE ... READ LOCAL and permitted new inserts into the table. Now READ LOCAL is equivalent to READ for InnoDB. This will cause slightly more locking in mysqldump, but makes InnoDB table dumps consistent with MyISAM table dumps. (Bug #12410)
  • If a stored function invoked from a SELECT failed with an error, it could cause the client connection to be dropped. Now such errors generate warnings instead so as not to interrupt the SELECT. (Bug #12379)
  • The value of character_set_results could be set to NULL, but returned the string "NULL" when retrieved. (Bug #12363)
  • On Windows, the server was preventing tables from being created if the table name was a prefix of a forbidden name. For example, nul is a forbidden name because it is the same as a Windows device name, but a table with the name of n or nu was being forbidden as well. (Bug #12325)
  • ALTER TABLE ... DISCARD TABLESPACE for non-InnoDB table caused the client to lose the connection. (The server was not returning the error properly.) (Bug #12207)
  • Outer join elimination was erroneously applied for some queries that used a NOT BETWEEN condition, an IN(value_list) condition, or an IF() condition. (Bug #12102, Bug #12101)
  • Foreign keys were not properly enforced in TEMPORARY tables. Foreign keys are no longer permitted in TEMPORARY tables. (Bug #12084)
  • When using a cursor, a SELECT statement that uses a GROUP BY clause could return incorrect results. (Bug #11904)
  • The character_set_system system variable could not be selected with SELECT @@character_set_system. (Bug #11775)
  • A memory leak resulting from repeated SELECT ... INTO statements inside a stored procedure could cause the server to crash. (Bug #11333)
  • Use of yaSSL for a secure client connection caused LOAD DATA LOCAL INFILE to fail. (Bug #11286)
  • mysqld_multi now quotes arguments on command lines that it constructs to avoid problems with arguments that contain shell metacharacters. (Bug #11280)
  • The server permitted privileges to be granted explicitly for the INFORMATION_SCHEMA database. Such privileges are always implicit and should not be grantable. (Bug #10734)
  • SHOW CREATE PROCEDURE and SHOW CREATE FUNCTION no longer qualify the routine name with the database name, for consistency with the behavior of SHOW CREATE TABLE. (Bug #10362)
  • The server incorrectly generated an Unknown table error message when for attempts to drop tables in the INFORMATION_SCHEMA database. Now it issues an Access denied message. (Bug #9846)
  • Within a stored procedure, fetching a large number of rows in a loop using a cursor could result in a server crash or an out of memory error. Also, values inserted within a stored procedure using a cursor were interpreted as latin1 even if character set variables had been set to a different character set. (Bug #9819, Bug #6513)
  • The server permitted TEMPORARY tables and stored procedures to be created in the INFORMATION_SCHEMA database. (Bug #9683, Bug #10708)
  • SHOW FIELDS truncated the TYPE column to 40 characters. (Bug #7142)

See also Bug #12817.

  • A view-creation statement of the form CREATE VIEW name AS SELECT ... FROM tbl_name AS name failed with a Not unique table/alias: 'name' error. (Bug #6808)
  • myisampack did not properly pack BLOB values larger than 224 bytes. (Bug #4214)