MySQL 5.7 Release Notes

4 Changes in MySQL 5.7.28 (2019-10-14, General Availability)

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. Thanks to Gillian Gunson for the contribution. (Bug #24798995, Bug #83257)

  • 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. (Bug #24760317)

  • 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. (Bug #29543447)

  • 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. (Bug #29195848)

  • InnoDB: A long running ALTER TABLE ... ADD INDEX operation with concurrent inserts caused semaphore waits. Thanks to Satya Bodapati for the patch. (Bug #29008298)

  • 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. (Bug #29697588, Bug #95115)

  • 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. (Bug #29550513)

  • 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. (Bug #28830834, Bug #92882)

  • When generating C source from SQL scripts, Some utf8-encoded characters were split across lines. Thanks to Przemysław Skibiński for the patch. (Bug #30152555, Bug #96449)

  • For Solaris, mysqld.cc contained a prototype for memcntl() that is no longer needed. The prototype has been removed. (Bug #29953495, Bug #95971)

  • For Solaris, -DWITH_SSL=system did not work when compiling with GCC. (Bug #29953460, Bug #95970)

  • MySQL builds configured with -DWITHOUT_SERVER=1 failed. (Bug #29948728, Bug #95740)

  • For the keyring_aws plugin, some valid region values for the keyring_aws_region system variable were rejected. (Bug #29933758)

  • 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). (Bug #29916900, Bug #95827)

  • 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. (Bug #29897624)

  • mysqlpump produced an error when run against a server older than MySQL 5.7. (Bug #29889253)

  • A possible integer overflow due to unsigned integer type casting could lead to later buffer overflow due to arbitrary size memory allocation. (Bug #29878914)

  • Attempted use of a freed object during MeCab plugin initialization caused a segmentation fault. (Bug #29832534)

  • For MySQL installed using RPM packages, an initialization script that tested server connectivity misbehaved if the client account authenticated using an LDAP authentication plugin. (Bug #29786782)

  • Improper locking during storage engine initialization could cause a server exit. (Bug #29782379)

  • On a GTID-enabled server, concurrent execution of DROP USER and a prepared statement that accessed a view could deadlock. (Bug #29772622)

  • A query with a WHERE clause whose predicate contained a numeric value in scientific notation was not handled correctly. (Bug #29723340)

  • VS2019 produced compilation errors with debug compilation selected due to use of the /ZI flag. Now /Z7 is used instead. (Bug #29691691, Bug #95125)

  • The client library could dereference a null pointer while fetching result set metadata from the server. (Bug #29597896)

  • 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. (Bug #29396364, Bug #93961)

  • Arguments for the TIMESTAMPADD() function could be reversed for prepared statements. (Bug #29268394)

  • For MySQL Community Edition, the cipher order specified by the client was used in preference to the order on the server side, unless the server was configured with an explicit --ssl-cipher order. (Bug #26882825)

  • With the thread_pool plugin enabled, the sys.processlist and sys.session views displayed a thread name rather than the actual user name. (Bug #25906021, Bug #85976)

  • 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. (Bug #25521928)

  • 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. (Bug #25287996)

  • MySQL Enterprise Encryption functions could apply Diffie-Hellman (DH) methods to non-DH keys, resulting in unpredictable results or server exit. (Bug #22839007)

  • Password masking was incomplete for SHOW PROCESSLIST and some INFORMATION_SCHEMA and Performance Schema tables. (Bug #20712046)

  • 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. (Bug #70859, Bug #17772560, Bug #30133062)

    References: See also: Bug #18324650.