MySQL 5.7 Release Notes
tcmalloc
is no longer a permitted value for
the mysqld_safe
--malloc-lib
option.
(Bug #31372027)
The libevent
library bundled with MySQL was
upgraded to version 2.1.11. In addition, for the
WITH_LIBEVENT
CMake option, the following two changes were
made:
yes
is no longer permitted as a synonym
for system
. Use system
instead.
If system
is specified but no system
libevent
is found, the bundled version is
no longer used in place of the missing system library, and
an error occurs instead.
(Bug #30926742)
Incompatible Change:
Access to the
INFORMATION_SCHEMA.FILES
table now
requires the PROCESS
privilege.
This change affects users of the mysqldump
command, which accesses tablespace information in the
FILES
table, and thus now requires
the PROCESS
privilege as well.
Users who do not need to dump tablespace information can work
around this requirement by invoking mysqldump
with the --no-tablespaces
option.
(Bug #30350829)
The linked OpenSSL library for MySQL Server has been updated to version 1.1.1g. Issues fixed in the new OpenSSL version are described at https://www.openssl.org/news/cl111.txt and https://www.openssl.org/news/vulnerabilities.html. (Bug #31296697)
InnoDB:
The INNODB_METRICS
table
AVG_COUNT_RESET
value for a counter defined
as a module owner reported NULL. The
METRIC_AVG_VALUE_RESET
field was incorrectly
marked as NULL. Thanks to Fungo Wang for the contribution.
(Bug #31084706, Bug #98990)
InnoDB: Purge thread activity was excessive when the history list length approached zero, wasting CPU resource and causing mutex contention. (Bug #30875956)
InnoDB: The server failed intermittently with an “ibuf cursor restoration fails” error. (Bug #30770380, Bug #91033)
InnoDB: A fatal “page still fixed or dirty” error occurred during shutdown. (Bug #29759555, Bug #95285)
References: This issue is a regression of: Bug #29207450.
Partitioning:
A query against a partitioned table, which used an
ORDER BY
, returned unordered results under
the following conditions:
The table had a composite index with a prefix on one of the columns.
The query's WHERE
clause contained an
equality condition on the prefixed column.
The column with the prefix was the leftmost column in the index.
The column used in the ORDER BY
was the
rightmost column in the index.
The index was used for handling the ORDER
BY
.
Our thanks to Quanan Han for the suggestion. (Bug #84070, Bug #25207522)
Replication:
When a replication source server shuts down and restarts, its
MEMORY
tables become empty. To
replicate this effect to replicas, the first time that the
source uses a given MEMORY
table
after startup, it notifies replicas that the table must be
emptied by writing a DELETE
statement for that table to the binary log. Previously, the
generated DELETE
statement was
written to the binary log statement cache for the current
session, which could result in it being logged together with
other statements under the same GTID, or logged without
BEGIN
and COMMIT
statements. Also, in some situations, the generated
DELETE
statement could consume
the GTID intended for the transaction that triggered it. The
generated DELETE
statement is now
logged with accompanying BEGIN
and
COMMIT
statements, and the resulting
transaction is flushed to the binary log immediately after it is
written to the statement cache, so that it always receives its
own GTID and is kept separate from other transactions.
(Bug #30527929, Bug #25681518, Bug #77729)
Replication:
A fix made in MySQL 8.0.14 and MySQL 5.7.25 for a deadlock
scenario involving the system variables
binlog_transaction_dependency_tracking
and
binlog_transaction_dependency_history_size
had the side effect of leaving the writeset history used for
transaction dependency tracking unprotected from concurrent
update. The writeset history and tracking mode are now locked
correctly whenever they are accessed.
(Bug #29719364, Bug #95181)
References: See also: Bug #28511326, Bug #91941.
Group Replication: Internal queries from Group Replication to the Performance Schema for statistics on local group members failed if they occurred simultaneously with changes to the group's membership. Locking for the internal queries has been improved to fix the issue. (Bug #30049349, Bug #30791583, Bug #30963553)
Configuring with
-DWITH_EDITLINE=system
resulted in
compilation failures for older library versions.
(Bug #31366715)
The upgrade of the bundled libedit
library in
the previous MySQL distribution caused a problem for builds
using that library such that
CTRL+C (SIGINT) in the
mysql client required a following Enter to
take effect in some circumstances.
(Bug #31360025)
Assigning CONCAT('')
or
CONCAT_WS('')
to a variable set
the variable to NULL
, not the empty string.
(Bug #31320716, Bug #99485, Bug #31413167, Bug #99722)
The gen_range()
user-defined
function could mishandle its arguments, causing a server exit.
(Bug #30763294)
During UPDATE
processing,
conversion of an internal in-memory table to
InnoDB
could result in a key-length error.
(Bug #30674616)
It is possible to define a column named *
(single asterisk character), but SELECT `*`
was treated identically to SELECT *
, making
it impossible to select only this column in a query; in other
words, the asterisk character was expanded to a list of all
table columns even when it was surrounded by backticks.
(Bug #30528450)
An internal packet-length function returned values of the wrong integer type. (Bug #30139031)
Calculations by mysqldump for the length of
INSERT
statements did not take
into account the _binary
character set
introducer used for VARBINARY
strings.
(Bug #29998457, Bug #96053)
The internal method Field_tiny::pack()
did
not always perform bounds checking as expected.
(Bug #29948029)
References: See also: Bug #31591391.
mysql_store_result()
could fail
to detect invalid data packets.
(Bug #29921423)
In a multiple-table UPDATE
that
updated the key of the first table, if a temporary table
strategy was used, duplicate entries could be written to the
temporary table, followed by occurrence of a Can't find
record
error.
(Bug #28716103)
The optimizer could attempt to access a pseudo table as a table, resulting in unexpected server behavior. (Bug #28651673)
The server sometimes mistakenly removed a subquery with a
GROUP BY
when optimizing a query, even in
some cases when this subquery was used by an outer select. This
could occur when the subquery also used an aggregate function.
(Bug #28240054)
Coercibility of the NAME_CONST()
function was assessed incorrectly.
(Bug #26319675)
Incorrect results could occur when the optimizer chose an index on a generated column to fetch values. (Bug #24345509, Bug #29451999)