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

MySQL 5.0 Release Notes  /  Changes in MySQL 5.0.6 (2005-05-26)

Changes in MySQL 5.0.6 (2005-05-26)

Functionality Added or Changed

  • Incompatible Change: The behavior of LOAD DATA INFILE and SELECT ... INTO OUTFILE has changed when the FIELDS TERMINATED BY and FIELDS ENCLOSED BY values both are empty. Formerly, a column was read or written the display width of the column. For example, INT(4) was read or written using a field with a width of 4. Now columns are read and written using a field width wide enough to hold all values in the field. However, data files written before this change was made might not be reloaded correctly with LOAD DATA INFILE for MySQL 4.1.12 and up. This change also affects data files read by mysqlimport and written by mysqldump --tab, which use LOAD DATA INFILE and SELECT ... INTO OUTFILE. For more information, see LOAD DATA INFILE Syntax. (Bug #12564)

  • Incompatible Change: MyISAM and InnoDB tables created with DECIMAL columns in MySQL 5.0.3 to 5.0.5 will appear corrupt after an upgrade to MySQL 5.0.6. Dump such tables with mysqldump before upgrading, and then reload them after upgrading. (The same incompatibility will occur for these tables created in MySQL 5.0.6 after a downgrade to MySQL 5.0.3 to 5.0.5.) (Bug #10465, Bug #10625)

  • When the server cannot read a table because it cannot read the .frm file, print a message that the table was created with a different version of MySQL. (This can happen if you create tables that use new features and then downgrade to an older version of MySQL.) (Bug #10435)

  • The GRANT and REVOKE statements now support an object_type clause to be used for disambiguating whether the grant object is a table, a stored procedure, or a stored function. Use of this clause requires that you upgrade your grant tables. See mysql_fix_privilege_tables — Upgrade MySQL System Tables. (Bug #10246)


  • The use of SESSION or GLOBAL for user variables, or for local variables in stored routines, is no longer permitted. (Bug #9286)

  • New /*> prompt for mysql. This prompt indicates that a /* ... */ comment was begun on an earlier line and the closing */ sequence has not yet been seen. (Bug #9186)

  • The INFORMATION_SCHEMA.SCHEMATA table now has a DEFAULT_COLLATION_NAME column. (Bug #8998)

  • Added a --show-warnings option to mysql to cause warnings to be shown after each statement if there are any. This option applies to interactive and batch mode. In interactive mode, \w and \W may be used to enable and disable warning display. (Bug #8684)

  • If strict SQL mode is enabled, VARCHAR and VARBINARY columns with a length greater than 65,535 no longer are silently converted to TEXT or BLOB columns. Instead, an error occurs. (Bug #8295, Bug #8296)

  • Removed a limitation that prevented use of FIFOs as logging targets (such as for the general query log). This modification does not apply to the binary log and the relay log. (Bug #8271)

  • SHOW VARIABLES now shows the slave_compressed_protocol, slave_load_tmpdir and slave_skip_errors system variables. (Bug #7800)

  • InnoDB: When the maximum length of SHOW INNODB STATUS output would be exceeded, truncate the beginning of the list of active transactions, instead of truncating the end of the output. (Bug #5436)

  • Updated version of libedit to 2.9. (Bug #2596)

  • Implemented the STMT_ATTR_PREFETCH_ROWS option for the mysql_stmt_attr_set() C API function. This sets how many rows to fetch at a time when using cursors with prepared statements.

  • The variable concurrent_insert now takes 3 values. Setting this to 2 changes MyISAM to do concurrent inserts to end of table if table is in use by another thread.

  • Added the log_bin_trust_routine_creators system variable, which applies when binary logging is enabled. It controls whether stored routine creators can be trusted not to create stored routines that will cause unsafe events to be written to the binary log.

  • Removed unused system variable myisam_max_extra_sort_file_size.

  • Removed mysqlshutdown.exe and mysqlwatch.exe from the Windows With Installer distribution.

  • Changed default value of myisam_data_pointer_size from 4 to 6. This enables us to avoid table is full errors for most cases.

  • Added the div_precision_increment system variable, which indicates the number of digits by which to increase the scale of the result of division operations performed with the / operator.

  • The precision of the DECIMAL data type has been increased from 64 to 65 decimal digits.

  • InnoDB: If innodb_locks_unsafe_for_binlog is enabled and the isolation level of the transaction is not set to SERIALIZABLE, InnoDB uses a consistent read for select in clauses such as INSERT INTO ... SELECT and UPDATE ... (SELECT) that do not specify FOR UPDATE or LOCK IN SHARE MODE. Thus, no locks are set to rows read from selected table.

  • Added the --log-bin-trust-routine-creators server option for setting the log_bin_trust_routine_creators system variable from the command line.

  • Added a --debug option to my_print_defaults.

Bugs Fixed

  • Security Fix: mysql_install_db created the mysql_install_db.X file with a predictable file name and insecure permissions, which permitted local users to execute arbitrary SQL statements by modifying the file's contents. (CVE-2005-1636)

  • Replication: Statements that create and drop triggers were not being written to the binary log, which affects replication and data recovery options. Trigger-related statements now are logged, subject to the issues and limitations discussed in Binary Logging of Stored Programs. (Bug #10417)

  • Replication: Statements that create and use stored routines were not being written to the binary log, which affects replication and data recovery options. Stored routine-related statements now are logged, subject to the issues and limitations discussed in Binary Logging of Stored Programs. (Bug #2610)

  • MERGE tables could fail on Windows due to incorrect interpretation of path name separator characters for file names in the .MRG file. (Bug #10687)

  • Repeated calls to ABS() when the argument evaluated to NULL crashed the server. (Bug #10599)

  • SELECT 0/0 returned 0 rather than NULL. (Bug #10404)

  • INSERT ... ON DUPLICATE KEY UPDATE with MERGE tables, which do not have unique indexes, caused the server to crash. (Bug #10400)

  • AUTO_INCREMENT in InnoDB tables could assign the same value for several rows. (Bug #10359)

  • mysqldump crashed using the --complete-insert option while dumping tables with a large number of long column names. (Bug #10286)

  • Incomplete results were returned from INFORMATION_SCHEMA.COLUMNS for INFORMATION_SCHEMA tables for non-root users. (Bug #10261)

  • did not compile correctly using VC++ on Windows. (Bug #10245)

  • Using #pragma interface or #pragma implementation in source files caused portability issues for cygwin. (Bug #10241)

  • Corrected a problem where DEFAULT values were not assigned properly to BIT(1) or CHAR(1) columns if certain other columns preceded them in the table definition. (Bug #10179)

  • The BLACKHOLE storage engine failed in testing, causing the server to crash. (Bug #10175)

  • The optimizer was choosing suboptimal execution plans for certain outer joins where the right table of a left join (or left table of a right join) had both ON and WHERE conditions. (Bug #10162)

  • Corrected a problem resolving outer column references in correlated subqueries when using the prepared statements. (Bug #10041)

  • INFORMATION_SCHEMA tables were inaccessible depending on the lettercase used to refer to them. (Bug #10018)

  • awk script portability problems were found in cmd-line-utils/libedit/ . (Bug #9954)

  • The error message for exceeding MAX_CONNECTIONS_PER_HOUR mistakenly referred to max_connections. (Bug #9947)

  • RENAME TABLE for an ARCHIVE table failed if the .arn file was not present. (Bug #9911)

  • A CHECK TABLE statement whose arguments were a view name followed by a table name caused the server to crash. (Bug #9897)

  • my_print_defaults was ignoring the --defaults-extra-file option or crashing when the option was given. (Bug #9851, Bug #9136)

  • Within a stored procedure, attempting to update a view defined as an inner join failed with a Table 'tbl_name' was locked with a READ lock and can't be updated error. (Bug #9841)

  • The INFORMATION_SCHEMA.COLUMNS table was missing columns of views for which the user has access. (Bug #9838)

  • Use of a CHAR or VARCHAR column with MIN() or MAX() and GROUP BY ... WITH ROLLUP caused the server to crash. (Bug #9820)

  • Usi DISTINCT AVG() with GROUP BY ... WITH ROLLUP caused the server to crash. (Bug #9800)

  • Using AVG(DISTINCT) with GROUP BY ... WITH ROLLUP caused the server to crash. (Bug #9799)

  • Using GROUP BY ... WITH ROLLUP on an indexed column in an InnoDB table could cause the server to crash. (Bug #9798)

  • Corrected some failures of prepared statements for SQL (PREPARE plus EXECUTE) to return all rows for some SELECT statements. (Bug #9777, Bug #9096)

  • CREATE TABLE ... LIKE did not work correctly when lower_case_table_names was set on a case-sensitive file system and the source table name was not given in lowercase. (Bug #9761)

  • Corrected an inability to select from a view within a stored procedure. (Bug #9758)

  • net_read_timeout and net_write_timeout were not being respected on Windows. (Bug #9721)

  • libsupc++ was longer required for building on FreeBSD 5.3. (Bug #9714)

  • The mysql_stmt_attr_set() C API function now returns an error for option values that are defined in mysql.h but not yet implemented, such as CURSOR_TYPE_SCROLLABLE. (Bug #9643)

  • Memory block allocation did not function correctly for the query cache in the embedded server. (Bug #9549)

  • CREATE TABLE t AS SELECT UUID() created a VARCHAR(12) column, which is too small to hold the 36-character result from UUID(). (Bug #9535)

  • SELECT DISTINCT with a prepared statement that used a cursor could cause the server to crash. (Bug #9520)

  • NULL key parts in hash indexes on VARCHAR columns were not handled correctly, resulting in incorrect query results. (Bug #9489, Bug #10176)

  • The mysql_stmt_execute() and mysql_stmt_reset() C API functions now close any cursor that is open for the statement, which prevents a server crash. (Bug #9478)

  • SELECT from INFORMATION_SCHEMA tables failed if the statement has a GROUP BY clause and an aggregate function in the select list. (Bug #9404)

  • MAX() for an INT UNSIGNED (unsigned 4-byte integer) column could return negative values if the column contained values larger than 231. (Bug #9298)

  • Disabled binary logging within stored routines to avoid writing spurious extra statements to the binary log. For example, if a routine p() executes an INSERT statement, then for CALL p(), the CALL statement appears in the binary log, but not the INSERT statement. (Bug #9100)

  • FORMAT() now performs better rounding for double values (for example, FORMAT(4.55,1) returns 4.6, not 4.5). (Bug #9060)

  • SHOW CREATE VIEW got confused and could not find the view if there was a temporary table with the same name as the view. (Bug #8921)

  • Selecting from a single-table view defined on multiple-table views caused a server crash. (Bug #8528)

  • Remove extra slashes in --tmpdir value (for example, convert /var//tmp to /var/tmp, because they caused various errors. (Bug #8497)

  • Invoking a stored function that executed a SHOW statement resulted in a server crash. (Bug #8408)

  • An error in the implementation of the MyISAM compression algorithm caused myisampack to fail with very large sets of data (total size of all the records in a single column needed to be at least 3 GB to trigger this issue). (Bug #8321)

  • Added Create_routine_priv, Alter_routine_priv, and Execute_priv privileges to the privilege table. (They had been added to mysql.db in MySQL 5.0.3 but not to the host table.) (Bug #8166)

  • A deadlock resulted from using FLUSH TABLES WITH READ LOCK while an INSERT DELAYED statement was in progress. (Bug #7823)

  • In strict SQL mode, some assignments to numeric columns that should have been rejected were not (such as the result of an arithmetic expression or an explicit CAST() operation). (Bug #6961)

  • For MERGE tables, avoid writing absolute path names in the .MRG file for the names of the constituent MyISAM tables so that if the data directory is moved, MERGE tables will not break. For mysqld, write just the MyISAM table name if it is in the same database as the MERGE table, and a path relative to the data directory otherwise. For the embedded servers, absolute path names may still be used. (Bug #5964)

  • Multiple calls to a stored procedure that assigned the result of a subquery to a variable or compared it to a value with IN could cause the server to crash. (Bug #5963)

  • If the file named by a --defaults-extra-file option does not exist or is otherwise inaccessible, an error now occurs. (Bug #5056)

  • configure did not properly recognize whether NPTL was available on Linux. (Bug #2173)

Download these Release Notes
PDF (US Ltr) - 2.1Mb
PDF (A4) - 2.1Mb
EPUB - 0.6Mb