Functionality Added or Changed
Important Change:
The --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)
Important Change:
The --log option now is
deprecated and will be removed (along with the
log system variable) in the future. Instead,
use the --general_log option to
enable the general query log and the
--general_log_file=
option to set the general query log file name. The values of
these options are available in the
file_namegeneral_log and
general_log_file system
variables, which can be changed at runtime.
Similar changes were made for the
--log-slow-queries option and
log_slow_queries system
variable. You should use the
--slow_query_log and
--slow_query_log_file=
options instead (and the
file_nameslow_query_log and
slow_query_log_file system
variables).
The BUILD/compile-solaris-* scripts now
compile MySQL with the mtmalloc library
rather than malloc.
(Bug #38727)
Bugs Fixed
Incompatible Change; Replication:
The default binary logging mode has been changed from
MIXED to STATEMENT for
compatibility with MySQL 5.0.
(Bug #39812)
Incompatible Change:
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
mysqlcheck and
mysql_upgrade, which cause that statement to
be executed. See
Checking Whether Tables or Indexes Must Be Rebuilt.
(Bug #39585)
References: See also Bug #40984.
Incompatible Change:
In connection with view creation, the server created
arc directories inside database directories
and maintained useless copies of .frm files
there. Creation and renaming procedures of those copies as well
as creation of arc directories has been
discontinued.
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
higher.
Rename the view to v_new and then back to
v_orig.
Downgrade to an older 5.1.x server and run mysql_upgrade.
Try to rename v_orig to
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:
The SUPER privilege is now
required to change the session value of
binlog_format as well as its
global value. For more information about
binlog_format, see
Replication Formats.
(Bug #39106)
Partitioning; Replication:
Replication to partitioned MyISAM tables
could be slow with row-based binary logging.
(Bug #35843)
Partitioning:
Using INSERT ...
SELECT to insert records into a partitioned
MyISAM table could fail if some partitions
were empty and others are not.
(Bug #38005)
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)
Partitioning:
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 GROUP
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)
Replication:
Replication filtering rules were inappropiately applied when
executing BINLOG pseudo-queries.
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.
(Bug #36099)
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:
For a CREATE TABLE
... 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.
(Bug #34707)
Replication:
Replication of BLACKHOLE tables did not work
with row-based binary logging.
(Bug #38360)
Replication:
A statement did not always commit or roll back correctly when
the server was shut down; the error could be triggered by having
a failing UPDATE or
INSERT statement on a
transactional table, causing an implicit rollback.
(Bug #32709)
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)
The combination of a subquery with a GROUP
BY, an aggregate function calculated outside the
subquery, and a GROUP BY on the outer
SELECT could cause the server to
crash.
(Bug #37348)
In some cases, references to views were confused with references to anonymous tables and privilege checking was not performed. (Bug #36086)
The <=>
operator could return incorrect results when comparing
NULL to DATE,
TIME, or
DATETIME values.
(Bug #37526)
Access checks were skipped for SHOW
PROCEDURE STATUS and SHOW
FUNCTION STATUS, which could lead to a server crash or
insufficient access checks in subsequent statements.
(Bug #37908)
When inserting a string into a duplicate-key error message, the server could improperly interpret the string, resulting in a crash. (Bug #38701)
Queries of the form SELECT ... REGEXP BINARY
NULL could lead to a hung or crashed server.
(Bug #39021)
Repeated CREATE
TABLE ... SELECT statements, where the created table
contained an AUTO_INCREMENT column, could
lead to an assertion failure.
(Bug #38821)
Statements of the form INSERT ... SELECT .. ON
DUPLICATE KEY UPDATE could result in a server crash.
(Bug #39002)col_name =
DEFAULT
An uninitialized variable in the query profiling code was corrected (detected by Valgrind). (Bug #38560)
Dynamic plugins failed to load on i5/OS. (Bug #35743)
A server crash resulted from concurrent execution of a
multiple-table UPDATE that used a
NATURAL or USING join
together with FLUSH
TABLES WITH READ LOCK or ALTER
TABLE for the table being updated.
(Bug #38691)
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)
A server crash resulted from execution of an
UPDATE that used a derived table
together with FLUSH
TABLES.
(Bug #38499)
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
access an EXAMPLE table after the
EXAMPLE plugin was installed.
(Bug #37958)
For deadlock between two transactions that required a timeout to resolve, all server tables became inaccessible for the duration of the deadlock. (Bug #38804)
Stored procedures involving substrings could crash the server on certain platforms due to invalid memory reads. (Bug #38469)
ALTER EVENT changed the
PRESERVE attribute of an event even when
PRESERVE was not specified in the statement.
(Bug #35981)
The server crashed if an argument to a stored procedure was a subquery that returned more than one row. (Bug #37949)
References to local variables in stored procedures are replaced
with
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.
(Bug #39182)name,
value)
For a TIMESTAMP column in an
InnoDB table, testing the column with
multiple conditions in the WHERE clause
caused a server crash.
(Bug #39353)
With the
PAD_CHAR_TO_FULL_LENGTH SQL
mode enabled, a ucs2
CHAR column returned additional
garbage after trailing space characters.
(Bug #35720)
mysql_install_db failed on machines that had
the host name set to localhost.
(Bug #35754)
For crash reports on Windows, symbol names in stack traces were not correctly resolved. (Bug #35987)
The NO_BACKSLASH_ESCAPES SQL
mode was ignored for
LOAD DATA
INFILE and SELECT INTO ... OUTFILE.
The setting is taken into account now.
(Bug #37114)
On ActiveState Perl, mysql-test-run.pl --start-and-exit started but did not exit. (Bug #38629)
Host name values in SQL statements were not being checked for
'@', which is illegal according to RFC952.
(Bug #35924)
When analyzing the possible index use cases, the server was incorrectly reusing an internal structure, leading to a server crash. (Bug #37943)
A race condition between threads sometimes caused unallocated memory to be addressed. (Bug #38692)
mysqld_safe would sometimes fail to remove
the pid file for the old mysql process after
a crash. As a result, the server would fail to start due to a
false A mysqld process already exists...
error.
(Bug #11122)
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)
A trigger for an InnoDB table activating
multiple times could lead to AUTO_INCREMENT
gaps.
(Bug #31612)
For access to the
INFORMATION_SCHEMA.VIEWS table, the
server did not check the SHOW
VIEW and SELECT
privileges, leading to inconsistency between output from that
table and the SHOW CREATE VIEW
statement.
(Bug #22763)
