Functionality Added or Changed
--skip-thread-priority option is now
deprecated such that the server will not change the thread
priorities by default. Giving threads different priorities might
yield marginal improvements in some platforms (where it actually
works), but it might instead cause significant degradation
depending on the thread count and number of processors. Meddling
with the thread priorities is a not a safe bet as it is very
dependent on the behavior of the CPU scheduler and system where
MySQL is being run.
(Bug #35164, Bug #37536)
--log option now is
deprecated and will be removed (along with the
log system variable) in the future. Instead,
--general_log option to
enable the general query log and the
option to set the general query log file name. The values of
these options are available in the
variables, which can be changed at runtime.
Similar changes were made for the
--log-slow-queries option and
variable. You should use the
options instead (and the
BUILD/compile-solaris-* scripts now
compile MySQL with the
Incompatible Change; Replication:
The default binary logging mode has been changed from
compatibility with MySQL 5.0.
CHECK TABLE ... FOR
UPGRADE did not check for incompatible collation
changes made in MySQL 5.1.21 (Bug #29499) and 5.1.23 (Bug
#27562, Bug #29461). This also affects
mysql_upgrade, which cause that statement to
be executed. See
Checking Whether Tables or Indexes Must Be Rebuilt.
References: See also Bug #40984.
In connection with view creation, the server created
arc directories inside database directories
and maintained useless copies of
there. Creation and renaming procedures of those copies as well
as creation of
arc directories has been
This change does cause a problem when downgrading to older server versions which manifests itself under these circumstances:
Create a view
v_orig in MySQL 5.1.29 or
Rename the view to
v_new and then back to
Downgrade to an older 5.1.x server and run mysql_upgrade.
Try to rename
v_new again. This operation fails.
As a workaround to avoid this problem, use either of these approaches:
Dump your data using mysqldump before downgrading and reload the dump file after downgrading.
Instead of renaming a view after the downgrade, drop it and recreate it.
The downgrade problem introduced by the fix for this bug has been addressed as Bug #40021. (Bug #17823)
Important Change; Replication:
SUPER privilege is now
required to change the session value of
binlog_format as well as its
global value. For more information about
Replication to partitioned
could be slow with row-based binary logging.
Partitioning: If an error occurred when evaluating a column of a partitioned table for the partitioning function, the row could be inserted anyway. (Bug #38083)
SELECT to insert records into a partitioned
MyISAM table could fail if some partitions
were empty and others are not.
Ordered range scans on partitioned tables were not always
handled correctly. In some cases this caused some rows to be
returned twice. The same issue also caused
BY query results to be aggregated incorrectly.
(Bug #30573, Bug #33257, Bug #33555)
Replication: Server code used in binary logging could in some cases be invoked even though binary logging was not actually enabled, leading to asserts and other server errors. (Bug #38798)
BLACKHOLE tables did not work
with row-based binary logging.
Replication: In some cases, a replication master sent a special event to a reconnecting slave to keep the slave's temporary tables, but they still had references to the “old” slave SQL thread and used them to access that thread's data. (Bug #38269)
Replication filtering rules were inappropiately applied when
One way in which this problem showed itself was that, when
replaying a binary log with mysqlbinlog, RBR
events were sometimes not executed if the
--replicate-do-db option was
specified. Now replication rules are applied only to those
events executed by the slave SQL thread.
... SELECT statement that creates a table in a
database other than the current one, the table could be created
in the wrong database on replication slaves if row-based binary
logging is used.
A statement did not always commit or roll back correctly when
the server was shut down; the error could be triggered by having
INSERT statement on a
transactional table, causing an implicit rollback.
References: See also Bug #38262.
The Sun Studio compiler failed to build debug versions of the server due to use of features specific to gcc. (Bug #39451)
TIMESTAMP column in an
InnoDB table, testing the column with
multiple conditions in the
caused a server crash.
References to local variables in stored procedures are replaced
NAME_CONST( when written to the
binary log. However, an “illegal mix of collation”
error might occur when executing the log contents if the value's
collation differed from that of the variable. Now information
about the variable collation is written as well.
Queries of the form
SELECT ... REGEXP BINARY
NULL could lead to a hung or crashed server.
Statements of the form
INSERT ... SELECT .. ON
DUPLICATE KEY UPDATE could result in a server crash.
Column names constructed due to wild-card expansion done inside a stored procedure could point to freed memory if the expansion was performed after the first call to the stored procedure. (Bug #38823)
TABLE ... SELECT statements, where the created table
AUTO_INCREMENT column, could
lead to an assertion failure.
For deadlock between two transactions that required a timeout to resolve, all server tables became inaccessible for the duration of the deadlock. (Bug #38804)
When inserting a string into a duplicate-key error message, the server could improperly interpret the string, resulting in a crash. (Bug #38701)
A race condition between threads sometimes caused unallocated memory to be addressed. (Bug #38692)
A server crash resulted from concurrent execution of a
UPDATE that used a
TABLES WITH READ LOCK or
TABLE for the table being updated.
On ActiveState Perl, mysql-test-run.pl --start-and-exit started but did not exit. (Bug #38629)
An uninitialized variable in the query profiling code was corrected (detected by Valgrind). (Bug #38560)
Stored procedures involving substrings could crash the server on certain platforms due to invalid memory reads. (Bug #38469)
The handlerton-to-plugin mapping implementation did not free
handler plugin references when the plugin was uninstalled,
resulting in a server crash after several install/uninstall
cycles. Also, on Mac OS X, the server crashed when trying to
EXAMPLE table after the
EXAMPLE plugin was installed.
The server crashed if an argument to a stored procedure was a subquery that returned more than one row. (Bug #37949)
When analyzing the possible index use cases, the server was incorrectly reusing an internal structure, leading to a server crash. (Bug #37943)
The combination of a subquery with a
BY, an aggregate function calculated outside the
subquery, and a
GROUP BY on the outer
SELECT could cause the server to
In some cases, references to views were confused with references to anonymous tables and privilege checking was not performed. (Bug #36086)
For crash reports on Windows, symbol names in stack traces were not correctly resolved. (Bug #35987)
ALTER EVENT changed the
PRESERVE attribute of an event even when
PRESERVE was not specified in the statement.
Host name values in SQL statements were not being checked for
'@', which is illegal according to RFC952.
mysql_install_db failed on machines that had
the host name set to
Dynamic plugins failed to load on i5/OS. (Bug #35743)
A trigger for an
InnoDB table activating
multiple times could lead to
mysqldump could fail to dump views containing a large number of columns. (Bug #31434)
The server could improperly type user-defined variables used in the select list of a query. (Bug #26020)
For access to the
INFORMATION_SCHEMA.VIEWS table, the
server did not check the
privileges, leading to inconsistency between output from that
table and the
SHOW CREATE VIEW
mysqld_safe would sometimes fail to remove
the pid file for the old
mysql process after
a crash. As a result, the server failed to start due to a false
A mysqld process already exists... error.