MySQL Lists are EOL. Please join:

List:Announcements« Previous MessageNext Message »
From:Joerg Bruehe Date:January 14 2010 10:38pm
Subject:MySQL 5.5.1-m2 has been released
View as plain text  
Dear MySQL users,

MySQL Server 5.5.1-m2, a new version of the popular Open Source
Database Management System, has been released.

The "-m2" suffix tells this belongs to the second milestone according
to our "milestone" release model, also called "Betony".
You can read more about the release model and the planned milestones at

The new features in this release are of beta quality. As with any
other pre-production release, caution should be taken when installing on
production level systems or systems with critical data.
For production level systems using 5.1, we would like to direct your
attention to the product description of MySQL Enterprise at:

MySQL 5.5 is based on MySQL 5.4, which won't get any further updates.
So MySQL 5.5 includes several high-impact changes to address scalability
and performance issues in MySQL Server. These changes exploit advances
in hardware and CPU design and enable better utilization of existing

For an overview of what's new in MySQL 5.5, please see the
section "What Is New in MySQL 5.5" below, or view it online at

For information on installing MySQL 5.5.1-m2 on new servers,
please see the MySQL installation documentation at

For upgrading from previous MySQL releases, please see the
important upgrade considerations at

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.:

Following the "What Is New" section, this mail lists the changes
in the MySQL source code of MySQL 5.5.1-m2.
The list of all "Bugs Fixed" may also be viewed online at

When the publishing process for 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 ASAP,
and new binaries for the affected versions will be released.
Obviously, building and testing these binaries in the various
configurations on the various platforms will take some time.

The bug is tracked with a CVE ID already:
The related bug report is currently marked private, it will be made
public once the new binaries are out:

In the meantime, 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.


On behalf of the MySQL Build Team at Sun Microsystems:
Jörg Brühe,
Senior Production Engineer


What Is New in MySQL 5.5

The following features have been added to MySQL 5.5:

 * Support for an interface for semisynchronous replication:
   A commit performed on the master side blocks before returning
   to the session that performed the transaction until at least
   one slave acknowledges that it has received and logged the events
   for the transaction.
   Semisynchronous replication is implemented through an optional
   plugin component. See Section 16.2.8, "Semisynchronous Replication"

 * Support for the SQL standard SIGNAL and RESIGNAL statements.
   See Section 12.8.8, "SIGNAL and RESIGNAL".

 * Enhancements to XML functionality, including a new LOAD XML

 * Two new types of user-defined partitioning:
   RANGE COLUMNS partitioning is an extension to RANGE partitioning;
   LIST COLUMNS partitioning is an extension to LIST partitioning.
   Each of these extensions provides two enhancements to MySQL
   partitioning capabilities:

   1. It is possible to define partitioning ranges or lists based on
      DATE, DATETIME, or string values (such as CHAR or VARCHAR).

      You can also define ranges or lists based on multiple column
      values when partitioning tables by RANGE COLUMNS or LIST COLUMNS,
      respectively. Such a range or list may refer to up to 16 columns.

   2. For tables defined using these partitioning types, partition
      pruning can now optimize queries with WHERE conditions that use
      multiple comparisons between (different) column values and
      constants, such as
          a = 10 AND b > 5 or a < "2005-11-25" AND b = 10 AND c = 50.

      For more information, see Section 17.2.1, "RANGE Partitioning",
      and Section 17.2.2, "LIST Partitioning".

 * It is now possible to delete all rows from one or more partitions
   of a partitioned table using the ALTER TABLE ... TRUNCATE
   PARTITION statement. Executing the statement deletes rows without
   affecting the structure of the table. The partitions named in the
   TRUNCATE PARTITION clause do not have to be contiguous.

 * Key caches are now supported for indexes on partitioned MyISAM
   tables, using the CACHE INDEX and LOAD INDEX INTO CACHE statements.
   In addition, a key cache can be defined for and loaded with indexes
   from an entire partitioned table, or for one or more partitions.
   In the latter case, the partitions are not required to be contiguous.

 * The TO_SECONDS() function is added. This function converts a date or
   datetime expression to a number of seconds since the year 0. You may
   use this function in partitioning expressions, and partition pruning
   is supported for table defined using such expressions.

The following constructs are deprecated and will be removed in a future
MySQL release. Where alternatives are shown, applications should be
updated to use them.

 * The table_type system variable (use storage_engine).

   The TYPE table option to specify the storage engine for


 * The log_bin_trust_routine_creators variable
   (use log_bin_trust_function_creators).

 * TIMESTAMP(N): The ability to specify a display width of N
   (use without N).

   (use SHOW ENGINE INNODB STATUS for both of these).


 * The SHOW PLUGIN SQL statement (use SHOW PLUGINS).

 * The BACKUP TABLE and the RESTORE TABLE SQL statements.

 * The --master-xxx server options to set replication parameters
   (use the CHANGE MASTER TO statement instead):
   --master-host, --master-user, --master-password, --master-port,
   --master-connect-retry, --master-ssl, --master-ssl-ca,
   --master-ssl-capath, --master-ssl-cert, --master-ssl-cipher,


Changes in MySQL 5.5.1-m2:

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.

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
    ml) may contain information in addition to those changes
    reported here.

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:
            PARTITION p0 VALUES LESS THAN (631148400),
            PARTITION p1 VALUES LESS THAN (946681200),
    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().

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.
    See also Bug#21074:

  * Important Change: Replication: The following functions have
    been marked unsafe for statement-based replication:
       + GET_LOCK()
       + IS_FREE_LOCK()
       + IS_USED_LOCK()
       + MASTER_POS_WAIT()
       + RELEASE_LOCK()
       + SLEEP()
       + SYSDATE()
       + VERSION()

    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.

  * 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.

  * Partitioning: A query that searched on a ucs2 column failed if
    the table was partitioned.

  * Partitioning: In some cases, it was not possible to add a new
    column to a table that had subpartitions.

  * Partitioning: SELECT COUNT(*) from a partitioned table failed
    when using the ONLY_FULL_GROUP_BY SQL mode.
    This regression was introduced by

  * Partitioning: SUBPARTITION BY KEY failed with DEFAULT

  * 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.

  * 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.

  * For debug builds on Windows, SAFEMALLOC was defined
    inconsistently, leading to mismatches when using my_malloc()
    and my_free().

  * The mysql.server script had incorrect shutdown logic.

  * The result of comparison between nullable BIGINT and INT
    columns was inconsistent.

  * 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.

  * 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.

  * 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 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.

  * The LIKE operator did not work correctly when using an index
    for a ucs2 column.

  * check_key_in_view() was missing a DBUG_RETURN in one code
    branch, causing a crash in debug builds.

  * 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.
    See also Bug#41049:

  * Concurrent ALTER TABLE operations on an InnoDB table could
    raise an assertion.

  * During query execution, ranges could be merged incorrectly for
    OR operations and return an incorrect result.

  * The InnoDB Table Monitor reported the FLOAT and DOUBLE data
    types incorrectly.

  * With row-based binary logging, the server crashed for
    statements of the form CREATE TABLE IF NOT EXISTS
    existing_view LIKE temporary_table. This occurred because the
    server handled the existing view as a table when logging the
    statement. (Bug#48506:

  * The error message for ER_UPDATE_INFO was subject to buffer
    overflow or truncation.

  * DISTINCT was ignored for queries with GROUP BY WITH ROLLUP and
    only const tables.

  * Loose index scan was inappropriately chosen for some WHERE

  * If the InnoDB tablespace was configured with too small a
    value, the server could crash and corrupt the tablespace.

  * Parts of the range optimizer could be initialized incorrectly,
    resulting in Valgrind errors.

  * A bad typecast could cause query execution to allocate large
    amounts of memory.

  * On Windows, InnoDB could not be built as a statically linked
    library. (Bug#48317:

  * mysql_secure_installation did not work on Solaris.

  * When running mysql_secure_installation, the command would fail
    if the root password contained multiple spaces, \, # or quote

  * MATCH IN BOOLEAN MODE searches could return too many results
    inside a subquery.

  * User-defined collations with an ID less then 256 were not
    initialized correctly when loaded and caused a server crash.

  * 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.

  * The mysql client status command displayed an incorrect value
    for the server character set.

  * Connecting to a 4.1.x server from a 5.1.x or higher mysql
    client resulted in a memory-free error when disconnecting.

  * 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.

  * On Solaris, no stack trace was printed to the error log after
    a crash. (Bug#47391:

  * 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.

  * The IGNORE clause on a DELETE statement masked an SQL
    statement error that occurred during trigger processing.

  * Valgrind errors for InnoDB Plugin were corrected.

  * 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.

  * GROUP BY on a constant (single-row) InnoDB table joined to
    other tables caused a server crash.

  * For YEAR(2) values, MIN(), MAX(), and comparisons could yield
    incorrect results.

  * Comparison with NULL values sometimes did not produce a
    correct result.

  * In debug builds, killing a LOAD XML INFILE statement raised an
    assertion. (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.

  * 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.

  * 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

  * 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.

  * When running mysql_secure_installation on Windows, the command
    would fail to load a required module, Term::ReadKey, which was
    required for correct operation.

  * 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.

  * 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.

  * Using the SHOW ENGINE INNODB STATUS statement when using
    partitions in InnoDB tables caused Invalid (old?) table or
    database name errors to be logged.

  * Output from mysql --html did not encode the <, >, or &

  * 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.

Joerg Bruehe,  MySQL Build Team,  Joerg.Bruehe@stripped
Sun Microsystems GmbH,   Komturstraße 18a,   D-12099 Berlin
Geschaeftsfuehrer: Thomas Schroeder, Wolfgang Engels, Wolf Frenkel
Vorsitzender des Aufsichtsrates: Martin Haering     Muenchen: HRB161028

MySQL 5.5.1-m2 has been releasedJoerg Bruehe14 Jan