Functionality Added or Changed
system variable controls the mode for block-based encryption
algorithms. Its default value is
aes-128-ecb, which signifies encryption
using a key length of 128 bits and ECB mode.
provides an initialization vector for encryption modes that
A random string of bytes to use for the initialization
vector can be produced by calling the new
For more information, see Encryption and Compression Functions.
These changes make statements that use
AES_DECRYPT() unsafe for
statement-based replication and they cannot be stored in the
query cache. Queries that use
RANDOM_BYTES() are unsafe for
statement-based replication and cannot be stored in the query
NO_ZERO_IN_DATE SQL modes now
are deprecated and setting the
to include any of them generates a warning. In MySQL 5.7, these
modes do nothing. Instead, their effects are included in the
effects of strict SQL mode
motivation for the change in MySQL 5.7 is to reduce the number
of SQL modes with an effect dependent on strict mode and make
them part of strict mode itself.
To make advance preparation for an upgrade to MySQL 5.7, see SQL Mode Changes in MySQL 5.7. That discussion provides guidelines to assess whether your applications will be affected by the SQL mode changes in MySQL 5.7.
MySQL now supports rebuilding regular and partitioned
InnoDB tables using
ALGORITHM=INPLACE) for the following
On Solaris, mysql_config --libs now includes
so that libraries can be found at runtime.
mysql_install_db provides a more informative diagnostic message when required Perl modules are missing. (Bug #69844, Bug #18187451)
IGNORE clause for
ALTER TABLE is now deprecated and
will be removed in a future version of MySQL.
IGNORE TABLE causes problems for replication, prevents
ALTER TABLE for unique index creation,
and causes problems with foreign keys (rows removed in the
Old clients (older than MySQL 5.5.7) failed to parse
authentication data correctly if the server was started with the
As a result of this bug fix, MySQL 5.6.16 clients cannot
connect to a 5.6.17 server using an account that authenticates
sha256_password plugin. Similarly,
MySQL 5.7.3 clients cannot connect to a 5.7.4 server using an
account that authenticates with the
SELECT on a partitioned table
caused a memory access violation in
References: See also Bug #18167648.
fts_query_fetch_document would cause a
For full-text queries, a failure to check that
num_token is less than
max_proximity_item could result in an
now has a hardcoded maximum value of 4294967295 bytes or (2**32
-1). The maximum value was previously defined as the maximum
(Bug #18180057, Bug #71554)
InnoDB would fail to restore a corrupt first
page of a system tablespace data file from the doublewrite
buffer, resulting in a startup failure.
(Bug #18144349, Bug #18058884)
UPDATE resulted in a memory
access error in
transaction list (
traversed without acquiring the transaction subsystem mutex
InnoDB: A regression introduced by Bug #14329288 would result in a performance degradation when a compressed table does not fit into memory. (Bug #18124788, Bug #71436)
The maximum value for
now 1000000 microseconds. The previous maximum value (4294967295
microseconds on 32-bit and 18446744073709551615 microseconds on
64-bit) was unnecessarily large. Because the maximum value of
limited by the value set for
(when set to a non-zero value), the maximum value for
now the same as the maximum value for
InnoDB: A full-text tokenizer thread would terminate with an incorrect error message. (Bug #18021306)
Attempting to uninstall the
memcached plugin while the
InnoDB memcached plugin is
still initializing would kill the
memcached daemon thread. Uninstall should
wait until initialization is complete.
InnoDB: In debug builds, creating a unique index on a binary column, with input data containing duplicate keys, would cause an assertion. (Bug #18010711)
srv_monitor_thread would crash in the
lock_print_info_summary() function due to a
race condition between the
and purge coordinator thread.
(Bug #17980590, Bug #70430)
Attempting to add an invalid foreign key when foreign key
checking is disabled
cause a serious error.
For debug builds, the table rebuilding variant of online
ALTER TABLE, when run on tables
with BLOB columns, would cause an assertion in the
row_log_table_apply_update function. For
normal builds, a
DB_PRODUCTION error would be
When creating a table there are a minimum of three separate
inserts on the
table. To improve
performance, there is now a single
COMMIT operation instead of one
for each insert.
(Bug #17323202, Bug #70063)
The server would halt with an assertion in
lock_rec_has_to_wait_in_queue(lock) due to a
locking-related issue and a transaction being prematurely
Server shutdown would result in a hang with the following
message written to the error log: “
Waiting for purge thread to be suspended.”
InnoDB would fail to start when
the data file size in kilobytes by appending
K to the size value.
InnoDB: An insert buffer merge would cause an assertion error due to incorrectly handled ownership information for externally stored BLOBs.
InnoDB: Assertion failure in thread
thread_numin file ibuf0ibuf.cc line 4080 InnoDB: Failing assertion: rec_get_deleted_flag(rec, page_is_comp(page))
would have no affect on the next auto-increment value.
(Bug #14049391, Bug #65225)
(enabled by default) or the
flag was enabled by the setting of the
variable, queries returned incorrect results when executed
against partitoned tables that used the
MyISAM storage engine, as well as
InnoDB tables that
lacked a primary key.
References: See also Bug #16862316, Bug #17588348, Bug #17648468.
MASTER_SSL_CRLPATH options are not available
when using yaSSL; MySQL Replication now sets these to
NULL automatically whenever yaSSL is enabled.
to 1 or greater and starting the slave caused the slave SQL
thread to use but not release memory until the slave was
STOP SLAVE and
(Bug #18001777, Bug #71197)
When a slave was configured with replication filters and
--log-warnings=2, every statement
which was filtered caused an entry to be written in the error
log. For busy servers which generated many statements to be
filtered, the result was that the error log could quickly grow
to many gigabytes in size. Now a throttle is used for such
errors, so that an error message is printed only once in a given
interval, saying that this particular error occurred a specific
number of times during that interval.
SHOW SLAVE STATUS used incorrect
values when reporting
(Bug #17772911, Bug #70866)
References: This bug was introduced by Bug #11747191.
Binary log events could be sent to slaves before they were
flushed to disk on the master, even when
sync_binlog was set to 1. This
could lead to either of those of the following two issues when
the master was restarted following a crash of the operating
Replication cannot continue because one or more slaves are requesting replicate events that do not exist on the master.
Data exists on one or more slaves, but not on the master.
Such problems are expected on less durable settings
sync_binlog not equal to 1), but it should
not happen when
sync_binlog is 1. To fix this
issue, a lock (
LOCK_log) is now held during
synchronization, and is released only after the binary events
are actually written to disk.
(Bug #17632285, Bug #70669)
When running the slave with
--slave-parallel-workers at 1 or
the error log to be filled with with instances of the warning
Slave SQL: Could not execute Query event. Detailed
error: ;, Error_code: 0.
(Bug #17581990, Bug #68429)
References: See also Bug #17986385.
A number of possible state messages used as values for the
PROCESSLIST_STATE column of the Performance
threads table were longer
than the width of the column (64 characters).
The long state messages are now silently truncated in order to avoid errors. This fix applies in MySQL 5.6 only; a permanent fix for the issue is made in MySQL 5.7 and later. (Bug #17319380)
Replication: The server did not handle correctly the insertion of a row larger than 4 GB when using row-based replication. (Bug #17081415)
Replication: When using row-based replication, an additional auto-increment column on the slave version of a table was not updated correctly; a zero was inserted instead. (Bug #17066269, Bug #69680)
Statements involving the Performance Schema tables should not be
written to the binary log, because the content of these tables
is applicable only to a given MySQL Server instance, and may
differ greatly between different servers in a replication
topology. The database administrator should be able to configure
DELETE) or flush
TRUNCATE TABLE) performance
schema tables on a single server without affecting others.
However, when replicating from a MySQL 5.5 master to a MySQL 5.5
or later slave, warnings about unsafe statements updating
Performance Schema tables were elevated to errors. For MySQL 5.6
and later slaves, this prevented the simultaneous use of
performance_schema and GTIDs (see
Replication with Global Transaction Identifiers).
This fix causes all updates on tables in the
performance_schema database to be filtered on
the master and not replicated, regardless of the type of logging
that is in effect. Prior to this fix, statements using were
handled by being marked as unsafe for replication, which caused
warnings during execution; the statements were nonetheless
written to the binary log, regardless of the logging format in
Existing replication behavior for tables in the
INFORMATION_SCHEMA database is not changed by
For more information, see MySQL Performance Schema. (Bug #16814264)
References: See also Bug #14741537, Bug #18259193.
Modifying large amounts of data within a transaction can cause
the creation of temporary files. Such files are created when the
size of the data modified exceeds the size of the binary log
Previously, such files persisted until the client connection was
closed, which could allow them to grow until they exhausted all
available disk space in
To prevent this from occurring, the size of a temporary file
created in this way in a given transaction is now reset to 0
when the transaction is committed or rolled back.
(Bug #15909788, Bug #18021493, Bug #66237)
Replication: The server checks to determine whether semisynchronous replication has been enabled without a lock, and if this is the case, it takes the lock and checks again. If semisynchronous replication was disabled after the first but prior to the second one, this could cause the server to fail. (Bug #14511533, Bug #66411)
References: See also Bug #17920923.
Replication: Semisynchronous replication became very slow if there were many dump threads (such as from mysqlbinlog or slave I/O connections) working at the same time. It was also found that semisynchronous master plugin functions were called even when the dump connections did not support semisynchronous replication, which led to locking of the plugin lock as well as wasting time on necessary code.
After this fix, non-semisynchronous dump threads no longer call semisynchronous master functions to observe binary events. (Bug #70218, Bug #17434690)
mysql_install_db could hang while reading
/dev/random to generate a random
Compilation failed if MySQL was configured with
CFLAGS set to include a
-Werror option with an argument.
libmysqld embedded server library
was not built on Linux.
(Bug #18123048, Bug #16430656, Bug #68559)
While printing the server version, the mysql client did not check for buffer overflow in a string variable. (Bug #18186103)
Building MySQL from source on Windows using Visual Studio 2008 would fail with an identifier not found error due to a regression introduced by the patch for Bug#16249481. (Bug #18057449)
On Microsoft Windows, the rw-lock backup implementation for the
my_atomic_* functions was always used. Now,
the native Microsoft Windows implementation is used, where
When tables are reopened from the table cache and the current thread is not instrumented for the Performance Schema, a table handle was unnecessarily instrumented. (Bug #18047865)
The audit log plugin could cause a server exit during log file rotation operations when there were many operations happening for multiple connections. (Bug #17930339)
SUM_SORT_MERGE_PASSES column value in the
table was calculated incorrectly.
If the Performance Schema
table was full when a statement with a new digest was found, the
status variable was not incremented.
The optimizer could push down a condition when the index did not have the key part present in the condition. (Bug #17814492)
Contraction information in a collation could be mishandled, resulting in incorrect decisions about whether a character is part of a contraction, and miscalculation of contraction weights. (Bug #17760379)
If used to process a prepared
CALL statement for a stored
not properly set the flags required to retrieve all the result
(Bug #14492429, Bug #17849978)
When run by
root, mysqld --help
--verbose exited with a nonzero error code after
displaying the help message.
(Bug #70058, Bug #17324415)
MySQL client programs from a Community Edition distribution
could not connect using SSL to a MySQL server from an Enterprise
Edition. This was due to a difference in certificate handling by
yaSSL and OpenSSL (used for Community and Enterprise,
respectively). OpenSSL expected a blank certificate to be sent
when not all of the
options were specified, and yaSSL did not do so. To resolve
this, yaSSL has been modified to send a blank certificate when
an option is missing.
(Bug #68788, Bug #16715064)
mysqlslap, and mysqlshow
programs now support a
that prevents sending passwords to the server in old (pre-4.1)
format. This option is enabled by default; use
--skip-secure-auth to disable it.
(Bug #69051, Bug #16723046)
A deadlock error occurring during subquery execution could cause an assertion to be raised. (Bug #69969, Bug #17307201)
A query that creates a temporary table to find distinct values and has a constant value in the projected list could produce incorrect results. (Bug #70657, Bug #17634335)
Messages written by the server to the error log for LDML collation definition problems were missing the collation name. (Bug #68144, Bug #16204175)
Aggregating the results of a subquery in the
FROM clause could produce incorrect results.
(Bug #71244, Bug #18014565)
For system variables that take a string value,
SET statements permitted an unquoted value,
but values that contained dots were parsed incorrectly and only
part of the value was assigned. For example,
slow_query_log_file = my_slow.log assigned the value
my_slow. Now such values must be quoted or an
(Bug #69703, Bug #17075846)
A temporal literal string without delimiters and more than 14
digits was validated as a
value with a two-digit precision fractional seconds part. But
fractional seconds should always be separated from other parts
of a time by a decimal point.
(Bug #69714, Bug #17080703)
On Windows, mysql_install_db.pl could be run
only from within the
bin directory under
the installation directory.
(Bug #42421, Bug #11751526)
The msql2mysql, mysql_convert_table_format, mysql_find_rows, mysql_fix_extensions, mysql_setpermission, and mysqlaccess utilities are now deprecated and will be removed in MySQL 5.7. (Bug #27482, Bug #69012, Bug #69014, Bug #69015, Bug #69016, Bug #69017, Bug #11746603, Bug #16699248, Bug #16699279, Bug #16699284, Bug #16699317, Bug #18179576)