Released on 6 Oct 2009
MySQL 5.1.40 Changelog
  • InnoDB Plugin Notes

  • Bugs Fixed

InnoDB Plugin Notes

  • In this release, the InnoDB Plugin is included in source and binary distributions, except RHEL3, RHEL4, SuSE 9 (x86, x86_64, ia64), and generic Linux RPM packages. It also does not work for FreeBSD 6 and HP-UX or for Linux on S/390, PowerPC, and generic ia64.

Bugs Fixed

  • Incompatible Change; Replication: Concurrent transactions that inserted rows into a table with an AUTO_INCREMENT column could break statement-based or mixed-format replication error 1062 Duplicate entry '...' for key 'PRIMARY' on the slave. This was especially likely to happen when one of the transactions activated a trigger that inserted rows into the table with the AUTO_INCREMENT column, although other conditions could also cause the issue to manifest.

    As part of the fix for this issue, any statement that causes a trigger or function to update an AUTO_INCREMENT column is now considered unsafe for statement-based replication. For more information, see Replication and AUTO_INCREMENT. (Bug #45677)

    References: See also Bug #42415, Bug #48608, Bug #50440, Bug #53079.

  • Incompatible Change: In binary installations of MySQL, the supplied binary-configure script would start and configure MySQL, even when command help was requested with the --help command-line option. The --help option, if provided, no longer starts and installs the server. (Bug #30954)

  • Partitioning: When reorganizing partitions, not all affected subpartitions were removed prior to renaming. One way in which the issue was visible was that attempting to reorganize two partitions into a single partition having the same name as one of the original partitions could lead to a crash of the server. (Bug #47029)

    References: See also Bug #45961, Bug #43729.

  • Partitioning: An online or fast ALTER TABLE of a partitioned table could leave behind temporary files in the database directory.

    This issue was observed in MySQL 5.1.31 and later only. (Bug #46483)

  • Partitioning: When performing an INSERT ... SELECT into a partitioned table, read_buffer_size bytes of memory were allocated for every partition in the target table, resulting in consumption of large amounts of memory when the table had many partitions (more than 100).

    This fix changes the method used to estimate the buffer size required for each partition and limits the total buffer size to a maximum of approximately 10 times read_buffer_size. (Bug #45840)

  • Partitioning: Inserting negative values into an AUTO_INCREMENT column of a partitioned table could lead to apparently unrelated errors or a crash of the server.

    This issue was observed in MySQL 5.1.31 and later only. (Bug #45823)

  • Partitioning: Unnecessary calls were made in the server code for performing bulk inserts on partitions for which no inserts needed to be made. (Bug #35845)

    References: See also Bug #35843.

  • Replication: Performing ALTER TABLE ... DISABLE KEYS on a slave table caused row-based replication to fail. (Bug #47312)

  • Replication: BEGIN statements were not included in the output of mysqlbinlog. (Bug #46998)

  • Replication: When using row-based replication, DROP TEMPORARY TABLE IF EXISTS was written to the binary log if the table named in the statement did not exist, even though a DROP TEMPORARY TABLE statement should never be logged in row-based logging mode, whether the table exists or not. (Bug #46572)

  • Replication: When using row-based replication, importing a dump made with mysqldump and replicating a row with an AUTO_INCREMENT column set to 0, with NO_AUTO_VALUE_ON_ZERO active on the master, the row was inserted successfully on the master; however any setting for NO_AUTO_VALUE_ON_ZERO was ignored on the slave. When the AUTO_INCREMENT column was incremented, this caused replication to fail on the slave due to a duplicate key error. In some cases it could also cause the slave to crash. (Bug #45999)

  • Replication: By default, all statements executed by the mysql_upgrade program on the master are written to the binary log, then replicated to the slave. In some cases, this can result in problems; for example, it attempted to alter log tables on replicated databases (this failed due to logging being enabled).

    As part of this fix, a mysql_upgrade option, --write-binlog, is added. Its inverse, --skip-write-binlog, can be used to disable binary logging while the upgrade is in progress. (Bug #43579)

  • Replication: On the master, if a binary log event is larger than max_allowed_packet, the error message ER_MASTER_FATAL_ERROR_READING_BINLOG is sent to a slave when it requests a dump from the master, thus leading the I/O thread to stop. On a slave, the I/O thread stops when receiving a packet larger than max_allowed_packet.

    In both cases, however, there was no Last_IO_Error reported, which made it difficult to determine why the slave had stopped in such cases. Now, Last_IO_Error is reported when max_allowed_packet is exceeded, and provides the reason for which the slave I/O thread stopped. (Bug #42914)

    References: See also Bug #14068, Bug #47200, Bug #47303.

  • API: The fix for Bug #24507 could lead in some cases to client application failures due to a race condition. Now the server waits for the dummy thread to return before exiting, thus making sure that only one thread can initialize the POSIX threads library. (Bug #42850)

  • The pthread_cond_wait() implementations for Windows could deadlock in some rare circumstances. (Bug #47768)

  • On Mac OS X or Windows, sending a SIGHUP signal to the server or an asynchronous flush (triggered by flush_time) caused the server to crash. (Bug #47525)

  • Debug builds could not be compiled with the Sun Studio compiler. (Bug #47474)

  • A multiple-table UPDATE involving a natural join and a mergeable view raised an assertion. (Bug #47150)

  • Solaris binary packages now are compiled with -g0 rather than -g. (Bug #47137)

  • EXPLAIN caused a server crash for certain valid queries. (Bug #47106)

  • The configure option --without-server did not work. (Bug #46980)

  • The ARCHIVE storage engine lost records during a bulk insert. (Bug #46961)

  • Failed multiple-table DELETE statements could raise an assertion. (Bug #46958)

  • When creating a new instance on Windows using mysqld-nt and the --install parameter, the value of the service would be set incorrectly, resulting in a failure to start the configured service. (Bug #46917)

  • CONCAT_WS() could return incorrect results due to an argument buffer also being used as a result buffer. (Bug #46815)

  • The server crashed when re-using outer column references in correlated subqueries when the enclosing query used a temp table. (Bug #46791)

  • For InnoDB tables, an unnecessary table rebuild for ALTER TABLE could sometimes occur for metadata-only changes. (Bug #46760)

  • Assertion failure could result from repeated execution of a stored procedure containing an incorrect query with a subselect. (Bug #46629)

  • The server ignored the setting of sync_frm for CREATE TABLE ... LIKE. (Bug #46591)

  • An attempt to create a table with the same name as an existing view could cause a server crash. (Bug #46384)

  • A parser problem prevented properly stripping backquotes from an argument to a user-defined function (UDF). If the UDF was in an ORDER BY clause, its name would not be properly resolved against an alias with the same name in the select list. (Bug #46259)

  • Dropping an InnoDB table that used an unknown collation (created on a different server, for example) caused a server crash. (Bug #46256)

  • Certain SELECT statements containing DISTINCT, GROUP BY, and HAVING clauses could hang in an infinite loop. (Bug #46159)

  • InnoDB did not disallow creation of an index with the name GEN_CLUST_INDEX, which is used internally. (Bug #46000)

  • CREATE TEMPORARY TABLE failed for InnoDB tables on systems with case-insensitive file systems when lower_case_table_names = 2 and the pathname of the temporary file directory contained uppercase characters. (Bug #45638)

  • Appending values to an ENUM or SET definition is a metadata change for which ALTER TABLE need not rebuild the table, but it was being rebuilt anyway. (Bug #45567)

  • The socket system variable was unavailable on Windows. (Bug #45498)

  • When re-installing MySQL on Windows on a server that has a data directory from a previous MySQL installation, the installer failed to identify the existence of the installation and the password configured for the root user. (Bug #45200)

  • Client flags were incorrectly initialized for the embedded server, causing several tests in the jp test suite to fail. (Bug #45159)

  • InnoDB did not always disallow creating tables containing columns with names that match the names of internal columns, such as DB_ROW_ID, DB_TRX_ID, DB_ROLL_PTR, and DB_MIX_ID. (Bug #44369)

  • SELECT ... WHERE ... IN (NULL, ...) was executed using a full table scan, even if the same query without the NULL used an efficient range scan. (Bug #44139)

    References: See also Bug #18360.

  • InnoDB use of SELECT MAX(autoinc_column) could cause a crash when MySQL data dictionaries went out of sync. (Bug #44030)

  • LOAD DATA INFILE statements were written to the binary log in such a way that parsing problems could occur when re-executing the statement from the log. (Bug #43746)

  • Selecting from the process list in the embedded server caused a crash. (Bug #43733)

    References: See also Bug #47304.

  • Attempts to enable large_pages with a shared memory segment larger than 4GB caused a server crash. (Bug #43606)

  • A test for stack growth failed on some platforms, leading to server crashes. (Bug #42213)

    References: See also Bug #62856.

  • The server used the wrong lock type (always TL_READ instead of TL_READ_NO_INSERT when appropriate) for tables used in subqueries of UPDATE statements. This led in some cases to replication failure because statements were written in the wrong order to the binary log. (Bug #42108)

  • The test script was missing from the noinstall packages on Windows. (Bug #41546)

  • Privileges for SHOW CREATE VIEW were not being checked correctly. (Bug #35996)

  • Different invocations of CHECKSUM TABLE could return different results for a table containing columns with spatial data types. (Bug #35570)

  • Concurrent execution of FLUSH TABLES along with SHOW FUNCTION STATUS or SHOW PROCEDURE STATUS could cause a server crash. (Bug #34895)

  • myisamchk performed parameter value casting at startup that generated unnecessary warning messages. (Bug #33785)

  • When using the ARCHIVE storage engine, SHOW TABLE STATUS displayed incorrect information for Max_data_length, Data_length and Avg_row_length. (Bug #29203)

  • When building MySQL on Windows from source, the WITH_BERKELEY_STORAGE_ENGINE option would fail to configure BDB support correctly. (Bug #27693)