MySQL 5.0.26がリリースされました(part2)


最も普及しているオープンソースデータベース管理システムであるMySQL 5.0.26がリリースされました。




Functionality added or changed:
   * For the mysql client, typing Control-C causes mysql to attempt
     to kill the current statement. If this cannot be done, or
     Control-C is typed again before the statement is killed, mysql
     exits. Previously, Control-C caused mysql to exit in all
     cases. (Bug#17926:http://bugs.mysql.com/17926; see also
   * For mysqlshow, if a database name argument contains wildcard
     characters (such as `_') but matches a single database name
     exactly, treat the name as a literal name. This allows a
     command such as mysqlshow information_schema work without
     having to escape the wildcard character.
   * If a DROP VIEW statement named multiple views, it stopped with
     an error if a non-existent view was named and did not drop the
     remaining views. Now it continues on and reports an error at
     the end, similar to DROP TABLE.
   * Table comments longer than 60 characters and column comments
     longer than 255 characters were truncated silently. Now a
     warning is issued, or an error in strict mode.
   * The bundled yaSSL library was upgraded to version 1.3.7.
   * The bundled yaSSL library licensing has added a FLOSS
     exception similar to MySQL to resolve licensing
     incompatibilities with MySQL. (See the
     extra/yassl/FLOSS-EXCEPTIONS file in a MySQL source
     distribution for details.)
   * The server now issues a warning if it removes leading spaces
     from an alias. (Bug#10977:http://bugs.mysql.com/10977)
     table now contains information about the view algorithm.
   * For a successful dump, mysqldump now writes a SQL comment to
     the end of the dump file in the following format:
         -- Dump completed on YYYY-MM-DD hh:mm:ss
   * The mysqld and mysqlmanager manpages have been reclassified
     from volume 1 to volume 8.
   * configure now defines the symbol DBUG_ON in config.h to
     indicate whether the source tree is configured to be compiled
     with debugging support.
   * The MySQL distribution now compiles on UnixWare 7.13.
   * The mysql client used the default character set if it
     automatically reconnected to the server, which is incorrect if
     the character set had been changed. To enable the character
     set to remain synchronized on the client and server, the mysql
     command charset (or \C) that changes the default character set
     and now also issues a SET NAMES statement. The changed
     character set is used for reconnects.
   * mysql_upgrade no longer reads the [client] option file group
     because it is not a client and did not understand client
     options such as host. Now it reads only the [mysql_upgrade]
     group. (Bug#19452:http://bugs.mysql.com/19452)
   * MySQL now can do stack dumps on x86_64 and i386/NPTL systems.
   * TIMESTAMP columns that are NOT NULL now are reported that way

Bugs fixed:
   * Security fix: On Linux, and possibly other platforms using
     case-sensitive filesystems, it was possible for a user granted
     rights on a database to create or access a database whose name
     differed only from that of the first by the case of one or
     more letters. (CVE-2006-4226
   * Security fix: A stored routine created by one user and then
     made accessible to a different user using GRANT EXECUTE could
     be executed by that user with the privileges of the routine's
     definer. (CVE-2006-4227
   * CREATE TABLE ... SELECT statements that selected GEOMETRY
     values resulted in a table that contained BLOB columns, not
     GEOMETRY columns. (Bug#14807:http://bugs.mysql.com/14807)
   * A DATE can be represented as an integer (such as 20060101) or
     as a string (such as '2006.01.01'). When a DATE (or TIME)
     column is compared in one SELECT against both representations,
     constant propagation by the optimizer led to comparison of
     DATE as a string against DATE as an integer. This could result
     in integer comparisons such as 2006 against 20060101,
     erroneously producing a false result.
   * A query result could be sorted improperly when using ORDER BY
     for the second table in a join.
   * EXPORT_SET() did not accept arguments with coercible character
     sets. (Bug#21531:http://bugs.mysql.com/21531)
   * The --collation-server server option was being ignored. With
     the fix for this problem, if you choose a non-default
     character set with --character-set-server, you should also use
     --collation-server to specify the collation.
   * The index_merge/Intersection optimizer could have a memory
     overrrun when the number of table columns covered by an index
     is sufficiently large, possibly resulting in a server crash.
   * With max_sp_recursion set to 0, a stored procedure that
     executed a SHOW CREATE PROCEDURE statement for itself
     triggered a recursion limit exceeded error, though the
     statement involves no recursion.
   * The optimizer could produce an incorrect result after AND with
     collations such as latin1_german2_ci, utf8_czech_ci, and
     utf8_lithianian_ci. (Bug#9509:http://bugs.mysql.com/9509)
   * Database and table names have a maximum length of 64
     characters (even if they contain multi-byte characters), but
     were being truncated to 64 bytes.
   * character_set_results can be NULL to signify "no conversion,"
     but some code did not check for NULL, resulting in a server
     crash. (Bug#21913:http://bugs.mysql.com/21913)
   * InnoDB was slow with more than 100,000 .idb files.
   * SHOW INNODB STATUS contained some duplicate output.
   * Using cursors with READ COMMITTED isolation level could cause
     InnoDB to crash. (Bug#19834:http://bugs.mysql.com/19834)
   * The ndb_mgm program was included in both the MySQL-ndb-tools
     and MySQL-ndb-management RPM packages, resulting in a conflict
     if both were installed. Now ndb_mgm is included only in
     MySQL-ndb-tools. (Bug#21058:http://bugs.mysql.com/21058)
   * A query could produce different results with and without and
     index, if the WHERE clause contained a range condition that
     used an invalid DATETIME constant.
   * libmysqld produced some warnings to stderr which could not be
     silenced. These warnings now are suppressed.
   * The optimizer sometimes produced an incorrect row-count
     estimate after elimination of const tables. This resulted in
     choosing extremely inefficient execution plans in same cases
     when distribution of data in joins were skewed.
   * Query results could be incorrect if the WHERE clause contained
     t.key_part NOT IN (val_list), where val_list is a list of more
     than 1000 constants. (Bug#21282:http://bugs.mysql.com/21282)
   * STR_TO_DATE() sometimes would return NULL if the %D format
     specifier was not the last specifier in the format string.
   * The myisam_stats_method variable was mishandled when set from
     an option file or on the command line.
   * The optimizer assumed that if (a=x AND b=x) is true, (a=x AND
     b=x) AND a=b is also true. But that is not always so if a and
     b have different data types.
   * InnoDB did not honor IGNORE INDEX, which prevented using
     IGNORE INDEX in cases where an index sort would be slower than
     a filesort. (Bug#21174:http://bugs.mysql.com/21174)
   * If a column definition contained a character set declaration,
     but a DEFAULT value began with an introducer, the introducer
     character set was used as the column character set.
   * The MD5(), SHA1(), and ENCRYPT() functions should return a
     binary string, but the result sometimes was converted to the
     character set of the argument. MAKE_SET() and EXPORT_SET() now
     use the correct character set for their default separators,
     resulting in consistent result strings which can be coerced
     according to normal character set rules.
   * For connections that required a SUBJECT value, a check was
     performed to verify that the value was correct, but the
     connection was not refused if not.
   * Some Linux-x86_64-icc packages (of previous releases)
     mistakenly contained 32-bit binaries. Only ICC builds are
     affected, not gcc builds. Solaris and FreeBSD x86_64 builds
     are not affected. (Bug#22238:http://bugs.mysql.com/22238)
   * INSERT ... SELECT sometimes generated a spurious Column count
     doesn't match value count error.
   * For TIME_FORMAT(), the %H and %k format specifiers can return
     values larger than two digits (if the hour is greater than
     99), but for some query results that contained three-character
     hours, column values were truncated.
   * For table-format output, mysql did not always calculate
     columns widths correctly for columns containing multi-byte
     characters in the column name or contents.
   * Views could not be updated within a stored function or
     trigger. (Bug#17591:http://bugs.mysql.com/17591)
   * Some user-level level errors were being written to the
     server's error log, which is for server errors.
   * When using tables created under MySQL 4.1 with a 5.0 server,
     if the tables contained VARCHAR columns, for some queries the
     metadata sent to the client could have an empty column name.
   * On 64-bit systems, use of the cp1250 character set with a
     primary key column in a LIKE clause caused a server crash for
     patterns having letters in the range 128..255.
   * N'xxx' and _utf8'xxx' were not treated as equivalent because
     N'xxx' failed to unescape backslashes (\) and doubled
     apostrophe/single quote characters ('').
   * ORDER BY RAND() LIMIT 1 always set a user variable to the last
     possible value from the table.
   * A subquery in the WHERE clause of the outer query and using IN
     and GROUP BY returned an incorrect result.
   * When NOW() was used in a BETWEEN clause of the definition for
     a view, it was replaced with a constant in the view.
   * A stored procedure with a CONTINUE handler that encountered an
     error continued to execute a statement that caused an error,
     rather with the next statement following the the one that
     caused the error. (Bug#8153:http://bugs.mysql.com/8153)
   * libmysqlclient defined a symbol BN_bin2bn which belongs to
     OpenSSL. This could break applications that also linked
     against OpenSSL's libcrypto library. The fix required
     correcting an error in a build script that was failing to add
     rename macros for some functions.
   * COUNT(*) queries with ORDER BY and LIMIT could return the
     wrong result. (Bug#21787:http://bugs.mysql.com/21787)
     Note: This problem was introduced by the fix for
     Bug#9676:http://bugs.mysql.com/9676, which limited the rows
     stored in a temporary table to the LIMIT clause. This
     optimization is not applicable to non-group queries with
     aggregate functions. The current fix disables the optimization
     in such cases.
   * Memory overruns could occur for certain kinds of subqueries.
   * The SELECT privilege was required for an insert on a view,
     instead of the INSERT privilege.
     Note: This fixes a regression that was introduced by the fix
     for Bug#20989:http://bugs.mysql.com/20989.
   * Running SHOW MASTER LOGS at the same time as binary log files
     were being switched would cause mysqld to hang.
   * A server or network failure with an open client connection
     would cause the client to hang even though the server was no
     longer available. (Bug#9678:http://bugs.mysql.com/9678)
   * Transient errors in replication from master to slave may
     trigger multiple Got fatal error 1236: 'binlog truncated in
     the middle of event' errors on the slave.
   * Inserts into BIT columns of FEDERATED tables did not work.
   * The yaSSL library bundled with libmysqlclient had some
     conflicts with OpenSSL. Now macros are used to rename the
     conflicting symbols to have a prefix of ya.
   * It is possible to create MERGE tables into which data cannot
     be inserted (by not specifying a UNION clause. However, when
     an insert was attempted, the error message was confusing. Now
     an error occurs indicating that the table is read-only.
   * A NUL byte within a prepared statement string caused the rest
     of the string not to be written to the query log, allowing
     logging to be bypassed.
   * mysql_upgrade created temporary files in a possibly insecure
     way. (Bug#21224:http://bugs.mysql.com/21224)
   * Some prepared statements caused a server crash when executed a
     second time. (Bug#21166:http://bugs.mysql.com/21166)
   * With query_cache_type set to 0, RESET QUERY CACHE was very
     slow and other threads were blocked during the operation. Now
     a cache reset is faster and non-blocking.
   * NDB Cluster: Setting TransactionDeadlockDetectionTimeout to a
     value greater than 12000 would cause scans to deadlock, time
     out, fail to release scan records, until the cluster ran out
     of scan records and stopped processing.
   * NDB Cluster: The server provided a non-descriptive error
     message when encountering a fatally corrupted REDO log.
   * NDB Cluster: A partial rollback could lead to node restart
     failures. (Bug#21536:http://bugs.mysql.com/21536)
   * NDB Cluster: The failure of a unique index read due to an
     invalid schema version could be handled incorrectly in some
     cases, leading to unpredictable results.
   * NDB Cluster: In a cluster with more than 2 replicas, a manual
     restart of one of the data nodes could fail and cause the
     other nodes in its nodegroup to shut down.
   * NDB Cluster: When the redo buffer ran out of space, a Pointer
     too large error was raised and the cluster could become
     unusable until restarted with --initial.
   * NDB Cluster: In some situations with a high disk-load, writing
     of the redo log could hang, causing a crash with the error
     message GCP STOP detected.
   * NDB Cluster: A vague error message was returned when reading
     of both schema files occurred during a restart of the cluster.
   * NDB Cluster: The server did not honor the value set for
     ndb_cache_check_time in the my.cnf file.
   * NDB Cluster: The server failed with a non-descriptive error
     message when out of data memory.
   * NDB Cluster: ndb_size.pl and ndb_error_reporter were missing
     from RPM packages. (Bug#20426:http://bugs.mysql.com/20426)
   * When DROP DATABASE or SHOW OPEN TABLES was issued while
     concurrently issuing DROP TABLE (or RENAME TABLE, CREATE TABLE
     LIKE or any other statement that required a name lock) in
     another connection, the server crashed.
   * Use of zero-length variable names caused a server crash.
   * Prepared statements caused general log and server memory
     corruption. (Bug#14346:http://bugs.mysql.com/14346)
   * mysqldump incorrectly tried to use LOCK TABLES for tables in
     the INFORMATION_SCHEMA database.
   * Adding ORDER BY to a SELECT DISTINCT(expr) query could produce
     incorrect results. (Bug#21456:http://bugs.mysql.com/21456)
   * For InnoDB tables, the server could crash when executing NOT
     IN () subqueries. (Bug#21077:http://bugs.mysql.com/21077)
   * Use of the --prompt option or prompt command caused mysql to
     be unable to connect to the Instance Manager.
   * The server crashed if it tried to access a CSV table for which
     the data file had been removed.
   * CREATE USER did not respect the 16-character username limit.
   * On Windows, a definition for mysql_set_server_option() was
     missing from the C client library.
   * For the CSV storage engine, memory-mapped pages of the data
     file were not invalidated when new data was appended to the
     file via traditional (file descriptor-based) I/O primitives.
   * In debugging mode, mysqld printed server_init rather than
     network_init during network initialization.
   * For user-defined functions created with CREATE FUNCTION, the
     DEFINER clause is not legal, but no error was generated.
   * mysqld --flush failed to flush changes to disk following an
     UPDATE statement for which no updated column had an index.
   * When not running in strict mode, the server failed to convert
     the invalid years portion of a DATE or DATETIME value to
     '0000' when inserting it into a table.
   * Setting myisam_repair_threads caused any repair operation on
     the table to fail to update the cardinality of indexes,
     instead making them always equal to 1.
   * The --with-collation option was not honored for client
     connections. (Bug#7192:http://bugs.mysql.com/7192)
   * Users who had the SHOW VIEW privilege for a view and
     privileges on one of the view's base table could not see
     records in INFORMATION_SCHEMA tables relating to the base
     table. (Bug#20543:http://bugs.mysql.com/20543)
   * An issue with yaSSL prevented Connector/J clients from
     connecting to the server using a certificate.
   * Some server errors were not reported to the client, causing
     both to try to read from the connection until a hang or crash
     resulted. (Bug#16581:http://bugs.mysql.com/16581)
   * When setting a column to its implicit default value as the
     result of inserting a NULL into a NOT NULL column as part of a
     multi-row insert or LOAD DATA operation, the server returned a
     misleading warning message.
   * DECIMAL columns were handled incorrectly in two respects
       1. When the precision of the column was too small for the
          value. In this case, the original value was returned
          instead of an error.
       2. When the scale of the column was set to 0. In this case,
          the value. In this case, the value was treated as though
          the scale had been defined as 2.
   * Tables created with the FEDERATED storage engine did not
     permit indexes using NULL columns.
   * The Instance Manager allowed STOP INSTANCE to be used on a
     server instance that was not running.
   * On Windows, mysql_upgrade.exe could not find mysqlcheck.exe.
   * FEDERATED tables raised invalid duplicate key errors when
     attempting on one server to insert rows having the same
     primary key values as rows that had been deleted from the
     linked table on the other server.
   * The C API failed to return a status message when invoking a
     stored procedure. (Bug#15752:http://bugs.mysql.com/15752)
   * A stored procedure that created and invoked a prepared
     statement was not executed when called in a mysqld init-file.
   * Stored procedures did not use the character set defined for
     the database in which they were created.
     VIEW statements containing multi-line comments (/* ... */)
     could not be replicated.
   * The final parenthesis of a CREATE INDEX statement occurring in
     a stored procedure was omitted from the binary log when the
     stored procedure was called.
   * Attempting to insert a string of greater than 4096 bytes into
     a FEDERATED table resulted in the error ERROR 1296 (HY000) at
     line 2: Got error 10000 'Error on remote system: 1054: Unknown
     column 'string-value' from FEDERATED. This error was raised
     regardless of the type of column involved (VARCHAR, TEXT, and
     so on.) (Bug#17608:http://bugs.mysql.com/17608)
   * Performance during an import on a table with a trigger that
     called a stored procedure was severely degraded. This issue
     first arose in MySQL 5.0.18.
   * Repeated DROP TABLE statements in a stored procedure could
     sometimes cause the server to crash.
   * The value returned by a stored function returning a string
     value was not of the declared character set.
   * For mysql, escaping with backslash sometimes did not work.
   * Under certain circumstances, AVG(key_val) returned a value but
     MAX(key_val) returned an empty set due to incorrect
     application of MIN()/MAX() optimization.
   * Using aggregate functions in subqueries yielded incorrect
     results under certain circumstances due to incorrect
     application of MIN()/MAX() optimization.
   * A query using WHERE column = constant OR column IS NULL did
     not return consistent results on successive invocations. The
     column in each part of the WHERE clause could be either the
     same column, or two different columns, for the effect to be
     observed. (Bug#21091:http://bugs.mysql.com/21091)
   * The PASSWORD() function returned invalid results when used in
     some UNION queries. (Bug#16881:http://bugs.mysql.com/16881)
   * USE did not refresh database privileges when employed to
     re-select the current database.
   * A query using WHERE NOT (column < ANY (subquery)) yielded a
     different result from the same query using the same column and
     subquery with WHERE (column > ANY (subquery)).
   * A user variable set to a value selected from an unsigned
     column was stored as a signed value.
   * SELECT statements using GROUP BY against a view could have
     missing columns in the output when there was a trigger defined
     on one of the base tables for the view.
   * A SELECT with a subquery that was bound to the outer query
     over multiple columns returned different results when a
     constant was used instead of one of the dependant columns.
   * When performing a GROUP_CONCAT(), the server transformed BLOB
     columns VARCHAR columns, which could cause erroneous results
     when using Connector/J and possibly other MySQL APIs.
   * The type of the value returned by the VARIANCE() function
     varied according to the type of the input value. The function
     should always return a DOUBLE value.
   * Performing an INSERT on a view that was defined using a SELECT
     that specified a collation and a column alias caused the
     server to crash (Bug#21086:http://bugs.mysql.com/21086).
   * A query of the form shown here caused the server to crash:
            t2 JOIN (
                t3 NATURAL JOIN t4,
                t5 NATURAL JOIN t6
            ON (t3.id3 = t2.id3 AND t5.id5 = t2.id5)
   * NDB Cluster (Direct APIs): Invoking the MGM API function
     ndb_mgm_listen_event() caused a memory leak.
   * NDB Cluster (Direct APIs): The MGM API function
     ndb_logevent_get_fd() was not actually implemented.
   * A memory leak was found when running ndb_mgm -e "SHOW".
   * NDB Cluster: Restarting a data node while DDL operations were
     in progress on the cluster could cause other data nodes to
     fail. This could also lead to mysqld hanging or crashing under
     some circumstances. (Bug#21017:http://bugs.mysql.com/21017,
   * NDB Cluster: An issue that arose from a patch for
     Bug#19852:http://bugs.mysql.com/19852made in MySQL 5.0.23
     was corrected. (See Section D.1.6, "Changes in release 5.0.23
     (Not released).")
   * NDB Cluster: The management client ALL STATUS command could
     sometimes report the status of some data nodes incorrectly.
   * NDB Cluster: Some queries involving joins on very large NDB
     tables could crash the MySQL server.
   * NDB Cluster: SELECT ... FOR UPDATE failed to lock the selected
     rows. (Bug#18184:http://bugs.mysql.com/18184)
   * NDB Cluster: A Cluster whose storage nodes were installed from
     the MySQL-ndb-storage-* RPMs could not perform CREATE or ALTER
     operations that made use of non-default character sets or
     collations. (Bug#14918:http://bugs.mysql.com/14918)
   * NDB Cluster: REPLACE statements did not work correctly on an
     NDB table having both a primary key and a unique key. In such
     cases, proper values were not set for columns which were not
     explicitly referenced in the statement.
   * NDB Cluster: Trying to create or drop a table while a node was
     restarting caused the node to crash. This is now handled by
     raising an error. (Bug#18781:http://bugs.mysql.com/18781)
   * NDB Cluster: Running ndbd --nowait-nodes=id where id was the
     node ID of a node that was already running would fail with an
     invalid error message.
   * NDB Cluster: Incorrect values were inserted into
     AUTO_INCREMENT columns of tables restored from a cluster
     backup. (Bug#20820:http://bugs.mysql.com/20820)
   * NDB Cluster: When attempting to restart the cluster following
     a data import, the cluster would fail during Phase 4 of the
     restart with Error 2334: Job buffer congestion.
   * NDB Cluster: A node failure during a scan could sometime cause
     the node to crash when restarting too quickly following the
     failure. (Bug#20197:http://bugs.mysql.com/20197)
   * NDB Cluster: It was possible to use port numbers greater than
     65535 for ServerPort in the config.ini file.
   * NDB Cluster: Under certain circumstances, a node that was shut
     down then restarted could hang during the restart.
   * NDB Cluster (Replication): In some cases, a large number of
     MySQL servers sending requests to the cluster simultaneously
     could cause the cluster to crash. This could also be triggered
     by many NDB API clients making simultaneous event
     subscriptions or unsubscriptions.
   * NDB Cluster (Direct APIs): NdbScanOperation::readTuples() and
     NdbIndexScanOperation::readTuples() ignored the batch
     parameter. (Bug#20252:http://bugs.mysql.com/20252)
   * The implementation for UNCOMPRESS() did not indicate that it
     could return NULL, causing the optimizer to do the wrong
     thing. (Bug#18539:http://bugs.mysql.com/18539)
   * TIMESTAMPDIFF() examined only the date and ignored the time
     when the requested difference unit was months or quarters.
   * perror did not properly report NDB error codes.
   * mysqlimport sends a set @@character_set_database=binary
     statement to the server, but this is not understood by pre-4.1
     servers. Now mysqlimport encloses the statement within a
     /*!40101 ... */ comment so that old servers will ignore it.
   * The character set was not being properly initialized for
     CAST() with a type like CHAR(2) BINARY, which resulted in
     incorrect results or even a server crash.
   * For ODBC compatibility, MySQL supports use of WHERE col_name
     IS NULL for DATE or DATETIME columns that are NOT NULL, to
     allow column values of '0000-00-00' or '0000-00-00 00:00:00'
     to be selected. However, this was not working for WHERE
     clauses in DELETE statements.
   * The --master-data option for mysqldump requires certain
     privileges, but mysqldump generated a truncated dump file
     without producing an appropriate error message or exit status
     if the invoking user did not have those privileges.
   * ALTER VIEW did not retain existing values of attributes that
     had been originally specified but were not changed in the
     ALTER VIEW statement. (Bug#21080:http://bugs.mysql.com/21080)
   * mysql crashed for very long arguments to the connect command.
   * perror crashed on Solaris due to NULL return value of
     strerror() system call.
   * The query command for mysqltest did not work.
   * For certain queries, the server incorrectly resolved a
     reference to an aggregate function and crashed.
   * When executing a SELECT with ORDER BY on a view that is
     constructed from a SELECT statement containing a stored
     function, the stored function was evaluated too many times.
   * Subqueries on INFORMATION_SCHEMA tables could erroneously
     return an empty result.
   * On 64-bit Windows, a missing table generated error 1017, not
     the correct value of 1146.
   * The same trigger error message was produced under two
     conditions: The trigger duplicated an existing trigger name,
     or the trigger duplicated an existing combination of action
     and event. Now different messages are produced for the two
     conditions so as to be more informative.
   * Multiplication of DECIMAL values could produce incorrect
     fractional part and trailing garbage caused by signed
     overflow. (Bug#20569:http://bugs.mysql.com/20569)
   * A subquery that contained LIMIT N,1 could return more than one
     row. (Bug#20519:http://bugs.mysql.com/20519)
   * DESCRIBE returned the type BIGINT for a column of a view if
     the column was specified by an expression over values of the
     type INT. (Bug#19714:http://bugs.mysql.com/19714)
   * Multiple invocations of the REVERSE() function could return
     different results. (Bug#18243:http://bugs.mysql.com/18243)
   * Using > ALL with subqueries that return no rows yielded
     incorrect results under certain circumstances due to incorrect
     application of MIN()/MAX() optimization.
   * Using ANY with "non-table" subqueries such as SELECT 1 yielded
     incorrect results under certain circumstances due to incorrect
     application of MIN()/MAX() optimization.
   * When a row was inserted through a view but did not specify a
     value for a column that had no default value in the base
     table, no warning or error occurred. Now a warning occurs, or
     an error in strict SQL mode.
   * The use of WHERE col_name IS NULL in SELECT statements reset
     the value of LAST_INSERT_ID() to zero.
   * The server crashed when using the range access method to
     execut a subquery with a ORDER BY DESC clause.
   * Use of the join cache in favor of an index for ORDER BY
     operations could cause incorrect result sorting.
   * A user-defined function that is called on each row of a
     returned result set, could receive an in_null state that is
     set, if it was set previously. Now, the is_null state is reset
     to false before each invocation of a UDF.
   * Referring to a stored function qualified with the name of one
     database and tables in another database caused a "table
     doesn't exist" error. (Bug#18444:http://bugs.mysql.com/18444)
   * For NDB and possibly InnoDB tables, a BEFORE UPDATE trigger
     could insert incorrect values.
   * Triggers on tables in the mysql database caused a server
     crash. Triggers for tables in this database now are
     disallowed. (Bug#18361:http://bugs.mysql.com/18361)
   * The length of the pattern string prefix for LIKE operations
     was calculated incorrectly for multi-byte character sets. As a
     result, the the scanned range was wider than necessary if the
     prefix contained any multi-byte characters, and rows could be
     missing from the result set.
   * For very complex SELECT statements could create temporary
     tables that were too big, but for which the temporary files
     did not get removed, causing subsequent queries to fail.
   * For spatial data types, the server formerly returned these as
     VARSTRING values with a binary collation. Now the server
     returns spatial values as BLOB values.
   * Using SELECT and a table join while running a concurrent
     INSERT operation would join incorrect rows.
   * Using SELECT on a corrupt table using the dynamic record
     format could cause a server crash.
   * Using tables from MySQL 4.x in MySQL 5.x, in particular those
     with VARCHAR fields and using INSERT DELAYED to update data in
     the table would result in either data corruption or a server
     crash. (Bug#16611:http://bugs.mysql.com/16611,
   * Checking a MyISAM table (using CHECK TABLE) having a spatial index
     and only one row would wrongly indicate that the table was
     corrupted. (Bug#17877:http://bugs.mysql.com/17877)
   * SHOW GRANTS FOR CURRENT_USER did not return definer grants
     when executed in DEFINER context (such as within a stored
     prodedure defined with SQL SECURITY DEFINER), it returned the
     invoker grants. (Bug#15298:http://bugs.mysql.com/15298)
   * For SELECT ... FOR UPDATE statements that used DISTINCT or
     GROUP BY over all key parts of a unique index (or primary
     key), the optimizer unnecessarily created a temporary table,
     thus losing the linkage to the underlying unique index values.
     This caused a Result set not updatable error. (The temporary
     table is unnecessary because under these circumstances the
     distinct or grouped columns must also be unique.)
   * The first time a user who had been granted the CREATE ROUTINE
     privilege used that privilege to create a stored function or
     procedure, the Password column in that user's row in the
     mysql.user table was set to NULL.
   * Creation of a view as a join of views or tables could fail if
     the views or tables are in different databases.
   * Use of MIN() or MAX() with GROUP BY on a ucs2 column could
     cause a server crash. (Bug#20076:http://bugs.mysql.com/20076)
   * INSERT INTO ... SELECT ... LIMIT 1 could be slow because the
     LIMIT was ignored when selecting candidate rows.
   * Certain queries having a WHERE clause that included conditions
     on multi-part keys with more than 2 key parts could produce
     incorrect results and send [Note] Use_count: Wrong count for
     key at... messages to STDERR.
   * The mysql_list_fields() C API function returned the incorrect
     table name for views. (Bug#19671:http://bugs.mysql.com/19671)
   * A cast problem caused incorrect results for prepared
     statements that returned float values when MySQL was compiled
     with gcc 4.0. (Bug#19694:http://bugs.mysql.com/19694)
   * Updating a column of a FEDERATED table to NULL sometimes
     failed. (Bug#16494:http://bugs.mysql.com/16494)