When the publishing process for MySQL 5.5.1-m2 was already running, the MySQL team was informed about a security problem in the SSL connect area (a possibility to crash the server). The problem is caused by a buffer overflow in the yaSSL library. MySQL Servers using OpenSSL are not affected; it can only occur when SSL (using yaSSL) is enabled.
This problem is still under detailed investigation with the various versions, configurations, and platforms. When that has finished, the problem will be fixed as soon as possible, and new binaries for the affected versions will be released. However, building and testing these binaries in the various configurations on the various platforms will take some time.
The bug is tracked with CVE ID CVE-2009-4484. We repeat the general security hint: If it is not absolutely necessary that external machines can connect to your database instance, we recommend that the server's connection port be blocked by a firewall to prevent any such illegitimate accesses.
InnoDB Plugin Notes:
        InnoDB Plugin has been upgraded to version
        1.0.6. This version is considered of Release Candidate (RC)
        quality. The
        InnoDB
        Plugin Change History may contain information
        in addition to those changes reported here.
      
RPM Notes:
The version information in RPM package files has been changed:
The “level” field of a MySQL version number is now also included in the RPM version and in the package file name.
The RPM “release” value now starts to count from 1, not 0.
        For example, the generic x86 server RPM file of 5.5.1-m2 is
        named
        MySQL-server-5.5.1_m2-1.glibc23.i386.rpm.
        This improves consistency with other formats that also include
        the level (for this version: “m2”) in the file
        name. For example, the tar.gz filename is
        mysql-5.5.1-m2-linux-i686-glibc23.tar.gz.
        The different separator, underscore '_' for
        RPM, is required by the syntax of RPM.
      
Functionality added or changed:
Partitioning: 
        The UNIX_TIMESTAMP() function is
        now supported in partitioning expressions using
        TIMESTAMP columns. For example,
        it now possible to create a partitioned table such as this one:
      
CREATE TABLE t (c TIMESTAMP) 
PARTITION BY RANGE ( UNIX_TIMESTAMP(c) ) (
    PARTITION p0 VALUES LESS THAN (631148400),
    PARTITION p1 VALUES LESS THAN (946681200),
    PARTITION p2 VALUES LESS THAN (MAXVALUE)
);
        All other expressions involving
        TIMESTAMP values are now rejected
        with an error when attempting to create a new partitioned table
        or to alter an existing partitioned table.
      
        When accessing an existing partitioned table having a
        timezone-dependent partitioning function (where the table was
        using a previous version of MySQL), a warning rather than an
        error is issued. In such cases, you should fix the table. One
        way of doing this is to alter the table's partitioning
        expression so that it uses
        UNIX_TIMESTAMP().
       (Bug#42849)
Bugs fixed:
Performance: 
        When the query cache is fragmented, the size of the free block
        lists in the memory bins grows, which causes query cache
        invalidation to become slow. There is now a 50ms timeout for a
        SELECT statement waiting for the
        query cache lock. If the timeout expires, the statement executes
        without using the query cache.
       (Bug#39253)
See also Bug#21074.
Incompatible Change: Replication: 
        The file names for the semisynchronous plugins were prefixed
        with lib, unlike file names for other
        plugins. The file names no longer have a
        lib prefix.
      
This change introduces an incompatibility if the plugins had been installed using the previous names. To handle this, uninstall the older version before installing the newer version. For example, use these statements for the master side plugins on Unix:
mysql>UNINSTALL PLUGIN rpl_semi_sync_master;mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
If you do not uninstall the older version first, attempting to install the newer version results in an error:
mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
ERROR 1125 (HY000): Function 'rpl_semi_sync_master' already exists
For the slave side, similar statements apply:
mysql>UNINSTALL PLUGIN rpl_semi_sync_slave;mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
Important Change: Replication: The following functions have been marked unsafe for statement-based replication:
        None of the functions just listed are guaranteed to replicate
        correctly when using the statement-based format, because they
        can produce different results on the master and the slave. The
        use of any of these functions while
        binlog_format is set to
        STATEMENT is logged with the warning,
        Statement is not safe to log in statement
        format. When
        binlog_format is set to
        MIXED, the binary logging format is
        automatically switched to the row-based format whenever one of
        these functions is used.
       (Bug#47995)
Partitioning: 
        When SHOW CREATE TABLE was
        invoked for a table that had been created using the
        COLUMNS keyword or the
        TO_SECONDS() function, the output
        contained the wrong MySQL version number in the conditional
        comments.
       (Bug#49591)
Partitioning: 
        A query that searched on a ucs2 column failed
        if the table was partitioned.
       (Bug#48737)
Partitioning: In some cases, it was not possible to add a new column to a table that had subpartitions. (Bug#48276)
Partitioning: 
        SELECT
        COUNT(*) from a partitioned table failed when using
        the ONLY_FULL_GROUP_BY SQL
        mode.
       (Bug#46923)
This regression was introduced by Bug#45807.
Partitioning: 
        SUBPARTITION BY KEY failed with
        DEFAULT CHARSET=utf8.
       (Bug#45904)
Replication: 
        When using row-based logging, TRUNCATE
        TABLE was written to the binary log even if the
        affected table was temporary, causing replication to fail.
       (Bug#48350)
Replication: A flaw in the implementation of the purging of binary logs could result in orphaned files being left behind in the following circumstances:
If the server failed or was killed while purging binary logs.
If the server failed or was killed after creating of a new binary log when the new log file was opened for the first time.
In addition, if the slave was not connected during the purge operation, it was possible for a log file that was in use to be removed; this could lead data loss and possible inconsistencies between the master and slave. (Bug#45292)
Replication: 
        When using the STATEMENT or
        MIXED logging format, the statements
        LOAD DATA CONCURRENT
        LOCAL INFILE and
        LOAD DATA CONCURRENT
        INFILE were logged as
        LOAD DATA LOCAL
        INFILE and
        LOAD DATA LOCAL
        INFILE, respectively (in other words, the
        CONCURRENT keyword was omitted). As a result,
        when using replication with either of these logging modes,
        queries on the slaves were blocked by the replication SQL thread
        while trying to execute the affected statements.
       (Bug#34628)
Cluster Replication: 
        When expire_logs_days was set,
        the thread performing the purge of the log files could deadlock,
        causing all binary log operations to stop.
       (Bug#49536)
        For debug builds on Windows, SAFEMALLOC was
        defined inconsistently, leading to mismatches when using
        my_malloc() and my_free().
       (Bug#49811)
The mysql.server script had incorrect shutdown logic. (Bug#49772)
        The push_warning_printf() function was being
        called with an invalid error level
        MYSQL_ERROR::WARN_LEVEL_ERROR, causing an
        assertion failure. To fix the problem,
        MYSQL_ERROR::WARN_LEVEL_ERROR has been
        replaced by MYSQL_ERROR::WARN_LEVEL_WARN.
       (Bug#49638)
        The result of comparison between nullable
        BIGINT and
        INT columns was inconsistent.
       (Bug#49517)
        A Valgrind error in
        make_cond_for_table_from_pred() was
        corrected. Thanks to Sergey Petrunya for the patch to fix this
        bug.
       (Bug#49506)
        When compiling on Windows, an error in the CMake definitions for
        InnoDB would cause the engine to be built
        incorrectly.
       (Bug#49502)
Incorrect cache initialization prevented storage of converted constant values and could produce incorrect comparison results. (Bug#49489)
        Comparisons involving YEAR values
        could produce incorrect results.
       (Bug#49480)
See also Bug#43668.
        Valgrind warnings for CHECKSUM
        TABLE were corrected.
       (Bug#49465)
        Specifying an index algorithm (such as BTREE)
        for SPATIAL or FULLTEXT
        indexes caused a server crash. These index types do not support
        algorithm specification, and it is now disallowed to do so.
       (Bug#49250)
        The optimizer sometimes incorrectly handled conditions of the
        form WHERE
        .
       (Bug#49199)col_name='const1'
        AND
        col_name='const2'
        Execution of DECODE() and
        ENCODE() could be inefficient
        because multiple executions within a single statement
        reinitialized the random generator multiple times even with
        constant parameters.
       (Bug#49141)
        With binary logging enabled,
        REVOKE ... ON
        {PROCEDURE|FUNCTION} FROM ... could cause a crash.
       (Bug#49119)
        The LIKE operator did not work
        correctly when using an index for a ucs2
        column.
       (Bug#49028)
        check_key_in_view() was missing a
        DBUG_RETURN in one code branch, causing a
        crash in debug builds.
       (Bug#48995)
        If a query involving a table was terminated with
        KILL, a subsequent
        SHOW CREATE TABLE for that table
        caused a server crash.
       (Bug#48985)
Privileges for stored routines were ignored for mixed-case routine names. (Bug#48872)
See also Bug#41049.
Building MySQL on Fedora Core 12 64-bit failed, due to errors in comp_err. (Bug#48864)
        Concurrent ALTER TABLE operations
        on an InnoDB table could raise an
        assertion.
       (Bug#48782)
        Incomplete reset of internal TABLE structures
        could cause a crash with
        eq_ref table access in
        subqueries.
       (Bug#48709)
        During query execution, ranges could be merged incorrectly for
        OR operations and return an
        incorrect result.
       (Bug#48665)
        The InnoDB Table Monitor reported
        the FLOAT and
        DOUBLE data types incorrectly.
       (Bug#48526)
Re-execution of a prepared statement could cause a server crash. (Bug#48508)
        With row-based binary logging, the server crashed for statements
        of the form CREATE TABLE IF NOT EXISTS
        . This
        occurred because the server handled the existing view as a table
        when logging the statement.
       (Bug#48506)existing_view LIKE
        temporary_table
        The error message for
        ER_UPDATE_INFO was subject to
        buffer overflow or truncation.
       (Bug#48500)
        DISTINCT was ignored for queries with
        GROUP BY WITH ROLLUP and only
        const tables.
       (Bug#48475)
        Loose index scan was inappropriately chosen for some
        WHERE conditions.
       (Bug#48472)
        The server could crash and corrupt the tablespace if the
        InnoDB tablespace was configured
        with too small a value, or if many
        CREATE TEMPORARY
        TABLE statements were executed and the temporary file
        directory filled up with
        innodb_file_per_table enabled.
       (Bug#48469)
Parts of the range optimizer could be initialized incorrectly, resulting in Valgrind errors. (Bug#48459)
A bad typecast could cause query execution to allocate large amounts of memory. (Bug#48458)
        SHOW BINLOG EVENTS could fail
        with a error: Wrong offset or I/O error.
       (Bug#48357)
        Valgrind warnings related to binary logging of
        LOAD DATA
        INFILE statements were corrected.
       (Bug#48340)
        On Windows, InnoDB could not be
        built as a statically linked library.
       (Bug#48317)
mysql_secure_installation did not work on Solaris. (Bug#48086)
When running mysql_secure_installation, the command would fail if the root password contained multiple spaces, \, # or quote characters. (Bug#48031)
        MATCH IN BOOLEAN MODE searches could return
        too many results inside a subquery.
       (Bug#47930)
User-defined collations with an ID less then 256 were not initialized correctly when loaded and caused a server crash. (Bug#47756)
        If a session held a global read lock acquired with
        FLUSH TABLES WITH READ
        LOCK, a lock for one table acquired with
        LOCK TABLES, and issued an
        INSERT DELAYED statement for
        another table, deadlock could occur.
       (Bug#47682)
        The mysql client status
        command displayed an incorrect value for the server character
        set.
       (Bug#47671)
Connecting to a 4.1.x server from a 5.1.x or higher mysql client resulted in a memory-free error when disconnecting. (Bug#47655)
        Queries containing GROUP BY ... WITH ROLLUP
        that did not use indexes could return incorrect results.
       (Bug#47650)
Assignment of a system variable sharing the same base name as a declared stored program variable in the same context could lead to a crash. (Bug#47627)
On Solaris, no stack trace was printed to the error log after a crash. (Bug#47391)
        The first execution of
        STOP SLAVE
        UNTIL stopped too early.
       (Bug#47210)
        The innodb_file_format_check
        system variable could not be set at runtime to
        DEFAULT or to the value of a user-defined
        variable.
       (Bug#47167)
        After a binary upgrade to MySQL 5.1 from a MySQL 5.0
        installation that contains ARCHIVE tables,
        accessing those tables caused the server to crash, even if you
        had run mysql_upgrade or CHECK TABLE
        ... FOR UPGRADE.
      
        To work around this problem, use mysqldump to
        dump all ARCHIVE tables before upgrading, and
        reload them into MySQL 5.1 after upgrading. The same problem
        occurs for binary downgrades from MySQL 5.1 to 5.0.
       (Bug#47012)
        The IGNORE clause on a
        DELETE statement masked an SQL
        statement error that occurred during trigger processing.
       (Bug#46425)
        Valgrind errors for InnoDB Plugin were
        corrected.
       (Bug#45992, Bug#46656)
        The return value was not checked for some
        my_hash_insert() calls.
       (Bug#45613)
        It was possible for init_available_charsets()
        not to initialize correctly.
       (Bug#45058)
        GROUP BY on a constant
        (single-row) InnoDB table joined to other
        tables caused a server crash.
       (Bug#44886)
        For a
        VARCHAR(
        column, N)ORDER BY
        BINARY( sorted
        using only the first col_name)N bytes of the
        column, even though column values could be longer than
        N bytes if they contained multibyte
        characters.
       (Bug#44131)
        For YEAR(2) values,
        MIN(),
        MAX(), and comparisons could
        yield incorrect results.
       (Bug#43668)
        Comparison with NULL values sometimes did not
        produce a correct result.
       (Bug#42760)
        In debug builds, killing a
        LOAD XML
        INFILE statement raised an assertion.
      
        Implemented in the course of fixing this bug,
        mysqltest has a new
        send_eval command that combines the
        functionality of the existing send and
        eval commands.
       (Bug#42520)
        The server could crash when attempting to access a
        non-conformant mysql.proc system table. For
        example, the server could crash when invoking stored
        procedure-related statements after an upgrade from MySQL 5.0 to
        5.1 without running mysql_upgrade.
       (Bug#41726)
        The mysql_upgrade command would create three
        additional fields to the mysql.proc table
        (character_set_client,
        collation_connection, and
        db_collation), but did not populate the
        fields with correct values. This would lead to error messages
        reported during stored procedure execution.
       (Bug#41569)
        Use of InnoDB monitoring
        (SHOW ENGINE INNODB
        STATUS or one of the
        InnoDB Monitor tables) could cause
        a server crash due to invalid access to a shared variable in a
        concurrent environment.
       (Bug#38883)
        When compressed MyISAM files were
        opened, they were always memory mapped, sometimes causing
        memory-swapping problems. To deal with this, a new system
        variable, myisam_mmap_size, was added to
        limit the amount of memory used for memory mapping of
        MyISAM files.
       (Bug#37408)
        When running mysql_secure_installation on
        Windows, the command would fail to load a required module,
        Term::ReadKey, which was required for correct
        operation.
       (Bug#35106)
        If the --log-bin server option
        was set to a directory name with a trailing component separator
        character, the basename of the binary log files was empty so
        that the created files were named .000001
        and .index. The same thing occurred with
        the --log-bin-index,
        --relay-log, and
        --relay-log-index options. Now
        the server reports and error and exits.
       (Bug#34739)
If a comparison involved a constant value that required type conversion, the converted value might not be cached, resulting in repeated conversion and poorer performance. (Bug#34384)
        Using the SHOW
        ENGINE INNODB STATUS statement when using partitions
        in InnoDB tables caused Invalid
        (old?) table or database name errors to be logged.
       (Bug#32430)
        Output from mysql --html did not encode the
        <, >, or
        & characters.
       (Bug#27884)
Under heavy load with a large query cache, invalidating part of the cache could cause the server to freeze (that is, to be unable to service other operations until the invalidation was complete). (Bug#21074)
See also Bug#39253.
        On some Windows systems, InnoDB could report
        Operating system error number 995 in a file
        operation due to transient driver or hardware
        problems. InnoDB now retries the operation
        and adds Retry attempt is made to the error
        message.
       (Bug#3139)

User Comments
Add your own comment.