Appendix D. MySQL Change History

Table of Contents

D.1. Changes in release 5.1.x (Development)
D.1.1. Changes in release 5.1.10 (Not yet released)
D.1.2. Changes in release 5.1.9 (Not yet released)
D.1.3. Changes in release 5.1.8 (Not yet released)
D.1.4. Changes in release 5.1.7 (27 February 2006)
D.1.5. Changes in release 5.1.6 (01 February 2006)
D.1.6. Changes in release 5.1.5 (10 January 2006)
D.1.7. Changes in release 5.1.4 (21 December 2005)
D.1.8. Changes in release 5.1.3 (29 November 2005)
D.1.9. Changes in release 5.1.2 (Not released)
D.1.10. Changes in release 5.1.1 (Not released)
D.2. Changes in MyODBC
D.2.1. Changes in MyODBC 3.51.13
D.2.2. Changes in MyODBC 3.51.12
D.2.3. Changes in MyODBC 3.51.11

This appendix lists the changes from version to version in the MySQL source code through the latest version of MySQL 5.1, which is currently MySQL 5.1.7-beta. Starting with MySQL 5.0, we began offering a new version of the Manual for each new series of MySQL releases (5.0, 5.1, and so on). For information about changes in previous release series of the MySQL database software, see the corresponding version of this Manual. For information about legacy versions of the MySQL software through the 4.1 series, see MySQL 3.23, 4.0, 4.1 Reference Manual.

We update this section as we add new features in the 5.1 series, so that everybody can follow the development process.

Note that we tend to update the manual at the same time we make changes to MySQL. If you find a recent version of MySQL listed here that you can't find on our download page (http://dev.mysql.com/downloads/), it means that the version has not yet been released.

The date mentioned with a release version is the date of the last BitKeeper ChangeSet on which the release was based, not the date when the packages were made available. The binaries are usually made available a few days after the date of the tagged ChangeSet, because building and testing all packages takes some time.

The manual included in the source and binary distributions may not be fully accurate when it comes to the release changelog entries, because the integration of the manual happens at build time. For the most up-to-date release changelog, please refer to the online version instead.

D.1. Changes in release 5.1.x (Development)

An overview of which features were added in MySQL 5.1 can be found here: Section 1.6.1, “What's New in MySQL 5.1”.

For a full list of changes, please refer to the changelog sections for each individual 5.1.x release.

D.1.1. Changes in release 5.1.10 (Not yet released)

This is a new Beta development release, fixing recently discovered bugs.

This Beta release, as any other pre-production release, should not be installed on production-level systems or systems with critical data. It is good practice to back up your data before installing any new version of software. Although MySQL has worked very hard to ensure a high level of quality, protect your data by making a backup as you would for any software beta release. Please refer to our bug database at http://bugs.mysql.com/ for more details about the individual bugs fixed in this version.

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 personalised update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Network (a commercial MySQL offering). For more details please see http://www.mysql.com/network/advisors.html.

Bugs fixed:

  • NDB Cluster: Attempting to create an index using multiple columns on an explicitly partitioned table in a replicated Cluster database could cause the master mysqld process to crash. (Bug #18284)

  • NDB Cluster: Queries using ORDER BY pkN failed against a LIST-partitioned Cluster table having a multi-column primary key, where pkN represents one of the columns making up the primary key. (Bug #18598)

D.1.2. Changes in release 5.1.9 (Not yet released)

This is a new Beta development release, fixing recently discovered bugs.

NOTE: This Beta release, as any other pre-production release, should not be installed on production-level systems or systems with critical data. It is good practice to back up your data before installing any new version of software. Although MySQL has worked very hard to ensure a high level of quality, protect your data by making a backup as you would for any software beta release. Please refer to our bug database at http://bugs.mysql.com/ for more details about the individual bugs fixed in this version.

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 personalised update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Network (a commercial MySQL offering). For more details please see http://www.mysql.com/network/advisors.html.

Functionality added or changed:

  • For partitioned tables, the output of SHOW TABLE STATUS now shows in the Engine column the name of the storage engine used by all partitions for the table; in the Create_options column, the output now shows partitioned for a partitioned table. This change also affects the values shown in the corresponding columns of the INFORMATION_SCHEMA.TABLES table. (Bug #17631)

  • The NDBCluster storage engine now supports CREATE TABLE statements of arbitrary length. (Previously, CREATE TABLE statements for MySQL Cluster tables could contain a maximum of 4096 characters only.) (Bug #17813)

Bugs fixed:

  • MEDIUMINT columns were not handled in the same way as other column types by partition pruning.

    Partition pruning would sometimes use inappropriate columns in preforming queries.

    Both of these issues were rectified as part of the same bugfix. (Bug #18025)

  • Quoted values could not be used for partition option values. (Bug #13520)

  • Delimited identifiers could not be used in defining partitions. (Bug #13433)

  • Building the server using --with-example-storage-engine failed to enable the EXAMPLE storage engine in the server. (Bug #18464)

  • Triggers created in one version of the server could not be dropped after upgrading to a newer version. (Bug #15921)

  • Queries using WHERE ... IS NULL returned incorrect results from partitioned tables. (Bug #18070)

  • Partition pruning did not perform correctly with partitions on NULL, and could potentially crash the server. (Bug #18053)

  • If InnoDB encountered a HA_ERR_LOCK_TABLE_FULL error and rolled back a transaction, the transaction was still written to the binary log. (Bug #18283)

D.1.3. Changes in release 5.1.8 (Not yet released)

Functionality added or changed:

  • In order not to break legacy applications, support for TYPE = engine_name has been restored, but now generates a warning.

    Important: This option has been deprecated since MySQL 4.0. Beginning with MySQL 5.2, TYPE = engine_name will no longer be available and will produce a syntax error. You should not use TYPE in any new applications, and you should immediately begin conversion of existing applications to use the ENGINE = engine_name syntax instead. (Bug #17501)

  • The deprecated constructs in the following table now generate warnings. You should not employ them in new applications, as they are likely to be removed in a future version of MySQL. Use the equivalents shown in the table's second column instead. For the same reason, existing applications depending on the deprecated constructs should be converted to make use of the current equivalents as soon as possible. (Bug #17501)

    Deprecated / Obsolete:Current / Preferred:
    @@table_type@@storage_engine
    @@log_bin_trust_routine_creators@@log_bin_trust_function_creators
    TIMESTAMP(N)See Section 12.5, “Date and Time Functions”.
    TYPE=ENGINE=
    BACKUP TABLEmysqldump, mysqlhotcopy, or MySQL Administrator
    RESTORE TABLE, LOAD TABLE FROM MASTERmysqldump, mysql, or MySQL Administrator
    SHOW TABLE TYPESSHOW [STORAGE] ENGINES
    SHOW INNODB STATUSSHOW ENGINE INNODB STATUS
    SHOW MUTEX STATUSSHOW ENGINE INNODB MUTEX
    SHOW BDB LOGS, SHOW LOGSSHOW ENGINE BDB LOGS

    The deprecated items shown in the table are not guaranteed to be available in MySQL 5.2 or later.

  • Incompatible change: For purposes of determining placement, RANGE partitioning now treats NULL as less than any other value. (Formerly, NULL was treated as equal to zero.) See Section 17.2.6, “How MySQL Partitioning Handles NULL Values”. (Bug #15447)

  • Incompatible Change: The semantics of ALTER TABLE t ENGINE=X; for partitioned tables is changed, and now means that the storage engine used for table t is changed to X.

    The previous statement formerly (prior to MySQL 5.1.8) meant that all partitioning was removed from the table. In order to remove the partitioning of a table, the syntax ALTER TABLE t REMOVE PARTITIONING; is introduced. The REMOVE PARTITIONING option can be used in combination with existing ALTER TABLE options such as those employed for adding or dropping columns or indexes. (Bug #17754)

  • Security Enhancement: Checks for permissions on database operations were performed in a case-insensitive manner, meaning that a user with permissions on database MYDATABASE also had permissions on database myDataBase. (Bug #17279)

  • The NDBCluster storage engine now supports INSERT IGNORE and REPLACE statements. Previously, these statements failed with an error. (Bug #17431)

  • Events no longer support times past the end of the Unix epoch. (Formerly, such dates were interpreted as being at the beginning of the Unix epoch.) (Bug #16396)

  • Event names are now case-insenstive. That is (for example), you cannot have events with the names Myevent and MyEvent belonging to the same database and definer. (Bug #16415)

  • Windows builds now have SSL support enabled. (Bug#18195)

  • Temporary tables may no longer be partitioned. (Bug #17497)

  • Added the --events option to mysqldump to enable events to be included in the dump output. (Bug #16853)

  • NDB Cluster (Disk Data): You can now have only one logfile group at any one time. See Section 13.1.8, “CREATE LOGFILE GROUP Syntax”. (Bug #16386)

  • The syntax for CREATE PROCEDURE and CREATE FUNCTION statements now includes a DEFINER clause. The DEFINER value specifies the security context to be used when checking access privileges at routine invocation time if the routine has the SQL SECURITY DEFINER characteristic. See Section 19.2.1, “CREATE PROCEDURE and CREATE FUNCTION Syntax”, for more information.

    When mysqldump is invoked with the --routines option, it now dumps the DEFINER value for stored routines.

  • The output from SHOW CREATE TABLE is more consistent about using uppercase for keywords. Data types still are in lowercase. (Bug #10460)

  • The ExtractValue() function with contains() now uses the SQL collation in making comparisons. Perviously, comparisons were always binary (that is, case-sensitive). (Bug #16316)

  • The cluster_replication database has been renamed to cluster. This will effect replication between MySQL Clusters where one cluster is running MySQL 5.1.8 or later, and the other is running MySQL 5.1.7 or earlier. See Section 16.7, “MySQL Cluster Replication”, and especially Section 16.7.4, “Replication Schema and Tables”.

  • The stability of CREATE and DROP operations on NDB tables containing BLOB columns has been improved. (Bug #17761)

  • More specific error messages are now given when attempting to create an excessive number of partitions or subpartitions. (Previously, no distinction was made between an excessive number of partitions and an excessive number of subpartitions.) (Bug #17393)

  • The mysqltest utility now converts all CR/LF combinations to LF to allow test cases intended for Windows to work properly on UNIX-like systems. (Bug #13809)

  • The mysql_ping function will now retry if the reconnect flag is set and error CR_SERVER_LOST is encountered during the first attempt to ping the server. (Bug #14057)

  • mysqldump now surrounds the DEFINER, SQL SECURITY DEFINER and WITH CHECK OPTION clauses of a CREATE VIEW statement with "not in version" comments to prevent errors in earlier versions of MySQL. (Bug #14871)

  • For an event having no STARTS time specified when it was created, the mysql.event table's start column now displays the creation time rather than NULL. (Bug #16537)

    In addition, both the SHOW EVENTS statement's Starts column and the STARTS column of the INFORMATION_SCHEMA.EVENTS table are now empty rather than NULL when STARTS was not used in the CREATE EVENT statement.

  • MICROSECOND intervals are no longer allowed for events. (Bug #16411)

  • Description of the EVENT privilege has been changed to To create, alter, drop, and execute events. (Bug #16412)

  • The binlog_format system variable now is dynamic and can be changed at runtime, as described in Section 6.3, “Row-Based Replication”.

  • The binlog_format system variable now can be set to a third format, MIXED, as described in Section 6.3, “Row-Based Replication”.

  • A slave server may switch the format automatically now. This happens when the server is running in either STATEMENT or MIXED format and encounters a row in the binary log that is written in ROW logging format. In that case, the slave switches to row-based replication temporarily for that event, and switches back to the previous format afterwards.

  • Partition pruning was made more stable, particularly in cases involving queries using tests for NULL values in the WHERE clause against subpartitioned tables which were partitioned by LIST( some_function(col1, ... ,colN) ). (Bug #17891)

  • Names of subpartitions must now be unique for an entire table, and not merely within the same partition. (Bug #15408)

  • The output of SHOW CREATE EVENT no longer qualifies the event name with the name of the schem to which the event belongs. (Bug #17714)

  • The client API will now attempt to reconnect on TCP/IP if the reconnect flag is set, as is the case with sockets. (Bug #2845)

Bugs fixed:

  • A SELECT ... ORDER BY ... from a view defined using a function could crash the server. An example of such a view might be CREATE VIEW AS SELECT SQRT(c1) FROM t1. (Bug #18386)

  • REPAIR TABLE, OPTIMIZE TABLE, and ALTER TABLE operations on transactional tables could corrupt triggers referencing those tables. (Bug #18153)

  • MyISAM: Performing a bulk insert on a table referenced by a trigger would crash the table. (Bug #17764)

  • Using ORDER BY intvar within a stored procedure (where intvar is an integer variable or expression) would crash the server. (Bug #16474)

    Note: The use of an integer i in an ORDER BY i clause for sorting the result by the ith column is deprecated (and non-standard). It should not be used in new applications. See Section 13.2.7, “SELECT Syntax”.

  • A SELECT using a function against a nested view would crash the server. (Bug #15683)

  • ALTER TABLE ... ADD COLUMN ... AFTER ... failed when used on partitioned tables. (Bug #16806)

  • NDB Cluster: A timeout in the handling of an ABORT condition with more that 32 operations could yield a node failure. (Bug #18414)

  • NDB Cluster: A node restart immediately following a CREATE TABLE would fail. Important: This fix supports 2-node Clusters only. (Bug #18385)

  • NDB Cluster: In event of a node failure during a rollback, a “false” lock could be established on the backup for that node, which lock could not be removed without restarting the node. (Bug #18352)

  • NDB Cluster: The cluster created a crashed replica of a table having an ordered index — or when logging was not enabled, of a table having a table or unique index — leading to a crash of the cluster following 8 successibe restarts. (Bug #18298)

  • NDB Cluster: When replacing a failed master node, the replacement node could cause the cluster to crash from a buffer overflow if it had an excessively large amount of data to write to the cluster log. (Bug #18118)

  • NDB Cluster: Restarting nodes were allowed to start and join the cluster too early. (Bug #16772)

  • NDB Cluster: Issuing a DROP LOGFILE GROUP statement would cause ndbd processes to crash if MySQL had been compiled with gcc4. (Bug #18295)

  • Using triggers with partitioned InnoDB tables led to incorrect results. (Bug #17744)

  • Calling CREATE TABLE or ALTER TABLE twice on a partitioned table in a stored procedure or a prepared statement resulted in errors and sometimes server crashes. (Bug #17290)

  • A problem with NULLs and interval mapping sometimes caused incorrect results or crashes when trying to use less-than searches on partitioned tables. (Bug #17173)

  • CREATE TABLE ... PARTITION ... AS SELECT ... would cause the server to crash. (Bug #15336)

  • Creating a partition which depends on an expression containing a column using the UTF8 character set would cause the server to crash. (Bug #14367)

  • Invoking more than once a prepared statement that creates a partitioned table would crash the server. (Bug #14350)

  • NDB Cluster: A SELECT ... ORDER BY query on an explicitly partitioned Cluster table with no explicit indexes would crash the server. (Bug #17899)

  • The ExtractValue() function did not return an error when passed an invalid XPath string. (Bug #18172)

  • Stored procedures that call UDFs and pass local string variables caused server crashes. (Bug #17261)

  • Connecting to a server with a UCS2 default character set with a client using a non-UCS2 character set crashed the server. (Bug #18004)

  • Loading of UDFs in a statically linked MySQL caused a server crash. UDF loading is now blocked if the MySQL server is statically linked. (Bug #11835)

  • A security enhancement in Visual Studio 8 could cause a MySQL debug server compiled with it to hang when running SELECT queries against partitioned tables. (Bug #17722)

  • NDB Cluster: auto_increment values were not propagated correctly in statement-based replication. (Bug #18208)

  • Rpeated invocations of a stored procedure containing a SHOW CREATE EVENT statement would result in the error Packets out of order. (Bug #17403)

  • Repeated invocations of a stored procedure containing a CREATE EVENT or ALTER EVENT statement would crash the server. (Bug #16408)

  • Renaming and adding a new column to a partitioned table in the same ALTER TABLE statement caused the server to crash. (Bug #17772)

  • ALTER TABLE ... REBUILD PARTITION with no partition name specified would crash the server. (Bug #17940)

  • Trying to add a partition to a table having subpartitions could crash the server. (Bug #17140)

  • Attempting to use a conflicting VALUES clause in ALTER TABLE ... ADD PARTITION caused the server to crash. An example of such a conflicting clause would be that uses VALUES LESS THAN (constant) (which indicates a range) with a table that is partitioned by LIST. (Bug #17127)

  • ALTER TABLE ... COALESCE PARTITION failed with an Out of Memory error. (Bug #16810)

  • Names of subpartitions were not displayed in the output of SHOW CREATE TABLE. (Bug #16370)

  • Setting up subpartitions on at least one but not all the partitions of a partitioned table caused the server to crash. (Bug #15407)

  • InnoDB used table locks (not row locks) within stored functions. (Bug #18077)

  • Using the position() function in the XPath argument to ExtractValue() crashed the server. (Bug #18171)

  • A query with a WHERE date_column > date_value condition failed on a table partitioned by RANGE. (Bug #17894)

  • Cursors in stored routines could cause a server crash. (Bug #16887)

  • Replication slaves could not replicate triggers from older servers that included no DEFINER clause in the trigger definition. Now the trigger executes with the privileges of the invoker (which on the slave is the slave SQL thread). (Bug #16266)

  • Character set conversion of string constants for UNION of constant and table column was not done when it was safe to do so. (Bug #15949)

  • NULL values were written to the mysql.slow_log table incorrectly. (Bug #17600)

  • A query with a WHERE date_column > date_value condition failed on a table partitioned by RANGE. (Bug #17894)

  • A failed ALTER TABLE ... ADD PRIMARY KEY on a partitioned table would result in bad table metadata and could possibly crash the server. (Bug #17097)

  • No error was reported when subpartitions were defined for a non-subpartitioned table. (Bug #15961)

  • Searches on indexed columns of partitioned tables failed to find all matching rows following updates of the indexed columns. (Bug #14526)

  • The DEFINER value for stored routines was not replicated. (Bug #15963)

  • Use of TRUNCATE TABLE for a TEMPORARY table on a master server was propagated to slaves properly, but slaves did not decrement the Slave_open_temp_tables counter properly. (Bug #17137)

  • SELECT COUNT(*) for a MyISAM table could return different results depending on whether an index was used. (Bug #14980)

  • Updating a view that filters certain rows to set a filtered out row to be included in the table caused infinite loop. For example, if the view has a WHERE clause of salary > 100 then issuing an UPDATE statement of SET salary = 200 WHERE id = 10, caused an infinite loop. (Bug #17726)

  • Creating a table with the same name as the mapped name of another table caused a server crash. For example, if MySQL maps the table name txu#P#p1 to txu@0023P@0023p1 on disk, creating another table named txu@0023P@0023p1 crashed the server. (Bug #17142)

  • NDB Cluster: Adding an index together with replication could cause mysqld to crash. (Bug #18106)

  • NDB Cluster: Insufficient stringbuffer memory when attempting to create a trigger caused the server to crash. (Bug #18101)

  • NDB Cluster: Variable-length columns used as primary keys were not handled correctly. (Bug #18075)

  • NDB Cluster: Row-based replication could fail with tables using VARCHAR columns for primary keys and having BLOB columns. (Bug #18067)

  • NDB Cluster: CREATE UNIQUE INDEX on a column containing non-unique data could cause one or more ndbd nodes to hang or crash. (Bug #18040)

  • NDB Cluster (Disk Data): CREATE UNIQUE INDEX failed with Error 4243: Index not found. (Bug #18039)

  • NDB Cluster: Node recovery of tables with VARCHAR columns using character sets was inconsistent, which could cause a number of issues, including the data nodes failing to restart and ALTER TABLE statements to hang. (Bug #18026)

  • NDB Cluster: In some cases, a single ndbd node would fail following a system restart. (Bug #17854)

  • NDB Cluster (Replication): The binary log on the secondary master was not being set up correctly following a table rename. (Bug #17838)

  • NDB Cluster: With a single replica, transactions waiting in the log synchronisation queue were not being restarted, causing them to be aborted. (Bug #17536)

  • NDB Cluster (Disk Data): It was not possible to create more than 9 tablespaces. (Bug #16913)

  • NDB Cluster: Inserting and deleting BLOB column values while a backup was in process could cause the loss of an ndbd node. (Bug #14028)

  • NDB Cluster: UNDO_BUFFER_SIZE was limited to 17 MB. (Bug #16657, Bug #17890)

  • Using ALTER TABLE ... REBUILD PARTITION without specifying the name of the partition caused the server to crash, rather than reporting a syntax error. (Bug #17947)

  • When attempting to insert a 0 into a LIST-partitioned table that had no value-list containing 0, no error was reported. (Bug #15253)

  • With ExtractValue(), the last() function returned 1 even when there was more than one node. (Bug #16318)

  • If the server was started with the --skip-grant-tables option, it was impossible to create a trigger or a view without explicitly specifying a DEFINER clause. (Bug #16777)

  • The server would execute stored routines that had a non-existent definer. (Bug #13198)

  • NDB Cluster: A simultaneous RENAME of several tables was logged multiple times. (Bug #17827)

  • NDB Cluster: Trying to perform a DELETE from a Cluster table following a LOCK TABLES would cause the ndbd processes to hang. (Bug #17812)

  • ALTER TABLE ... REORGANIZE PARTITION failed with Error on rename of filename ... on Windows. (Bug #17720)

  • NDB Cluster: ALTER TABLE ... ADD INDEX failed with ERROR 756: Index on disk column is not supported when run against a Disk Data table having a primary key. (Bug #17888)

  • NDB Cluster: DELETE operations on NDB tables could cause memory leaks. (Bug #16874)

  • NDB Cluster: Some query cache statistics were not always correctly reported for Cluster tables. (Bug #16795)

  • The EXAMPLE storage engine did not work on Windows. (Bug #17721)

  • For FEDERATED tables, a SELECT statement with an ORDER BY clause did not return rows in the proper order. (Bug #17377)

  • Setting the myisam_repair_threads system variable to a value larger than 1 could cause corruption of large MyISAM tables. (Bug #11527)

  • The length of a VARCHAR() column that used the utf8 character set would increase each time the table was re-created in a stored procedure or prepared statement, eventually causing the CREATE TABLE statement to fail. (Bug #13134)

  • The MySQL server could crash with out of memory errors when performing aggregate functions on a DECIMAL column. (Bug #17602)

  • INSERT statements executed by scheduled events were not written to the general log. (Bug #16413)

  • A memory leak caused warnings on slaves for certain statements that executed without warning on the master. (Bug #16175)

  • Naming a partition using the character Ç (“c-cedilla”; Unicode 00C7 or 00E7) made unreadable the table containing the partition. (Bug #14527)

  • The self() XPath function was not handled correcty by ExtractValue(). (Bug #16315)

  • The ExtractValue() function would not accept expressions which matched element names containing an underscore character. (Bug #16320)

  • NDB Cluster: Trying to update very large partitioned tables using the NDB storage engine sometimes caused the server to crash. (Bug #16385, Bug #17806)

  • Slow queries executed by scheduled events were not being written to the slow query log. (Bug #16426)

  • On Linux, creation of table partitions failed within a stored procedure. (Bug #14363)

  • mysql_fix_privilege_tables didn't create the mysql.plugin table. (Bug #17568)

  • Improper checking of binary log statements could result in a server crash. (Bug #17457)

  • The ExtractValue() function allowed the use of the ! character in identifiers by ignoring the illegal character. This is now correctly reported as a syntax error. (Bug #16313)

  • NDB Cluster: Trying to insert a value into a nonexistent LIST partition of an NDB table would cause the server to crash. (Bug #17763)

  • NDB Cluster: ALTER TABLE on a partitioned NDB table could cause the server to crash. (Bug #17499)

  • NDB Cluster: A repeated SELECT on a partitioned table that used the NDB storage engine could cause the server to crash. (Bug #17390)

  • NDB Cluster: Using ALTER TABLE ... ADD PARTITION on a table partitioned by LIST would cause the client to hang. (Bug #17701)

  • Triggers created without BEGIN and END clauses could not be properly restored from a mysqldump file. (Bug #16878)

  • The RENAME TABLE statement did not move triggers to the new table. (Bug #13525)

  • Clients compiled from source with the --without-readline did not save command history from session to session. (Bug #16557)

  • Stored routines that contained only a single statement were not written properly to the dumpfile when using mysqldump. (Bug #14857)

  • Issuing GRANT EXECUTE on a procedure would display any warnings related to the creation of the procedure. (Bug #7787)

  • Attempting to add a new partition to a table partitioned by a unique key would cause an Out of memory error. (Bug #17169)

  • In a highly concurrent environment, a server crash or deadlock could result from execution of a statement that used stored functions or activated triggers coincident with alteration of the tables used by these functions or triggers. (Bug #16593)

D.1.4. Changes in release 5.1.7 (27 February 2006)

Functionality added or changed:

  • Incompatible change: TYPE = engine_name is no longer accepted as a synonym for the ENGINE = engine_name table option. (TYPE has been deprecated since MySQL 4.0.)

  • Several changes were made to make upgrades easier:

    • Added the mysql_upgrade program that checks all tables for incompatibilities with the current version of MySQL Server and repairs them if necessary. This program should be run for each MySQL upgrade (rather than mysql_fix_privilege_tables). See Section 5.5.2, “mysql_upgrade — Check Tables for MySQL Upgrade”.

    • Added the FOR UPGRADE option for the CHECK TABLE statement. This option checks whether tables are incompatible with the current version of MySQL Server.

    • Added the --check-upgrade to mysqlcheck that invokes CHECK TABLE with the FOR UPGRADE Added the --fix-db-names and --fix-table-names options to mysqlcheck.

  • All subpartitions within a given partitioned table are now guaranteed to have unque names. (Bug #15408)

  • Added the RENAME DATABASE statement.

  • The SQL mode in effect at the time an event is created or altered is recorded and used during event execution. (Bug #16407)

  • Added the PROCESSLIST table to INFORMATION_SCHEMA.

  • Attempting to read pre-5.1.6 partitioned tables with a MySQL 5.1.7 (or later) server now generates a suitable warning message. (Bug #16695)

    For additional information about this issue, see Section D.1.5, “Changes in release 5.1.6 (01 February 2006)”.

  • NDB Cluster: Attempting to SELECT ... FROM INFORMATION_SCHEMA.FILES now raises a warning in the event that the cluster has crashed. (Bug #17087)

  • Removed the have_isam and have_raid system variables.

  • Status messages added to ndb_restore to allow users to know that data files for Disk Data are being created. (Bug #16873)

  • Added the IN NATURAL LANGUAGE MODE and IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION modifiers for full-text searches. See Section 12.7, “Full-Text Search Functions”.

  • Creator privileges are now checked for all events before execution. (Bug #17289)

  • CREATE EVENT, DROP EVENT, and ALTER EVENT statements are not allowed in triggers. (Bug #16410)

  • New charset command added to mysql command-line client. By typing charset name or \C name (such as \C UTF8), the client character set can be changed without reconnecting. (Bug #16217)

  • In row-based replication, when executing a Rows_log_event, the associated table was locked, the rows applied and the lock released. This did not work since there are storage engines that count locks and perform an autocommit when the number of locks reach zero. Now we ensure that all table maps come before all ROWS events in a statement.

Bugs fixed:

  • Using an XPath expression containing = with ExtractValue() caused the server to crash. (Bug #16242)

  • NDB Cluster: An unhandled resources issue could cause node failure with a DELETE FROM TABLE affecting thousands of rows. (Bug #16492)

  • NDB Cluster: Cluster tables not having an explicit primary key could not be replicated. (Bug #14541)

  • For a transaction that used MyISAM and InnoDB tables, interruption of the transaction due to a dropped connection on a master server caused slaves to lose synchrony. (Bug #16559)

  • SELECT with GROUP BY on a view could cause a server crash. (Bug #16382)

  • SET TRANSACTION ISOLATION LEVEL acted like SET SESSION TRANSACTION ISOLATION LEVEL. That is, it set the isolation level for longer than the next transaction. (Bug #7955)

  • SHOW CREATE TABLE produced extraneous spaces after the PRIMARY KEY keywords. (Bug #13883)

  • If the query optimizer transformed a GROUP BY clause in a subquery, it did not also transform the HAVING clause if there was one, producing incorrect results. (Bug #16603)

  • SUBSTRING_INDEX() could yield inconsistent results when applied with the same arguments to consecutive rows in a query. (Bug #14676)

  • myisam_ftdump did not work for FULLTEXT indexes associated with a parser plugin. (Bug #17116)

  • BIT fields were not properly handled when using row-based replication. (Bug #13418)

  • Column counts were encoded incorrectly in the binary log for row-based logging format. (Bug #17678)

  • Data truncations on non-UNIQUE indexes could crash InnoDB when using multi-byte character sets. (Bug #17530)

  • An ALTER DATABASE statement on a replication master crashed the slaves. (Bug #17521)

  • Partitioning with certain SUBPARTITION BY HASH clauses caused an error when querying for a partitioned column using an IS NULL comparison. (Bug #17430, Bug #17432)

  • The mysql_fix_privilege_tables.sql script did not properly initialize the Event_priv column to 'Y' for those accounts that should have the EVENT privilege. (Bug #16400)

  • NDB Cluster: Inserting the output of REPEAT('some_string', some_int) into a BLOB column resulted in the error Invalid blob attributes or invalid blob parts table. (Bug #17505)

  • NDB Cluster: Row-based replication was not being set up correctly if a backup was already in progress. For example, connecting a mysqld instance to a cluster which was being backed up would result in the message NDB: skipping setup table test.t1 being written to the error log. (Bug #17459)

  • NDB Cluster: CREATE TEMPORARY TABLE of a Cluster table would fail with an Unsupported error or crash the server. (Bug #17210, Bug #16552)

  • NDB Cluster: UNIQUE keys in Cluster tables were limited to 225 bytes in length. (Bug #15918)

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

  • NDB Cluster: Creating NDB tables containing BLOB columns but no primary key caused unpredictable behavior. (Bug #17559)

  • Creating an event and using a whitespace character other than space following the DO keyword caused a server crash. (Bug #17453)

  • Previously, a stored function invocation was written to the binary log as DO func_name() if the invocation changes data and occurs within a non-logged statement, or if the function invokes a stored procedure that produces an error. These invocations now are logged as SELECT func_name() instead for better control over error code checking (slave servers could stop due to detecting a different error than occurred on the master). (Bug #14769)

  • CHECKSUM TABLE returned different values on MyISAM table depending on whether the QUICK or EXTENDED options were used. (Bug #8841)

  • Querying the INFORMATION_SCHEMA.PARTITIONS table on a non-max server caused a server crash. This also happened following the creation of a table with a very large number (hundreds) of partitions. (Bug #16591, Bug #17141)

  • Attempting to add a new partition to a table partitioned by a unique key would cause an Out of memory error. (Bug #17169)

  • MySQL server dropped client connection for certain SELECT statements against views defined that used MERGE algorithm. (Bug #16260)

  • A statement containing GROUP BY and HAVING clauses could return incorrect results when the HAVING clause contained logic that returned FALSE for every row. (Bug #14927)

  • Using GROUP BY on column used in WHERE clause could cause empty set to be returned. (Bug #16203)

  • DROP DATABASE did not drop events for the database. (Bug #16406)

  • Race conditions between event creation, dropping, and execution could result in a server crash or hang. (Bug #17373)

  • SET sql_mode = N, where N > 31, did not work properly. (Bug #13897)

  • Repeated invocation of my_init() and my_end() caused corruption of character set data and connection failure. (Bug #6536)

  • When used with the ExtractValue() function, an XPath expression having no leading “/” character would crash the server. (Bug #16234)

  • A SELECT from the last partition of a subpartitioned table having a UNIQUE KEY could crash the MySQL Server. (Bug #16907)

  • A SELECT on a subpartitioned table having a multiple-column PRIMARY or UNIQUE KEY, and whose partitioning function used only the first column of the key, could cause mysqld to crash. (Bug #16901)

  • Using REPLACE INTO on a partitioned table having a primary key would crash the server in the event of a duplicate key error. (Bug #16782)

  • DROP TABLE would sometimes fail on a table having subpartitions that used the default storage engine. (Bug #16775)

  • NDB Cluster: Sharing of table names containing special characters between multiple SQL nodes was not handled correctly when binary logging was enabled (a timeout error resulted). (Bug #17415)

  • NDB Cluster: Table definitions were not shared between multiple SQL nodes in a cluster without binary logging being enabled. (Bug #17414)

  • NDB Cluster: Cluster log file paths were truncated to 128 characters. They may now be as long as MAX_PATH (the maximum path length permitted by the operating system). (Bug #17411)

  • SHOW CREATE EVENT displayed no output. (Bug #16423)

  • Statements that contained Unicode characters were not logged to the log tables correctly. (Bug #16905)

  • On Windows platforms, some attempts to create partitioned tables from the command line would cause the mysql client to hang. (Bug #17082)

  • NDB Cluster: SHOW CREATE TABLE would fail when run against a table created in a different session. (Bug #17340)

  • NDB Cluster: Following multiple forced shutdowns and restarts of data nodes, DROP DATABASE could fail. (Bug #17325)

  • NDB Cluster: An UPDATE with an inner join failed to match any records if both tables in the join did not have a primary key. (Bug #17257)

  • NDB Cluster: A DELETE with a join in the WHERE clause failed to retrieve any records if both tables in the join did not have a primary key. (Bug #17249)

  • The NDB Cluster storage engine did not allow views to be updated. (Bug #17206)

  • NDB Cluster: Row-based replication of a cluster failed to take --binlog_ignore_db settings into account. (Bug #17188)

  • Trying to create a partitioned table with more than 32 attributes failed. (Bug #17179)

  • NDB Cluster: When attempting to import data into an NDB table using LOAD DATA INFILE, the server would hang in the event of a duplicate key error. (Bug #17154)

  • NDB Cluster: In some cases, LOAD DATA INFILE did not load all data into NDB tables. (Bug #17081)

  • NDB Cluster: Performing large numbers of data manipulation statements on cluster tables using Disk Data could lead to a server crash. ()

  • NDB Cluster: In some cases, a cluster using Disk Data tables could not be restarted following a normal shutdown. (Bug #16872)

  • NDB Cluster: The REDO log would become corrupted (and thus unreadable) in some circumstances, due to a failure in the query handler. (Bug #17295)

  • NDB Cluster: CREATE TABLE new_tbl LIKE old_tbl; failed when old_tbl used the NDB storage engine. (Bug #17005)

  • NDB Cluster: No error message was generated for setting NoOfFragmentLogFiles too low. (Bug #13966)

  • NDB Cluster: No error message was generated for setting MaxNoOfAttributes too low. (Bug #13965)

  • The SELECT privilege was required for triggers that performed no selects. (Bug #15196)

  • The UPDATE privilege was required for triggers that performed no updates. (Bug #15166)

  • CAST(... AS TIME) operations returned different results when using versus not using prepared-statement protocol. (Bug #15805)

  • Killing a long-running query containing a subquery could cause a server crash. (Bug #14851)

  • InnoDB could display an incorrect error message for a cascading update. (Bug #9680)

  • A RETURN statement within a trigger caused a server crash. RETURN now is disallowed within triggers. To exit immediately, use LEAVE. (Bug #16829)

D.1.5. Changes in release 5.1.6 (01 February 2006)

Functionality added or changed:

  • Packaging changes: MySQL 5.1.6 introduces some changes to distribution packaging:

    • Distributions include both a mysqld optimized server and mysqld-debug debugging server. There is no separate debug distribution.

    • There is no longer a mysqld-max server.

    • Server binaries no longer are stripped, except for RPM distributions.

    • Binary distributions for Unix and Unix-like systems no longer include safe_mysqld as a link to mysqld_safe. safe_mysqld has been deprecated since MySQL 4.0 and now is removed.

  • Incompatible change: This release introduces the TRIGGER privilege. Previously, the SUPER privilege was needed to create or drop triggers. Now those operations require the TRIGGER privilege. This is a security improvement because you no longer need to grant users the SUPER privilege to enable them to create triggers. However, the requirement that the account named in a trigger's DEFINER clause must have the SUPER privilege has changed to a requirement for the TRIGGER privilege. After upgrading, be sure to update your grant tables as described in Section 5.5.1, “mysql_fix_privilege_tables — Upgrade MySQL System Tables”. This process assigns the TRIGGER privilege to all accounts that had the SUPER privilege. (After updating, you might also consider whether any of those accounts no longer need SUPER.) If you fail to update the grant tables, triggers may fail when activated. (Bug #9142)

  • Incompatible change: Due to a change in the naming scheme for partitioning and subpartitioning files, it is not possible for the server to read partitioned tables created in previous MySQL versions. A suggested workaround is (1) to create a non-partitioned table with the same table schema using a standard CREATE TABLE statement (that is, with no partitioning clauses) and then (2) to issue aSELECT INTO to copy the data into the non-partitioned table before the upgrade; following the upgrade, you can partition the new table using ALTER TABLE ... PARTITION BY .... Alternatively, you can dump the table using mysqldump prior to upgrading and reload it afterwards with LOAD DATA. In either case, you should drop the pre-5.1.6 partitioned tables before upgrading to 5.1.6 or later. (Bug #13437)

    Important: If any partitioned tables that were created prior to MySQL 5.1.6 are present following an upgrade to MySQL 5.1.6 or later, it is also not possible to read from the INFORMATION_SCHEMA.PARTITIONS table, nor will you be able to drop those tables or the database or databases in which they are located. In this event, you must: (1) shut down mysqld; (2) manually delete the table, partition, and (if any) subpartition files; and then (3) restart the MySQL Server. (Bug #16695)

  • Incompatible change: Words with apostrophes are now matched in a FULLTEXT search against non-apostrophe words (for example, a search for Jerry will match against the term Jerry's). Users upgrading to this version must issue REPAIR TABLE statements for tables containing FULLTEXT indexes. (Bug #14194)

  • MySQL 5.1.6 introduces the Event Scheduler which allows one to schedule statements for execution at predetermined times. Events can be transient (one-time-only) or recurrent at regular intervals, and may execute queries and statements permitted in stored routines, including compound statements.

    Events can be altered after creation, and dropped when no longer needed.

    Information about scheduled events can be obtained using the statements SHOW EVENTS and SHOW CREATE EVENT, or by querying the INFORMATION_SCHEMA.EVENTS table. All of these are available beginning in MySQL 5.1.6.

    Users must have the EVENT privilege (also added in 5.1.6) to create events.

    For more information, see Chapter 21, Event Scheduler.

  • Replication between MySQL Clusters is now supported. It is now also possible to replicate between a MySQL Cluster and a non-cluster database. See Section 16.7, “MySQL Cluster Replication”.

  • Queries against partitioned tables can now take advantage of partition pruning. In some cases, this can result in query execution that is an order of magnitude faster than the same query against a non-partitioned version of the same table.

  • Before MySQL 5.1.6, the server writes general query log and slow query log entries to log files. As of MySQL 5.1.6, the server's logging capabilities for these logs are more flexible. Log entries can be written to log files (as before) or to the general_log and slow_log tables in the mysql database. If logging is enabled, either or both destinations can be selected. The --log-output option controls the destination or destinations of log output. See Section 5.11.1, “Server Log Tables”.

    If you had the server configured for logging to log files formerly, use --log-output=FILE to preserve this behavior after an upgrade to MySQL 5.1.6 or higher.

  • The mysqldump utility now supports an option for dumping tablespaces. Use -Y or --all-tablespaces to enable this functionality. (Bug #16753)

  • Partition support is not an “engine”, but it was included in the output of SHOW ENGINES. Now it is not. (Bug #14355) The have_partition_engine variable was renamed to have_partitioning. (Bug #16718)

  • ANALYZE TABLE is now supported for partitioned tables. (Bug #13441)

  • Added the event_scheduler system variable.

  • Added the ndb_extra_logging system variable.

  • Added the FILES table to INFORMATION_SCHEMA.

  • Added the EVENTS table to INFORMATION_SCHEMA.

  • Added the PARTITIONS table to INFORMATION_SCHEMA.

  • The ARCHIVE storage engine now supports the AUTO_INCREMENT column attribute and the AUTO_INCREMENT table option. Section 14.8, “The ARCHIVE Storage Engine”.

  • Added support for the CREATE INDEX and DROP INDEX statements to the NDB Cluster storage engine.

  • Server plugins can register their own status variables to be displayed by the SHOW STATUS statement.

Bugs fixed:

  • An indexing error sometimes caused values to be assigned to the wrong RANGE partition. (Bug #16684)

  • NDB Cluster: ndb_delete_all would run out of memory on tables containing BLOB columns. (Bug #16693)

  • Using the TRUNCATE() function with a negative number for the second argument on a BIGINT column returned incorrect results. (Bug #8461)

  • When the fulltext search parser plugin returned more words than half of the length (in bytes) of the query string, the server would crash. (Bug #16722)

  • Improper memory handling for stored routine variables could cause memory overruns and binary log corruption. (Bug #15588)

  • A FULLTEXT query in a prepared statement could result in unexpected behavior. (Bug #14496)

  • STR_TO_DATE(1,NULL) caused a server crash. (Bug #15828)

  • An INSERT statement in a stored procedure corrupted the binary log. (Bug #16621)

  • MYSQL_OPT_RECONNECT option was modified by calls to the mysql_real_connect() function. (Bug #15719)

  • Specifying a value for --tmpdir without a trailing slash had unpredictable results. (Bug #15904)

  • Attempting to insert data into a partitioned table that used the BLACKHOLE storage engine caused mysqld to crash. (Bug #14524)

  • Using RANGE partitioning with a CASE statement as the partitioning function would cause records to be placed in the wrong partition. (Bug #15393)

  • ALTER TABLE ... ADD PARTITIONS on a table with one partition crashed the server. (Bug #15820)

  • NDB Cluster returned incorrect Can't find file error for OS error 24, changed to Too many open files. (Bug #15020)

  • Multi-byte path names for LOAD DATA and SELECT ... INTO OUTFILE caused errors. Added the character_set_filesystem system variable, which controls the interpretation of string literals that refer to filenames. (Bug #12448)

  • Certain subqueries where the inner query is the result of a aggregate function would return different results on MySQL 5.0 than on MySQL 4.1. (Bug #15347)

  • Error message for specifying value for which no partition exists returned wrong values on certain platforms. (Bug #15910)

  • Certain Japanese table names were not properly saved during a CREATE TABLE statement. (Bug #3906)

  • NDB Cluster leaked disk space when performing INSERTS/DELETES in a loop. (Bug #16771)

  • NDB Cluster returned wrong error when tablespace on disk was full. (Bug #16738)

  • The DATA DIRECTORY and INDEX DIRECTORY clauses of a CREATE TABLE statement involving partitions did not work. (Bug #14354)

  • Subselect could return wrong results when records cache and grouping was involved. (Bug #15347)

  • In some cases the query optimizer did not properly perform multiple joins where inner joins followed left joins, resulting in corrupted result sets. (Bug #15633)

  • The absence of a table in the left part of a left or right join was not checked prior to name resolution, which resulted in a server crash. (Bug #15538)

  • NDB Cluster: Trying to import too many dumped tables requiring resources beyond those allocated in the cluster configuration would cause the server to crash instead of reporting an insufficient resources error. (Bug #16455)

  • NDB Cluster (Disk Data): Tablespaces created using parameters with relatively low values (< 10 MB) produced filesizes much smaller than expected. (Bug #16742)

  • NDB Cluster: CREATE TABLESPACE statements were incorrectly parsed on 64-bit platforms. (INITIAL SIZE size worked, but INITIAL SIZE = size failed.) (Bug #13556)

  • Trying to add more than one partition in a single ALTER TABLE ... ADD PARTITION statement caused the server to crash. (Bug #16534)

  • Creating a partitioned table using a storage engine other than the session default storage engine caused the server to crash. (Bug #15966)

  • An ALTER TABLE ... PARTITION BY ... statement did not have any effect. (Bug #15523)

  • NDBCluster (Disk Data): The error message generated by a failed ADD UNDOFILE did not provide any reasons for the failure. (Bug #16267)

  • NDBCluster (Disk Data): DROP LOGFILE GROUP corrupted the cluster file system and caused ndbd to fail when running more than one node on the same system. (Bug #16193)

  • NDBCluster: A bitfield whose offset and length totaled 32 would crash the cluster. (Bug #16125)

  • NDBCluster: Upon the completion of a scan where a key request remained outstanding on the primary replica and a starting node died, the scan did not terminate. This caused incompleted error handling of the failed node. (Bug #15908)

  • NDBCluster: The ndb_autodiscover test failed sporadically due to a node not being permitted to connect to the cluster. (Bug #15619)

  • Using mysqldump to obtain a dump of a partitioned table employing the NDB storage engine produced a non-functional table creation statement. (Bug #13155)

  • SHOW CREATE TABLE did not display the PARTITIONS clause for tables partitioned by HASH or KEY. (Bug #14327)

  • Inserting a negative value into an integer column used as the partitioning key for a table partitioned by HASH could cause the server to crash. (Bug #15968)

  • With a table partitioned by LIST, inserting a value which was smaller than any value shown in the partitioning value-lists could cause the server to crash. (Bug #14365)

  • ALTER TABLE ... DROP PARTITION would truncate all DATE column values in the table's remaining partitions to NULL. (Bug #13644)

  • ALTER TABLE ... ADD PARTITION could crash the server or cause an Out of memory error in some circumstances. (Bug #13447)

  • The server would allow foreign keys to be declared in the definition of a partitioned table despite the fact that partitioned tables do not support foreign keys (see Section 17.5, “Restrictions and Limitations on Partitioning”). (Bug #13446)

  • A SELECT from a key-partitioned table with a multi-column key could cause the server to crash. (Bug #13445)

  • Issuing a TRUNCATE statement twice in succession on the same partitioned table would cause the server to crash. (Bug #13442)

  • Using a REPLACE statement on a partitioned table caused the server to crash. (Bug #13440)

  • Using an identifier rather than a literal integer value in the LESS THAN clause of a range-partitioned table could cause the server to crash and corruption of tables. (Bug #13439)

  • Using ENGINE=... within a PARTITION clause could cause the server to crash. (Bug #13438)

  • CREATE TABLE ... LIKE did not work if the table whose schema was to be copied was a partitoned table. (Bug #13435)

  • SHOW CREATE TABLE did not display the PARTITIONS clause for tables partitioned by HASH or KEY. (Bug #14327)

  • Certain permission management statements could create a NULL hostname for a user, resulting in a server crash. (Bug #15598)

  • Temporary table aliasing did not work inside stored functions. (Bug #12198)

  • Parallel builds occasionally failed on Solaris. (Bug #16282)

D.1.6. Changes in release 5.1.5 (10 January 2006)

Functionality added or changed:

  • Added the INFORMATION_SCHEMA ENGINES table.

  • Added the INFORMATION_SCHEMA PLUGINS table and the SHOW PLUGIN statement.

  • Added the binlog_format system variable that controls whether to use row-based or statement-based binary logging. Added the --binlog-format and --binlog-row-event-max-size server options for binary logging control. See Section 6.3, “Row-Based Replication”.

  • Plugins now can have status variables that are displayed in the output from SHOW STATUS. See Section 27.2.5, “Writing Plugins”.

  • Added the XML functions ExtractValue() and UpdateXML(). ExtractValue() returns the content of a fragment of XML matching a given XPath expression. UpdateXML() replaces the element selected from a fragment of XML by an XPath expression supplied by the user with a second XML fragment (also user-supplied), and returns the modified XML. See Section 12.9, “XML Functions”.

  • Added the --base64-output option to mysqlbinlog to print all binary log entries using base64 encoding. This is for debugging only. Logs produced using this option should not be applied on production systems.

  • Added the --port-open-timeout option to mysqld to control how many seconds the server should wait for the TCP/IP port to become free if it cannot be opened. (Bug #15591)

  • Two new Hungarian collations are included: utf8_hungarian_ci and ucs2_hungarian_ci. These support the correct sort order for Hungarian vowels. However, they do not support the correct order for sorting Hungarian consonant contractions; this issue will be fixed in a future release.

Bugs fixed:

  • InnoDB: An UPDATE statement with no index column in the WHERE condition locked all the rows in the table. (Bug #3300)

  • INSERT DELAYED caused mysqld to crash. (Bug #16095)

  • The output of mysqldump --triggers did not contain the DEFINER clause in dumped trigger definitions. (Bug #15110)

  • The output of SHOW TRIGGERS contained extraneous whitespace. (Bug #15103)

  • An INSERT ... SELECT statement between tables in a MERGE set can return errors when statement involves insert into child table from merge table or vice-versa. (Bug #5390)

  • A COMMIT statement followed by a ALTER TABLE statement on a BDB table caused server crash. (Bug #14212)

  • InnoDB: Comparison of indexed VARCHAR CHARACTER SET ucs2 COLLATE ucs2_bin columns using LIKE could fail. (Bug #14583)

  • Creating a trigger caused a server crash if the table or trigger database was not known because no default database had been selected. (Bug #14863)

  • Issuing a DROP USER command could cause some users to encounter a hostname is not allowed to connect to this MySQL server error. (Bug #15775)

  • The --plugin_dir option was not working. Also fix error with specifying parser name for fulltext. (Bug #16068)

  • Attempting to insert into a table partitioned by LIST a value less than any specified in one of the table's partition definitions resulted in a server crash. In such cases, mysqld now returns ERROR 1500 (HY000): Table has no partition for value v , where v is the out-of-range value. (Bug #15819)

D.1.7. Changes in release 5.1.4 (21 December 2005)

Functionality added or changed:

  • Added the mysqlslap program, which is designed to emulate client load for a MySQL server and report the timing of each stage. It works as if multiple clients are accessing the server.

  • Added the --server-id option to mysqlbinlog to enable only those events created by the server having the given server ID to be extracted. (Bug #15485)

  • It is now possible to build the server such that MyISAM tables can support up to 128 keys rather than the standard 64. This can be done by configuring the build using the option --with-max-indexes=N, where N≤128 is the maximum number of indexes to permit per table. (Bug #10932)

  • The bundled BDB library was upgraded to version 4.4.16.

  • Added the cp1250_polish_ci collation for the cp1250 character set.

  • Added the myisam_use_mmap system variable.

  • Added the --bdb-data-direct and --bdb-log-direct server options.

Bugs fixed:

  • SHOW ENGINES output showed the FEDERATED engine as DISABLED even for builds with FEDERATED support. (Bug #15559)

  • Server could not be built on default Debian systems with BDB enabled. (Bug #15734)

  • BDB: A DELETE, INSERT, or UPDATE of a BDB table could cause the server to crash where the query contained a subquery using an index read. (Bug #15536)

  • A left join on a column that having a NULL value could cause the server to crash. (Bug #15268)

  • It was not possible to reorganize a partition reusing a discarded partition name.

    Now, for example, you can create a table such as this one:

    CREATE TABLE t1 (a INT) 
        PARTITION BY RANGE (a) (
          PARTITION p0 VALUES LESS THAN (10),
          PARTITION p1 VALUES LESS THAN (20),
          PARTITION p2 VALUES LESS THAN MAXVALUE
        );
    

    and then repartition it as shown here:

    ALTER TABLE t1 REORGANIZE PARTITION p2 INTO (
        PARTITION p2 VALUES LESS THAN (30)
    );
    

    Previously, attempting to do so would produce the error All partitions must have unique names in the table . (Bug #15521)

  • NDB Cluster: The --ndb option for perror did not function. (Bug #15486)

  • The BLACKHOLE storage engine did not handle transactions properly: Rolled-back transactions were written to the binary log. Now they ae not. (Bug #15406)

  • NDB 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 #14828, Bug #15240, Bug #15682, Bug #15517)

  • 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)

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

  • 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)

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

  • 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)

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

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

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

  • SHOW CREATE DATABASE was sometimes refused when the client had privileges for the database. (Bug #9785)

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

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

  • Invalid casts to DATE values now result in a message of Incorrect datetime value, rather than Truncated incorrect datetime value. (Bug #8294)

  • Attempts to assign NULL to a NOT NULL column in strict mode now result in a message of Column 'col_name' cannot be null, rather than Column set to default value; NULL supplied to NOT NULL column 'col_name' at row n. (Bug #11491)

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

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

D.1.8. Changes in release 5.1.3 (29 November 2005)

Functionality added or changed:

This is the first public alpha release of the current MySQL 5.1 development branch, providing an insight to upcoming features. Although some of these are still under heavy development, this release includes the following new features and changes (in comparison to the current MySQL 5.0 production release):

  • Partitioning: allows distributing portions of individual tables across a filesystem, according to rules which can be set when the table is created. In effect, different portions of a table are stored as separate tables in different locations, but from the user point of view, the partitioned table is still a single table. See Chapter 17, Partitioning, for further information on this functionality. (Author: Mikael Ronström)

  • Plugin API: MySQL 5.1 adds support for a very flexible plugin API that enables loading and unloading of various components at runtime, without restarting the server. Although the work on this is not finished yet, plugin full-text parsers are a first step in this direction. This allows users to implement their own input filter on the indexed text, enabling full-text search capability on arbitrary data such as PDF files or other document formats. A pre-parser full-text plugin performs the actual parsing and extraction of the text and hands it over to the built-in MySQL full-text search. (Author: Sergey Vojtovich)

    The plugin API requires the mysql.plugin table. When upgrading from an older version of MySQL, you should run the mysql_fix_privilege_tables command to create this table. See Section 5.5.1, “mysql_fix_privilege_tables — Upgrade MySQL System Tables”.

    Incompatible change: Plugins are installed in the directory named by the plugin_dir system variable. This variable also controls the location from which the server loads user-defined functions (UDFs), which is a change from earlier versions of MySQL. That is, all UDF library files now must be installed in the plugin directory. When upgrading from an older version of MySQL, you must migrate your UDF files to the plugin directory.

  • The Instance Manager (IM) now has some additional functionality:

    • SHOW instance_name LOG FILES provides a listing of all log files used by the instance. (Author: Petr Chardin)

    • SHOW instance_name LOG {ERROR | SLOW | GENERAL} size retrieves a part of the specified log file. (Author: Petr Chardin)

    • SET instance_name. option_name=option_value sets an option to the specified value and writes it to the config file See Section 5.4, “mysqlmanager — The MySQL Instance Manager”, for more details on these new commands. (Author: Petr Chardin)

  • The performance of boolean full-text searches (using the “+” Operator) has been improved. See Section 12.7, “Full-Text Search Functions”, for more details about full-text searching. (Author: Sergey Vojtovich)

  • VARCHAR fields used in MySQL Cluster tables are now variable-sized; that is, they now only allocate as much space as required to store the data. Previously, a VARCHAR(n) column allocated n+2 bytes (aligned to 4 bytes), regardless if the actual inserted value required that much space. (In other words, a VARCHAR column always required the same, fixed, amount of storage as a CHAR column of the same size.)

  • Renamed the table_cache system variable to table_open_cache. Any scripts that refer to table_cache should be updated to use the new name.

  • Added the table_definition_cache system variable. If you use a large number of tables, you can create a large table definition cache to speed up opening of tables. The table definition cache takes less space and does not use file descriptors, unlike the normal table cache.

Bugs fixed:

  • Set functions could not be aggregated in outer subqueries. (Bug #12762)

D.1.9. Changes in release 5.1.2 (Not released)

Functionality added or changed:

  • Added MAXLOCKS, MINLOCKS, MAXWRITE, and MINWRITE as allowable values of the --bdb-lock-detect option. (Bug #14876)

  • Added the bdb_cache_parts and bdb_region_size system variables, and allowed bdb_cache_size to be larger than 4GB on systems that support it. (Bug #14895)

  • Added Transactions, XA, and Savepoints columns to SHOW ENGINES output.

  • Added --replace to mysqldump. This option uses REPLACE INTO, rather than INSERT INTO, when writing the dumpfile.

Bugs fixed:

  • Foreign keys were not properly enforced in TEMPORARY tables. Foreign keys now are disallowed in TEMPORARY tables. (Bug #12084)

D.1.10. Changes in release 5.1.1 (Not released)

Functionality added or changed:

Bugs fixed:

  • Performing a CREATE TABLE statement with a PARTITION BY clause in a prepared statement could crash a server running in debug mode. (Bug #12097)

  • NDB: Specifying the wrong nodegroup in a CREATE TABLE using partitioning would lead to the table name being locked after the CREATE TABLE statement failed (that is, the table name could not be re-used). (Bug #12114)

  • Using ORDER BY in a query with a partitioned table on a 64-bit operating system could crash the server. (Bug #12116)

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

D.2. Changes in MyODBC

D.2.1. Changes in MyODBC 3.51.13

Functionality added or changed:

  • N/A

Bugs fixed:

  • The SQLDriverConnect() ODBC method did not work with recent MyODBC releases. (Bug #12393)

D.2.2. Changes in MyODBC 3.51.12

Functionality added or changed:

  • N/A

Bugs fixed:

  • File DSNs could not be saved. (Bug #12019)

  • SQLColumns() returned no information for tables that had a column named using a reserved word. (Bug #9539)

D.2.3. Changes in MyODBC 3.51.11

Functionality added or changed: No changes.

Bugs fixed:

  • mysql_list_dbcolumns() and insert_fields() were retrieving all rows from a table. Fixed the queries generated by these functions to return no rows. (Bug #8198)

  • SQLGetTypoInfo() returned tinyblob for SQL_VARBINARY and nothing for SQL_BINARY. Fixed to return varbinary for SQL_VARBINARY, binary for SQL_BINARY, and longblob for SQL_LONGVARBINARY. (Bug #8138)