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

MySQL 5.1 Release Notes  /  Changes in MySQL 5.1.38 (2009-09-01)

Changes in MySQL 5.1.38 (2009-09-01)

InnoDB Plugin Notes

  • As of MySQL 5.1.38, the InnoDB Plugin is included in MySQL 5.1 releases, in addition to the built-in version of InnoDB that has been included in previous releases. The version of the InnoDB Plugin in this release is 1.0.4 and is considered of Beta quality.

    The InnoDB Plugin offers new features, improved performance and scalability, enhanced reliability and new capabilities for flexibility and ease of use. Among the features of the InnoDB Plugin are Fast index creation, table and index compression, file format management, new INFORMATION_SCHEMA tables, capacity tuning, multiple background I/O threads, and group commit.

    The InnoDB Plugin is included in source and binary distributions, except RHEL3, RHEL4, SuSE 9 (x86, x86_64, ia64), and generic Linux RPM packages.

    For instructions on replacing the built-in version of InnoDB with InnoDB Plugin, see Using InnoDB Plugin Instead of the Built-In InnoDB.

Functionality Added or Changed

  • Replication: With statement-based logging (SBL), repeatedly calling statements that are unsafe for SBL caused a warning message to be written to the error log for each statement, and there was no way to disable this behavior. Now the server logs messages about statements that are unsafe for statement-based logging only if the log_warnings variable is greater than 0. (Bug #46265)

  • The undocumented TRANSACTIONAL and PAGE_CHECKSUM keywords were removed from the grammar. (Bug #45829)

  • Previously, mysqldump would not dump the INFORMATION_SCHEMA database and ignored it if it was named on the command line. Now, mysqldump will dump INFORMATION_SCHEMA if it is named on the command line. Currently, this requires that the --skip-lock-tables (or --skip-opt) option be given. (Bug #33762)

  • Previously, SELECT ... INTO OUTFILE dumped column values without character set conversion, which could produce data files that cannot be imported without error if different columns used different character sets. A consequence of this is that mysqldump ignored the --default-character-set option if the --tab option was given (which causes SELECT ... INTO OUTFILE to be used to dump data.)

    INTO OUTFILE now can be followed by a CHARACTER SET clause indicating the character set to which dumped values should be converted. Also, mysqldump adds a CHARACTER SET clause to the SELECT ... INTO OUTFILE statement used to dump data, so that --default-character-set is no longer ignored if --tab is given.

    Other changes are that SELECT ... INTO OUTFILE enforces that ENCLOSED BY and ESCAPED BY arguments must be a single character, and SELECT ... INTO OUTFILE and LOAD DATA INFILE produce warnings if non-ASCII field or line separators are specified. (Bug #30946)

  • The MySQL euckr character set now can store extended codes [81...FE][41..5A,61..7A,81..FE], which makes euckr compatible with the Microsoft cp949 character set.

  • Pluggable storage engines now can be built for Windows.

Bugs Fixed

  • Performance: The table cache lock (LOCK_open) is now an adaptive mutex, which should improve performance in workloads where this lock is heavily contended. (Bug #43435)

  • Partitioning: Attempting to create a table using an invalid or inconsistent subpartition definition caused the server to crash. An example of such a statement is shown here:

    CREATE TABLE t2 (s1 INT, s2 INT)
        PARTITION p1 VALUES IN (1),

    (Bug #46354)

  • Partitioning: When using a debug build of MySQL, if a query against a partitioned table having an index on one or more DOUBLE columns used that index, the server failed with an assertion. (Bug #45816)

  • Partitioning: A failed RENAME TABLE operation on a table with user-defined partitioning left the table in an unusable state, due to only some of the table files having been renamed. (Bug #30102)

  • Replication: When a statement that changes a nontransactional table failed, the transactional cache was flushed, causing a mismatch between the execution and logging histories. Now we avoid flushing the transactional cache unless a COMMIT or ROLLBACK is issued. (Bug #46129)

    References: This bug is a regression of Bug #43929, Bug #11752675.

  • Replication: The internal function get_master_version_and_clock() (defined in sql/ ignored errors and passed directly when queries failed, or when queries succeeded but the result retrieved was empty. Now this function tries to reconnect the master if a query fails due to transient network problems, and to fail otherwise. The I/O thread now prints a warning if the same system variables do not exist on master (in the event the master is a very old version of MySQL, compared to the slave.) (Bug #45214)

  • Replication: When using the MIXED logging format, after creating a temporary table and performing an update that switched the logging format to ROW, the format switch persisted following the update. This prevented any subsequent DDL statements on temporary tables from being written to the binary log until the temporary table was dropped. (Bug #43046)

    References: See also Bug #40013. This bug was introduced by Bug #20499.

  • Replication: If the --log-bin-trust-function-creators option is not enabled, CREATE FUNCTION requires one of the modifiers DETERMINISTIC, NO SQL, or READS SQL DATA. When using statement-based mode, the execution of a stored function should follow the same rules; however, only functions defined with DETERMINISTIC could actually be executed. In addition, the wrong error was generated (ER_BINLOG_ROW_RBR_TO_SBR instead of ER_BINLOG_UNSAFE_ROUTINE).

    Now execution of stored functions is compatible with creation in this regard; when a stored function without one of the modifiers above is executed in STATEMENT mode, the correct error is raised, and functions defined using NO SQL, READS SQL DATA, or both (that is, without using DETERMINISTIC) can be executed. (Bug #41166)

  • The test suite was missing from RPM packages. (Bug #46834)

  • Incorrect index optimization could lead to incorrect results or server crashes. (Bug #46454)

  • The server printed warnings at startup about adjusting the value of the max_join_size system variable. (These were harmless, but might be seen by users as significant.) (Bug #46385)

  • mysql did not handle backspace properly for multibyte characters. This has been fixed now if mysql is linked with the readline library. It is not fixed if mysql is linked with libedit, which does not contain the necessary support for multibyte character sets. (Bug #46310)

  • After an error such as a table-full condition, INSERT IGNORE could cause an assertion failure for debug builds. (Bug #46075)

  • An optimization that moved an item from a subquery to an outer query could cause a server crash. (Bug #46051)

  • Several Valgrind warnings were corrected. (Bug #46003, Bug #46034, Bug #46042)

  • CREATE TABLE ... SELECT could cause a server crash if no default database was selected. (Bug #45998)

  • The MySQL Server crashed when performing a REPLACE into a MERGE table if there was a duplicate. (Bug #45800)

  • An infinite hang and 100% CPU usage occurred after a handler tried to open a merge table.

    If the command mysqladmin shutdown was executed during the hang, the debug server generated the following assert:

    mysqld: void free_table_share(TABLE_SHARE*): Assertion `share->ref_count ==
    0' failed.
    090610 14:54:04 - mysqld got signal 6 ;

    (Bug #45781)

  • For problems reading SSL files during SSL initialization, the server wrote error messages to stderr rather than to the error log. (Bug #45770)

  • The vendor name change from MySQL AB to Sun Microsystems, Inc. in RPM packages was not handled gracefully when upgrading MySQL using an RPM package. (Bug #45534)

  • A Windows Installation using the GUI installer failed with:

    MySQL Server 5.1 Setup Wizard ended prematurely
    The wizard was interrupted before MySQL Server 5.1. could be completely installed.
    Your system has not been modified. To complete installation at another time, please run
    setup again.
    Click Finish to exit the wizard

    This was due to a step in the MSI installer that could fail to execute correctly on some environments. (Bug #45418)

  • Invalid memory reads could occur using the compressed client/server protocol. (Bug #45031)

  • The mysql_real_connect() C API function only attempted to connect to the first IP address returned for a hostname. This could be a problem if a hostname mapped to multiple IP address and the server was not bound to the first one returned. Now mysql_real_connect() attempts to connect to all IPv4 or IPv6 addresses that a domain name maps to. (Bug #45017)

    References: See also Bug #47757.

  • Invalid input could cause invalid memory reads by the parser. (Bug #45010)

  • Some files in an AIX tar file distribution unpacked with incorrect permissions. (Bug #44647)

  • For debug builds, executing a stored procedure as a prepared statement could sometimes cause an assertion failure. (Bug #44521)

  • Using mysql_stmt_execute() to call a stored procedure could cause a server crash. (Bug #44495)

  • Creating a new instance after previously removing an instance failed to complete the installation properly because the security settings could not be applied correctly. (Bug #44428)

  • mysqlslap ignored the --csv option if it was given without an argument. (Bug #44412)

  • Enabling the event scheduler from within the file specified by --init-file caused a server crash. (Bug #43587)

  • The server did not always check the return value of calls to the hash_init() function. (Bug #43572)

  • mysqladmin --count=X --sleep=Y incorrectly delayed Y seconds after the last iteration before exiting. (Bug #42639)

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

    References: See also Bug #62856.

  • mysqladmin did not have enough space allocated for tracking all variables when using --vertical or --relative with extended-status. (Bug #40395)

  • Partitioning a log table caused a server crash. (Bug #40281)

  • When using quick access methods to search for rows in UPDATE and DELETE statements, there was no check whether a fatal error had already been sent to the client while evaluating the quick condition. Consequently, a false OK (following the error) was sent to the client, causing the error to be incorrectly transformed into a warning. (Bug #40113)

  • SHOW PROCESSLIST could access freed memory of a stored procedure run in a concurrent session. (Bug #38816)

  • During installation on Windows, the MySQL Instance Configuration Wizard window could be opened at a size too small to be usable. (Bug #38723)

  • make_binary_distribution did not always generate correct distribution names. (Bug #37808)

  • The server crashed when executing a prepared statement containing a duplicated MATCH() function call in the select list and ORDER BY clause; for example, SELECT MATCH(a) AGAINST('test') FROM t1 ORDER BY MATCH(a) AGAINST('test'). (Bug #37740)

  • The output of mysqldump --tab for views included a DROP TABLE statement without the IF EXISTS qualifier. (Bug #37377)

  • mysql_upgrade silently ignored the --basedir and --datadir options, which it accepts for backward compatibility. Now it prints a warning. (Bug #36558)

  • mysqlimport was not always compiled correctly to enable thread support, which is required for the --use-threads option. (Bug #32991)

  • mysqlcheck failed to fix table names when the --fix-table-names and --all-in-1 options were both specified. (Bug #31821)

  • If the MySQL server was killed without the PID file being removed, attempts to stop the server with mysql.server stop waited 900 seconds before giving up. (Bug #31785)

  • When performing an installation on Windows using the GUI installer, the installer failed to wait long enough during installation for the MySQL service to be installed, which would cause the installation to fail and may cause security settings, such as the root password to not be applied correctly. (Bug #30525)

  • mysql included extra spaces at the end of some result set lines. (Bug #29622)

  • The mysql client inconsistently handled NUL bytes in column data in various output formats. (Bug #28203)

  • mysqlimport did not correctly quote and escape table identifiers and file names. (Bug #28071)

  • When installing the Windows service, using quotation marks around command-line configuration parameters could cause the quotation marks to be incorrectly placed around the entire command-line option, and not just the value. (Bug #27535)

  • If the mysql client was built with the readline library and the .inputrc file mapped Space to the magic-space function, it became impossible to enter spaces. (Bug #27439)

  • If InnoDB reached its limit on the number of concurrent transactions (1023), it wrote a descriptive message to the error log but returned a misleading error message to the client, or an assertion failure occurred. (Bug #18828)

    References: See also Bug #46672.

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