Dear MySQL users,

MySQL Server 5.7.23, a new version of the popular Open Source
Database Management System, has been released. MySQL 5.7.23 is
recommended for use on production systems.

For an overview of what's new in MySQL 5.7, please see

For information on installing MySQL 5.7.23 on new servers, please see
the MySQL installation documentation at

MySQL Server 5.7.23 is available in source and binary form for a number of
platforms from our download pages at

MySQL Server 5.7.23 is also available from our repository for Linux
platforms, go here for details:

Windows packages are available via the Installer for Windows or .ZIP
(no-install) packages for more advanced needs. The point and click
configuration wizards and all MySQL products are available in the
unified Installer for Windows:

5.7.23 also comes with a web installer as an alternative to the full

The web installer doesn't come bundled with any actual products
and instead relies on download-on-demand to fetch only the
products you choose to install. This makes the initial download
much smaller but increases install time as the individual products
will need to be downloaded.

We welcome and appreciate your feedback, bug reports, bug fixes,
patches, etc.:

The following link lists the changes in the MySQL 5.7 since
the release of MySQL 5.7.22. It may also be viewed
online at


Changes in MySQL 5.7.23 (2018-07-27, General Availability)

Audit Log Notes

     * For new MySQL installations, the USER and HOST columns in
       the audit_log_user table used by MySQL Enterprise Audit
       now have definitions that better correspond to the
       definitions of the User and Host columns in the
       mysql.user system table.
       For upgrades to an installation for which MySQL
       Enterprise Audit is already installed, it is recommended
       that you alter the table definitions as follows:
        ALTER TABLE mysql.audit_log_user
          DROP FOREIGN KEY audit_log_user_ibfk_1;
        ALTER TABLE mysql.audit_log_filter
        ALTER TABLE mysql.audit_log_filter
          CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
        ALTER TABLE mysql.audit_log_user
        ALTER TABLE mysql.audit_log_user
          CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;
        ALTER TABLE mysql.audit_log_user
        ALTER TABLE mysql.audit_log_user
          ADD FOREIGN KEY (FILTERNAME) REFERENCES mysql.audit_log_filter(NAME);
       (Bug #23706056)

Compilation Notes

     * Solaris: MySQL now can be compiled on Solaris using gcc.
       (Bug #27802681)

MySQL Enterprise Notes

     * The MySQL Enterprise Firewall firewall_whitelist table
       now contains a primary key column named ID. (Bug

Security Notes

     * The linked OpenSSL library for the MySQL Commercial
       Server has been updated to version 1.0.2o. Issues fixed
       in the new OpenSSL version are described at
       This change does not affect the Oracle-produced MySQL
       Community build of MySQL Server, which uses the yaSSL
       library instead. (Bug #28025379)

     * In MySQL 5.7, the default authentication plugin is
       mysql_native_password. As of MySQL 8.0, the default
       authentication plugin is changed to
       caching_sha2_password. To enable MySQL 5.7 clients to
       connect to 8.0 and higher servers using accounts that
       authenticate with caching_sha2_password, the MySQL 5.7
       client library and client programs now support the
       caching_sha2_password client-side authentication plugin.
       This improves MySQL 5.7 client connect-capability
       compatibility with respect to MySQL 8.0 and higher
       servers, despite the differences in default
       authentication plugin. For more information, see Caching
       SHA-2 Pluggable Authentication

SQL Syntax Notes

     * Explicit ASC or DESC qualifiers for GROUP BY clauses are
       now deprecated and will be removed in a future MySQL

Functionality Added or Changed

     * Previously, for the --ssl-mode=VERIFY_IDENTITY or
       --ssl-verify-server-cert option, the client checked
       whether the host name that it used for connecting matched
       the Common Name value in the certificate but not the
       Subject Alternative Name value. Now, if the client uses
       OpenSSL 1.0.2 or higher, the client checks whether the
       host name matches either the Subject Alternative Name
       value or the Common Name value in the server certificate.
       Thanks to Daniël van Eeden for a patch on which this
       change was based. (Bug #16211011, Bug #68052,
       Bug #27511233, Bug #89578)

Bugs Fixed

     * Important Change; Partitioning: After creating
       partitioned InnoDB tables with very long names, the
       table_name columns in the corresponding entries in the
       mysql.innodb_index_stats and mysql.innodb_table_stats
       system tables were truncated. To fix this issue, the
       length of the table_name column in each of these tables
       has been increased from 64 to 199 characters. In both
       cases, this is now the same as the lengths of these
       columns in MySQL 8.0.
       When upgrading to this release, use mysql_upgrade to
       effect these changes in your MySQL installation. In the
       event that you fail to do this, MySQL generates the
       warning Table mysql/innodb_table_stats has length
       mismatch in the column name table_name. Please run
       mysql_upgrade in the error log.
       Some platforms, such as Microsoft Windows, may restrict
       path lengths (MAX_PATH) to a maximum of 260, which can
       cause creation of partitioned tables with long names to
       fail. You can avoid this problem on Windows systems by
       enabling NTFS long path names; see your system
       documentation for information on how to do this.
       (Bug #86926, Bug #26390736)

     * InnoDB: The ngram full-text search parser permitted comma
       and period characters to be tokenized as words, which
       caused an inconsistency between boolean and natural
       language mode search results. Comma and period characters
       are no longer tokenized. (Bug #27847697)

     * InnoDB: An I/O error returned by an fsync() operation is
       now treated as a hard error. (Bug #27805553, Bug #90296)

     * InnoDB: A schema mismatch error reported during an import
       tablespace operation failed to print mismatched table
       flags in a readable format. (Bug #27542720)

     * InnoDB: A DDL operation failed to wait for a FULLTEXT
       index optimization operation to finish. (Bug #27326796)
       References: This issue is a regression of: Bug #24938374.

     * InnoDB: An unnecessary check for read-only transactions
       was removed from the trx_set_rw_mode() function. Thanks
       to Sandeep Sethia for the patch. (Bug #27211287, Bug

     * InnoDB: A DDL operation that added a foreign key
       constraint raised an assertion when it accessed a stale
       memory object that belonged to the parent table. (Bug

     * InnoDB: A DDL operation on a table with a FULLTEXT index
       during full-text index cache synchronization caused an
       assertion failure. (Bug #27082268, Bug #27095935)

     * InnoDB: A failing assertion occurred after initiating a
       memcached get operation. (Bug #26876594)

     * InnoDB: A corrupt index ID encountered during a foreign
       key check raised an assertion. (Bug #26654685)

     * InnoDB: An internal deadlock during a DDL operation
       resulted in a long semaphore wait followed by a server
       exit. (Bug #26225783)

     * InnoDB: A DDL operation encountered a serious error due
       to an invalid lock upgrade. (Bug #26225783)

     * InnoDB: On a Windows 64-bit system, invalid buffer pool
       configuration values caused the server to exit on
       startup. (Bug #26100239, Bug #86370)

     * Partitioning: For a partitioned table, partition update
       time could be incorrect after rebuilding the table or
       restarting the server. (Bug #27073100)

     * Partitioning: An extraneous row lock was imposed by an
       update to a partitioned InnoDB table. (Bug #87253, Bug

     * Replication: The log messages generated when a member
       fails to join the group have been improved, for example
       when group_replication_group_name on the member joining
       the group does not match the seed's
       group_replication_group_name this is now described in the
       log message. (Bug #27628695)

     * Replication: The
       being logged incorrectly. (Bug #27590534)

     * Replication: The use of replication filters or binary log
       filters can cause issues when they are applied to tables
       that are updated with XA transactions. Filtering of
       tables could cause an XA transaction to be empty on a
       replication slave, and empty XA transactions are not
       supported. Also, with the settings
       master_info_repository=TABLE and
       relay_log_info_repository=TABLE on a replication slave,
       which became the defaults in MySQL 8.0, the internal
       state of the data engine transaction is changed following
       a filtered XA transaction, and can become inconsistent
       with the replication transaction context state.
       Due to these issues, the use of replication filters or
       binary log filters in combination with XA transactions is
       not supported. This fix adds the new error
       ER_XA_REPLICATION_FILTERS, which is logged whenever an XA
       transaction is impacted by a replication filter, whether
       or not the transaction was empty as a result. If the
       transaction is not empty, the replication slave is able
       to continue running, but you should take steps to
       discontinue the use of replication filters with XA
       transactions in order to avoid potential issues. If the
       transaction is empty, the replication slave stops. In
       that event, the replication slave might be in an
       undetermined state in which the consistency of the
       replication process might be compromised. In particular,
       the gtid_executed set on a slave of the slave might be
       inconsistent with that on the master. To resolve this
       situation, isolate the master and stop all replication,
       then check GTID consistency across the replication
       topology. Undo the XA transaction that generated the
       error message, then restart replication. (Bug #27442477)

     * Replication: When a transaction larger than the binary
       log transaction cache size (binlog_cache_size) was
       flushed to a temporary file during processing, and the
       flush failed due to a lack of space in the temporary
       directory, the flush error was not handled correctly. No
       message was written to the error log, and the binary log
       cache was not cleared after the transaction was rolled
       back. Now, in this situation, the server takes an
       appropriate action based on the binlog_error_action
       setting (shut down the server or halt logging), and
       writes a message to the error log. When the transaction
       is rolled back, the server checks for flush errors and
       clears the binary log cache if any occurred. (Bug
       #27399620, Bug #89272)

     * Replication: When GTIDs are in use for replication,
       replicated transactions that are filtered out on the
       slave are persisted. If binary logging is enabled on the
       slave, the filtered-out transaction is written to the
       binary log as a Gtid_log_event followed by an empty
       transaction containing only BEGIN and COMMIT statements.
       If binary logging is disabled, the GTID of the
       filtered-out transaction is written to the
       mysql.gtid_executed table. This process ensures that
       there are no gaps in the set of executed GTIDs, and that
       the filtered-out transactions are not retrieved again if
       the slave reconnects to the master. Previously, this
       process was not done for CREATE DATABASE, ALTER DATABASE,
       and DROP DATABASE statements, but it is now carried out
       for those statements as well as for others. (Bug
       #27308751, Bug #88891)

     * Replication: On a multithreaded slave, when a STOP SLAVE
       statement is executed on the slave, followed by a START
       SLAVE statement, the error log can report a different
       position in the binary log for the slave SQL thread when
       exiting, compared to the position reported for the slave
       SQL thread at the subsequent initialization.
       For a multithreaded slave, the position reported for the
       SQL thread on exit is a low water mark, up to which the
       replication stream is consistent and has no gaps.
       Transactions appearing before the position are guaranteed
       to have committed, but transactions after the position
       may have committed or not. However, this low water mark
       was being reported before the process to stop the worker
       threads was actually carried out, and the low water mark
       was subsequently updated by a checkpoint routine during
       that process. The timing of the log message has now been
       changed so that the final low water mark is reported as
       the position for the SQL thread on exit. (Bug #27300658)

     * Replication: In certain situations, such as during
       distributed recovery procedure, the certification info
       garbage collection was purging more data than it should,
       resulting in conflicts not being detected. The garbage
       collection procedure has been improved to take this case
       in consideration. (Bug #89938, Bug #27652526)

     * Replication: When the group_replication_applier channel's
       applier thread encountered an error, the master_log_name
       and end_log_pos in the error message were incorrect. In
       Group Replication, the events of a transaction are
       replicated before they are written to the binary log of
       the member where the transaction originated. The result
       is that the final master_log_name and the end_log_pos of
       those events are unknown at the time they are applied on
       the replica by group_replication_applier channel's
       applier thread. To avoid confusion, now any such error
       messages encountered by a group_replication_applier
       channel do not contain the binary log name and the binary
       log position. (Bug #89146, Bug #27368735)

     * A heap overflow vulnerability in the MySQL client library
       was fixed. (Bug #27980823)

     * For generated columns that used the INTERVAL() function,
       incorrect behavior could occur. (Bug #27881102)

     * The exec_in_background command for mysqltest is now
       available in MySQL 5.7. (Bug #27858055)

     * An unencrypted connection could result from a client
       connection attempt specifying that an encrypted
       connection was required, if the server was not configured
       to support SSL. (Bug #27759871)

     * A BETWEEN clause comparing negative values could lead to
       erroneous results. (Bug #27691347)

     * Audit log filter rules did not permit class names to be
       specified as an array of strings. That is now possible.
                  "filter": {
                    "class": [
                      { "name": [ "connection", "general", "table_access" ] }
       (Bug #27628325)

     * On Windows, if the Visual C++ Redistributable for Visual
       Studio had been removed, MySQL uninstallation using the
       MSI installer failed. (Bug #27621546)

     * The audit_log_read() user-defined function could
       deadlock. In consequence of the fix for this issue,
       audit_log_read() no longer uses a shared global buffer.
       Each call allocates its own buffer, which exists for the
       duration of the call. To control the buffer size, set the
       audit_log_read_buffer_size system variable. Previously,
       this variable existed only in global scope with a default
       of 1MB. Now, the variable also exists in session scope,
       has a smaller default of 32KB, and can be set at runtime.
       Each client should set its session value of
       audit_log_read_buffer_size appropriately for its use of
       audit_log_read(). (Bug #27545962)

     * Within stored procedures, it was not possible to write a
       condition handler to catch foreign key failures if the
       table involved used the FEDERATED storage engine. (Bug

     * With the NO_ENGINE_SUBSTITUTION SQL mode disabled, an
       error (rather than substitution) occurred for CREATE
       TABLE and ALTER TABLE if the desired engine was disabled
       using the disabled_storage_engines system variable. (Bug

     * If MySQL Enterprise Firewall was configured with a large
       number of rules, server shutdown could take a long time.
       (Bug #27492122)

     * A memory leak in the pfs-t unit test was fixed. Thanks to
       Yura Sorokin for the patch. (Bug #27440735, Bug #89384)

     * With automatic_sp_privileges enabled, the EXECUTE and
       ALTER ROUTINE privileges were not correctly granted to
       routine creators. (Bug #27407480)

     * Some queries that used ordering could access an
       uninitialized column during optimization and cause a
       server exit. (Bug #27389294)

     * For debug builds, an assertion was raised (rather than an
       error) for ALTER TABLE for an ARCHIVE table with a
       GEOMETRY NOT NULL column containing empty strings. (Bug
       #27330634, Bug #89088)

     * If system tables could not be read or initialized, the
       server wrote an incomplete error message. Thanks to
       Daniël van Eeden for a patch related to the fix. (Bug
       #27302337, Bug #89001)

     * The keyring_okv plugin did not always fail over to the
       standby OKV server when the primary server was
       unavailable. (Bug #27244099)

     * The Performance Schema could attempt to access invalid
       SOURCE column values. (Bug #27231036)

     * Mishandling of internal privilege structures could cause
       a server exit. (Bug #27230925)

     * The UNION of a user-defined variable and a DECIMAL column
       produced an incorrect result when using a UTF8 character
       set. (Bug #27197235)

     * Setting max_execution_time sometimes had no effect when
       used with full-text search. (Bug #27155294)

     * For attempts to increase the length of a VARCHAR column
       of an InnoDB table using ALTER TABLE with the INPLACE
       algorithm, the attempt failed if the column was indexed.
       If an index size exceeded the InnoDB limit of 767 bytes
       for COMPACT or REDUNDANT row format, CREATE TABLE and
       ALTER TABLE did not report an error (in strict SQL mode)
       or a warning (in nonstrict mode). (Bug #26848813)

     * In MySQL 5.7.19, the mysql.gtid_executed table was
       excluded from dumps. This table is no longer excluded but
       its data is not dumped. (Bug #26643180, Bug #87455)
       References: This issue is a regression of: Bug #82848,
       Bug #24590891.

     * The slave_rows_search_algorithms system variable controls
       how rows are searched for matches when preparing batches
       of rows for row-based logging and replication. Specifying
       INDEX_SCAN as one of the search algorithms performs an
       index scan if an index is present. In the situation where
       a different primary key is used on the master and the
       slave, and a unique key is present on the slave, a bug in
       the code meant that the index scan was not being
       performed as it should be, and a slower table scan was
       being performed instead. The issue has now been corrected
       so that an index scan is used. (Bug #26450129, Bug

     * Certain cases of subquery materialization could cause a
       server exit. These queries now produce an error
       suggesting that materialization be disabled. (Bug

     * mysqldump exited abnormally for large --where option
       values. (Bug #26171967, Bug #86496, Bug #27510150)

     * For MyISAM tables, particular sequences of INSERT and
       DELETE statements could cause table corruption. (Bug

     * The SHOW CREATE USER statement requires the SELECT
       privilege for the mysql database, except to see
       information for the current user. In addition, for the
       current user, the statement requires the SELECT privilege
       for the mysql.user system table for display of the
       password hash in the IDENTIFIED AS clause; otherwise, the
       hash displays as <secret>. (Bug #24911117)

     * CREATE FUNCTION produced an error if there was no default
       database and the function body called another function.
       (Bug #24357244, Bug #82350)

     * For debug builds, a SELECT statement executed within a
       stored program could raise an assertion if derived table
       resolution failed. (Bug #23221336)

     * If mysqldump or mysqlpump were used to dump binary data
       without the --hex-blob option, reloading the dump file
       could produce spurious warnings (values were inserted
       correctly regardless of the warnings). Such values are
       now written preceded by the _binary introducer to silence
       the warnings. (Bug #22601255, Bug #80150)

On Behalf of MySQL/ORACLE RE Team
Gipson Pulla

MySQL General Mailing List
For list archives:
To unsubscribe:

Reply via email to