Log message:
mysql57: updated to 5.7.28
Changes in MySQL 5.7.28
Configuration Notes
It is now possible to compile MySQL 5.7 using OpenSSL 1.1.1, enabling \
compilation support for MySQL 5.7 against OpenSSL even when OpenSSL 1.0.2 \
reaches End of Life status at the end of 2019.
All MySQL 5.7 builds now use OpenSSL. MySQL no longer supports using yaSSL as \
the SSL library, and source distributions no longer include yaSSL.
The WITH_SSL CMake option no longer permits bundled (use yaSSL) as a valid \
value, and the default option value has changed from bundled to system (use the \
version of OpenSSL installed on the host system).
sys Schema Notes
The sys.schema_unused_indexes view now filters out unique indexes.
The sys.ps_is_consumer_enabled() function now produces an error rather than \
returning NULL if the argument is an unknown non-NULL consumer name.
Previously, sys schema sources were maintained in a separate Git repository. sys \
schema sources now are included with and maintained within MySQL source \
distributions (under scripts/sys_schema).
The sys.version view is deprecated and will be removed in a future MySQL \
version. Affected applications should be adjusted to use an alternative instead. \
For example, use the VERSION() function to retrieve the MySQL server version.
Bugs Fixed
InnoDB: An ALTER TABLE ... ENCRYPTION = 'Y' operation on a MyISAM table failed \
to raise an error indicating that the storage engine does not support \
encryption. The INPLACE algorithm did not check encryption support before \
updating metadata in the .frm file. To address this issue, an encryption support \
flag was added. The ALTER TABLE ... ENCRYPTION = 'Y' operation now checks the \
flag and reports an error if the storage engine does not support encryption.
InnoDB: Delete marked rows were able to acquire an external read lock before a \
partial rollback was completed. The external read lock prevented conversion of \
an implicit lock to an explicit lock during the partial rollback, causing an \
assertion failure.
InnoDB: A long running ALTER TABLE ... ADD INDEX operation with concurrent \
inserts caused semaphore waits.
Replication: A deadlock involving three threads could occur if a START SLAVE \
statement was issued to start the SQL thread on a slave while the SQL thread was \
still in the process of being stopped, and a request for the slave status was \
made at the same time. The issue has now been fixed by releasing a lock earlier \
while the SQL thread is being stopped.
Replication: A locking issue in the WAIT_FOR_EXECUTED_GTID_SET() function could \
cause the server to hang in certain circumstances. The issue has now been \
corrected.
Replication: On a multi-threaded slave with GTIDs in use and \
MASTER_AUTO_POSITION set to ON, following an unexpected halt the slave would \
attempt relay log recovery, which failed if relay logs had been lost, preventing \
replication from starting. However, this step was unnecessary as GTID \
auto-positioning can be used to restore any missing transactions. In a recovery \
situation, the slave now checks first whether MASTER_AUTO_POSITION is set to ON, \
and if it is, skips relay log recovery.
When generating C source from SQL scripts, Some utf8-encoded characters were \
split across lines. Thanks to Przemysław Skibiński for the patch.
For Solaris, mysqld.cc contained a prototype for memcntl() that is no longer \
needed. The prototype has been removed.
For Solaris, -DWITH_SSL=system did not work when compiling with GCC.
MySQL builds configured with -DWITHOUT_SERVER=1 failed.
For the keyring_aws plugin, some valid region values for the keyring_aws_region \
system variable were rejected.
For debug builds, an assertion could be raised during UNION queries when \
computing the combined data type of a GEOMETRY column and SELECT * FROM (SELECT \
NULL).
For authentication using an LDAP authentication plugin, if the user DN portion \
was empty and group mapping was configured, authentication assigned an incorrect \
user DN and skipped the user search.
mysqlpump produced an error when run against a server older than MySQL 5.7.
A possible integer overflow due to unsigned integer type casting could lead to \
later buffer overflow due to arbitrary size memory allocation.
Attempted use of a freed object during MeCab plugin initialization caused a \
segmentation fault.
For MySQL installed using RPM packages, an initialization script that tested \
server connectivity misbehaved if the client account authenticated using an LDAP \
authentication plugin.
Improper locking during storage engine initialization could cause a server exit.
On a GTID-enabled server, concurrent execution of DROP USER and a prepared \
statement that accessed a view could deadlock.
A query with a WHERE clause whose predicate contained a numeric value in \
scientific notation was not handled correctly.
VS2019 produced compilation errors with debug compilation selected due to use of \
the /ZI flag. Now /Z7 is used instead.
The client library could dereference a null pointer while fetching result set \
metadata from the server.
In READ UNCOMMITTED isolation level, a segmentation fault occurred under heavy \
load from memcached clients. An externally stored BLOB column that was being \
updated by one transaction was read by another transaction as having a NULL \
value and a non-zero data length.
Arguments for the TIMESTAMPADD() function could be reversed for prepared statements.
With the thread_pool plugin enabled, the sys.processlist and sys.session views \
displayed a thread name rather than the actual user name.
The delete_latency column in the sys.schema_index_statistics view incorrectly \
referred to the SUM_TIMER_INSERT column of the Performance Schema \
table_io_waits_summary_by_index_usage table rather than the SUM_TIMER_DELETE \
column.
In output from the sys.diagnostics() procedure, the latency column for the \
user_summary_by_file_io_type view was incorrectly displayed in raw picoseconds \
rather than as a formatted value.
MySQL Enterprise Encryption functions could apply Diffie-Hellman (DH) methods to \
non-DH keys, resulting in unpredictable results or server exit.
Password masking was incomplete for SHOW PROCESSLIST and some INFORMATION_SCHEMA \
and Performance Schema tables.
The -DWITH_EXAMPLE_STORAGE_ENGINE=1 CMake option was ignored but should not have \
been. If -DWITH_EXAMPLE_STORAGE_ENGINE=0 is given, the EXAMPLE storage engine is \
built as a plugin.
|
Log message:
mysql57: updated to 5.7.27
Changes in MySQL 5.7.27:
Keyring Notes
The keyring_aws plugin has been updated to use the latest AWS SDK and so that it \
works with OpenSSL 1.1.
Packaging Notes
Binary packages that include curl rather than linking to the system curl library \
now use curl 7.64.0.
X Plugin Notes
On Windows, X Plugin logged some messages that were unnecessary or \
insufficiently informative. The messages have been removed or improved as \
appropriate.
Functionality Added or Changed
Microsoft Windows: A new warning message now reminds DBAs that connections made \
using the MySQL named pipe on Windows has limited the permissions a connector \
can request on the named pipe.
Previously, the named_pipe_full_access_group system variable was set to a value \
that maps to the built-in Windows Everyone group (SID S-1-1-0) by default. \
However, this group is not ideal and should be replaced with a group that \
restricts its membership for connectors that are unable to request fewer \
permissions on the MySQL named pipe.
The new warning is written to the error log at startup if the string value \
assigned to named_pipe_full_access_group is '*everyone*' (or the Windows System \
Language equivalent) and named pipes are enabled. In addition, the warning is \
written to the error log and raised to the client if the system variable is \
reset to the Everyone group at runtime.
Bugs Fixed
InnoDB: Insufficient memory barriers in the rw-lock implementation caused \
deadlocks on ARM.
Thanks to Yibo Cai from Arm Technology for the contribution.
InnoDB: Manually changing the system time while the MySQL server was running \
caused page cleaner thread delays.
InnoDB: During log application, after an OPTIMIZE TABLE operation, InnoDB did \
not populate virtual columns before checking for virtual column index updates.
InnoDB: An INSERT operation involving a generated virtual BLOB column resulted a \
secondary index being updated with an incorrect value.
InnoDB: A full-text cache lock taken when data is synchronized was not released \
if the full-text cache size exceeded the full-text cache size limit.
InnoDB: Client sessions using different auto_increment_increment values while \
performing concurrent insert operations could cause a duplicate key error.
Partitioning: ALTER TABLE ... EXCHANGE PARTITION failed with the error Non \
matching attribute 'ROW_FORMAT' between partition and table when the partitioned \
table had partitions using different row formats, even when the partition to be \
exchanged used the same row format as the non-partitioned table.
Replication: The error message that is issued for a discrepancy between the \
number of group members and the auto-increment interval incorrectly referred to \
the group_replication_auto_increment_increment system variable, instead of the \
auto_increment_increment system variable. The value of auto_increment_increment \
is changed to the value specified by group_replication_auto_increment_increment \
when Group Replication starts, but only if auto_increment_increment and \
auto_increment_offset have their default values, and from MySQL 8.0, only in \
multi-primary mode. The value of auto_increment_increment was always the value \
that was checked for the error message, and it has now been corrected to give \
the accurate system variable name.
Replication: When events generated by one MySQL server instance were written to \
the binary log of another instance, the second server implicitly assumed that \
the first server supported the same number of binary log event types as itself. \
Where this was not the case, the event header was handled incorrectly. The issue \
has now been fixed. Thanks to Facebook for the contribution.
Replication: In Group Replication, joining members could wrongly identify \
themselves as incompatible with an existing replication group even if there were \
members at the same version already in the group, because they checked against \
all other members, including the member at the highest version. Joining members \
also included their own version in the compatibility check. Now, joining members \
only compare themselves with the existing group member at the lowest version, \
and do not count their own version.
Replication: If a FLUSH LOGS statement was issued before the binary log file was \
initialized, the statement attempted to write a binary log rotation event to the \
uninitialized file. The server now checks first that a binary log file is \
available.
Replication: When a MEMORY table is implicitly deleted on a master following a \
server restart, the master writes a DELETE statement to the binary log so that \
slaves also empty the table. This generated event now includes a comment in the \
binary log so that the reason for the DELETE statement is easy to identify. \
Thanks to Daniël van Eeden for the contribution.
Replication: With statement-based replication in use, if super_read_only was set \
to ON for a server at the point when a no-op transaction was between its UPDATE \
and COMMIT operations, the transaction was written to the binary log and \
assigned a GTID. The transaction is now blocked in this situation. From MySQL \
8.0, the value of super_read_only cannot be changed while a transaction is in \
progress.
Replication: The group communication engine for Group Replication (XCom, a Paxos \
variant) did not handle out of memory errors in an appropriate way. If memory \
could not be allocated to make a copy of the payload for a message, an error was \
logged but the message was still sent, with a null payload. The Group \
Communication System (GCS) on the receiving member discarded the message as \
empty, and the XCom instance on the receiving member accepted this action and \
did not retry, resulting in the message effectively being skipped. This caused \
the GTID set on the receiving member to diverge from the group, leading to \
replication errors. XCom now terminates gracefully if it experiences an out of \
memory error, so that this situation cannot occur.
Replication: In query log events in the binary log, the thread ID used for the \
execution of DROP TABLE and DELETE statements was identified incorrectly or not \
at all. On a multi-threaded replication slave, where temporary tables were \
involved (which require the correct thread ID as they are session specific), \
this omission resulted in errors when using mysqlbinlog to replay the binary log \
for point-in-time recovery. The thread ID is now set correctly.
Replication: When a slave server logs master status and connection information \
to a table (master_info_repository=TABLE), which is the default in MySQL 8.0, \
the mysql.slave_master_info table was not being updated on shutdown if the \
server was in super read only mode (super_read_only=ON). No error was written to \
the error log at this time, but replication failed after server startup because \
the master log file and master log position information was out of date. The \
thread that updates the master info log at shutdown is now excluded from \
read-only checks like other replication threads are, so it can update the table \
even if the server is in super read only mode. Error handling for a slave that \
is shutting down has also been improved so that any failure to write to the \
slave status logs results in an error in the error log.
An overly strict assertion could be raised during sorting of stored program \
local objects.
Installing from RPM packages could result in an error log with incorrect permissions.
Enabling audit log encryption could cause a server exit.
On Debian and Ubuntu, MySQL packages did not enable mysql.service after upgrades \
from native MySQL packages.
The server did not properly close shared-memory connections when an error \
occurred, which could result in unexpected server behavior.
MySQL Installer did not install OpenSSL DLL dependencies if the Development \
component was not selected.
The parser could leak memory for certain multiple-statement queries.
CREATE USER and ALTER USER did not check the validity of a hashed authentication \
string when used with IDENTIFIED WITH auth_plugin AS 'hash_string' syntax.
For InnoDB tables that contained an index on a VARCHAR column and were created \
prior to MySQL 5.7.23, some simple ALTER TABLE statements that should have been \
done in place were performed with a table rebuild after an upgrade to MySQL \
5.7.23 or higher.
HANDLER statements did not always work correctly with tables having generated \
columns.
Session-tracking information in the client/server protocol could be mishandled.
With the PAD_CHAR_TO_FULL_LENGTH SQL mode enabled, password changes failed, with \
no warning or error reported.
The audit_log plugin did not log UNINSTALL PLUGIN audit_log statements.
audit_log filtering operations could leak memory.
An index defined on a virtual generated column could fail to be updated if the \
column had a base column in a foreign key relationship.
Privileges for dropping some Performance Schema tables were checked incorrectly.
A query that employed a derived table which included an ORDER BY was not always \
handled correctly.
Base columns were not excluded from index-only access by a generated column.
A thread pool group could be blocked when a thread process tick time exceeded \
the maximum permitted value. The tick time now uses a larger data type to permit \
larger values.
MySQL does not support OpenSSL session tickets, but did not set the \
SSL_OP_NO_TICKET flag to inform OpenSSL of that. The flag is now set.
The audit_null plugin did not properly check for a null event record.
UpdateXML() did not always free memory properly in certain cases.
Empty values in the name column of the mysql.plugin system table caused the \
server to exit during startup.
With the thread_pool plugin enabled, the Performance Schema status_by_thread \
table contained no data.
If an INSTALL PLUGIN statement contained invalid UTF-8 characters in the shared \
library name, it caused the server to hang (or to raise an assertion in debug \
builds).
Inner tables of different semijoin nests were interleaved during \
materialization, which could lead to a different result for the same query when \
it used a different query plan. To keep this from occurring, a check is added to \
prevent such interleaving.
A query involving GROUP BY on a TIMESTAMP column resulted in a duplicate entry \
for key (ER_DUP_ENTRY) error. This problem arose when TIMESTAMP values were \
inserted into a table using a given setting for the time zone and these values \
were later fetched after the time zone setting had been changed, such that at \
least some of the inserted TIMESTAMP values occurred during the hour that the \
time changed from standard to daylight time (DST) in the new time zone, during \
which time the same TIMESTAMP value can exist twice. Now, when the server would \
otherwise return the error DUPLICATE ENTRY FOR KEY 'group_key', if the grouping \
involves a TIMESTAMP column, it instead raises the error Grouping on temporal is \
non-deterministic for time zones having DST. Please consider switching to UTC \
for this query.
In addition, it is suggested to set explicit_defaults_for_timestamp to ON as \
well as one or more of MODE_NO_ZERO_IN_DATE, MODE_NO_ZERO_DATE, or \
MODE_INVALID_DATES as part of the server SQL mode to help avoid this issue.
|