MySQL Lists are EOL. Please join:

List:General Discussion« Previous MessageNext Message »
From:Hery Ramilison Date:May 21 2010 6:28pm
Subject:MySQL Community Server 5.1.47 has been released
View as plain text  
Dear MySQL users,

MySQL Community Server 5.1.47, a new version of the popular Open
Source Database Management System, has been released.  MySQL 5.1.47 is
recommended for use on production systems.

For an overview of what's new in MySQL 5.1, please see

For information on installing MySQL 5.1.47 on new servers or upgrading
to MySQL 5.1.47 from previous MySQL releases, please see

MySQL Server is available in source and binary form for a number of
platforms from our download pages at

Not all mirror sites may be up to date at this point in time, so if
you can't find this version on some mirror, please try again later or
choose another download site.

We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc.:

For information on open issues in MySQL 5.1, please see the errata
list at

The following section lists the changes in the MySQL source code since
the previous released version of MySQL 5.1.  It may also be viewed
online at


C.1.1. Changes in MySQL 5.1.47 (06 May 2010)

    InnoDB Plugin Notes:

      * InnoDB Plugin has been upgraded to version 1.0.8. This version
        is considered of General Availability (GA) quality. InnoDB
        Plugin Change History
        html), may contain information in addition to those changes
        reported here.
        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 generic ia64.

    Functionality added or changed:

      * InnoDB stores redo log records in a hash table during
        recovery. On 64-bit systems, this hash table was 1/8 of the
        buffer pool size. To reduce memory usage, the dimension of the
        hash table was reduced to 1/64 of the buffer pool size (or
        1/128 on 32-bit systems).

    Bugs fixed:

      * Security Fix: The server failed to check the table name
        argument of a COM_FIELD_LIST command packet for validity and
        compliance to acceptable table name standards. This could be
        exploited to bypass almost all forms of checks for privileges
        and table-level grants by providing a specially crafted table
        name argument to COM_FIELD_LIST.
        In MySQL 5.0 and above, this allowed an authenticated user
        with SELECT privileges on one table to obtain the field
        definitions of any table in all other databases and
        potentially of other MySQL instances accessible from the
        server's file system.
        Additionally, for MySQL version 5.1 and above, an
        authenticated user with DELETE or SELECT privileges on one
        table could delete or read content from any other table in all
        databases on this server, and potentially of other MySQL
        instances accessible from the server's file system.

      * Security Fix: The server was susceptible to a buffer-overflow
        attack due to a failure to perform bounds checking on the
        table name argument of a COM_FIELD_LIST command packet. By
        sending long data for the table name, a buffer is overflown,
        which could be exploited by an authenticated user to inject
        malicious code.

      * Security Fix: The server could be tricked into reading packets
        indefinitely if it received a packet larger than the maximum
        size of one packet.

      * Important Change: Replication: When invoked, CHANGE MASTER TO
        and SET GLOBAL sql_slave_skip_counter now cause information to
        be written to the error log about the slave's state prior to
        execution of the statement. For CHANGE MASTER TO, this
        information includes the previous values for MASTER_HOST,
        GLOBAL SQL_SLAVE_SKIP_COUNTER, this information includes the
        previous values of sql_slave_skip_counter, the group relay log
        name, and the group relay log position.

      * Replication: The failure of a REVOKE statement was logged with
        the wrong error code, causing replication slaves to stop even
        when the failure was expected on the master.

      * Certain path names passed to LOAD_FILE() could cause a server
        crash. (Bug#53417:

      * When reporting a foreign key constraint violation during
        INSERT, InnoDB could display uninitialized data for the
        DB_TRX_ID and DB_ROLL_PTR system columns.

      * InnoDB page splitting could enter an infinite loop for
        compressed tables.

      * An overly strict assertion could fail during the purge of
        delete-marked records in DYNAMIC or COMPRESSED InnoDB tables
        that contain column prefix indexes.

      * InnoDB attempted to choose off-page storage without ensuring
        that there was an "off-page storage" flag in the record
        header. To correct this, in DYNAMIC and COMPRESSED formats,
        InnoDB stores locally any non-BLOB columns having a maximum
        length not exceeding 256 bytes. This is because there is no
        room for the "external storage" flag when the maximum length
        is 255 bytes or less. This restriction trivially holds in
        REDUNDANT and COMPACT formats, because there InnoDB always
        stores locally columns having a length up to local_len = 788
        bytes. (Bug#52745:

      * Semi-consistent read was implemented for InnoDB to address
        Semi-consistent reads do not block when a nonmatching record
        is already locked by some other transaction. If the record is
        not locked, a lock is acquired, but is released if the record
        does not match the WHERE condition. However, semi-consistent
        read was attempted even for UPDATE statements having a WHERE
        condition of the form pk_col1=constant1, ...,
        pk_colN=constantN. Some code that was designed with the
        assumption that semi-consistent read would be only attempted
        on table scans, failed.

      * Setting @@GLOBAL.debug to an empty string failed to clear the
        current debug settings.

      * A memory leak occurred due to missing deallocation of the
        comparators array (a member of the Arg_comparator class).

      * For debug builds, creating a view containing a subquery that
        might require collation adjustment caused an assertion to be
        raised. For example, this could occur if some items had
        different collations but the result collation could be
        adjusted to the one of them.

      * Connections waiting for an InnoDB row lock ignored KILL until
        the row lock wait ended. Now, KILL during lock wait results in
        "query interrupted" instead of "lock wait timeout exceeded".

      * Locking involving the LOCK_plugin,
        LOCK_global_system_variables, and LOCK_status mutexes could
        deadlock. (Bug#51591:

      * InnoDB fast index creation could incorrectly use a table copy
        in some cases.

      * A syntactically invalid trigger could cause the server to
        crash when trying to list triggers.

      * InnoDB Plugin checks to see whether a row could possibly
        exceed the maximum size if all columns are fully used. This
        produced Row size too large errors for some tables that could
        be created with the built-in InnoDB. Now the check is only
        done when innodb_strict_mode is enabled or if the table is
        dynamic or compressed.

      * In MySQL 5.1, READ COMMITTED was changed to use less locking
        due to the availability of row based binary logging (see the
        Note under READ COMMITTED at Section 12.3.6, "SET TRANSACTION
        Syntax"). However, READ UNCOMMITTED did not have the same
        change, so it was using more locks than the higher isolation
        level, which is unexpected. This was changed so that READ
        UNCOMMITTED now also uses the lesser amount of locking and has
        the same restrictions for binary logging.

      * EXPLAIN could cause a server crash for some queries with

      * On Windows, the server failed to find a description for Event
        ID 100. (Bug#48042:

      * For updates to InnoDB tables, TIMESTAMP columns could be
        updated even when no values actually changed.

      * If the server is started with --skip-grant-tables, plugin
        loading and unloading should be disallowed, but the server
        failed to reject INSTALL PLUGIN and UNINSTALL PLUGIN

      * Storage engine plugins on Windows could've been built with a
        definition of time_t which was different from the server
        expectations. The difference could cause affected plugins to
        crash. In addition, the use of the time_t type in the storage
        engine API layer has been enforced.

      * When using UNINSTALL PLUGIN to remove a loaded plugin, open
        tables and connections caused mysqld to hang until the open
        connections had been closed.

      * 1) In rare cases, if a thread was interrupted during a FLUSH
        PRIVILEGES operation, a debug assertion occurred later due to
        improper diagnostic area setup. 2) A KILL operation could
        cause a console error message referring to a diagnostic area
        state without first ensuring that the state existed.


Hery Ramilison, Karen Langford, MySQL Release Engineers
Database Group, Oracle.

MySQL Community Server 5.1.47 has been releasedHery Ramilison21 May