Web lists-archives.com

MySQL Community Server 5.7.21 has been released

Dear MySQL users,

MySQL Server 5.7.21, a new version of the popular Open Source
Database Management System, has been released. MySQL 5.7.21 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.21 on new servers, please see
the MySQL installation documentation at


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


MySQL Server 5.7.21 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.21 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
the release of MySQL 5.7.20.



Changes in MySQL 5.7.21 (2018-01-15, General Availability)

   Configuration Notes

     * For RHEL, SLES, and Fedora RPMs, the default plugin
       directory for debug builds has been changed from
       /usr/lib64/mysql/plugin to /usr/lib64/mysql/plugin/debug.
       (Bug #27072155, Bug #88363)

     * The installation scripts for MySQL Enterprise Audit and
       MySQL Enterprise Firewall now create their associated
       tables in the mysql system database as InnoDB rather than
       MyISAM tables. (Bug #26323351, Bug #26906601)

     * The hardcoded memory page size of 8KB for the
       memory-mapped transaction coordinator was too small for
       platforms such as ARM64 and PowerPC where the page size
       is much larger. The server now invokes a system call to
       get the page size of the current platform rather than
       using a hardcoded value. A consequence for the
       --log-tc-size option is that the minimum and default
       values are now 6 times the page size. Also, the value
       must be a multiple of the page size. Thanks to Alexey
       Kopytov for the patch. (Bug #23014086, Bug #80818, Bug
       #26931470, Bug #87995)

   Performance Schema Notes

     * The Performance Schema setup_timers table is now
       deprecated, to be removed in MySQL 8.0, as is the TICK
       row in the performance_timers table.

   Pluggable Authentication

     * For the LDAP authentication plugins, handling of the
       group search attribute indicated by the
       authentication_ldap_sasl_group_search_attr and
       authentication_ldap_simple_group_search_attr system
       variables is more flexible. If the group search attribute
       is isMemberOf, LDAP authentication directly retrieves the
       user attribute isMemberOf value and assign it as group
       information. If the group search attribute is not
       isMemberOf, LDAP authentication searches for all groups
       where the user is a member. (The latter is the default
       behavior.) This behavior is based on how LDAP group
       information can be stored two ways: 1) A group entry can
       have an attribute named memberUid or member with a value
       that is a user name; 2) A user entry can have an
       attribute named isMemberOf with values that are group
       names. (Bug #26317645)

     * The LDAP authentication plugins now permit the
       authentication string that provides user DN information
       to begin with a + character. In the absence of this
       character, the authentication string value is treated as
       is without modification, as it has been previously. If
       the authentication string begins with +, the plugin
       constructs the full user DN value from the account user
       name as the cn attribute value, together with the
       authentication string (with the + removed). The
       authentication string is stored as given in the
       mysql.user system table, with the full user DN
       constructed on the fly before authentication.
       This account authentication string does not have + at the
       beginning, so it is taken as the full user DN:
       CREATE USER 'admin'
         IDENTIFIED WITH authentication_ldap_simple
         BY "cn=admin,ou=People,dc=example,dc=com";

       This account authentication string does have + at the
       beginning, so it is taken as just part of the full user
       CREATE USER 'accounting'
         IDENTIFIED WITH authentication_ldap_simple
         BY "+ou=People,dc=example,dc=com";

       In this case, the full user DN is constructed using
       accounting as the cn attribute together with the
       authentication string, to yield
       "cn=accounting,ou=People,dc=example,dc=com". (Bug

     * For the LDAP authentication plugins, the group search
       attribute was fixed and not configurable. Two new system
       variables now enable using custom group filters:
       authentication_ldap_sasl_group_search_filter and
       authentication_ldap_simple_group_search_filter. (Bug

   Security Notes

     * Incompatible Change: Passwords are now restricted to a
       maximum of 256 characters for the sha256_password
       authentication plugin, and for the PASSWORD() function
       when old_passwords=2. Also, the number of password
       hashing rounds is capped to limit CPU time used. (Bug
       #27099029, Bug #27194270)

     * The linked OpenSSL library for the MySQL Commercial
       Server has been updated to version 1.0.2n. 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 #27212666, Bug #27236394)

   Test Suite Notes

     * Documentation for the MySQL Test Suite is now maintained
       in the MySQL source tree using Doxygen (see

       The related Unix man pages that previously were produced from
       the old test suite manual are no longer updated and have gone
       out of date.
       Consequently, they are no longer included in MySQL
       distributions. (Bug #27021754)

     * The MySQL test suite now includes CRC32() tests. Thanks
       to Daniel Black for the patch. (Bug #26495791, Bug

   Functionality Added or Changed

     * InnoDB: The innodb_undo_tablespaces configuration option
       is deprecated and will be removed in a future release.

     * Replication: Host names can now be specified as part of a
       whitelist for group replication connections, using the
       group_replication_ip_whitelist system variable. Host
       names support CIDR notation. Host names that resolve to
       IPv6 addresses are not supported.
       For host names, name resolution takes place only when a
       connection request is made by another server. A host name
       that cannot be resolved is not considered for whitelist
       validation, and a warning message is written to the error
       log. Forward-confirmed reverse DNS (FCrDNS) verification
       is carried out for resolved host names.
       Host names are inherently less secure than IP addresses
       in a whitelist. FCrDNS verification provides a good level
       of protection, but can be compromised by certain types of
       attack. Specify host names in your whitelist only when
       strictly necessary, and ensure that all components used
       for name resolution, such as DNS servers, are maintained
       under your control. You can also implement name
       resolution locally using the hosts file, to avoid the use
       of external components.

     * Replication: The
       group_replication_allow_local_disjoint_gtids_join system
       variable has been deprecated and is scheduled for removal
       in a future version.

     * The -DWITH_ASAN_SCOPE CMake option enables the
       AddressSanitizer -fsanitize-address-use-after-scope Clang
       flag for use-after-scope detection. The default is off.
       To use this option, -DWITH_ASAN must also be enabled.
       (Bug #27095089)

   Bugs Fixed

     * Important Change; Partitioning: Checking for tables that
       used the generic partitioning handler could cause delays
       of several minutes when starting the MySQL Server. To
       keep this from happening, the
       --disable-partition-engine-check option is now enabled by
       default. (Bug #85830, Bug #25846957)

     * Performance; JSON: Creating a representation of a JSON
       string now optimizes for the most common case---that the
       string to be processed contains no special characters
       that need to be escaped---scanning for the first special
       character in the string, and copying each sequence of
       characters which do not require escaping in a single
       memcpy() call, rather than checking each character in
       turn to determine whether it needed to be escaped,
       escaping it if so, and then copying it, one by one, as
       was done previously.
       This fix also corrects a failure to escape the control
       character \u001f, or unit separator character. (Bug
       #86898, Bug #26388690, Bug #87722, Bug #26780307)
       References: See also: Bug #25977595.

     * InnoDB: Multiple updates from different clients on a
       partitioned table caused an unexpected lock wait timeout
       due to an incorrectly set lock type. (Bug #26731025, Bug

     * InnoDB: An ALTER TABLE operation caused the server to
       halt. (Bug #26492721)

     * InnoDB: The innodb_table_stats data dictionary table was
       not updated with new partition names when renaming a
       partitioned table. (Bug #26390658, Bug #86927)

     * InnoDB: A FLUSH TABLES operation failed to drop an
       aborted index. While removing the table from the cache,
       the clustered index was dropped prior to checking for the
       aborted index. (Bug #26256456, Bug #86607)

     * InnoDB: An iterative approach to processing foreign
       cascade operations resulted in excessive memory use. (Bug
       #26191879, Bug #86573)
       References: This issue is a regression of: Bug #16244691.

     * InnoDB: An INSERT operation on table with spatial index
       raised an assertion due to a failure that occurred during
       a lock conflict check. (Bug #25729649)

     * InnoDB: While innodb_undo_log_truncate was enabled,
       warnings that should only appear in a debug version of
       MySQL were printed to the error log when the length of
       the history list exceeded 2000000. (Bug #24296076, Bug

     * InnoDB: Attempting to reduce the buffer pool size to less
       than the buffer pool chunk size did not report a warning.
       (Bug #23590280)

     * InnoDB: A "wrong key column" error was added to address
       an unsupported index creation scenario. (Bug #22486025)

     * InnoDB: Full-text search on indexed columns that use a
       binary collation did not return case sensitive matches.
       (Bug #21625016, Bug #78048)

     * Packaging: When trying to install MySQL Server on Fedora
       27 using the MySQL Yum repository, installation failed
       due to a conflict with the native
       mariadb-connector-c-devel package. With this fix, the
       appropriate "obsoletes" have been added for that and
       other native packages. (Bug #26963839)

     * Replication: All servers that belong to a group must have
       unique UUIDs set by server_uuid, but this was not being
       enforced by Group Replication and it was possible to add
       members with duplicated UUIDs. (Bug #27105803)

     * Replication: Group Replication executes internal
       operations on the server during start and stop of the
       plugin, such as enabling or disabling read only mode,
       using an internal session. When this internal session was
       opened, if the total number of sessions exceeded the
       number of permitted open sessions set by max_connections,
       the operation was failing as expected but a thread was
       left behind, which later would cause issues. (Bug
       #27008102, Bug #27016552)

     * Replication: The fix for Bug #26117735 (MySQL Bug 86288)
       could cause a debug assertion when running mysqlbinlog
       with the --read-from-remote-server option and the
       --rewrite-db option, depending on the database names
       specified in the rewrite rule. The issue has now been
       corrected. (Bug #26878022)

     * Replication: With MySQL compiled using yaSSL, and
       semisynchronous replication in use, a deadlock could be
       caused by incorrect handling of acknowledgement packets.
       Multiple acknowledgement packets can be read together by
       yaSSL, but the receiver thread for semisynchronous
       replication only handled the first acknowledgement packet
       seen after polling. Now, the receiver thread handles all
       acknowledgement packets that are present in the buffer.
       (Bug #26865538)

     * Replication: If Group Replication was configured to start
       on server boot when the server was being initialized
       using --initialize or --initialize-insecure, because the
       replication applier infrastructure was not initialized
       this resulted in an assertion. Now, Group Replication is
       not started when the server is being initialized. (Bug

     * Replication: In a group with heavy load, joining members
       could need to retrieve a large amount of data to gain
       synchrony with the group. If the amount of data retrieved
       exceeded the View_change packet size of 4Mb the members
       would fail to join the group and enter Error state. Now,
       the packet size is taken from slave_max_allowed_packet,
       which defaults to 1GB. Depending on the load your group
       processes, you might want to increase the packet size
       further by configuring slave_max_allowed_packet. (Bug

     * Replication: With semisynchronous replication in use, if
       RESET MASTER was issued while an active transaction was
       waiting for an acknowledgement from the slave, the count
       of waiting sessions in the
       Rpl_semi_sync_master_wait_sessions server status variable
       was incorrect after the wait was completed. (Bug

     * Replication: In a group where a joining member
       consistently received transactions, the joining member
       could sometimes not enter the online state. This was due
       to the way the incoming queue of messages was tested.
       (Bug #26731317)
       References: See also: Bug #27049034.

     * Replication: XA ROLLBACK statements that failed because
       an incorrect transaction ID was given, could be recorded
       in the binary log with the correct transaction ID, and
       could therefore be actioned by replication slaves. A
       check is now made for the error situation before binary
       logging takes place, and failed XA ROLLBACK statements
       are not logged. (Bug #26618925, Bug #87393)

     * Replication: The receiver thread for semisynchronous
       replication was not able to receive acknowledgements from
       slaves that used compression of the master/slave protocol
       (slave_compressed_protocol = ON). The receiver thread now
       handles compressed acknowledgements correctly. (Bug
       #26027024, Bug #86230)

     * Replication: On replication slaves, in the XA_STATE field
       in the Performance Schema table
       events_transactions_current, the state of XA transactions
       was incorrectly reported as COMMITTED instead of PREPARED
       after the XA PREPARE statement was applied on the slave.
       (Bug #25940184)

     * Replication: In a multi-source replication topology, a
       memory leak could occur on the slave when
       binlog_rows_query_log_events was enabled on the master,
       and a statement already applied from another channel was
       skipped on the slave. In this situation, the instance of
       the Rows_query log event stored on the slave was not
       being deleted. The log event instance is now cleaned up
       and the memory is freed. Thanks to Vlad Lesin for his
       contribution to the patch. (Bug #25695434, Bug #85371,
       Bug #85034)

     * Replication: A memory leak was fixed in GTID-based
       replication. Memory was not being freed after the
       repository tables were updated for skipped or ignored
       events. (Bug #25656123, Bug #85251)

     * Replication: When a worker thread on a multi-threaded
       slave failed to apply a transaction on which a later
       transaction depended, the coordinator thread could begin
       scheduling the dependent transaction before being
       notified of the issue. If a STOP SLAVE request was made
       during this situation, it caused an assertion to be
       raised in debug builds. (Bug #25585436)

     * Replication: When
       group_replication_enforce_update_everywhere_checks=ON the
       Group Replication plugin checks if there are foreign key
       cascades and disallows updates to such tables. However
       SET NULL operations were not being checked, which could
       cause data inconsistency. Now, when
       operations on child tables are blocked if the table has a
       SET NULL option configured. (Bug #25404162)

     * Replication: On Windows, any errors generated by Group
       Replication now contain the detailed error message rather
       than just the error number. (Bug #24918678)

     * Replication: With statement-based replication in use, if
       an UPDATE or DELETE statement was used inside an XA
       transaction ending with XA COMMIT ONE PHASE, and the
       statement did not affect any rows, a replication error
       occurred. An XA END statement was not written to the
       binary log, so slave servers identified the XA
       transaction as still being active at the time of the
       commit request. The required XA END statement is now
       written even if no rows were affected by the transaction.
       (Bug #24812958, Bug #83295)

     * Replication: Regardless of the number of virtual IPs
       configured on a machine, Group Replication could access
       only the first 12 addresses. (Bug #86772, Bug #26324852)

     * Microsoft Windows: On Windows, with the myisam_use_mmap
       and flush system variables enabled, MyISAM did not always
       flush table files properly. (Bug #26880757)

     * Microsoft Windows: On Windows, resolution was improved of
       a timer used for query performance assessment. (Bug
       #22305994, Bug #26734457)

     * JSON: When inserting JSON values created from the result
       of a GROUP BY query, the inserted values could sometimes
       include the concatenation of all the values previously
       inserted into that column. (Bug #87854, Bug #26867509)

     * In event items in filter rules, the audit_log plugin did
       not properly process values specified as a JSON array.
       (Bug #27010045)

     * VALUES() was not handled correctly in some cases. (Bug
       References: See also: Bug #19601973, Bug #17458914.

     * In some cases, virtual generated column expressions
       containing comparison operators could cause problems with
       subsequent statements accessing the same table. (Bug

     * For debug builds, validation checks on relevant generated
       columns could be missed for UPDATE statements, leading to
       a server exit. (Bug #26838771)

     * The default value of the
       authentication_ldap_sasl_auth_method_name system variable
       was incorrectly set to SIMPLE rather than SCRAM-SHA-1,
       and the variable could be set to impermissible values.
       (Bug #26838525, Bug #26093370)

     * Following an INSERT statement with BLOB values in the ON
       DUPLICATE KEY UPDATE clause that failed with a constraint
       violation, a similar statement with no reason to return
       an error could cause a server exit. (Bug #26734162)

     * The Performance Schema now stores rewritten rather than
       raw SQL statement text when available. (Bug #26732229)

     * Incorrect results or a server exit could result when
       SHA2() was passed a user-defined variable in some
       character sets. (Bug #26704451)

     * mysqlpump no longer includes the SQL_NO_CACHE modifier in
       statements because that modifier is now deprecated and
       results in deprecation warnings. (Bug #26694675)

     * Building with the -DWITHOUT_SERVER=ON CMake option failed
       due to attempting to link the
       authentication_ldap_sasl_client client-side plugin
       against the embedded server library. (Bug #26665217)

     * Setting authentication_ldap_simple_max_pool_size=0 and
       authentication_ldap_simple_init_pool_size=0 at runtime
       did not disable the LDAP connection pool for the
       authentication_ldap_simple authentication plugin. (Bug

     * Accounts that use an LDAP authentication plugin and were
       created without any authentication string could be
       authenticated by the LDAP server regardless of password
       specified at connect time. (Bug #26634245)

     * Incorrect results could be returned for queries that used
       an outer join and a derived table referenced a const
       value from an inner table of the outer join. (Bug

     * AFTER UPDATE triggers were not invoked for INSERT ... ON
       DUPLICATE KEY UPDATE when the value to be updated and the
       new value were the same. (Bug #26626277, Bug #87371)

     * Changing the UMASK and UMASK_DIR environment variables
       from their default values had no effect on database
       directory and table file access. (Bug #26529942)

     * Creating a table with excessive index information could
       cause a server exit. (Bug #26529369)

     * MSI packages for Windows failed to detect when Microsoft
       Visual C++ 2010 Redistributable Package was installed.
       (Bug #26501092, Bug #87139)

     * audit_log plugin THD objects could be created with
       incorrect thread ID information, leading to assertion
       failure. (Bug #26362452)

     * When HASH_SCAN was specified as one of the values for the
       slave_rows_search_algorithms system variable, which is
       the default from MySQL 8.0.2, and row-based replication
       was in effect, updates to a table containing virtual
       generated fields could raise an assertion. The issue was
       caused by an error when generating string representations
       of the virtual generated fields in order to create hashes
       for use in searches. To remove the issue, MySQL no longer
       creates hashes for virtual generated fields. (Bug

     * Attempting a partial backup with mysqlpump on a
       GTID-enabled server failed and produced an error message
       suggesting incorrectly that this was not possible. (It is
       possible using the --set-gtid-purged option.) (Bug

     * The Performance Schema could leak memory due to
       nondeletion of file instances created for ALTER TABLE
       operations that used the table-copy algorithm. (Bug
       #26152751, Bug #86482)

     * mysqlpump did not properly parse TABLESPACE clauses in
       the result from SHOW CREATE TABLE statements it executed
       to determine table structure. (Bug #26116415)

     * Some statements could cause a buffer overflow in the
       digest code. Thanks to Laurynas Biveinis and Roel van de
       Paar for the patch. (Bug #26021187)

     * Previously, when the Performance Schema failed to
       initialize, it wrote a nonspecific init failed warning to
       the error log. Now it prints more specific messages about
       which memory allocation failed. (Bug #25996291)

     * Incorrect results could occur on a table with a unique
       index when the optimizer chose a loose index scan even
       though the unique index had no index extensions. (Bug
       #25989915, Bug #86165, Bug #26532061, Bug #87207)
       References: This issue is a regression of: Bug #21749123,
       Bug #78244.

     * Restarting the LDAP server could cause LDAP
       authentication plugins that used a connection pool to
       fail to authenticate properly. (Bug #25989788)

     * CREATE USER IF NOT EXISTS was not written to the binary
       log if the user existed. This could result in
       inconsistent replication behavior if the user did not
       exist on slave servers. A similar issue occurred for
       ALTER USER IF EXISTS. To avoid inconsistencies, these
       statements now are written to the binary log. (Bug
       #25813089, Bug #85733)

     * Incorrect handling of internal memory buffers could cause
       a server exit. (Bug #25737271)

     * MySQL did not compile with GCC 7. (Bug #25643811, Bug

     * Executing a stored procedure containing a statement that
       created a table from the contents of certain SELECT
       statements could result in a memory leak. (Bug #25586773)

     * When an UPDATE required a temporary table having a
       primary key larger than 1024 bytes and that table was
       created using InnoDB, the server could exit. (Bug

     * For geometry calculations, invalid input parameters could
       lead to an incorrect result buffer and cause an assertion
       to be raised or a server exit. (Bug #25062396)

     * Under some conditions, the audit_log plugin could
       recursively lock a mutex, resulting in an unresponsive
       server. (Bug #24437533)

     * In some cases, the optimizer chose a loose index scan
       (QUICK_GROUP_MIN_MAX_SELECT) for a GROUP BY query even
       when there was a predicate with a disjunction. This is
       fixed by not performing a range scan when the condition
       in the WHERE clause results in more than one disjoint
       range tree. (Bug #24423143)

     * Setting the MYSQL_GROUP_SUFFIX environment variable had
       no effect. (Bug #23072792)

     * Queries with many left joins were slow if join buffering
       was used (for example, using the block nested loop
       algorithm). (Bug #18898433, Bug #72854)

     * A prepared statement containing an ORDER BY list that
       referred to a parameter was not always handled correctly.
       (Bug #87863, Bug #26867652)

     * The server handled triggers and generated columns
       incorrectly. (Bug #86637, Bug #26251621)

On Behalf of the MySQL/Oracle Release Engineering Team,
Hery Ramilison

MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/mysql