Released on 3 Oct 2006
MySQL 5.0.26 Changelog

This is a bugfix release for the current production release family.

This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Enterprise (a commercial MySQL offering). For more details, please see (

  • Functionality Added or Changed

  • Bugs Fixed

Functionality Added or Changed

  • Important Change; MySQL Cluster: LOAD DATA INFILE no longer causes an implicit commit for all storage engines. It now causes an implicit commit only for tables using the NDB storage engine. (Bug #11151)

  • The number of InnoDB threads is no longer limited to 1,000 on Windows. (Bug #22268)

  • mysqldump now has a --flush-privileges option. It causes mysqldump to emit a FLUSH PRIVILEGES statement after dumping the mysql database. This option should be used any time the dump contains the mysql database and any other database that depends on the data in the mysql database for proper restoration. (Bug #21424)

  • For mysqldump, the output generated by the server when using the --xml option has changed with regard to null values. It now matches the output from mysqldump --xml. That is, a column containing a NULL value is now reported as

    <field name="column_name" xsi:nil="true" />

    whereas a column containing the string value 'NULL' is reported as

    <field name="column_name">NULL</field>

    and a column containing an empty string is reported as

    <field name="column_name"></field>

    (Bug #21263)

  • The source distribution has been updated so that the UDF example can be compiled under Windows with CMake. See Compiling and Installing User-Defined Functions. (Bug #19121)

  • The LOAD DATA FROM MASTER and LOAD TABLE FROM MASTER statements are deprecated. See LOAD DATA FROM MASTER Syntax, for recommended alternatives. (Bug #9125, Bug #20596, Bug #14399, Bug #12187, Bug #15025, Bug #18822)

Bugs Fixed

  • Replication: Column names supplied for a view created on a master server could be lost on a slave server. (Bug #19419)

  • Deleting entries from a large MyISAM index could cause index corruption when it needed to shrink. Deletes from an index can happen when a record is deleted, when a key changes and must be moved, and when a key must be un-inserted because of a duplicate key. This can also happen in REPAIR TABLE when a duplicate key is found and in myisamchk when sorting the records by an index. (Bug #22384)

  • yaSSL had a conflicting definition for socklen_t on hurd-i386 systems. (Bug #22326)

  • Conversion of values inserted into a BIT column could affect adjacent columns. (Bug #22271)

  • mysql_com.h unnecessarily referred to the ulong type. (Bug #22227)

  • The source distribution would not build on Windows due to a spurious dependency on ib_config.h. (Bug #22224)

  • Execution of a prepared statement that uses an IN subquery with aggregate functions in the HAVING clause could cause a server crash. (Bug #22085)

  • Using GROUP_CONCAT() on the result of a subquery in the FROM clause that itself used GROUP_CONCAT() could cause a server crash. (Bug #22015)

  • A query that used GROUP BY and an ALL or ANY quantified subquery in a HAVING clause could trigger an assertion failure. (Bug #21853)

  • UPGRADE was treated as a reserved word, although it is not. (Bug #21772)

  • The value of LAST_INSERT_ID() was not always updated correctly within stored routines. (Bug #21726)

  • A function result in a comparison was replaced with a constant by the optimizer under some circumstances when this optimization was invalid. (Bug #21698)

  • If mysqld was linked against a system-installed zlib library compiled without large-file support, it would likely exit with a SIGXFSZ (file size exceeded) signal if an ARCHIVE table reached 2GB. The server now checks for space before writing. (Bug #21675)

  • The presence of a subquery in the ON clause of a join in a view definition prevented the MERGE algorithm from being used for the view in cases where it should be permitted. (Bug #21646)

  • When records are merged from the insert buffer and the page needs to be reorganized, InnoDB used incorrect column length information when interpreting the records of the page. This caused a server crash due to apparent corruption of secondary indexes in ROW_FORMAT=COMPACT that contain prefix indexes of fixed-length columns. Data files should not be corrupted, but the crash was likely to repeat every time the server was restarted. (Bug #21638)

  • For character sets having a mbmaxlen value of 2, any ALTER TABLE statement changed TEXT columns to MEDIUMTEXT. (Bug #21620)

  • mysql displayed an empty string for NULL values. (Bug #21618)

  • For INSERT ... ON DUPLICATE KEY UPDATE, use of VALUES(col_name) within the UPDATE clause sometimes was handled incorrectly. (Bug #21555)

  • Subqueries with aggregate functions but no FROM clause could return incorrect results. (Bug #21540)

  • The server could crash for the second execution of a function containing a SELECT statement that uses an aggregating IN subquery. (Bug #21493)

  • myisam_ftdump produced bad counts for common words. (Bug #21459)

  • The URL into the online manual that is printed in the stack trace message by the server was out of date. (Bug #21449)

  • Table aliases in multiple-table DELETE statements sometimes were not resolved. (Bug #21392)

  • mysql_config --libmysqld-libs did not produce any SSL options necessary for linking libmysqld with SSL support enabled. (Bug #21239)

  • In the package of pre-built time zone tables that is available for download at, the tables now explicitly use the utf8 character set so that they work the same way regardless of the system character set value. (Bug #21208)

  • A subquery that uses an index for both the WHERE and ORDER BY clauses produced an empty result. (Bug #21180)

  • mysql_upgrade produced a malformed upgrade_defaults file by overwriting the [client] group header with a password option. This prevented mysqlcheck from running successfully when invoked by mysql_upgrade. (Bug #21011)

  • On Windows, inserting into a MERGE table after renaming an underlying MyISAM table caused a server crash. (Bug #20789)

  • Within stored routines, some error messages were printed incorrectly. A nonnull-terminated string was passed to a message-printing routine that expected a null-terminated string. (Bug #20778)

  • INSERT DELAYED did not honor SET INSERT_ID or the auto_increment_* system variables. (Bug #20627, Bug #20830)

  • If the auto_increment_offset setting causes MySQL to generate a value larger than the column's maximum possible value, the INSERT statement is accepted in strict SQL mode, whereas but should fail with an error. (Bug #20573)

  • User names have a maximum length of 16 characters (even if they contain multibyte characters), but were being truncated to 16 bytes. (Bug #20393)

  • PROCEDURE ANALYSE() returned incorrect values of M FLOAT(M, D) and DOUBLE(M, D). (Bug #20305)

  • For a MyISAM table locked with LOCK TABLES ...WRITE, queries optimized using the index_merge method did not show rows inserted with the lock in place. (Bug #20256)

  • SUBSTRING() results sometimes were stored improperly into a temporary table when multibyte character sets were used. (Bug #20204)

  • For an ENUM column that used the ucs2 character set, using ALTER TABLE to modify the column definition caused the default value to be lost. (Bug #20108)

  • Join conditions using index prefixes on utf8 columns of InnoDB tables incorrectly ignored rows where the length of the actual value was greater than the length of the index prefix. (Bug #19960)

  • make install tried to build files that should already have been built by make all, causing a failure if installation was performed using a different account than the one used for the initial build. (Bug #19738)

  • For a MyISAM table with a FULLTEXT index, compression with myisampack or a check with myisamchk after compression resulted in table corruption. (Bug #19702)

  • The build process incorrectly tried to overwrite sql/lex_hash.h. This caused the build to fail when using a shadow link tree pointing to original sources that were owned by another account. (Bug #18888)

  • Linking the pthreads library to single-threaded MySQL libraries caused dlopen() to fail at runtime on HP-UX. (Bug #18267)

  • The source distribution failed to compile when configured with the --with-libwrap option. (Bug #18246)

  • Queries containing a subquery that used aggregate functions could return incorrect results. (Bug #16792)

  • Row equalities (such as WHERE (a,b) = (c,d) were not taken into account by the optimizer, resulting in slow query execution. Now they are treated as conjunctions of equalities between row elements. (Bug #16081)

  • BIN(), OCT(), and CONV() did not work with BIT values. (Bug #15583)

  • The parser rejected queries that selected from a table twice using a UNION within a subquery. The parser now supports arbitrary subquery, join, and parenthesis operations within EXISTS subqueries. A limitation still exists for scalar subqueries: If the subquery contains UNION, the first SELECT of the UNION cannot be within parentheses. For example, SELECT (SELECT a FROM t1 UNION SELECT b FROM t2) will work, but SELECT ((SELECT a FROM t1) UNION (SELECT b FROM t2)) will not. (Bug #14654)

  • On Mac OS X, zero-byte read() or write() calls to an SMB-mounted file system could return a nonstandard return value, leading to data corruption. Now such calls are avoided. (Bug #12620)

  • The server returns a more informative error message when it attempts to open a MERGE table that has been defined to use non-MyISAM tables. (Bug #10974)

  • With TRADITIONAL SQL mode, assignment of out-of-bound values and rounding of assigned values was done correctly, but assignment of the same numbers represented as strings sometimes was handled differently. (Bug #6147)

  • On an INSERT into an updatable but noninsertable view, an error message was issued stating that the view was not updatable. Now the message says the view is not insertable-into. (Bug #5505)

  • EXPLAIN sometimes returned an incorrect select_type for a SELECT from a view, compared to the select_type for the equivalent SELECT from the base table. (Bug #5500)

  • Incorporated portability fixes into the definition of __attribute__ in my_global.h. (Bug #2717)