Functionality added or changed:
Incompatible Change: 
        The InnoDB storage engine no longer ignores
        trailing spaces when comparing
        BINARY or
        VARBINARY column values. This
        means that (for example) the binary values
        'a' and 'a ' are now
        regarded as unequal any time they are
        compared, as they are in MyISAM tables.
      
        See Section 10.4.2, “The BINARY and
        VARBINARY Types” for more information
        about the BINARY and
        VARBINARY types.
       (Bug#14189)
MySQL Cluster: 
        More descriptive warnings are now issued when inappropriate
        logging parameters are set in config.ini.
        (Formerly, the warning issued was simply Could not
        add logfile destination.)
       (Bug#11331)
MySQL Cluster: 
        The ndb_mgm client commands
         and
        node_id START now
        work with management nodes as well as data nodes. However, using
        node_id STOPALL for node_id
        continues to affect all data nodes only.
      
mysql no longer terminates data value display when it encounters a NUL byte. Instead, it displays NUL bytes as spaces. (Bug#16859)
        New charset command added to
        mysql command-line client. By typing
        charset  or
        name\C  (such as
        name\C UTF8), the client character set can be
        changed without reconnecting.
       (Bug#16217)
        Added the --wait-timeout option to
        mysqlmanager to allow configuration of the
        timeout for dropping an inactive connection, and increased the
        default timeout from 30 seconds to 28,800 seconds (8 hours).
       (Bug#15980, Bug#12674)
        The INFORMATION_SCHEMA now skips data
        contained in unlistable/unreadable directories rather than
        returning an error.
       (Bug#15851)
        InnoDB now caches a list of unflushed files
        instead of scanning for unflushed files during a table flush
        operation. This improves performance when
        --innodb_file_per_table is set on
        a system with a large number of InnoDB
        tables.
       (Bug#15653)
        Added the --port-open-timeout
        option to mysqld to control how many seconds
        the server should wait for the TCP/IP port to become free if it
        cannot be opened.
       (Bug#15591)
Wording of error 1329 changed to No data - zero rows fetched, selected, or processed. (Bug#15206)
The message for error 1109 changed from Unknown table ... in order clause to Unknown table ... in field list. (Bug#15091)
        A number of performance issues were resolved that had previously
        been encountered when using statements that repeatedly invoked
        stored functions. For example, calling
        BENCHMARK() using a stored
        function executed much more slowly than when invoking it with
        inline code that accomplished the same task. In most cases the
        two should now execute with approximately the same speed.
       (Bug#14946, Bug#15014)
        mysqldump now surrounds the
        DEFINER, SQL SECURITY
        DEFINER and WITH CHECK OPTION
        clauses of a CREATE VIEW
        statement with "not in version" comments to prevent errors in
        earlier versions of MySQL.
       (Bug#14871)
        When using the GROUP_CONCAT()
        function where the
        group_concat_max_len system
        variable was greater than 512, the type of the result was
        BLOB only if the query included
        an ORDER BY clause; otherwise the result was
        a VARCHAR.
      
        The result type of the
        GROUP_CONCAT() function is now
        VARCHAR only if the value of the
        group_concat_max_len system
        variable is less than or equal to 512. Otherwise, this function
        returns a BLOB.
       (Bug#14169)
        The mysql_ping() function will
        now retry if the reconnect flag is set and
        error CR_SERVER_LOST is
        encountered during the first attempt to ping the server.
       (Bug#14057)
        The mysqltest utility now converts all
        CR/LF combinations to LF
        to allow test cases intended for Windows to work properly on
        UNIX-like systems.
       (Bug#13809)
        libmysqlclient now uses versioned symbols
        with GNU ld.
       (Bug#3074)
        The client API now attempts to reconnect using TCP/IP if the
        reconnect flag is set, as is the case with
        sockets.
       (Bug#2845)
        Two new Hungarian collations are included:
        utf8_hungarian_ci and
        ucs2_hungarian_ci. These support the correct
        sort order for Hungarian vowels. However, they do not support
        the correct order for sorting Hungarian consonant contractions;
        we expect to fix this issue in a future release.
      
Several changes were made to make upgrades easier:
Added the mysql_upgrade program that checks all tables for incompatibilities with the current version of MySQL Server and repairs them if necessary. This program should be run for each MySQL upgrade (rather than mysql_fix_privilege_tables). See Section 4.4.9, “mysql_upgrade — Check Tables for MySQL Upgrade”.
            Added the FOR UPGRADE option for the
            CHECK TABLE statement. This
            option checks whether tables are incompatible with the
            current version of MySQL Server.
          
            Added the --check-upgrade
            to mysqlcheck that invokes
            CHECK TABLE with the
            FOR UPGRADE option.
          
Bugs fixed:
MySQL Cluster: 
        Cluster log file paths were truncated to 128 characters. They
        may now be as long as MAX_PATH (the maximum
        path length permitted by the operating system).
       (Bug#17411)
MySQL Cluster: 
        Following multiple forced shutdowns and restarts of data nodes,
        DROP DATABASE could fail.
       (Bug#17325)
MySQL Cluster: 
        The REDO log would become corrupted (and thus
        unreadable) in some circumstances, due to a failure in the query
        handler.
       (Bug#17295)
MySQL Cluster: 
        An UPDATE with an inner join
        failed to match any records if both tables in the join did not
        have a primary key.
       (Bug#17257)
MySQL Cluster: 
        A DELETE with a join in the
        WHERE clause failed to retrieve any records
        if both tables in the join did not have a primary key.
       (Bug#17249)
MySQL Cluster: 
        The error message returned by perror
        --ndb was prefixed with
        OS error code instead of NDB
        error code.
       (Bug#17235)
MySQL Cluster: 
        In some cases, LOAD
        DATA INFILE did not load all data into
        NDB tables.
       (Bug#17081)
MySQL Cluster: 
        ndb_delete_all ran out of memory when
        processing tables containing BLOB
        columns.
       (Bug#16693)
MySQL Cluster: 
        A BIT column whose offset and
        length totaled 32 caused the cluster to crash.
       (Bug#16125)
MySQL Cluster: 
        UNIQUE keys in Cluster tables were limited to
        225 bytes in length.
       (Bug#15918)
MySQL Cluster: 
        The ndb_autodiscover test failed sporadically
        due to a node not being permitted to connect to the cluster.
       (Bug#15619)
MySQL Cluster: 
        NDB returned an incorrect
        Can't find file error for OS error 24;
        this has been changed to Too many open
        files.
       (Bug#15020)
MySQL Cluster: 
        No error message was generated for setting
        NoOfFragmentLogFiles too low.
       (Bug#13966)
MySQL Cluster: 
        No error message was generated for setting
        MaxNoOfAttributes too low.
       (Bug#13965)
MySQL Cluster: When running more than one management process in a cluster:
              ndb_mgm -c
              host:port
              -e "node_id STOP"
              stopped a management process running only on the same
              system where the command was issued.
            
ndb_mgm -e "SHUTDOWN" failed to shut down any management processes at all.
MySQL Cluster: 
        ndb_mgm -c
        host:port
        -e "node_id STOP" would
        stop a management process running only on the same system on
        which the command was issued.
      
MySQL Cluster: ndb_mgm -e "SHUTDOWN" failed to shut down any management processes at all.
Replication: 
        For a transaction that used MyISAM and
        InnoDB tables, interruption of the
        transaction due to a dropped connection on a master server
        caused slaves to lose synchrony.
       (Bug#16559)
Replication: 
        The --replicate-do and
        --replicate-ignore options were not being
        enforced on multiple-table statements.
       (Bug#16487, Bug#15699)
Replication: 
        Previously, a stored function invocation was written to the
        binary log as DO
         if the
        invocation changes data and occurs within a nonlogged statement,
        or if the function invokes a stored procedure that produces an
        error. These invocations now are logged as func_name()SELECT
         instead for
        better control over error code checking (slave servers could
        stop due to detecting a different error than occurred on the
        master).
       (Bug#14769)func_name()
Replication: 
        BIT fields were not properly
        handled when using row-based replication.
       (Bug#13418)
Cluster API: Upon the completion of a scan where a key request remained outstanding on the primary replica and a starting node died, the scan did not terminate. This caused incomplete error handling for the failed node. (Bug#15908)
        type_decimal failed with the prepared
        statement protocol.
       (Bug#17826)
        The MySQL server could crash with out of memory errors when
        performing aggregate functions on a
        DECIMAL column.
       (Bug#17602)
        Using DROP FUNCTION IF EXISTS
         to drop a
        user-defined function caused a server crash if the server was
        running with the
        func_name--skip-grant-tables option.
       (Bug#17595)
        Data truncations on non-UNIQUE indexes could
        crash InnoDB when using multi-byte character
        sets.
       (Bug#17530)
        A natural join between INFORMATION_SCHEMA
        tables failed.
       (Bug#17523)
A stored procedure failed to return data the first time it was called per connection. (Bug#17476)
        For certain MERGE tables, the optimizer
        wrongly assumed that using
        index_merge/intersection was too expensive.
       (Bug#17314)
        The parser allowed CREATE AGGREGATE FUNCTION
        for creating stored functions, even though
        AGGREGATE does not apply. (It is used only
        for CREATE FUNCTION only when
        creating user-defined functions.)
       (Bug#16896)
Cursors in stored routines could cause a server crash. (Bug#16887)
        Triggers created without BEGIN and
        END clauses resulted in “You have an
        error in your SQL syntax” errors when dumping and
        replaying a binary log.
       (Bug#16878)
        Using ALTER TABLE to increase the
        length of a
        BINARY( column
        caused column values to be padded with spaces rather than
        M)0x00 bytes.
       (Bug#16857)
        A RETURN statement within a
        trigger caused a server crash.
        RETURN now is disallowed within
        triggers. To exit immediately, use
        LEAVE.
       (Bug#16829)
        For a MySQL 5.0 server, using MySQL 4.1 tables in queries with a
        GROUP BY clause could result in buffer
        overrun or a server crash.
       (Bug#16752)
        An INSERT statement in a stored
        procedure corrupted the binary log.
       (Bug#16621)
        If the query optimizer transformed a GROUP BY
        clause in a subquery, it did not also transform the
        HAVING clause if there was one, producing
        incorrect results.
       (Bug#16603)
In a highly concurrent environment, a server crash or deadlock could result from execution of a statement that used stored functions or activated triggers coincident with alteration of the tables used by these functions or triggers. (Bug#16593)
        A race condition could occur when dropping the adaptive hash
        index for a B-tree page in InnoDB.
       (Bug#16582)
        When evaluation of the test in a
        CASE
        failed in a stored procedure that contained a
        CONTINUE handler, execution resumed at the
        beginning of the CASE statement instead of at the end.
       (Bug#16568)
        Clients compiled from source with the
        --without-readline did not save command history
        from session to session.
       (Bug#16557)
        The DECIMAL data type was not
        being handled correctly with prepared statements.
       (Bug#16511)
Instance Manager searched wrong location for password file on some platforms. (Bug#16499)
        UPDATE statement crashed
        multi-byte character set FULLTEXT index if
        update value was almost identical to initial value only
        differing in some spaces being changed to  .
       (Bug#16489)
        Certain nested LEFT JOIN operations were not
        properly optimized.
       (Bug#16393)
        Dropping InnoDB constraints named
        
        could crash the server.
       (Bug#16387)tbl_name_ibfk_0
        SELECT with GROUP
        BY on a view could cause a server crash.
       (Bug#16382)
An invalid stored routine could not be dropped. (Bug#16303)
        InnoDB: After upgrading an
        InnoDB table having a VARCHAR
        BINARY column created in MySQL 4.0 to MySQL 5.0,
        update operations on the table would cause the server to crash.
       (Bug#16298)
Parallel builds occasionally failed on Solaris. (Bug#16282)
        A call to the IF() function using
        decimal arguments could return incorrect results.
       (Bug#16272)
        MySQL server dropped client connection for certain
        SELECT statements against views
        defined that used MERGE algorithm.
       (Bug#16260)
        InnoDB used full explicit table locks in
        trigger processing.
       (Bug#16229)
        Using GROUP BY on column used in
        WHERE clause could cause empty set to be
        returned.
       (Bug#16203)
A memory leak caused warnings on slaves for certain statements that executed without warning on the master. (Bug#16175)
        The FORCE INDEX keyword in a query would
        prevent an index merge from being used where an index merge
        would normally be chosen by the optimizer.
       (Bug#16166)
        Setting InnoDB path settings to an empty
        string caused InnoDB storage engine to crash
        upon server startup.
       (Bug#16157)
        The mysql_stmt_sqlstate() C API
        function incorrectly returned an empty string rather than
        '00000' when no error occurred.
       (Bug#16143)
        MIN() and
        MAX() operations were not
        optimized for views.
       (Bug#16016)
        Performing a RENAME TABLE on an
        InnoDB table when the server was started with
        the --innodb_file_per_table
        option and the data directory was a symlink caused a server
        crash.
       (Bug#15991)
        Executing a SHOW CREATE VIEW
        query of an invalid view caused the
        mysql_next_result() function of
        libMySQL.dll to hang.
       (Bug#15943)
        Test suite sp test left behind tables when
        the test failed that could cause future tests to fail.
       (Bug#15866)
        STR_TO_DATE(1,NULL) caused a
        server crash.
       (Bug#15828, CVE-2006-3081)
        CAST(... AS TIME) operations
        returned different results when using versus not using
        prepared-statement protocol.
       (Bug#15805)
        Issuing a DROP USER command could
        cause some users to encounter a 
         error.
       (Bug#15775)hostname is not allowed to connect to
        this MySQL server
        The contents of fill_help_tables.sql could
        not be loaded in strict SQL mode.
       (Bug#15760)
        fill_help_tables.sql was not included in
        binary distributions for several platforms.
       (Bug#15759)
        Certain
        LEAVE
        statements in stored procedures were not properly optimized.
       (Bug#15737)
        The mysql_real_connect() C API
        function incorrectly reset the
        MYSQL_OPT_RECONNECT option to its default
        value.
       (Bug#15719)
        Created a user function with an empty string (that is,
        CREATE FUNCTION ''()), was accepted by the
        server. Following this, calling SHOW
        FUNCTION STATUS would cause the server to crash.
       (Bug#15658)
        Trying to compile the server on Windows generated a stack
        overflow warning due to a recursive definition of the internal
        Field_date::store() method.
       (Bug#15634)
In some cases the query optimizer did not properly perform multiple joins where inner joins followed left joins, resulting in corrupted result sets. (Bug#15633)
        Certain permission management statements could create a
        NULL host name for a user, resulting in a
        server crash.
       (Bug#15598)
Improper memory handling for stored routine variables could cause memory overruns and binary log corruption. (Bug#15588)
        The COALESCE() function truncated
        data in a TINYTEXT column.
       (Bug#15581)
        Binary distributions for Solaris contained files with group
        ownership set to the nonexisting wheel group.
        Now the bin group is used.
       (Bug#15562)
The absence of a table in the left part of a left or right join was not checked prior to name resolution, which resulted in a server crash. (Bug#15538)
        A SELECT of a stored function
        that references the INFORMATION_SCHEMA could
        crash the server.
       (Bug#15533)
        Characters in the gb2312 and
        euckr character sets which did not have
        Unicode mappings were truncated.
       (Bug#15377)
Certain subqueries where the inner query was the result of a aggregate function would return different results with MySQL 5.0 than with MySQL 4.1.
Subselects could also return wrong results when the query cache and grouping were involved. (Bug#15347)
        Performing an ORDER BY on an indexed
        ENUM column returned error.
       (Bug#15308)
        A SELECT query which contained a
        GROUP_CONCAT() and an
        ORDER BY clause against the
        INFORMATION_SCHEMA resulted in an empty
        result set.
       (Bug#15307)
        The NOT FOUND condition handler for stored
        procedures did not distinguish between a NOT
        FOUND condition and an exception or warning.
       (Bug#15231)
        The SELECT privilege was required
        for triggers that performed no selects.
       (Bug#15196)
An attempt to open a table that requires a disabled storage engine could cause a server crash. (Bug#15185)
        The UPDATE privilege was required
        for triggers that performed no updates.
       (Bug#15166)
        Tarball install package was missing a proper
        fill_help_tables.sql file.
       (Bug#15151)
        Setting innodb_log_file_size to
        a value greater than 4G crashed the server.
       (Bug#15108)
When multiple handlers are created for the same MySQL error number within nested blocks, the outermost handler took precedence. (Bug#15011)
        A statement containing GROUP BY and
        HAVING clauses could return incorrect results
        when the HAVING clause contained logic that
        returned FALSE for every row.
       (Bug#14927)
        Stored routines that contained only a single statement were not
        written properly to the dumpfile when using
        mysqldump.
       (Bug#14857)
Killing a long-running query containing a subquery could cause a server crash. (Bug#14851)
        GRANT statements specifying
        schema names that included underscore characters (that is,
        my_schema) did not match if the underscore
        was escaped in the GRANT
        statement (that is, GRANT ALL ON `my\_schema`
        ...).
       (Bug#14834)
        Generating an AUTO_INCREMENT value through a
        FEDERATED table did not set the value
        returned by LAST_INSERT_ID().
       (Bug#14768)
        SUBSTRING_INDEX() could yield
        inconsistent results when applied with the same arguments to
        consecutive rows in a query.
       (Bug#14676)
        Running out of diskspace in the location specified by the
        tmpdir option resulted in
        incorrect error message.
       (Bug#14634)
        InnoDB: Comparison of indexed
        VARCHAR CHARACTER SET ucs2 COLLATE ucs2_bin
        columns using LIKE could fail.
       (Bug#14583)
A stored procedure with an undefined variable and an exception handler would hang the client when called. (Bug#14498)
        A FULLTEXT query in a prepared statement
        could result in unexpected behavior.
       (Bug#14496)
        Using an aggregate function as the argument for a
        HAVING clause resulted in the aggregate
        function always returning FALSE.
       (Bug#14274)
        The use of LOAD INDEX within a
        stored routine was permitted and caused the server to crash.
      
          LOAD INDEX statements within
          stored routines are not supported, and
          now yield an error if attempted. This behavior is intended.
        
        A COMMIT statement followed by a
        ALTER TABLE statement on a BDB
        table caused server crash.
       (Bug#14212)
        The mysql_stmt_store_result() C
        API function could not be used for a prepared statement if a
        cursor had been opened for the statement.
       (Bug#14013)
        SET sql_mode = ,
        where NN > 31, did not work
        properly.
       (Bug#13897)
        Attempts to create FULLTEXT indexes on
        VARCHAR columns larger than 1000
        bytes resulted in error.
       (Bug#13835)
        The RENAME TABLE statement did
        not move triggers to the new table.
       (Bug#13525)
        The length of a VARCHAR() column that used
        the utf8 character set would increase each
        time the table was re-created in a stored procedure or prepared
        statement, eventually causing the CREATE
        TABLE statement to fail.
       (Bug#13134)
        Instance Manager erroneously accepted a list of instance
        identifiers for the START INSTANCE and
        STOP INSTANCE commands (should accept only a
        single identifier).
       (Bug#12813)
        A prepared statement created from a SELECT ...
        LIKE query (such as PREPARE stmt1 FROM
        'SELECT col_1 FROM tedd_test WHERE col_1 LIKE ?';)
        would begin to produce erratic results after being executed
        repeatedly numerous (thousands) of times.
       (Bug#12734)
        Multi-byte path names for LOAD
        DATA and
        SELECT ... INTO
        OUTFILE caused errors. Added the
        character_set_filesystem system
        variable, which controls the interpretation of string literals
        that refer to file names.
       (Bug#12448)
Temporary table aliasing did not work inside stored functions. (Bug#12198)
        The embedded server did not allow binding of columns to the
        MYSQL_TYPE_VAR_STRING data type in prepared
        statements.
       (Bug#12070)
        When MyODBC or any other client called
        my_init()/my_end()
        several times, it caused corruption of charset data stored in
        once_mem_pool.
       (Bug#11892)
        Setting the
        myisam_repair_threads system
        variable to a value larger than 1 could cause corruption of
        large MyISAM tables.
       (Bug#11527)
        The mysqlbinlog utility did not output
        DELIMITER statements, causing syntax errors
        for stored routine creation statements.
       (Bug#11312)
The embedded server failed various tests in the automated test suite. (Bug#10801, Bug#10925, Bug#15433, Bug#9633, Bug#10926, Bug#9631, Bug#10930, Bug#10911, Bug#9630, Bug#10924)
        A large BIGINT value specified in
        a WHERE clause could be treated differently
        depending on whether it is specified as a quoted string. (For
        example, WHERE bigint_col =
        17666000000000000000 versus WHERE bigint_col
        = '17666000000000000000').
       (Bug#9088)
        CHECKSUM TABLE returned different
        values for MyISAM tables depending on whether
        the QUICK or EXTENDED
        option was used.
       (Bug#8841)
        Using the TRUNCATE() function
        with a negative number for the second argument on a
        BIGINT column returned incorrect
        results.
       (Bug#8461)
        Issuing GRANT
        EXECUTE on a procedure would display any warnings
        related to the creation of the procedure.
       (Bug#7787)
        Repeated invocation of my_init() and
        my_end() caused corruption of character set
        data and connection failure.
       (Bug#6536)
        An INSERT ...
        SELECT statement between tables in a
        MERGE set can return errors when statement
        involves insert into child table from merge table or vice-versa.
       (Bug#5390)

User Comments
Add your own comment.