MySQL 5.7 Release Notes
The rapidjson
library included with MySQL has
been upgraded to the GitHub snapshot of 16 January 2020. A fix
for a compiler error encountered when building from the snapshot
on Mac OS X has been added.
(Bug #30898701)
Binary packages that include curl
rather than
linking to the system curl
library have been
upgraded to use curl
7.69.0.
(Bug #30866333)
The bundled libedit
library was upgraded to
version 3.1.
InnoDB:
The row_upd_clust_rec_by_insert
function,
which marks a clustered index record as deleted and inserts an
updated version of the record into the clustered index, passed
an incorrect n_ext
value (the total number of
external fields) to lower level functions, causing an assertion
failure.
(Bug #30437378)
InnoDB:
An operation performed with the
innodb_buffer_pool_evict
debug variable set
to uncompressed
caused an assertion failure.
(Bug #30405531)
InnoDB: An add column operation caused an assertion failure. The failure was due to a dangling pointer. (Bug #29866408)
References: This issue is a regression of: Bug #28491099.
InnoDB:
Updating certain InnoDB
system variables that
take string values raised invalid read errors during Valgrind
testing.
(Bug #29717909, Bug #95215)
InnoDB: An insert statement on a table with a spatial index raised a record type mismatch assertion due to a tuple corruption. (Bug #29465567)
InnoDB: A function that calculates undo log record size could calculate an incorrect length value in the case of a corrupted undo log record, resulting in a malloc failure. Assertion code was added to detect incorrect calculations. (Bug #29448406, Bug #82734)
Replication:
While an SQL statement was in the process of being rewritten for
the binary log so that sensitive information did not appear in
plain text, if a SHOW PROCESSLIST
statement was used to inspect the query, the query could become
corrupted when it was written to the binary log, causing
replication to stop. The process of rewriting the query is now
kept private, and the query thread is updated only when
rewriting is complete.
(Bug #30569003, Bug #97531, Bug #30654405)
Replication:
When a GRANT
or
REVOKE
statement is only
partially executed, an incident event is logged in the binary
log, which makes the replication slave's applier thread stop so
that the slave can be reconciled manually with the master.
Previously, if a failed GRANT
or
REVOKE
statement was the first
statement executed in the session, no GTID was applied to the
incident event (because the cache manager did not yet exist for
the session), causing an error on the replication slave. Also,
no incident event was logged in the situation where a
GRANT
statement created a user
but then failed because the privileges had been specified
incorrectly, again causing an error on the replication slave.
Both these issues have now been fixed.
(Bug #30566518, Bug #30324661)
Replication: When a replication slave has a generated column that the master does not have in that table, with a secondary index on the generated column, the generated expression should be evaluated and the value stored by the storage engine in the secondary index. When row-based binary logging is in use, the replication slave assigns default values to any fields that are not in the master's definition of the table. In the case of a generated column, which does not have a default value, the slave was previously assigning a null or a zero value to the column. This value was then stored by the storage engine in the secondary index, causing both the table and the index to become corrupted. To fix this issue, generated columns in a table on a replication slave are now re-evaluated before the values are sent to the storage engine. (Bug #30034874)
Replication: In the event of an unplanned disconnection of a replication slave from the master, the reference to the master's dump thread might not be removed from the list of registered slaves, in which case statements that accessed the list of slaves would fail. The issue has now been fixed. (Bug #29915479)
Replication:
With the settings
binlog_format=MIXED
,
tx_isolation=READ-COMMITTED
,
and binlog_row_image=FULL
, an
INSERT ... SELECT
query involving a
transactional storage engine omitted any columns with a null
value from the row image written to the binary log. This
happened because when processing INSERT ...
SELECT
statements, the columns were marked for inserts
before the binary logging format was selected. The issue has now
been fixed.
(Bug #29110804, Bug #93423)
Replication: Under certain conditions, replication of conditional comments could fail. (Bug #28388217)
The -libs-compat
RPM package is now built
with system zlib
to avoid problems with
unrestricted export of symbols in
libmysqlclient.so.18
.
(Bug #30722389, Bug #98130)
The Event Scheduler had a memory leak. (Bug #30628268)
Under certain circumstances, a memcached command could result in reading an uninitialized memory buffer, causing a failure. (Bug #30592346)
Using ALTER USER
to reset an
account MAX_USER_CONNECTIONS
value did not
take effect until all current account connections terminated, if
there were any.
(Bug #30578217, Bug #97735)
A materialized subquery including a condition in which a column value was used as input to a nondeterministic function produced incorrect results. (Bug #30368937)
CONCAT()
and
CONCAT_WS()
could produce
incorrect results in rare cases due to incorrect substring
handling.
(Bug #30350206, Bug #96950)
Scheduling of events could be disturbed by removing events. (Bug #30301356, Bug #96849)
Client programs could load authentication plugins from outside the plugin library. (Bug #30191834, Bug #30644258)
The server did not handle correctly a UNION
in which one of the queries contained a subquery that used
ORDER BY
.
(Bug #29952565)
A query with a WHERE
clause whose predicate
contained a numeric value in scientific notation was not handled
correctly.
In addition, attempting to insert a particular integer specified as a string caused a server exit when the string-to-integer conversion was not successful. (Bug #29723340, Bug #30441969)
Previously, mysqlpump read the
[mysql_dump]
and [client]
groups from option files. mysqlpump now
additionally reads the [mysqlpump]
group. The
[mysql_dump]
group is still accepted but is
deprecated.
(Bug #24733245, Bug #83144)
A multi-table UPDATE
statement
which updated a table joined to a derived table that joined two
other tables was not optimized properly as it had been in MySQL
5.6, instead being treated as if
STRAIGHT_JOIN
had been used with the subquery
creating the derived table.
(Bug #97418, Bug #30488700)