This was an internal release only, and no binaries were published.
      MySQL 5.1.10 includes the patches for recently reported security
      vulnerabilites in the MySQL client-server protocol. We would like
      to thank Stefano Di Paola <stefano.dipaola@wisec.it>
      for finding and reporting these to us.
    
This section documents all changes and bug fixes that have been applied since the last official MySQL release. If you would like to receive more fine-grained and personalized update alerts about fixes that are relevant to the version and features you use, please consider subscribing to MySQL Enterprise (a commercial MySQL offering). For more details, please see http://www.mysql.com/products/enterprise.
Functionality added or changed:
Security Enhancement: 
        Added the global
        max_prepared_stmt_count system
        variable to limit the total number of prepared statements in the
        server. This limits the potential for denial-of-service attacks
        based on running the server out of memory by preparing huge
        numbers of statements. The current number of prepared statements
        is available through the
        prepared_stmt_count system
        variable.
       (Bug#16365)
MySQL Cluster: It is now possible to restore a MySQL Cluster backup between big-endian and little-endian machines. (Bug#19255)
MySQL Cluster: 
        It is now possible to perform a partial start of a cluster. That
        is, it is now possible to bring up the cluster without first
        running ndbd --initial on
        all configured data nodes.
       (Bug#18606)
MySQL Cluster: 
        It is now possible to install MySQL with Cluster support to a
        nondefault location and change the search path for font
        description files using either the
        --basedir or
        --character-sets-dir options.
        (Previously in MySQL 5.1, ndbd searched only
        the default path for character sets.)
      
Packaging: 
        The
        MySQL-shared-compat-5.1.
        shared compatibility RPMs no longer contain libraries for MySQL
        5.0. This avoids a conflict because the 5.0 and 5.1 libraries
        share the same X-.i386.rpmsoname number. They now
        contain libraries for MySQL 3.23, 4.0, 4.1, and 5.1.
       (Bug#19288)
        SQL syntax for prepared statements now supports
        ANALYZE TABLE,
        OPTIMIZE TABLE, and
        REPAIR TABLE.
       (Bug#19308)
        The ONLY_FULL_GROUP_BY SQL
        mode now also applies to the HAVING clause.
        That is, columns not named in the GROUP BY
        clause cannot be used in the HAVING clause if
        not used in an aggregate function.
       (Bug#18739)
        XPath expressions passed to the
        ExtractValue() and
        UpdateXML() functions can now
        include the colon character
        (“:”). This enables use of these
        functions with XML which employs namespaces.
       (Bug#18170)
        On Windows, some names such as nul,
        prn, and aux could not be
        used as file names because they are reserved as device names.
        These are now allowable names in MySQL. They are encoded by
        appending @@@ to the name when the server
        creates the corresponding file or directory. This occurs on all
        platforms for portability of the corresponding database object
        between platforms.
       (Bug#17870)
The bundled yaSSL library was upgraded to version 1.3.5. This improves handling of certain problems with SSL-related command options. (Bug#17737)
        You must now have the DROP
        privilege to drop table partitions.
       (Bug#17139)
        Server and clients ignored the --sysconfdir
        option that was passed to configure. The
        directory specified by this option, if set, now is used as one
        of the standard locations in which to look for option files.
       (Bug#15069)
        In result set metadata, the
        MYSQL_FIELD.length value for
        BIT columns now is reported in
        number of bits. For example, the value for a
        BIT(9) column is 9. (Formerly, the value was
        related to number of bytes.)
       (Bug#13601)
        The following statements now cause an implicit commit:
        ANALYZE TABLE,
        CHECK TABLE,
        OPTIMIZE TABLE, and
        REPAIR TABLE.
      
        Added the KEY_BLOCK_SIZE table option and
        index option. This can be used in CREATE
        TABLE, ALTER TABLE, and
        CREATE INDEX statements to
        provide a hint to the storage engine about the size to use for
        index key blocks. The engine is allowed to change the value if
        necessary.
      
        Added the sql_big_selects
        system variable to the output of SHOW
        VARIABLES.
      
The mysql_upgrade command has been converted from a shell script to a C program, so it is available on non-Unix systems such as Windows. This program should be run for each MySQL upgrade. See Section 4.4.8, “mysql_upgrade — Check Tables for MySQL Upgrade”.
        Added the REFERENTIAL_CONSTRAINTS
        table to INFORMATION_SCHEMA. It provides
        information about foreign keys.
      
        Added the have_dynamic_loading
        system variable that indicates whether the server supports
        dynamic loading of plugins.
      
        Added --debug option to
        Instance Manager.
      
Binary distributions that include SSL support now are built using yaSSL when possible.
Bugs fixed:
Security Fix: 
        A NUL byte within a comment in a statement
        string caused the rest of the string not to be written to the
        query log, allowing logging to be bypassed.
       (Bug#17667, CVE-2006-0903)
Security Fix: 
        A malicious client, using specially crafted invalid
        COM_TABLE_DUMP packets was able to trigger an
        exploitable buffer overflow on the server. Thanks to Stefano Di
        Paola <stefano.dipaola@wisec.it> for finding and
        reporting this bug.
       (CVE-2006-1518)
Security Fix: 
        A malicious client, using specially crafted invalid login or
        COM_TABLE_DUMP packets was able to read
        uninitialized memory, which potentially, though unlikely in
        MySQL, could have led to an information disclosure. (, ) Thanks
        to Stefano Di Paola <stefano.dipaola@wisec.it> for
        finding and reporting this bug.
       (CVE-2006-1516, CVE-2006-1517)
MySQL Cluster: Replication: (Replication): Delete and update of rows in a table without a primary key failed on the slave. (Bug#17400)
MySQL Cluster: A 5.1.6 or newer server did not read local checkpoints recorded by any other 5.1 version, thus preventing a system restart following an upgrade. (Bug#19333)
MySQL Cluster: 
        Concurrent INSERT and
        ROLLBACK
        statements from different connections could cause node failures.
       (Bug#19245)
MySQL Cluster: 
        (Disk Data): Running an INSERT
        and a DELETE on a Disk Data table
        in the same transaction could cause a deadlock.
       (Bug#19244)
MySQL Cluster: 
        Starting mysqld without
        --log-bin caused DDL statements
        on NDB tables to time out.
       (Bug#19214)
MySQL Cluster: 
        (NDBAPI): Passing a nonexistent index name to
        NdbIndexScanOperation::setBound() caused a
        segmentation fault.
       (Bug#19088)
MySQL Cluster: 
        mysql-test-run.pl started
        NDB even for test cases that did
        not need it.
       (Bug#19083)
MySQL Cluster: Stopping multiple nodes could cause node failure handling not to be completed. (Bug#19039)
MySQL Cluster: The Cluster binlog mysqld accepted updates even though the binary log was not set up, which could lead to updates missing from the binary log. (Bug#18932)
MySQL Cluster: mysqld could crash when attempting an update if the cluster had failed previously. (Bug#18798)
MySQL Cluster: 
        An INSERT or
        UPDATE of more than 128 bytes of
        data in a 4-replica cluster could cause data nodes to crash.
       (Bug#18622)
MySQL Cluster: 
        (Disk Data): CREATE LOGFILE GROUP accepted
        values other than NDB or
        NDBCLUSTER in the
        ENGINE clause.
       (Bug#18604)
MySQL Cluster: 
        (Disk Data): Omitting the required ENGINE
        clause from a CREATE LOGFILE GROUP or
        CREATE TABLESPACE statement caused the server
        to crash. An appropriate error message is now returned instead.
       (Bug#18603)
MySQL Cluster: 
        Queries using ORDER BY  failed against a pkN
        LIST-partitioned
        Cluster table having a multi-column primary key, where
        pkN represents one of the columns
        making up the primary key.
       (Bug#18598)
MySQL Cluster: 
        A simultaneous DROP TABLE and
        table update operation utilising a table scan could trigger a
        node failure.
       (Bug#18597)
MySQL Cluster: Fragment IDs were not logged correctly, causing ndb_restore_log to fail. (Bug#18594)
MySQL Cluster: 
        Repeated use of the SHOW and
        ALL STATUS commands in the
        ndb_mgm client could cause the
        mgmd process to crash.
       (Bug#18591)
MySQL Cluster: ndbd sometimes failed to start with the error Node failure handling not completed following a graceful restart. (Bug#18550)
MySQL Cluster: ndb_restore failed to restore a backup made from a 5.0 cluster to a 5.1 cluster. (Bug#18210)
MySQL Cluster: Adding an index to an unsigned integer column did not work correctly. (Bug#18133)
MySQL Cluster: 
        A SELECT from an
        NDB table with ORDER BY
         and a
        indexed_column LIMIT clause would fail following
        ALTER TABLE.
       (Bug#18094)
MySQL Cluster: 
        mysqldump included in its output data from
        the internal cluster database.
       (Bug#17840)
MySQL Cluster: 
        Backups could fail for large clusters with many tables, where
        the number of tables approached
        MaxNoOfTables.
       (Bug#17607)
MySQL Cluster: 
        Some queries having a WHERE clause of the
        form c1=val1 OR c2 LIKE 'val2' were not
        evaluated correctly.
       (Bug#17421)
MySQL Cluster: 
        An issue with ndb_mgmd prevented more than 27
        mysqld processes from connecting to a single
        cluster at one time.
       (Bug#17150)
MySQL Cluster: 
        In a 2-node cluster with a node failure, restarting the node
        with a low value for StartPartialTimeout
        could cause the cluster to come up partitioned
        (“split-brain” issue).
      
A similar issue could occur when the cluster was first started with a sufficiently low value for this parameter. (Bug#16447, Bug#18612)
MySQL Cluster: 
        Performing multiple ALTER TABLE
        operations on the same NDB table
        from different mysqld processes in the same
        cluster led to schema versioning errors when trying to access
        the table again following the restart of one of the
        mysqld processes.
       (Bug#16445)
MySQL Cluster: On systems with multiple network interfaces, data nodes would get “stuck” in startup phase 2 if the interface connecting them to the management server was working on node startup while the interface interconnecting the data nodes experienced a temporary outage. (Bug#15695)
MySQL Cluster: 
        On slow networks or CPUs, the management client
        SHOW command could sometimes
        erroneously show all data nodes as being master nodes belonging
        to nodegroup 0.
       (Bug#15530)
MySQL Cluster: 
        Unused open handlers for tables in which the metadata had
        changed were not properly closed. This could result in stale
        results from NDB tables following
        an ALTER TABLE statement.
       (Bug#13228)
MySQL Cluster: Uninitialized internal variables could lead to unexpected results. (Bug#11033, Bug#11034)
MySQL Cluster: 
        When attempting to create an index on a
        BIT or
        BLOB column, Error
        743: Unsupported character set in table or index was
        returned instead of Error 906: Unsupported attribute
        type in index.
      
Cluster Replication: Partitioning: Attempting to create an index using multiple columns on an explicitly partitioned table in a replicated Cluster database could cause the master mysqld process to crash. (Bug#18284)
Cluster Replication: Replication: An issue with replication caused a mysqld connected to a replicated cluster to crash when entering single user mode. (Bug#18535)
Replication: 
        CREATE VIEW statements would not
        be replicated to the slave if the
        --replicate-wild-ignore-table
        rule was enabled.
       (Bug#18715)
Replication: 
        Updating a field value when also requesting a lock with
        GET_LOCK() would cause slave
        servers in a replication environment to terminate.
       (Bug#17284)
Replication: 
        The binary log would create an incorrect DROP
        query when creating temporary tables during replication.
       (Bug#17263)
Disk Data: 
        Issuing a CREATE LOGFILE GROUP statement
        during the drop of an NDB table
        would cause database corruption.
       (Bug#19141)
Disk Data: Concurrent table schema operations and operations on log file groups, tablespaces, data files, or undo files could lead to data node failures. (Bug#18575)
Cluster Replication: 
        Using the --binlog-do-db option
        caused problems with CREATE TABLE
        on the cluster acting as the replication master.
       (Bug#19492)
Cluster Replication: 
        When taking part in Cluster replication of tables containing
        BLOB columns,
        mysqld falsely reported a large memory leak
        in the replication buffers when there was none.
       (Bug#19247)
Cluster Replication: 
        Trying to restore the apply_status table from
        a 5.0 cluster backup failed on a 5.1 server.
       (Bug#18935)
        A compatibility issue with NPTL (Native POSIX Thread Library) on
        Linux could result in a deadlock with
        FLUSH TABLES WITH READ
        LOCK under some conditions.
       (Bug#20048)
Some outer joins were incorrectly converted to inner joins. (Bug#19816)
This regression was introduced by Bug#17146.
        A view definition that referred to an alias in the
        HAVING clause could be saved in the
        .frm file with the alias replaced by the
        expression that it referred to, causing failure of subsequent
        SELECT * FROM  statements.
       (Bug#19573)view_name
        
        mysql displayed NULL for
        strings that are empty or contain only spaces.
       (Bug#19564)
        Selecting from a view that used GROUP BY on a
        nonconstant temporal interval (such as
        DATE(
        could cause a server crash.
       (Bug#19490)col) + INTERVAL
        TIME_TO_SEC(col) SECOND
        An outer join of two views that was written using { OJ
        ... } syntax could cause a server crash.
       (Bug#19396)
An issue with file handling in the partitioning code could cause mysqld to crash when started and then stopped within a very short period of time. (Bug#19313)
        myisamchk and
        myisam_ftdump should allow either table names
        or .MYI file names as arguments, but
        allowed only table names.
       (Bug#19220)
        InnoDB could read a delete mark from its
        system tables incorrectly.
       (Bug#19217)
        Executing a CREATE EVENT
        statement could cause 100% CPU usage.
       (Bug#19170)
        Eliminated some memory corruption problems that resultsd in
        double free or corruption errors and a server
        crash.
       (Bug#19154)
        Attempting to set the default value of an
        ENUM or SET
        column to NULL caused a server crash.
       (Bug#19145)
        Index corruption could occur in cases when
        key_cache_block_size was not a
        multiple of the myisam-block-size
        value (for example, with
        --key_cache_block_size=1536 and
        --myisam-block-size=1024).
       (Bug#19079)
Instance Manager now finds the version numbers, so that it works properly when the executable name isn't the same as what the Instance Manager launched (such as when wrapping a libtool-wrapped executable from the source tree). (Bug#19059)
        Some fast ALTER TABLE operations
        (requiring no temporary table) did not work for all tables.
       (Bug#19011)
        Successive ALTER TABLE ... DROP PARTITION
        statements on the same subpartitioned table could eventually
        cause the server to crash.
       (Bug#18962)
        Creating a table in an InnoDB database with a
        column name that matched the name of an internal
        InnoDB column (including
        DB_ROW_ID, DB_TRX_ID,
        DB_ROLL_PTR and DB_MIX_ID)
        would cause a crash. MySQL now returns Error 1005
        Cannot create table with
        errno set to -1.
       (Bug#18934)
The parser leaked memory when its stack needed to be extended. (Bug#18930)
        MySQL would not compile on Linux distributions that use the
        tinfo library.
       (Bug#18912)
        The server attempted to flush uninitialized log tables during
        SIGHUP processing, causing a crash.
       (Bug#18848)
        For a reference to a nonexistent stored function in a stored
        routine that had a CONTINUE handler, the
        server continued as though a useful result had been returned,
        possibly resulting in a server crash.
       (Bug#18787)
        For single-SELECT union
        constructs of the form (SELECT ... ORDER BY
        order_list1 [LIMIT
        n]) ORDER BY
        order_list2, the ORDER
        BY lists were concatenated and the
        LIMIT clause was ignored.
       (Bug#18767)
        Inserts failed with duplicate key errors on a table partitioned
        using an AUTO_INCREMENT column for the
        partitioning key.
       (Bug#18753, Bug#18552)
        It was possible to create a RANGE-partitioned
        table with a partition defined using the clause VALUES
        LESS THAN (NULL), even though such a partition could
        never contain any values whatsoever.
       (Bug#18752)
Delimited identifiers for partitions were not being treated the same as delimited identifiers for other database objects (such as tables and columns) with regard to allowed characters. (Bug#18750)
        Conversion of a number to a CHAR UNICODE
        string returned an invalid result.
       (Bug#18691)
        If the second or third argument to
        BETWEEN was a constant expression
        such as '2005-09-01 - INTERVAL 6 MONTH and
        the other two arguments were columns,
        BETWEEN was evaluated incorrectly.
       (Bug#18618)
        LOAD DATA FROM MASTER would fail when trying
        to load the INFORMATION_SCHEMA database from
        the master, because the INFORMATION_SCHEMA
        system database would already exist on the slave.
       (Bug#18607)
        Running an ALTER TABLE on a
        partitioned table simultaneously experiencing a high number of
        concurrent DML statements could crash the server.
       (Bug#18572)
        A LOCK TABLES statement that
        failed could cause MyISAM not to update table
        statistics properly, causing a subsequent
        CHECK TABLE to report table
        corruption.
       (Bug#18544)
        mysqltest incorrectly interpreted some
        ER_ error names
        given in the xxxerror command.
       (Bug#18495)
        InnoDB: ALTER
        TABLE to add or drop a foreign key for an
        InnoDB table had no effect.
       (Bug#18477)
        InnoDB did not use a consistent read for
        CREATE ... SELECT when
        innodb_locks_unsafe_for_binlog
        was set.
       (Bug#18350)
        DROP DATABASE did not drop stored
        routines associated with the database if the database name was
        longer than 21 characters.
       (Bug#18344)
        A query on a table partitioned or subpartitioned by
        HASH did not display all results when using a
        WHERE condition involving a column used in
        the hashing expression.
       (Bug#18329, Bug#18423)
        In mysqltest, --sleep=0 had
        no effect. Now it correctly causes sleep
        commands in test case files to sleep for 0 seconds.
       (Bug#18312)
        The ExtractValue() function did
        not return character data within
        <![CDATA[]]> as expected.
       (Bug#18285)
        A recent change caused the mysql client not
        to display NULL values correctly and to
        display numeric columns left-justified rather than
        right-justified. The problems have been corrected.
       (Bug#18265)
        Updates to a MEMORY table caused the size of
        BTREE indexes for the table to increase.
       (Bug#18160)
        A failed ALTER TABLE operation
        could fail to clean up a temporary .frm
        file.
       (Bug#18129)
        Event-creation statements enclosed in multi-line comments using
        /*! syntax were not parsed correctly.
       (Bug#18078)version_number ...
        */
        SELECT
        DISTINCT queries sometimes returned only the last row.
       (Bug#18068)
        InnoDB: A
        DELETE followed by an
        INSERT and then by an
        UPDATE on a partitioned
        InnoDB table caused subsequent queries to
        return incorrect results.
       (Bug#17992)
It was possible to use trailing spaces in the names of partitions and subpartitions. Attempting to do so now raises the error Incorrect partition name. (Bug#17973)
        LIKE searches failed on a
        CHAR column used as the
        partitioning column of a table partitioned by
        KEY.
       (Bug#17946)
        Executing SELECT on a large table
        that had been compressed within myisampack
        could cause a crash.
       (Bug#17917)
        The sql_big_selects system
        variable was not displayed by SHOW
        VARIABLES.
       (Bug#17849)
        REPAIR TABLE did not restore the
        length for packed keys in tables created under MySQL 4.x, which
        caused them to appear corrupt to CHECK
        TABLE but not to REPAIR
        TABLE.
       (Bug#17810)
A range access optimizer heuristic was invalid, causing some queries to be much slower in MySQL 5.0 than in 4.0. (Bug#17379, Bug#18940)
        Logging to the mysql.general_log and
        mysql.slow_log tables did not work for
        Windows builds because the CSV storage engine
        was unavailable. The CSV engine now is
        enabled in Windows builds.
       (Bug#17368)
        If the WHERE condition of a query contained
        an OR-ed FALSE term, the
        set of tables whose rows cannot serve for null-complements in
        outer joins was determined incorrectly. This resulted in
        blocking possible conversions of outer joins into joins by the
        optimizer for such queries.
       (Bug#17164)
        Casting a string to DECIMAL
        worked, but casting a trimmed string (using
        LTRIM() or
        RTRIM()) resulted in loss of
        decimal digits.
       (Bug#17043)
        MyISAM table deadlock was possible if one
        thread issued a LOCK TABLES
        request for write locks and then an administrative statement
        such as OPTIMIZE TABLE, if
        between the two statements another client meanwhile issued a
        multiple-table SELECT for some of
        the locked tables.
       (Bug#16986)
        ALTER TABLE ... REBUILD PARTITION returned an
        inaccurate error message.
       (Bug#16819)
        Use of
        --default-storage-engine=innodb
        resulted in an error with the server reporting that
        InnoDB was an unknown table type.
       (Bug#16691)
        MySQL-shared-compat-5.1.9-0.i386.rpm
        incorrectly depended on glibc 2.3 and could
        not be installed on a glibc 2.2 system.
       (Bug#16539)
The presence of multiple equalities in a condition after reading a constant table could cause the optimizer not to use an index. This resulted in certain queries being much slower than in MySQL 4.1. (Bug#16504)
        Within a trigger, CONNECTION_ID()
        did not return the connection ID of the thread that caused the
        trigger to be activated.
       (Bug#16461)
        The XPath string-length() function was not
        implemented for use with
        ExtractValue().
       (Bug#16319)
        The ExtractValue() function
        failed with a syntax error when the XPath expression used
        special characters such as Ñ
        (“N-tilde”).
       (Bug#16233)
        The sql_notes and
        sql_warnings system variables
        were not always displayed correctly by SHOW
        VARIABLES (for example, they were displayed as
        ON after being set to
        OFF).
       (Bug#16195)
        If the first argument to BETWEEN
        was a DATE or
        TIME column of a view and the
        other arguments were constants,
        BETWEEN did not perform conversion
        of the constants to the appropriate temporary type, resulting in
        incorrect evaluation.
       (Bug#16069)
        After calling FLUSH STATUS, the
        max_used_connections variable did not
        increment for existing connections and connections which use the
        thread cache.
       (Bug#15933)
        DELETE and
        UPDATE statements that used large
        NOT IN
        ( clauses could
        use large amounts of memory.
       (Bug#15872)value_list)
        InnoDB failure to release an adaptive hash
        index latch could cause a server crash if the query cache was
        enabled.
       (Bug#15758)
        LAST_INSERT_ID() in a stored
        function or trigger returned zero. .
       (Bug#15728)
        The system_time_zone and
        version_* system variables could not be
        accessed via SELECT
        @@ syntax.
       (Bug#15684, Bug#12792)var_name
        If the server were built without partition support, it was
        possible to run partitioning-related statements with no errors
        or warnings, even though these statements would have no effect.
        Now such statements are disallowed unless the server has been
        compiled using the --with-partition
        option.
       (Bug#15561)
        Use of CONVERT_TZ() in a view
        definition could result in spurious syntax or access errors.
       (Bug#15153)
        Prevent recursive views caused by using
        RENAME TABLE on a view after
        creating it.
       (Bug#14308)
Some queries were slower in 5.0 than in 4.1 because some 4.1 cost-evaluation code had not been merged into 5.0. (Bug#14292)
        Avoid trying to include
        <asm/atomic.h> when it doesn't work
        in C++ code.
       (Bug#13621)
        Running myisampack followed by
        myisamchk with the
        --unpack option would corrupt
        the AUTO_INCREMENT key.
       (Bug#12633)
        Use of CONVERT_TZ() in a stored
        function or trigger (or in a stored procedure called from a
        stored function or trigger) caused an error.
       (Bug#11081)
        When myisamchk needed to rebuild a table,
        AUTO_INCREMENT information was lost.
       (Bug#10405)

User Comments
Add your own comment.