Functionality added or changed:
Important Change: MySQL Cluster: Packaging: 
        Beginning with this release, standard MySQL 5.1 binaries are no
        longer built with support for the
        NDBCLUSTER storage engine, and the
        NDBCLUSTER code included in 5.1
        mainline sources is no longer guaranteed to be maintained or
        supported. Those using MySQL Cluster in MySQL 5.1.23 and earlier
        MySQL 5.1 mainline releases should upgrade to MySQL Cluster NDB
        6.2.15 or a later MySQL Cluster NDB 6.2 or 6.3 release.
       (Bug#36193)
Important Change: 
        The FEDERATED storage engine is not included
        in binary distributions of MySQL 5.1.24. (It will be included
        again in 5.1.25.)
      
Replication: 
        Introduced the slave_exec_mode
        system variable to control whether idempotent or strict mode is
        used for replication conflict resolution. Idempotent mode
        suppresses duplicate-key, no-key-found, and some other errors,
        and is needed for circular replication, multi-master
        replication, and some other complex replication setups when
        using MySQL Cluster, where idempotent mode is the default.
        However, strict mode is the default for storage engines other
        than NDB.
       (Bug#31609)
Replication: 
        When running the server with
        --binlog-format=MIXED or
        --binlog-format=STATEMENT, a
        query that referred to a system variable used the slave's
        value when replayed on the slave. This meant that, if the value
        of a system variable was inserted into a table, the slave
        differed from the master. Now, statements that refer to a system
        variable are marked as “unsafe”, which means that:
        
              When the server is using
              --binlog-format=MIXED, the
              row-based format is used automatically to replicate these
              statements.
            
              When the server is using
              --binlog-format=STATEMENT,
              these statements produce a warning.
            
See also Bug#34732.
        The PROCESS privilege now is
        required to start or stop the InnoDB monitor
        tables (see Section 13.6.13.2, “SHOW ENGINE INNODB
        STATUS and the InnoDB Monitors”). Previously, no
        privilege was required.
       (Bug#34053)
        For binary .tar.gz packages,
        mysqld and other binaries now are compiled
        with debugging symbols included to enable easier use with a
        debugger. If you do not need debugging symbols and are short on
        disk space, you can use strip to remove the
        symbols from the binaries.
       (Bug#33252)
Formerly, when the MySQL server crashed, the generated stack dump was numeric and required external tools to properly resolve the names of functions. This is not very helpful to users having a limited knowledge of debugging techniques. In addition, the generated stack trace contained only the names of functions and was formatted differently for each platform due to different stack layouts.
Now it is possible to take advantage of newer versions of the GNU C Library provide a set of functions to obtain and manipulate stack traces from within the program. On systems that use the ELF binary format, the stack trace contains important information such as the shared object where the call was generated, an offset into the function, and the actual return address. Having the function name also makes possible the name demangling of C++ functions.
The library generates meaningful stack traces on the following platforms: i386, x86_64, PowerPC, IA64, Alpha, and S390. On other platforms, a numeric stack trace is still produced, and the use of the resolve_stack_dump utility is still required. (Bug#31891)
        mysqltest now has mkdir
        and rmdir commands for creating and removing
        directories.
       (Bug#31004)
The server uses less memory when loading privileges containing table grants. (Patch provided by Google.) (Bug#25175)
        Added the
        Uptime_since_flush_status
        status variable, which indicates the number of seconds since the
        most recent FLUSH STATUS statement.
        (Community contribution by Jeremy Cole)
       (Bug#24822)
        SHOW OPEN TABLES now supports
        FROM and LIKE clauses.
       (Bug#12183)
        The new read-only global system variables
        report_host,
        report_password,
        report_port, and
        report_user system variables
        provide runtime access to the values of the corresponding
        --report-host,
        --report-password,
        --report-port, and
        --report-user options.
      
        Formerly it was possible to specify an
        innodb_flush_method value of
        fdatasync to obtain the default flush
        behavior of using fdatasync() for flushing.
        This is no longer possible because it can be confusing that a
        value of fdatasync causes use of
        fsync() rather than
        fdatasync().
      
        The use of InnoDB hash indexes now can be
        controlled by setting the new
        innodb_adaptive_hash_index
        system variable at server startup. By default, this variable is
        enabled. See Section 13.6.10.4, “Adaptive Hash Indexes”.
      
Bugs fixed:
Performance: 
        InnoDB adaptive hash latches could be held
        too long during filesort operations, resulting in a server
        crash. Now the hash latch is released when a query on
        InnoDB tables performs a filesort. This
        eliminates the crash and may provide significant performance
        improvements on systems on which many queries using filesorts
        with temporary tables are being performed.
       (Bug#32149)
Performance: 
        InnoDB exhibited thread thrashing with more
        than 50 concurrent connections under an update-intensive
        workload.
       (Bug#22868)
Important Change: Security Fix: 
        It was possible to circumvent privileges through the creation of
        MyISAM tables employing the DATA
        DIRECTORY and INDEX DIRECTORY
        options to overwrite existing table files in the MySQL data
        directory. Use of the MySQL data directory in DATA
        DIRECTORY and INDEX DIRECTORY is
        now disallowed. This is now also true of these options when used
        with partitioned tables and individual partitions of such
        tables.
      
Additional fixes were made in MySQL 5.1.28, 5.1.41.
See also Bug#39277.
Security Fix: 
        A client that connects to a malicious server could be tricked by
        the server into sending files from the client host to the
        server. This occurs because the
        libmysqlclient client library would respond
        to a FETCH LOCAL FILE request from the server
        even if the request is sent for statements from the client other
        than LOAD DATA LOCAL
        INFILE. The client library has been modified to
        respond to a FETCH LOCAL FILE request from
        the server only if is sent in response to a
        LOAD DATA LOCAL
        INFILE statement from the client.
      
        The client library now also checks whether
        CLIENT_LOCAL_FILE is set and refuses to send
        a local file if not.
      
          Binary distributions ship with the
          local-infile capability enabled.
          Applications that do not use this functionality should disable
          it to be safe.
        
Important Change: Security Enhancement: 
        On Windows Vista and Windows Server 2008, a user without
        administrative privileges does not have write permissions to the
        Program Files directory where MySQL and the
        associated data files are normally installed. Using data files
        located in the standard Program Files
        installation directory could therefore cause MySQL to fail, or
        lead to potential security issues in an installed instance.
      
        To address the problem, on Windows XP, Windows Vista and Windows
        Server 2008, the datafiles and data file configuration are now
        set to the Microsoft recommended AppData
        folder. The AppData folder is typically
        located within the user's home directory.
      
          When upgrading an existing 5.1.23 or 6.0.4 installation of
          MySQL you must take a backup of your data and configuration
          file (my.ini before installing the new
          version. To migrate your data, either extract the data and
          re-import (using mysqldump, then upgrade
          and re-import using mysql), or back up your
          data, upgrade to the new version, and copy your existing data
          files from your old datadir directory to
          the new directory located within AppData.
        
Failure to back up your data and follow these procedures may lead to data loss.
Incompatible Change: 
        In MySQL 5.1.23, the last_errno and
        last_error members of the
        NET structure in
        mysql_com.h were renamed to
        client_last_errno and
        client_last_error. This was found to cause
        problems for connectors that use the internal
        NET structure for error handling. The change
        has been reverted.
       (Bug#34655)
See also Bug#12713.
Incompatible Change: 
        It was possible to use FRAC_SECOND as a
        synonym for MICROSECOND with
        DATE_ADD(),
        DATE_SUB(), and
        INTERVAL; now, using
        FRAC_SECOND with anything other than
        TIMESTAMPADD() or
        TIMESTAMPDIFF() produces a syntax
        error.
      
        It is now possible (and preferable) to use
        MICROSECOND with
        TIMESTAMPADD() and
        TIMESTAMPDIFF(), and
        FRAC_SECOND is now deprecated.
       (Bug#33834)
Incompatible Change: 
        The UPDATE statement allowed
        NULL to be assigned to NOT
        NULL columns (the implicit default value for the
        column data type was assigned). This was changed so that on
        error occurs.
      
        This change was reverted, because the original report was
        determined not to be a bug: Assigning NULL to
        a NOT NULL column in an
        UPDATE statement should produce
        an error only in strict SQL mode and set the column to the
        implicit default with a warning otherwise, which was the
        original behavior. See Section 10.1.4, “Data Type Default Values”, and
        Bug#39265.
       (Bug#33699)
Incompatible Change: 
        For packages that are built within their own prefix (for
        example, /usr/local/mysql) the plugin
        directory will be lib/plugin. For packages
        that are built to be installed into a system-wide prefix (such
        as RPM packages with a prefix of /usr), the
        plugin directory will be lib/mysql/plugin
        to ensure a clean /usr/lib hierarchy. In
        both cases, the $pkglibdir configuration
        setting is used at build time to set the plugin directory.
      
        The current plugin directory location is available as the value
        of the plugin_dir system
        variable as before, but the mysql_config
        script now has a
        --plugindir option that can
        be used externally to the server by third-party plugin writers
        to obtain the default plugin directory path name and configure
        their installation directory appropriately.
       (Bug#31736)
Incompatible Change: 
        The utf8_general_ci and
        ucs2_general_ci collations did not sort the
        letter "U+00DF SHARP S" equal to 's'.
      
        As a result of this bug fix, indexes must be rebuilt for columns
        that use the utf8_general_ci or
        ucs2_general_ci collation for columns that
        contain SHARP S. See
        Section 2.4.3, “Checking Whether Tables or Indexes Must Be Rebuilt”.
       (Bug#27877)
See also Bug#37046.
Important Change: Partitioning: The following statements did not function correctly with corrupted or crashed tables and have been disabled:
            ALTER TABLE ... ANALYZE PARTITION
          
            ALTER TABLE ... CHECK PARTITION
          
            ALTER TABLE ... OPTIMIZE PARTITION
          
            ALTER TABLE ... REPAIR PARTITION
          
        ALTER TABLE ... REBUILD PARTITION is
        unaffected by this change and continues to be available. This
        statement and ALTER TABLE ... REORGANIZE
        PARTITION may be used to analyze and optimize
        partitioned tables, since these operations cause the partition
        files to be rebuilt.
       (Bug#20129)
See also Bug#39434.
Important Change: Replication: 
        When the master crashed during an update on a transactional
        table while in autocommit mode,
        the slave failed. This fix causes every transaction (including
        autocommit transactions) to be
        recorded in the binlog as starting with a
        BEGIN and
        ending with a COMMIT or
        ROLLBACK.
       (Bug#26395)
Important Change: 
        InnoDB free space information is now shown in
        the Data_free column of
        SHOW TABLE STATUS and in the
        DATA_FREE column of the
        INFORMATION_SCHEMA.TABLES table.
       (Bug#32440)
See also Bug#11379.
Important Change: 
        The server handled truncation of values having excess trailing
        spaces into CHAR,
        VARCHAR, and
        TEXT columns in different ways.
        This behavior has now been made consistent for columns of all
        three of these types, and now follows the existing behavior of
        VARCHAR columns in this regard;
        that is, a Note is always issued whenever
        such truncation occurs.
      
        This change does not affect columns of these three types when
        using a binary encoding; BLOB
        columns are also unaffected by the change, since they always use
        a binary encoding.
       (Bug#30059)
Important Change: 
        An AFTER UPDATE trigger was not invoked when
        the UPDATE did not make any
        changes to the table for which the trigger was defined. Now
        AFTER UPDATE triggers behave the same in this
        regard as do BEFORE UPDATE triggers, which
        are invoked whether the UPDATE
        makes any changes in the table or not.
       (Bug#23771)
Replication: Important Note: Network timeouts between the master and the slave could result in corruption of the relay log. This fix rectifies a long-standing replication issue when using unreliable networks, including replication over wide area networks such as the Internet. If you experience reliability issues and see many You have an error in your SQL syntax errors on replication slaves, we strongly recommend that you upgrade to a MySQL version which includes this fix. (Bug#26489)
Partitioning: 
        In some cases, matching rows from a partitioned
        MyISAM using a
        BIT column as the primary key
        were not found by queries.
       (Bug#34358)
Partitioning: 
        Enabling innodb_file_per_table
        produced problems with partitioning and tablespace operations on
        partitioned InnoDB tables, in some cases
        leading to corrupt partitions or causing the server to crash.
       (Bug#33429)
Partitioning: 
        A table defined using PARTITION BY KEY and
        having a BIT column referenced in
        the partitioning key did not behave correctly; some rows could
        be inserted into the wrong partition, causing wrong results to
        be returned from queries.
       (Bug#33379)
Partitioning: 
        For InnoDB tables, there was a race condition
        involving the data dictionary and repartitioning.
       (Bug#33349)
Partitioning: 
        When ALTER TABLE DROP PARTITION was executed
        on a table on which there was a trigger, the statement failed
        with an error. This occurred even if the trigger did not
        reference any tables.
       (Bug#32943)
Partitioning: 
        Currently, all partitions of a partitioned table must use the
        same storage engine. One may optinally specify the storage
        engine on a per-partition basis; however, where this is the
        done, the storage engine must be the same as used by the table
        as a whole. ALTER TABLE did not
        enforce these rules correctly, the result being that incaccurate
        error messages were shown when trying to use the statement to
        change the storage engine used by an individual partition or
        partitions.
       (Bug#31931)
Partitioning: 
        Using the DATA DIRECTORY and INDEX
        DIRECTORY options for partitions with
        CREATE TABLE or
        ALTER TABLE statements appeared
        to work on Windows, although they are not supported by MySQL on
        Windows systems, and subsequent attempts to use the tables
        referenced caused errors. Now these options are disabled on
        Windows, and attempting to use them generates a warning.
       (Bug#30459)
Replication: 
        The failure of a CREATE TABLE ... ENGINE=InnoDB ...
        SELECT statement caused the slave to lose data.
       (Bug#35762)
Replication: 
        When using row-based replication, a slave could crash at startup
        because it received a row-based replication event that
        InnoDB could not handle due to an incorrect
        test of the query string provided by MySQL, which was
        NULL for row-based replication events.
       (Bug#35226)
Replication: 
        insert_id was not written to
        the binary log for inserts into BLACKHOLE
        tables.
       (Bug#35178)
Replication: 
        When using statement-based replication and a
        DELETE,
        UPDATE, or
        INSERT ...
        SELECT statement using a LIMIT
        clause is encountered, a warning that the statement is not safe
        to replicate in statement mode is now issued; when using
        MIXED mode, the statement is now replicated
        using the row-based format.
       (Bug#34768)
Replication: 
        mysqlbinlog did not output the values of
        auto_increment_increment and
        auto_increment_offset when both
        were equal to their default values (for both of these variables,
        the default is 1). This meant that a binary log recorded by a
        client using the defaults for both variables and then replayed
        on another client using its own values for either or both of
        these variables produced erroneous results.
       (Bug#34732)
See also Bug#31168.
Replication: 
        When the Windows version of mysqlbinlog read
        4.1 binlogs containing
        LOAD DATA
        INFILE statements, it output backslashes as path
        separators, causing problems for client programs expecting
        forward slashes. In such cases, it now converts
        \\ to / in directory
        paths.
       (Bug#34355)
Replication: 
        SHOW SLAVE STATUS failed when
        slave I/O was about to terminate.
       (Bug#34305)
Replication: The character sets and collations used for constant identifiers in stored procedures were not replicated correctly. (Bug#34289)
Replication: 
        mysqlbinlog from a 5.1 or later MySQL
        distribution could not read binary logs generated by a 4.1
        server when the logs contained
        LOAD DATA
        INFILE statements.
       (Bug#34141)
This regression was introduced by Bug#32407.
Replication: 
        A CREATE USER,
        DROP USER, or
        RENAME USER statement that fails
        on the master, or that is a duplicate of any of these
        statements, is no longer written to the binlog; previously,
        either of these occurrences could cause the slave to fail.
       (Bug#33862)
See also Bug#29749.
Replication: 
        SHOW BINLOG EVENTS could fail
        when the binlog contained one or more events whose size was
        close to the value of
        max_allowed_packet.
       (Bug#33413)
Replication: 
        An extraneous
        ROLLBACK
        statement was written to the binary log by a connection that did
        not use any transactional tables.
       (Bug#33329)
Replication: mysqlbinlog failed to release all of its memory after terminating abnormally. (Bug#33247)
Replication: 
        When a stored routine or trigger, running on a master that used
        MySQL 5.0 or MySQL 5.1.11 or earlier, performed an insert on an
        AUTO_INCREMENT column, the
        insert_id value was not
        replicated correctly to a slave running MySQL 5.1.12 or later
        (including any MySQL 6.0 release).
       (Bug#33029)
See also Bug#19630.
Replication: The error message generated due to lack of a default value for an extra column was not sufficiently informative. (Bug#32971)
Replication: 
        When a user variable was used inside an
        INSERT statement, the
        corresponding binlog event was not written to the binlog
        correctly.
       (Bug#32580)
Replication: When using row-based replication, deletes from a table with a foreign key constraint failed on the slave. (Bug#32468)
Replication: 
        The --base64-output option
        for mysqlbinlog was not honored for all types
        of events. This interfered in some cases with performing
        point-in-time recovery.
       (Bug#32407)
Replication: 
        SQL statements containing comments using --
        syntax were not replayable by mysqlbinlog,
        even though such statements replicated correctly.
       (Bug#32205)
Replication: When using row-based replication from a master running MySQL 5.1.21 or earlier to a slave running 5.1.22 or later, updates of integer columns failed on the slave with Error in Unknown event: row application failed. (Bug#31583)
This regression was introduced by Bug#21842.
Replication: Replicating write, update, or delete events from a master running MySQL 5.1.15 or earlier to a slave running 5.1.16 or later caused the slave to crash. (Bug#31581)
Replication: When using row-based replication, the slave stopped when attempting to delete nonexistent rows from a slave table without a primary key. In addition, no error was reported when this occurred. (Bug#31552)
Replication: 
        Errors due to server ID conflicts were reported only in the
        slave's error log; now these errors are also shown in the
        Server_IO_State column in the output of
        SHOW SLAVE STATUS.
       (Bug#31316)
Replication: 
        STOP SLAVE did not stop
        connection attempts properly. If the I/O slave thread was
        attempting to connect, STOP SLAVE
        waited for the attempt to finish, sometimes for a long period of
        time, rather than stopping the slave immediately.
       (Bug#31024)
See also Bug#30932.
Replication: 
        Issuing a DROP VIEW statement
        caused replication to fail if the view did not actually exist.
       (Bug#30998)
Replication: 
        Replication of LOAD
        DATA INFILE could fail when
        read_buffer_size was larger
        than max_allowed_packet.
       (Bug#30435)
Replication: 
        Replication crashed with the NDB
        storage engine when mysqld was started with
        --character-set-server=ucs2.
       (Bug#29562)
Replication: When using row-based logging, nontransactional updates were not written atomically to the binary log. If a nontransactional update was made concurrently with some other update, this could cause incorrect binary logging, and consequently the slave could diverge from the master. Now, nontransactional updates are always written atomically to the binary log. (Bug#29020)
Replication: 
        Setting server_id did not
        update its value for the current session.
       (Bug#28908)
Replication: Some older servers wrote events to the binary log using different numbering from what is currently used, even though the file format number in the file is the same. Slaves running MySQL 5.1.18 and later could not read these binary logs properly. Binary logs from these older versions now are recognized and event numbers are mapped to the current numbering so that they can be interpreted properly. (Bug#27779, Bug#32434)
This regression was introduced by Bug#22583.
Replication: 
        MASTER_POS_WAIT() did not return
        NULL when the server was not a slave.
       (Bug#26622)
Replication: 
        The nonspecific error message Wrong parameters to
        function register_slave resulted when
        START SLAVE failed to register on
        the master due to excess length of any the slave server options
        --report-host,
        --report-user, or
        --report-password. An error
        message specific to each of these options is now returned in
        such cases. The new error messages are:
        
Failed to register slave: too long 'report-host'
Failed to register slave: too long 'report-user'
Failed to register slave; too long 'report-password'
See also Bug#19328.
Replication: 
        PURGE BINARY LOGS TO and PURGE
        BINARY LOGS BEFORE did not handle missing binary log
        files correctly or in the same way. Now for both of these
        statements, if any files listed in the
        .index file are missing from the file
        system, the statement fails with an error.
       (Bug#18199, Bug#18453)
Replication: 
        START SLAVE UNTIL
        MASTER_LOG_POS=
        issued on a slave that was using
        position--log-slave-updates and that was
        involved in circular replication would cause the slave to run
        and stop one event later than that specified by the value of
        position.
       (Bug#13861)
Manually replacing a binary log file with a directory having the same name caused an error that was not handled correctly. (Bug#35675)
        Using LOAD DATA
        INFILE with a view could crash the server.
       (Bug#35469)
        Selecting from
        INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
        could cause a server crash.
       (Bug#35406)
See also Bug#35108.
        For a TEMPORARY table,
        DELETE with no
        WHERE clause could fail when preceded by
        DELETE statements with a
        WHERE clause.
       (Bug#35392)
        If the server crashed with an InnoDB error
        due to unavailability of undo slots, errors could persist during
        rollback when the server was restarted: There are two
        UNDO slot caches (for
        INSERT and
        UPDATE). If all slots end up in
        one of the slot caches, a request for a slot from the other slot
        cache would fail. This can happen if the request is for an
        UPDATE slot and all slots are in
        the INSERT slot cache, or vice
        versa.
       (Bug#35352)
        In some cases, when too many clients tried to connect to the
        server, the proper SQLSTATE code was not
        returned.
       (Bug#35289)
        Memory-allocation failures for attempts to set
        key_buffer_size to large values
        could result in a server crash.
       (Bug#35272)
        For InnoDB tables, ALTER TABLE
        DROP failed if the name of the column to be dropped
        began with “foreign”.
       (Bug#35220)
        Queries could return different results depending on whether
        ORDER BY columns were indexed.
       (Bug#35206)
        When a view containing a reference to DUAL
        was created, the reference was removed when the definition was
        stored, causing some queries against the view to fail with
        invalid SQL syntax errors.
       (Bug#35193)
        SELECT ... FROM
        INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS caused the
        server to crash if the table referenced by a foreign key had
        been dropped. This issue was observed on Windows platforms only.
       (Bug#35108)
See also Bug#35406.
Debugging symbols were missing for some executables in Windows binary distributions. (Bug#35104)
        Nonconnection threads were being counted in the value of the
        Max_used_connections status
        variable.
       (Bug#35074)
        A query that performed a
        ref_or_null join where the
        second table used a key having one or columns that could be
        NULL and had a column value that was
        NULL caused the server to crash.
       (Bug#34945)
This regression was introduced by Bug#12144.
        For some queries, the optimizer used an ordered index scan for
        GROUP BY or DISTINCT when
        it was supposed to use a loose index scan, leading to incorrect
        results.
       (Bug#34928)
        Creating a foreign key on an InnoDB table
        that was created with an explicit
        AUTO_INCREMENT value caused that value to be
        reset to 1.
       (Bug#34920)
        mysqldump failed to return an error code when
        using the --master-data option
        without binary logging being enabled on the server.
       (Bug#34909)
        Under some circumstances, the value of
        mysql_insert_id() following a
        SELECT ... INSERT statement could return an
        incorrect value. This could happen when the last SELECT
        ... INSERT did not involve an
        AUTO_INCREMENT column, but the value of
        mysql_insert_id() was changed by
        some previous statements.
       (Bug#34889)
Table and database names were mixed up in some places of the subquery transformation procedure. This could affect debugging trace output and further extensions of that procedure. (Bug#34830)
        If fsync() returned
        ENOLCK, InnoDB could treat
        this as fatal and cause abnormal server termination.
        InnoDB now retries the operation.
       (Bug#34823)
        CREATE SERVER and
        ALTER SERVER could crash the
        server if out-of-memory conditions occurred.
       (Bug#34790)
        DROP SERVER does not release
        memory cached for server structures created by
        CREATE SERVER, so repeated
        iterations of these statements resulted in a memory leak.
        FLUSH
        PRIVILEGES now releases the memory allocated for
        CREATE SERVER.
       (Bug#34789)
        A malformed URL used for a FEDERATED
        table's CONNECTION option value in a
        CREATE TABLE statement was not
        handled correctly and could crash the server.
       (Bug#34788)
        Queries such as SELECT ROW(1, 2) IN (SELECT t1.a, 2)
        FROM t1 GROUP BY t1.a (combining row constructors and
        subqueries in the FROM clause) could lead to
        assertion failure or unexpected error messages.
       (Bug#34763)
        Using NAME_CONST() with a negative number and
        an aggregate function caused MySQL to crash. This could also
        have a negative impact on replication.
       (Bug#34749)
        A memory-handling error associated with use of
        GROUP_CONCAT() in subqueries
        could result in a server crash.
       (Bug#34747)
        For an indexed integer column
        col_name and a value
        N that is one greater than the
        maximum value allowed for the data type of
        col_name, conditions of the form
        WHERE  failed to return rows
        where the value of col_name <
        Ncol_name is
        N - 1
        A server running with the --debug
        option could attempt to dereference a null pointer when opening
        tables, resulting in a crash.
       (Bug#34726)
        Assigning an “incremental” value to the
        debug system variable did not
        add the new value to the current value. For example, if the
        current debug value was
        'T', the statement SET debug =
        '+P' resulted in a value of 'P'
        rather than the correct value of 'P:T'.
       (Bug#34678)
        For debug builds, reading from
        INFORMATION_SCHEMA.TABLES or
        INFORMATION_SCHEMA.COLUMNS could
        cause assertion failures. This could happen under rare
        circumstances when INFORMATION_SCHEMA fails
        to get information about a table (for example, when a connection
        is killed).
       (Bug#34656)
        Executing a TRUNCATE TABLE
        statement on a table having both a foreign key reference and a
        DELETE trigger crashed the
        server.
       (Bug#34643)
Some subqueries using an expression that included an aggregate function could fail or in some cases lead to a crash of the server. (Bug#34620)
Dangerous pointer arithmetic crashed the server on some systems. (Bug#34598)
Creating a view inside a stored procedure could lead to a crash of the MySQL Server. (Bug#34587)
        A server crash could occur if
        INFORMATION_SCHEMA tables built in memory
        were swapped out to disk during query execution.
       (Bug#34529)
        CAST(AVG( produced incorrect results for
        non-arg) AS
        DECIMAL)DECIMAL arguments.
       (Bug#34512)
The per-thread debugging settings stack was not being deallocated before thread termination, resulting in a stack memory leak. (Bug#34424)
        Executing an ALTER VIEW statement
        on a table crashed the server.
       (Bug#34337)
        InnoDB could crash if overflow occurred for
        an AUTO_INCREMENT column.
       (Bug#34335)
        For InnoDB, exporting and importing a table
        could corrupt TINYBLOB columns,
        and a subsequent ALTER TABLE
        could corrupt TINYTEXT columns as
        well.
       (Bug#34300)
        DEFAULT 0 was not allowed for the
        YEAR data type.
       (Bug#34274)
        Under some conditions, a SET GLOBAL
        innodb_commit_concurrency or SET GLOBAL
        innodb_autoextend_increment statement could fail.
       (Bug#34223)
        mysqldump attempts to set the
        character_set_results system
        variable after connecting to the server. This failed for pre-4.1
        servers that have no such variable, but
        mysqldump did not account for this and 1)
        failed to dump database contents; 2) failed to produce any error
        message alerting the user to the problem.
       (Bug#34192)
        Use of stored functions in the WHERE clause
        for SHOW OPEN TABLES caused a
        server crash.
       (Bug#34166)
        For a FEDERATED table with an index on a
        nullable column, accessing the table could crash a server,
        return an incorrect result set, or return ERROR 1030
        (HY000): Got error 1430 from storage engine.
       (Bug#33946)
        Passing anything other than an integer argument to a
        LIMIT clause in a prepared statement would
        fail. (This limitation was introduced to avoid replication
        problems; for example, replicating the statement with a string
        argument would cause a parse failure in the slave). Now,
        arguments to the LIMIT clause are converted
        to integer values, and these converted values are used when
        logging the statement.
       (Bug#33851)
An internal buffer in mysql was too short. Overextending it could cause stack problems or segmentation violations on some architectures. (This is not a problem that could be exploited to run arbitrary code.) (Bug#33841)
        A query using WHERE
        (column1=', where
        string1' AND
        column2=constant1) OR
        (column1='string2' AND
        column2=constant2)col1 used a binary collation and
        string1 matched
        string2 except for case, failed to
        match any records even when matches were found by a query using
        the equivalent clause WHERE
        column2=.
       (Bug#33833)constant1 OR
        column2=constant2
Large unsigned integers were improperly handled for prepared statements, resulting in truncation or conversion to negative numbers. (Bug#33798)
Reuse of prepared statements could cause a memory leak in the embedded server. (Bug#33796)
        The server crashed when executing a query that had a subquery
        containing an equality X=Y where Y referred to a named select
        list expression from the parent select. The server crashed when
        trying to use the X=Y equality for
        ref-based access.
       (Bug#33794)
        Some queries using a combination of IN,
        CONCAT(), and an implicit type
        conversion could return an incorrect result.
       (Bug#33764)
        In some cases a query that produced a result set when using
        ORDER BY ASC did not return any results when
        this was changed to ORDER BY DESC.
       (Bug#33758)
Disabling concurrent inserts caused some cacheable queries not to be saved in the query cache. (Bug#33756)
        ORDER BY ... DESC sorts could produce
        misordered results.
       (Bug#33697)
        The server could crash when
        REPEAT
        or another control instruction was used in conjunction with
        labels and a
        LEAVE
        instruction.
       (Bug#33618)
The parser allowed control structures in compound statements to have mismatched beginning and ending labels. (Bug#33618)
        make_binary_distribution passed the
        --print-libgcc-file option to the C compiler,
        but this does not work with the ICC compiler.
       (Bug#33536)
        Threads created by the event scheduler were incorrectly counted
        against the max_connections
        thread limit, which could lead to client lockout.
       (Bug#33507)
Dropping a function after dropping the function's creator could cause the server to crash. (Bug#33464)
Certain combinations of views, subselects with outer references and stored routines or triggers could cause the server to crash. (Bug#33389)
        SET GLOBAL myisam_max_sort_file_size=DEFAULT
        set myisam_max_sort_file_size
        to an incorrect value.
       (Bug#33382)
See also Bug#31177.
        ENUM- or
        SET-valued plugin variables could not be set
        from the command line.
       (Bug#33358)
Loading plugins via command-line options to mysqld could cause an assertion failure. (Bug#33345)
        SLEEP(0) failed to return on
        64-bit Mac OS X due to a bug in
        pthread_cond_timedwait().
       (Bug#33304)
Using Control-R in the mysql client caused it to crash. (Bug#33288)
        For MyISAM tables, CHECK
        TABLE (non-QUICK) and any form of
        REPAIR TABLE incorrected treated
        rows as corrupted under the combination of the following
        conditions:
      
The table had dynamic row format
            The table had a CHAR (not
            VARCHAR) column longer than
            127 bytes (for multi-byte character sets this could be less
            than 127 characters)
          
            The table had rows with a signifcant length of more than 127
            bytes significant length in that
            CHAR column (that is, a byte
            beyond byte position 127 must be a nonspace character)
          
        This problem affected CHECK
        TABLE, REPAIR TABLE,
        OPTIMIZE TABLE,
        ALTER TABLE.
        CHECK TABLE reported and marked
        the table as crashed if any row was present that fulfilled the
        third condition. The other statements deleted these rows.
       (Bug#33222)
        Granting the UPDATE privilege on
        one column of a view caused the server to crash.
       (Bug#33201)
        For DECIMAL columns used with the
        ROUND(
        or
        X,D)TRUNCATE(
        function with a nonconstant value of
        X,D)D, adding an ORDER
        BY for the function result produced misordered output.
       (Bug#33143)
        The CSV engine did not honor update requests
        for BLOB columns when the new
        column value had the same length as the value to be updated.
       (Bug#33067)
        After receiving a SIGHUP signal, the server
        could crash, and user-specified log options were ignored when
        reopening the logs.
       (Bug#33065)
When MySQL was built with OpenSSL, the SSL library was not properly initialized with information of which endpoint it was (server or client), causing connection failures. (Bug#33050)
        Under some circumstances a combination of aggregate functions
        and GROUP BY in a
        SELECT query over a view could
        lead to incorrect calculation of the result type of the
        aggregate function. This in turn could lead to incorrect
        results, or to crashes on debug builds of the server.
       (Bug#33049)
        For DISTINCT queries, MySQL 4.0 and 4.1
        stopped reading joined tables as soon as the first matching row
        was found. However, this optimization was lost in MySQL 5.0,
        which instead read all matching rows. This fix for this
        regression may result in a major improvement in performance for
        DISTINCT queries in cases where many rows
        match.
       (Bug#32942)
Repeated creation and deletion of views within prepared statements could eventually crash the server. (Bug#32890)
See also Bug#34587.
        Incorrect assertions could cause a server crash for
        DELETE triggers for transactional
        tables.
       (Bug#32790)
In some cases where setting a system variable failed, no error was sent to the client, causing the client to hang. (Bug#32757)
        Enabling the
        PAD_CHAR_TO_FULL_LENGTH SQL
        mode caused privilege-loading operations (such as
        FLUSH
        PRIVILEGES) to include trailing spaces from grant
        table values stored in CHAR
        columns. Authentication for incoming connections failed as a
        result. Now privilege loading does not include trailing spaces,
        regardless of SQL mode.
       (Bug#32753)
        The SHOW ENGINE
        INNODB STATUS and
        SHOW ENGINE INNODB
        MUTEX statements incorrectly required the
        SUPER privilege rather than the
        PROCESS privilege.
       (Bug#32710)
        Inserting strings with a common prefix into a table that used
        the ucs2 character set corrupted the table.
       (Bug#32705)
        Tables in the mysql database that stored the
        current sql_mode value as part
        of stored program definitions were not updated with newer mode
        values
        (NO_ENGINE_SUBSTITUTION,
        PAD_CHAR_TO_FULL_LENGTH). This
        causes various problems defining stored programs if those modes
        were included in the current
        sql_mode value.
       (Bug#32633)
A view created with a string literal for one of the columns picked up the connection character set, but not the collation. Comparison to that field therefore used the default collation for that character set, causing an error if the connection collation was not compatible with the default collation. The problem was caused by text literals in a view being dumped with a character set introducer even when this was not necessary, sometimes leading to a loss of collation information. Now the character set introducer is dumped only if it was included in the original query. (Bug#32538)
See also Bug#21505.
        Queries using LIKE on tables having indexed
        CHAR columns using either of the
        eucjpms or ujis character
        sets did not return correct results.
       (Bug#32510)
Executing a prepared statement associated with a materialized cursor sent to the client a metadata packet with incorrect table and database names. The problem occurred because the server sent the name of the temporary table used by the cursor instead of the table name of the original table.
The same problem occured when selecting from a view, in which case the name of the table name was sent, rather than the name of the view. (Bug#32265)
        On Windows, mysqltest_embedded.exe did not
        properly execute the send command.
       (Bug#32044)
        A variable named read_only
        could be declared even though that is a reserved word.
       (Bug#31947)
On Windows, the build process failed with four parallel build threads. (Bug#31929)
        Queries testing numeric constants containing leading zeroes
        against ZEROFILL columns were not evaluated
        correctly.
       (Bug#31887)
If an error occurred during file creation, the server sometimes did not remove the file, resulting in an unused file in the file system. (Bug#31781)
When upgrading from MySQL 5.1.19 to any version between MySQL 5.1.20 to MySQL 5.1.23, the MySQL Instance Configuration Wizard would fail to account for the change in name for the mysqld-nt.exe to mysqld.exe, causing MySQL to fail to start properly after the upgrade. (Bug#31674)
The server returned the error message Out of memory; restart server and try again when the actual problem was that the sort buffer was too small. Now an appropriate error message is returned in such cases. (Bug#31590)
        A table having an index that included a
        BLOB or
        TEXT column, and that was
        originally created with a MySQL server using version 4.1 or
        earlier, could not be opened by a 5.1 or later server.
       (Bug#31331)
        The -, *, and
        / operators and the functions
        POW() and
        EXP() could misbehave when used
        with floating-point numbers. Previously they might return
        +INF, -INF, or
        NaN in cases of numeric overflow (including
        that caused by division by zero) or when invalid arguments were
        used. Now NULL is returned in all such cases.
       (Bug#31236)
        The mysql_change_user() C API
        function caused global
        Com_ status
        variable values to be incorrect.
       (Bug#31222)xxx
        When sorting privilege table rows, the server treated escaped
        wildcard characters (\% and
        \_) the same as unescaped wildcard characters
        (% and _), resulting in
        incorrect row ordering.
       (Bug#31194)
        On Windows, SHOW PROCESSLIST
        could display process entries with a State
        value of *** DEAD ***.
       (Bug#30960)
        ROUND(
        or
        X,D)TRUNCATE(
        for nonconstant values of X,D)D could
        crash the server if these functions were used in an
        ORDER BY that was resolved using
        filesort.
       (Bug#30889)
        Resetting the query cache by issuing a SET GLOBAL
        query_cache_size=0 statement caused the server to
        crash if it concurrently was saving a new result set to the
        query cache.
       (Bug#30887)
Manifest problems prevented MySQLInstanceConfig.exe from running on Windows Vista. (Bug#30823)
If an alias was used to refer to the value returned by a stored function within a subselect, the outer select recognized the alias but failed to retrieve the value assigned to it in the subselect. (Bug#30787)
Binary logging for a stored procedure differed depending on whether or not execution occurred in a prepared statement. (Bug#30604)
An orphaned PID file from a no-longer-running process could cause mysql.server to wait for that process to exit even though it does not exist. (Bug#30378)
        The Table_locks_waited waited
        variable was not incremented in the cases that a lock had to be
        waited for but the waiting thread was killed or the request was
        aborted.
       (Bug#30331)
        The Com_create_function status variable was
        not incremented properly.
       (Bug#30252)
        View metadata returned from
        INFORMATION_SCHEMA.VIEWS was
        changed by the fix for Bug#11986, causing the information
        returned in MySQL 5.1 to differ from that returned in 5.0.
       (Bug#30217)
        mysqld displayed the
        --enable-pstack option in its
        help message even if MySQL was configured without
        --with-pstack.
       (Bug#29836)
        The mysql_config command would output
        CFLAGS values that were incompatible with C++
        for the HP-UX platform.
       (Bug#29645)
Views were treated as insertable even if some base table columns with no default value were omitted from the view definition. (This is contrary to the condition for insertability that a view must contain all columns in the base table that do not have a default value.) (Bug#29477)
        myisamchk always reported the character set
        for a table as latin1_swedish_ci (8)
        regardless of the table' actual character set.
       (Bug#29182)
        InnoDB could return an incorrect rows-updated
        value for UPDATE statements.
       (Bug#29157)
The MySQL preferences pane did not work to start or stop MySQL on Mac OS X 10.5 (Leopard). (Bug#28854)
For upgrading to a new major version using RPM packages (such as 4.1 to 5.0), if the installation procedure found an existing MySQL server running, it could fail to shut down the old server, but also erroneously removed the server's socket file. Now the procedure checks for an existing server package from a different vendor or major MySQL version. In such case, it refuses to install the server and recommends how to safely remove the old packages before installing the new ones. (Bug#28555)
mysqlhotcopy silently skipped databases with names consisting of two alphanumeric characters. (Bug#28460)
        No information was written to the general query log for the
        COM_STMT_CLOSE,
        COM_STMT_RESET, and
        COM_STMT_SEND_LONG_DATA commands. (These
        occur when a client invokes the
        mysql_stmt_close(),
        mysql_stmt_reset() and
        mysql_stmt_send_long_data() C
        API functions.)
       (Bug#28386)
        Previously, the parser accepted the ODBC { OJ ... LEFT
        OUTER JOIN ...} syntax for writing left outer joins.
        The parser now allows { OJ ... } to be used
        to write other types of joins, such as INNER
        JOIN or RIGHT OUTER JOIN. This
        helps with compatibility with some third-party applications, but
        is not official ODBC syntax.
       (Bug#28317)
        The FEDERATED storage engine did not perform
        identifier quoting for column names that are reserved words when
        sending statements to the remote server.
       (Bug#28269)
        The SQL parser did not accept an empty
        UNION=() clause. This meant that, when there
        were no underlying tables specified for a
        MERGE table, SHOW CREATE
        TABLE and mysqldump both output
        statements that could not be executed.
      
        Now it is possible to execute a CREATE
        TABLE or ALTER TABLE
        statement with an empty UNION=() clause.
        However, SHOW CREATE TABLE and
        mysqldump do not output the
        UNION=() clause if there are no underlying
        tables specified for a MERGE table. This also
        means it is now possible to remove the underlying tables for a
        MERGE table using ALTER TABLE ...
        UNION=().
       (Bug#28248)
        It was possible to exhaust memory by repeatedly running
        index_merge queries and never
        performing any FLUSH
        TABLES statements.
       (Bug#27732)
        When utf8 was set as the connection character
        set, using SPACE() with a
        non-Unicode column produced an error.
       (Bug#27580)
See also Bug#23637.
        The parser rules for the SHOW
        PROFILE statement were revised to work with older
        versions of bison.
       (Bug#27433)
resolveip failed to produce correct results for host names that begin with a digit. (Bug#27427)
        In ORDER BY clauses, mixing aggregate
        functions and nongrouping columns is not allowed if the
        ONLY_FULL_GROUP_BY SQL mode is
        enabled. However, in some cases, no error was thrown because of
        insufficient checking.
       (Bug#27219)
        For the --record_log_pos
        option, mysqlhotcopy now determines the slave
        status information from the result of SHOW
        SLAVE STATUS by using the
        Relay_Master_Log_File and
        Exec_Master_Log_Pos values rather than the
        Master_Log_File and
        Read_Master_Log_Pos values. This provides a
        more accurate indication of slave execution relative to the
        master.
       (Bug#27101)
The MySQL Instance Configuration Wizard would not allow you to choose a service name, even though the criteria for the service name were valid. The code that checks the name has been updated to support the correct criteria of any string less than 256 character and not containing either a forward or backward slash character. (Bug#27013)
        Memory corruption, a crash of the MySQL server, or both, could
        take place if a low-level I/O error occurred while an
        ARCHIVE table was being opened.
       (Bug#26978)
        DROP DATABASE failed for attempts
        to drop databases with names that contained the legacy
        #mysql50# name prefix.
       (Bug#26703)
        config-win.h unconditionally defined
        bool as BOOL,
        causing problems on systems where bool is 1
        byte and BOOL is 4 bytes.
       (Bug#26461)
On Windows, for distributions built with debugging support, mysql could crash if the user typed Control-C. (Bug#26243)
        The XPath boolean() function did not cast
        string and nodeset values correctly in some cases. It now
        returns TRUE for any nonempty string or
        nodeset and 0 for a NULL string, as specified
        in the XPath standard..
       (Bug#26051)
        When symbolic links were disabled, either with a server startup
        option or by enabling the
        NO_DIR_IN_CREATE SQL mode,
        CREATE TABLE silently ignored the
        DATA DIRECTORY and INDEX
        DIRECTORY table options. Now the server issues a
        warning if symbolic links are disabled when these table options
        are used.
       (Bug#25677)
        Attempting to create an index with a prefix on a
        DECIMAL column appeared to
        succeed with an inaccurate warning message. Now, this action
        fails with the error Incorrect prefix key; the used
        key part isn't a string, the used length is longer than the key
        part, or the storage engine doesn't support unique prefix
        keys.
       (Bug#25426)
mysqlcheck -A -r did not correctly identify all tables that needed repairing. (Bug#25347)
        On Windows, an error in configure.js caused
        installation of source distributions to fail.
       (Bug#25340)
        The Qcache_free_blocks status
        variable did not display a value of 0 if the query cache was
        disabled.
       (Bug#25132)
        The client library had no way to return an error if no
        connection had been established. This caused problems such as
        mysql_library_init() failing
        silently if no errmsg.sys file was
        available.
       (Bug#25097)
On Mac OS X, the StartupItem for MySQL did not work. (Bug#25008)
For Windows 64-bit builds, enabling shared-memory support caused client connections to fail. (Bug#24992)
mysql did not use its completion table. Also, the table contained few entries. (Bug#24624)
        If a user installed MySQL Server and set a password for the
        root user, and then uninstalled and
        reinstalled MySQL Server to the same location, the user could
        not use the MySQL Instance Config wizard to configure the server
        because the uninstall operation left the previous data directory
        intact. The config wizard assumed that any
        new install (not an upgrade) would have the default data
        directory where the root user has no
        password. The installer now writes a registry key named
        FoundExistingDataDir. If the installer finds
        an existing data directory, the key will have a value of 1,
        otherwise it will have a value of 0. When
        MySQLInstanceConfig.exe is run, it will
        attempt to read the key. If it can read the key, and the value
        is 1 and there is no existing instance of the server (indicating
        a new installation), the Config Wizard will allow the user to
        input the old password so the server can be configured.
       (Bug#24215)
        Logging of statements to log tables was incorrect for statements
        that contained utf8-incompatible binary
        strings. Incompatible sequences are hex-encoded now.
       (Bug#23924)
The MySQL header files contained some duplicate macro definitions that could cause compilation problems. (Bug#23839)
        SHOW COLUMNS on a
        TEMPOARY table caused locking issues.
       (Bug#23588)
        For distributions compiled with the bundled
        libedit library, there were difficulties
        using the mysql client to enter input for
        non-ASCII or multi-byte characters.
       (Bug#23097)
perror reported incomplete or inaccurate information. (Bug#23028, Bug#25177)
After stopping and starting the event scheduler, disabled events could remain in the execution queue. (Bug#22738)
The server produced a confusing error message when attempting to open a table that required a storage engine that was not loaded. (Bug#22708)
        For views or stored programs created with an invalid
        DEFINER value, the error message was
        confusing (did not tie the problem to the
        DEFINER clause) and has been improved.
       (Bug#21854)
Warnings for deprecated syntax constructs used in stored routines make sense to report only when the routine is being created, but they were also being reported when the routine was parsed for loading into the execution cache. Now they are reported only at routine creation time. (Bug#21801)
        On Mac OS X, mysqld did not react to Ctrl-C
        when run under gdb, even when run with the
        --gdb option.
       (Bug#21567)
        CREATE ... SELECT did not always set
        DEFAULT column values in the new table.
       (Bug#21380)
        mysql_config output did not include
        -lmygcc on some platforms when it was needed.
       (Bug#21158)
mysql-stress-test.pl and mysqld_multi.server.sh were missing from some binary distributions. (Bug#21023, Bug#25486)
        The BENCHMARK() function, invoked
        with more than 2147483648 iterations (the size of a signed
        32-bit integer), terminated prematurely.
       (Bug#20752)
mysqldumpslow returned a confusing error message when no configuration file was found. (Bug#20455)
        MySQLInstanceConfig.exe could lose the
        innodb_data_home_dir setting
        when reconfiguring an instance.
       (Bug#19797)
        DROP DATABASE did not drop
        orphaned FOREIGN KEY constraints.
       (Bug#18942)
        CREATE TABLE allowed 0 as the
        default value for a TIMESTAMP
        column when the server was running in
        NO_ZERO_DATE mode.
       (Bug#18834)
        A SET column whose definition specified 64
        elements could not be updated using integer values.
       (Bug#15409)
        If a SELECT calls a stored
        function in a transaction, and a statement within the function
        fails, that statement should roll back. Furthermore, if
        ROLLBACK is
        executed after that, the entire transaction should be rolled
        back. Before this fix, the failed statement did not roll back
        when it failed (even though it might ultimately get rolled back
        by a ROLLBACK
        later that rolls back the entire transaction).
       (Bug#12713)
See also Bug#34655.
        The parser incorrectly allowed SQLSTATE
        '00000' to be specified for a condition handler. (This
        is incorrect because the condition must be a failure condition
        and '00000' indicates success.)
       (Bug#8759)
        MySQLInstanceConfig.exe did not save the
        innodb_data_home_dir value to
        the my.ini file under certain
        circumstances.
       (Bug#6627)


User Comments
Add your own comment.