Released on 14 Dec 2005
MySQL 5.0.17 Changelog
  • Functionality Added or Changed

  • Bugs Fixed

Functionality Added or Changed

  • Replication: The syntax for CREATE TRIGGER now includes a DEFINER clause for specifying which access privileges to check at trigger invocation time. See CREATE TRIGGER Syntax, for more information.

    Known issue.  If you attempt to replicate from a master server older than MySQL 5.0.17 to a slave running MySQL 5.0.17 through 5.0.19, replication of CREATE TRIGGER statements fails on the slave with a Definer not fully qualified error. A workaround is to create triggers on the master using a version-specific comment embedded in each CREATE TRIGGER statement:

    CREATE /*!50017 DEFINER = 'root'@'localhost' */ TRIGGER ... ;

    CREATE TRIGGER statements written this way will replicate to newer slaves, which pick up the DEFINER clause from the comment and execute successfully.

    (Bug #16266)

  • Support files for compiling with Visual Studio 6 have been removed. (Bug #15094)

  • In the latin5_turkish_ci collation, the order of the characters A WITH CIRCUMFLEX, I WITH CIRCUMLEX, and U WITH CIRCUMFLEX was changed. If you have used these characters in any indexed columns, you should rebuild those indexes. (Bug #13421)

  • Recursion is permitted in stored procedures. Recursive stored functions and triggers still are not permitted. (Bug #10100)

  • Invoking a stored function or trigger creates a new savepoint level. When the function or trigger finishes, the previous savepoint level is restored.

    References: See also Bug #13825.

  • The maximum key length for InnoDB indexes was increased from 1024 bytes to 3072 bytes for all builds. (In MySQL 5.0.15, the length was increased but only for 64-bit builds.)

  • Added a DEFINER column to the INFORMATION_SCHEMA.TRIGGERS table.

  • Added the SHOW FUNCTION CODE and SHOW PROCEDURE CODE statements (available only for servers that have been built with debugging support). See SHOW PROCEDURE CODE Syntax.

Bugs Fixed

  • MySQL Cluster: A forced cluster shutdown occurred when the management daemon was restarted with a changed config.ini file that added an API or SQL node. (Bug #15512)

  • MySQL Cluster: There was a small window for a node failure to occur during a backup without an error being reported. (Bug #15425)

  • MySQL Cluster: Using ORDER BY primary_key_column when selecting from a table having the primary key on a VARCHAR column caused a forced shutdown of the cluster. (Bug #15240, Bug #15682, Bug #14828, Bug #15517)

  • MySQL Cluster: Under certain circumstances, when mysqld connected to a cluster management server, the connection would fail before a node ID could be allocated. (Bug #15215)

  • MySQL Cluster: Creating a table with packed keys failed silently. NDB now supports the PACK_KEYS option to CREATE TABLE correctly. (Bug #14514)

  • MySQL Cluster: REPLACE failed when attempting to update a primary key value in a Cluster table. (Bug #14007)

  • Replication: Stored functions making use of cursors were not replicated. (Bug #14077)

  • Replication: On Windows, the server could crash during shutdown if both replication threads and normal client connection threads were active. (Bug #11796)

  • Replication: InnoDB: During replication, There was a failure to record events in the binary log that still occurred even in the event of a ROLLBACK. For example, this sequence of commands:


    would succeed on the replication master as expected. However, the INSERT failed on the slave because the ROLLBACK would (erroneously) cause the CREATE TEMPORARY TABLE statement not to be written to the binlog. (Bug #7947)

  • Corrected an error-handling problem within stored routines on 64-bit platforms. (Bug #15630)

  • Slave SQL thread cleanup was not handled properly on Mac OS X when a statement was killed, resulting in a slave crash. (Bug #15623, Bug #15668)

  • The CREATE test case in failed on AIX and SCO. (Bug #15607)

  • A bug in mysql-test/t/mysqltest.test caused that test to fail. (Bug #15605)

  • A statement that produced a warning, when fetched using mysql_stmt_fetch(), did not produce a warning count according to mysql_warning_count(). (Bug #15510)

  • The database-changing code for stored routine handling caused an error-handling problem resulting in a server crash. (Bug #15392)

  • The original Linux RPM packages (5.0.17-0) had an issue with a zlib dependency that would result in an error during an install or upgrade. They were replaced by new binaries, 5.0.17-1. Here is a list of the new RPM binaries:

    • MySQL-{Max,client,devel,server,shared,ndb*}-5.0.17-1.i386.rpm

    • MySQL-*-standard-5.0.17-1.rhel3.i386.rpm, MySQL-*-standard-5.0.17-1.rhel3.ia64.rpm, MySQL-*-standard-5.0.17-1.rhel3.x86_64.rpm

    • MySQL-*-pro-5.0.17-1.rhel3.i386.rpm, MySQL-*-pro-5.0.17-1.rhel3.ia64.rpm, MySQL-*-pro-5.0.17-1.rhel3.x86_64.rpm

    • MySQL-*-pro-gpl-5.0.17-1.rhel3.i386.rpm, MySQL-*-pro-gpl-5.0.17-1.rhel3.ia64.rpm, MySQL-*-pro-gpl-5.0.17-1.rhel3.x86_64.rpm

    (Bug #15223)

  • mysqld would not start on Windows 9X operating systems including Windows Me. (Bug #15209)

  • Queries that select records based on comparisons to a set of column could crash the server if there was one index covering the columns, and a set of other noncovering indexes that taken together cover the columns. (Bug #15204)

  • Selecting from a view processed with the temptable algorithm caused a server crash if the query cache was enabled. (Bug #15119)

  • mysql --help was missing a newline after the version string when the bundled readline library was not used. (Bug #15097)

  • Creating a view that referenced a stored function that selected from a view caused a crash upon selection from the view. (Bug #15096)

  • The server crashed if compiled without any transactional storage engines. (Bug #15047)

  • Multiple-table update operations were counting updates and not updated rows. As a result, if a row had several updates it was counted several times for the rows matched value but updated only once. (Bug #15028)

  • Symbolic links did not function properly on Windows platforms. (Bug #14960, Bug #14310)

  • ROW_COUNT() returned an incorrect result after EXECUTE of a prepared statement. (Bug #14956)

  • When using an aggregate function to select from a table that has a multiple-column primary key, adding ORDER BY to the query could produce an incorrect result. (Bug #14920)

  • ANALYZE TABLE did not properly update table statistics for a MyISAM table with a FULLTEXT index containing stopwords, so a subsequent ANALYZE TABLE would not recognize the table as having already been analyzed. (Bug #14902)

  • Creating a view within a stored procedure could result in an out of memory error or a server crash. (Bug #14885)

  • GROUP BY on a view column did not correctly account for the possibility that the column could contain NULL values. (Bug #14850)

  • The mysql_stmt_fetch() C API function could return MYSQL_NO_DATA for a SELECT COUNT(*) FROM tbl_name WHERE 1 = 0 statement, which should return 1 row. (Bug #14845)

  • Selecting from a view used filesort retrieval when faster retrieval was possible. (Bug #14816)

  • InnoDB: A race condition permitted two threads to drop a hash index simultaneously. (Bug #14747)

  • SHOW CREATE TABLE for a view could fail if the client had locked the view. (Bug #14726)

  • The grammar for supporting the DEFINER = CURRENT_USER clause in CREATE VIEW and ALTER VIEW was incorrect. (Bug #14719)

  • ALTER TABLE ... SET DEFAULT had no effect. (Bug #14693)

  • Using ORDER BY on a column from a view, when also selecting the column normally, and through an alias, caused a mistaken Column 'x' in order clause is ambiguous error. (Bug #14662)

  • SELECT queries that began with an opening parenthesis were not being placed in the query cache. (Bug #14652)

  • In a stored procedure, continuing (via a condition handler) after a failed variable initialization caused a server crash. (Bug #14643)

  • A LIMIT-related optimization failed to take into account that MyISAM table indexes can be disabled, causing Error 124 when it tried to use such an index. (Bug #14616)

  • mysqlhotcopy tried to copy INFORMATION_SCHEMA tables. (Bug #14610)

  • A server crash resulted from the following sequence of events: 1) With no default database selected, create a stored procedure with the procedure name explicitly qualified with a database name (CREATE PROCEDURE db_name.proc_name ...). 2) Create another stored procedure with no database name qualifier. 3) Execute SHOW PROCEDURE STATUS. (Bug #14569)

  • mysqldump --triggers did not account for the SQL mode and could dump trigger definitions with missing whitespace if the IGNORE_SPACE mode was enabled. (Bug #14554)

  • CREATE TABLE tbl_name (...) SELECT ... could crash the server and write invalid data into the .frm file if the CREATE TABLE and SELECT both contained a column with the same name. Also, if a default value is specified in the column definition, it is now actually used. (Bug #14480)

  • The value of INFORMATION_SCHEMA.TABLES.TABLE_TYPE sometimes was reported as empty. (Bug #14476)

  • mysql_fix_privilege_tables.sql contained an erroneous comment that resulted in an error when the file contents were processed. (Bug #14469)

  • Queries on ARCHIVE tables that used the filesort sorting method could result in a server crash. (Bug #14433)

  • Creating a table containing an ENUM or SET column from within a stored procedure or prepared statement caused a server crash later when executing the procedure or statement. (Bug #14410)

  • For a table that had been opened with HANDLER OPEN, issuing OPTIMIZE TABLE, ALTER TABLE, or REPAIR TABLE caused a server crash. (Bug #14397)

  • Declaring a stored routine variable to have a DEFAULT value that referred to a variable of the same name caused a server crash. (For example: DECLARE x INT DEFAULT x) Now the DEFAULT variable is interpreted as referring to a variable in an outer scope, if there is one. (Bug #14376)

  • Complex subqueries could cause improper internal query execution environment initialization and crash the server. (Bug #14342)

  • Within a stored procedure, inserting with INSERT ... SELECT into a table with an AUTO_INCREMENT column did not generate the correct sequence number. (Bug #14304)

  • Space truncation was being ignored when inserting into BINARY or VARBINARY columns. Now space truncation results in a warning, or an error in strict mode. (Bug #14299)

  • Casting a FLOAT or DOUBLE whose value was less than 1.0E-06 to DECIMAL would yield an inappropriate value. (Bug #14268)

  • CAST(expr AS BINARY(N)) did not pad with 0x00 to a length of N bytes. (Bug #14255)

  • Manual manipulation of the mysql.proc table could cause a server crash. This should not happen, but it is also not supported that the server will notice such changes. (Bug #14233)

  • A UNION of DECIMAL columns could produce incorrect results. (Bug #14216)

  • The maximum value of MAX_ROWS was handled incorrectly on 64-bit systems. (Bug #14155)

  • CHAR(... USING ...) and CONVERT(CHAR(...) USING ...), though logically equivalent, could produce different results. (Bug #14146)

  • The server could misinterpret old trigger definition files created before MySQL 5.0.17. Now they are interpreted correctly, but this takes more time and the server issues a warning that the trigger should be re-created. (Bug #14090)

  • For a invalid view definition, selecting from the INFORMATION_SCHEMA.VIEWS table or using SHOW CREATE VIEW failed, making it difficult to determine what part of the definition was invalid. Now the server returns the definition and issues a warning. (Bug #13818)

  • InnoDB: Activity on an InnoDB table caused execution time for SHOW CREATE TABLE for the table to increase. (Bug #13762)

  • Within a stored procedure, exception handling for UPDATE statements that caused a duplicate-key error caused a Packets out of order error for the following statement. (Bug #13729)

  • Statements that implicitly commit a transaction are prohibited in stored functions and triggers. An attempt to create a function or trigger containing such a statement produces an error. (The originally reported symptom was that a trigger that dropped another trigger could cause a server crash. That problem was fixed by the patch for Bug #13343.) (Bug #13627)

  • A newline character in a column alias in a view definition caused an error when selecting from the view later. (Bug #13622)

  • Invoking a stored procedure within another stored procedure caused the server to crash. (Bug #13549)

  • Warnings from a previous command were not being reset when fetching from a cursor. (Bug #13524)

  • In some cases, a left outer join could yield an invalid result or cause the server to crash, due to a MYSQL_DATA_TRUNCATED error. (Bug #13488)

  • DELETE from CSV tables reported an incorrect rows-affected value. (Bug #13406)

  • A server crash could occur if a prepared statement updated a table for which a trigger existed when the statement was prepared but had been dropped prior to statement execution. (Bug #13399)

  • RESET MASTER failed to delete log files on Windows. One consequence of this change is that server opens the general query and slow log files in shared mode, so now they can be renamed while the server has them open (something not true in previous versions). (Bug #13377)

  • For binary string data types, mysqldump --hex-blob produced an illegal output value of 0x rather than ''. (Bug #13318)

  • REPAIR TABLE, BACKUP TABLE, RESTORE TABLE within a stored procedure caused a server crash. (Bug #13012)

  • Implicit versus explicit conversion of float to integer (such as inserting a float value into an integer column versus using CAST(... AS UNSIGNED) before inserting the value) could produce different results. Implicit and explicit typecasts now are done the same way, with a value equal to the nearest integer according to the prevailing rounding mode. (Bug #12956)

  • Some comparisons for the IN() operator were inconsistent with equivalent comparisons for the = operator. (Bug #12612)

  • A server crash could occur if a prepared statement invoked a stored procedure that existed when the statement was prepared but had been dropped and re-created prior to statement execution. (Bug #12329)

  • make failed when attempting to build MySQL in different directory other than that containing the source. (Bug #11827)

  • Revised table locking to permit proper assessment of view security. (Bug #11555)

  • Perform character set conversion of constant values whenever possible without data loss. (Bug #10446)

  • Within a trigger definition the CURRENT_USER() function evaluated to the user whose actions caused the trigger to be activated. Now that triggers have a DEFINER value, CURRENT_USER() evaluates to the trigger definer. (Bug #5861)

  • mysql ignored the MYSQL_TCP_PORT environment variable. (Bug #5792)