The resolveip and resolve_stack_dump utilities are now deprecated and will be removed in MySQL 8.0. nslookup, host, or dig can be used instead of resolveip. Stack traces from official MySQL builds are always symbolized, so there is no need to use resolve_stack_dump. (WL #12619, WL #12620)
If the LDAP port number is configured as 636 or 3269, the plugin now uses LDAPS (LDAP over SSL) instead of LDAP. The port number is settable using the
authentication_ldap_sasl_server_port
orauthentication_ldap_simple_server_port
system variable. (LDAPS differs fromstartTLS
.) (Bug #28743563)Previously, for LDAP authentication with proxying, LDAP authentication plugins used the first group name returned by the LDAP server as the MySQL proxied user account name. The authentication string for a MySQL account now can specify a list of groups to match, in preference order, and can optionally map the matching group name to a specified MySQL proxied user name. See LDAP Pluggable Authentication. (WL #12005)
-
The linked OpenSSL library for the MySQL Commercial Server has been updated to version 1.0.2q. Issues fixed in the new OpenSSL version are described at http://www.openssl.org/news/vulnerabilities.html.
This change does not affect the Oracle-produced MySQL Community build of MySQL Server, which uses the yaSSL library instead. (Bug #28988091)
Microsoft Windows: The access control granted to clients on the named pipe created by the MySQL server now is set to the minimum necessary for successful communication on Windows. Newer MySQL client software can open named pipe connections without any additional configuration. If older client software cannot be upgraded immediately, the new
named_pipe_full_access_group
server system variable can be used to give a Windows group the necessary permissions to open a named pipe connection. Membership in the full-access group should be restricted and temporary. (WL #12445)
InnoDB: A dangling pointer caused a memory leak. (Bug #28693568)
InnoDB: An
ON DELETE CASCADE
operation on table with a foreign key constraint and an indexed virtual column caused the server to exit. (Bug #28470805)InnoDB: An incorrectly written DML log involving a virtual column value raised an assertion. (Bug #28448853)
InnoDB: Using the
O_DIRECT_NO_FSYNC
innodb_flush_method
setting could cause the system to hang due to file system metadata becoming unsynchronized. To prevent this issue from occurring inO_DIRECT_NO_FSYNC
mode,InnoDB
now callsfsync()
after creating a new file, after increasing file size, and after closing a file. Thefsync()
system call is still skipped after each write operation. (Bug #27309336)InnoDB: An assertion was raised when attempting to write to a tablespace file greater than 4GB in size on a 64-bit Windows system. The failure was due to a narrowing cast. (Bug #26636815, Bug #87423)
Partitioning: Repeated
ALTER TABLE
statements on partitioned tables containingBLOB
orTEXT
columns were not always handled correctly. (Bug #28491099)Partitioning:
ALTER TABLE ... EXCHANGE PARTITION
did not work when the partitioned table had one or more partition definitions using theDATA DIRECTORY
option. This fix supports partitioned tables using theInnoDB
storage engine only. (Bug #19730200)Replication: A patch to correct the handling of quotes for identifiers in
ROLLBACK TO SAVEPOINT
statements in the binary log was not correctly applied to subsequent MySQL versions. (Bug #28569645)Replication: Following a patch in MySQL 5.7.23,
LOAD DATA
statements stopped statement-based replication from a MySQL 5.7.22 master to a replication slave at a later release. The problem has now been fixed. (Bug #28541204, Bug #92132)Replication: In some circumstances, the
CHANGE MASTER TO
statement could not be used on a replication slave if the master info log had been changed from a table (master_info_repository=TABLE
) into a file (master_info_repository=FILE
). (Bug #28529558)Replication: When the system variables
binlog_transaction_dependency_tracking
andbinlog_transaction_dependency_history_size
were set or read, the types of lock that were required could result in a deadlock scenario, because the same locks were also required for working with the active binary logs. A new lock type is now used instead for access to the transaction dependency tracking system variables, so that this deadlock cannot occur. (Bug #28511326, Bug #91941, Bug #28537209, Bug #92108)Replication: The
PURGE BINARY LOGS TO
statement failed for binary log files that had been moved to another location using mysqlbinlogmove. Such files are still listed in the binary log index file, but they are listed using an absolute path, rather than a path relative to the directory where the binary log files are normally stored. MySQL Server can now locate and purge moved binary log files successfully. (Bug #28284624)'log_name'
Replication: If
autocommit
was set to 0 for a replication slave or Group Replication group member where GTIDs were in use andsuper_read_only=ON
was set, server shutdown was prevented by a transaction that did not complete. The transaction was attempting to save GTIDs to themysql.gtid_executed
table, but the update failed becausesuper_read_only=ON
was set. (Withautocommit
set to 1, the transaction would complete in this situation, and themysql.gtid_executed
table would instead be updated at server startup.) Now, the check for thesuper_read_only
setting is skipped for this task, so the transaction is able to save the GTIDs to themysql.gtid_executed
table and complete regardless of the combination ofsuper_read_only
andautocommit
settings. (Bug #28183718)Replication: An assertion was raised in debug builds if an
XA ROLLBACK
statement was issued for an unknown transaction identifier when thegtid_next
value had been set manually. The server now does not attempt to update the GTID state if anXA ROLLBACK
statement fails with an error. (Bug #27928837, Bug #90640)Replication: The value returned by a
SHOW SLAVE STATUS
statement for the total combined size of all existing relay log files (Relay_Log_Space
) could become much larger than the actual disk space used by the relay log files. The I/O thread did not lock the variable while it updated the value, so the SQL thread could automatically delete a relay log file and write a reduced value before the I/O thread finished updating the value. The I/O thread then wrote its original size calculation, ignoring the SQL thread's update and so adding back the space for the deleted file. TheRelay_Log_Space
value is now locked during updates to prevent concurrent updates and ensure an accurate calculation. (Bug #26997096, Bug #87832)Replication: If the relay log index file was temporarily locked for viewing by a backup process for a replication slave, and MySQL Server also attempted to access the file at that time for rename or delete operations, the backup completed with warnings, but MySQL Server experienced an unexpected halt. MySQL Server now retries the file access operation a number of times in case this or a similar scenario is the explanation and the file becomes available again before long. (Bug #25839610)
Replication: With
sync_binlog=1
set, if the binary log was rotated during a commit before the binary log end position was updated, replication stopped on the slave because the server attempted to use the old binary log end position with the new binary log file. The server now compares the binary log file name with the active binary log file when updating the binary log end position, so that the issue does not occur. (Bug #22252394, Bug #25524203, Bug #84752)Replication: When adding a new member to a group, if the certification information was too big to transmit, an event was generated that caused failures in all group members. To avoid this situation, now if the certification information is too large an error is generated which makes the joining member leave the group. (Bug #93130, Bug #91870, Bug #28900691, Bug #28443958)
Group Replication: When stopping group replication, any channels with pending transactions could cause a deadlock. (Bug #92376, Bug #28636768, Bug #28365855)
-
The
keyring_aws
plugin was missing from Commercial packages for macOS.The supported macOS versions for this plugin now are macOS 10.13 and 10.14. (Bug #29051838)
MySQL Enterprise Firewall did not work well if the
audit_log
plugin was installed. (Bug #28930885, Bug #93184)The server permitted creation of databases with the same name as redo log files, which could result in unexpected server behavior. Such names are no longer permitted as database names. (Bug #28867993)
Removal of Sun RPC and XDR from
glibc
into a separatelibtirpc
library caused problems withlibasan
on some platforms. (Bug #28785835, Bug #92762, Bug #28897799, Bug #93116)-
In LDAP group search filter values, special characters were not escaped. Special characters in the user DN now are escaped with their hexadecimal equivalant as follows:
* => \2a ( => \28 ) => \29 \ => \5c \0 => \00
(Bug #28743525)
A memory leak was caused by
GET_LOCK()
calls with a zero timeout that failed due to concurrent connections holding the same user-level lock. (Bug #28714367)mysqlpump did not free all allocated resources when it encountered an error, resulting in memory leaks. (Bug #28538971, Bug #92131)
For debug builds, the server could exit when attempting to roll back
CREATE USER
statements. (Bug #28536312)Mishandling of deprecated system variables could cause output from queries on the Performance Schema
variables_by_thread
table to be incorrect. (Bug #28515475, Bug #92049)When a subquery contained a
UNION
, the count of the number of subquery columns was calculated incorrectly. (Bug #28499924)On a GTID-enabled server, concurrent statements on the
INFORMATION_SCHEMA.COLUMNS
table could deadlock. (Bug #28293047, Bug #91548)Comparing log file names as strings using the
memcmp()
function resulted in uninitialized memory read errors. The comparison now uses thestrncmp()
function. Thanks to Zsolt Parragi and Laurynas Biveinis for their contributions. (Bug #28178776, Bug #90238)The optimizer skipped the second column in a composite index when executing an inner join with a
LIKE
clause against the second column. (Bug #28086754)CREATE TABLE ... SELECT
could create date columns with “zero” date default values when it should have created them without a default value. (Bug #28022129)The transformation of
IN
subquery predicates into semijoins was not handled correctly for a very large number of tables. (Bug #28004674)Server mishandling of
SIGHUP
signals could result in a server exit. (Bug #27966483, Bug #90742)When the character set of one string comparison operand was a superset of the character set of the other operand, some comparisons were disallowed that should be permitted by converting the operand with the “smaller” character set to the “larger” character set.
utf8mb4
andutf32
are considered to be a superset of any other encoding. (Bug #27897053, Bug #25642319, Bug #85224)Improper memory handling by account management statements could result in server misbehavior. (Bug #27820277)
Executing a prepared statement to do a multiple-row insert with large number of placeholders consumed excessive memory and could execute slowly. (Bug #27703912)
The parser accepted invalid
SET
statement syntax in trigger definitions that could result in a server exit. (Bug #27595603)The server failed to start if the
keyring_encrypted_file
plugin keyring file was invalid. (Bug #27588064)Keyring migration failed with source and destination keyring plugins of
keyring_okv
andkeyring_encrypted_file
, respectively. (Bug #27493970)When executing a prepared statement with a procedure call with the
CURSOR_TYPE_READ_ONLY
flag set, the client library hung if the procedure performed aSELECT
that returned an empty result set. (Bug #27443252, Bug #89214)The parser performed some out-of-memory checks incorrectly. (Bug #25633994)
-
When
binlog_format
isROW
orMIXED
, operations on temporary tables are not logged. Previously, the exception to this rule was that when the connection was terminated at the end of the session, the statementDROP TEMPORARY TABLE IF EXISTS
was logged for any temporary tables that had been opened in the session. For row-based replication, this behavior caused an unnecessary write to the binary log, and added a transaction sequence number for the GTID where these were enabled.Now, when a temporary table is created in a session, the binary logging format is tracked. The
DROP TEMPORARY TABLE IF EXISTS
statement is only logged at the end of the session if statement-based format was in effect when the temporary table was created, so theCREATE TEMPORARY TABLE
statement was logged. If row-based or mixed-format binary logging was in use when the table was created, theDROP TEMPORARY TABLE IF EXISTS
statement is not logged.Thanks to Laurynas Biveinis for the patch. (Bug #24670909, Bug #83003, Bug #28606948)
DML statements using
IGNORE
were not always handled correctly on tables having generated columns. (Bug #22990029)A query employing a dynamic range and an index merge could use more memory than expected. (Bug #89953, Bug #27659490)