[This is part 2 of the announcement]

     * Replication: A new system variable rpl_read_size is
       available to set the minimum amount of data in bytes that
       is read from the binary log files and relay log files.
       The default read size is 8KB. If heavy disk I/O activity
       for these files is impeding performance for the database,
       increasing the read size might reduce file reads and I/O
       stalls if the files are not being cached by the operating
       Note that a buffer the size of this value is allocated
       for each thread that reads from the binary log and relay
       log files, including dump threads on masters and
       coordinator threads on slaves. Setting a large value
       might therefore have an impact on memory consumption for
       Thanks to the Facebook team for the patch. (Bug

     * Replication: On a server with GTIDs enabled, if RESET
       MASTER was used when a transaction had been flushed but
       not yet committed, the server GTIDs were left in an
       incorrect state. At this point, the GTID for the
       transaction had been added to the set of owned GTIDs, but
       not yet to the set of executed GTIDs. The GTID was
       removed from the binary log when the content of the
       uncommitted transaction was cleared by the RESET MASTER
       statement, but the GTID could not be reused because it
       was already owned, so the sequence of GTIDs had a gap.
       With this fix, RESET MASTER acquires a global read lock
       to ensure that no transactions are in commit stage during
       its operation, and no new transactions enter into commit
       stage during its operation. If there are any ongoing
       commits, RESET MASTER waits until they are complete. The
       global read lock is released when the reset is finished,
       and then storage engines are notified of the successful
       reset. If FLUSH TABLES WITH READ LOCK has already been
       executed for the thread, RESET MASTER does not retry the
       lock. (Bug #27041759)

     * Replication: Attempts to set a GTID for an unsafe or
       empty XA transaction using a SET @@SESSION.GTID_NEXT
       statement were not being handled correctly. On a server
       with gtid_mode set to OFF or OFF_PERMISSIVE, and
       enforce_gtid_consistency set to OFF, setting a GTID for
       an unsafe XA transaction (creating or dropping a
       temporary table) caused an inconsistency in the server's
       GTID violation counter and raised an assertion. Testing
       also showed that setting a GTID for an empty XA
       transaction caused an incorrect sequence of events to be
       written to the binary log. Both these situations are now
       handled correctly. (Bug #27041402, Bug #88272)

     * Replication: The error message issued for a server stop
       while rotating the binary log did not state the correct
       cause for the issue. The error message has been enhanced
       to include the actual error causing the server stop as
       part of the message. A new error ER_OOM_SAVE_GTIDS has
       also been added for the situation where an out-of-memory
       error occurred while saving the set of GTIDs from the
       last binary log into the mysql.gtid_executed table. (Bug
       #27040070, Bug #88262)

     * Replication: Group Replication uses transaction write set
       extraction for conflict detection on group members. A
       performance regression was found in this process during
       detailed performance analysis, which is handled by this
       bug fix. Memory allocation has been optimized for write
       set extraction and memory copy operations have been
       reduced. Also, foreign key write sets are now only
       collected when the current table has foreign keys. (Bug

     * Replication: When using group_replication_ip_whitelist,
       it was possible to configure a group so that it
       functioned even though all members could not establish
       the internal group communication connection to each
       other, resulting in inconsistent behavior. Now, incoming
       connections are accepted if the IP is in the white list
       or if the IP belongs to a current member of the XCom
       configuration. This ensures members are always able to
       create the internal network required for group
       communication. (Bug #26846549, Bug #27406775)

     * Replication: The statements CREATE USER IF EXISTS (or IF
       were written to the binary log even when the query
       resulted in an error. MySQL Server now checks for errors
       that cause these queries to fail (for example, an invalid
       plugin was specified), and does not log the statement in
       that situation. Note that if these statements succeed but
       have no effect on the master because the condition is not
       met, the statements are written to the binary log, as the
       condition might be met on a replication slave (see Bug
       #25813089, Bug #85733). (Bug #26680035)
       References: See also: Bug #25813089, Bug #85733.

     * Replication: In a multi-primary group, when a member was
       also configured with a asynchronous replication channel,
       there was a possibility that the asynchronous channel
       could start before Group Replication started. This could
       result in the asynchronous channel processing
       transactions before the member became an online member of
       the group, causing issues when members tried to join the
       group. The fix ensures that asynchronous channels on
       group members do not start until the member has become
       online. (Bug #26648393)

     * Replication: Following the introduction of support for
       atomic DDL in MySQL 8.0, a replication slave that
       supports atomic DDL can diverge from a replication master
       at an earlier MySQL version that does not support atomic
       DDL. If the DDL statement can only be partly applied, the
       slave using MySQL 8.0 rolls back the whole DDL statement,
       but the master using an earlier version might commit the
       valid parts of the DDL statement. An error message is now
       logged in the event of an unsuccessful commit for an
       atomic DDL statement on the master and the slave, and you
       should check that the states of the master and the slave
       have not diverged before proceeding. (Bug #26133488)

     * Replication: When GTIDs are enabled on a replication
       master and slave, and the slave connects to the master
       with the MASTER_AUTO_POSITION=1 option set, the master
       must send the slave all the transactions that the slave
       has not already received, committed, or both. If any of
       the transactions that should be sent by the master have
       been already purged from the master's binary log, the
       master sends the error
       ER_MASTER_HAS_PURGED_REQUIRED_GTIDS (1789) to the slave,
       and replication does not start.
       The message provided for the error
       ER_MASTER_HAS_PURGED_REQUIRED_GTIDS has been changed to
       provide advice on the correct action in this situation,
       which is for the slave to replicate the missing
       transactions from another source, or for the slave to be
       replaced by a new slave created from a more recent
       backup. The message advises that the master's binary log
       expiration period can be revised to avoid the situation
       in future. In addition, the master now identifies the
       GTIDs of the purged transactions and supplies them in its
       error log in the warning message ER_FOUND_MISSING_GTIDS
       (11809), so that you do not need to calculate the missing
       GTIDs manually. (Bug #26004541)

     * Replication: For updates to virtual generated columns
       containing the BLOB data type, both the old and the new
       BLOB values are required by some storage engines for
       replication. This fix extends the same behavior to JSON
       and GEOMETRY data types, which are based on the BLOB data
       type and so produce the same issue when the old value is
       not stored. (Bug #25873029)

     * Replication: A behavior change in MySQL 8.0.0 moved the
       identification of generated columns from before to after
       the calculation of the write set for binary logging. This
       caused an issue with NDB cluster replication, because
       that storage engine omits the generated columns from the
       log event if they are unnecessary, leading to NULL values
       being set for them by the applier thread on the
       replication slave. The identification of generated
       columns has now been moved back to before the write set
       calculation, so that the issue does not occur. (Bug

     * Replication: On a multi-threaded replication slave (with
       slave_parallel_workers greater than 0), the slave's lag
       behind the master was not being reported by the
       Seconds_Behind_Master field for SHOW SLAVE STATUS. The
       value is now reported correctly. Thanks to Robert
       Golebiowski for the patch. (Bug #25407335, Bug #84415)

     * Replication: A plus sign (+) can be used with a GTID set
       in the statement SET @@GLOBAL.GTID_PURGED to indicate
       that the specified GTID set does not intersect with
       gtid_executed. The plus sign was also being permitted for
       GTID sets specified for the functions GTID_SUBSET() and
       GTID_SUBTRACT(), where it was not meaningful. The plus
       sign can no longer be specified with these functions.
       Also, error messages relating to the SET
       @@GLOBAL.GTID_PURGED operation have been improved. (Bug

     * Replication: When invoked with the options
       --read-from-remote-server and --hexdump, mysqlbinlog was
       not able to produce a hex dump of the binary log contents
       following an SQL statement that generated an
       autoincrement value, referenced a user-defined variable,
       or invoked RAND(). The event types for these events are
       followed by an informational row query log event, and
       mysqlbinlog caches the original event for printing when
       the subsequent row query log event is received. The
       pointer to the memory containing the original event was
       invalidated when the subsequent event was received, so
       the original data could not be accessed to produce the
       hex dump. The issue has now been fixed. (Bug #24674276)

     * Replication: A number of changes were made to the binary
       log decoding procedure to improve handling of invalid or
       corrupted binary log entries. (Bug #24365972)

     * Replication: Following the introduction of binary logging
       for XA transactions WL#6860
       (http://dev.mysql.com/worklog/task/?id=6860), an
       assertion could be raised in debug builds during
       replication from a master with the feature to a slave
       without the feature, if MASTER_AUTO_POSITION=1 was set on
       the slave. The assertion has been removed, so that debug
       builds now have the same behavior as non-debug builds,
       and can attempt replication of unsupported event types
       whether or not MASTER_AUTO_POSITION=1 is set. (Bug

     * Linux: Builds on Alpine Linux now take advantage of AIO
       support. (Bug #27327874)

     * macOS: On macOS, mysql_config --libs did not list any SSL
       libraries. (Bug #27232576)

     * Microsoft Windows: On Windows, the RESTART statement is
       implemented by having mysqld fork, with one process
       acting as a monitor to the other, which acts as the
       server. This makes determining the server process to
       attach to for debugging more difficult. To alleviate
       this, starting the server with --gdb now suppresses
       forking. A side effect is that for a server started with
       this option, RESTART simply exits and does not restart.
       (Bug #27273229)

     * JSON: The JSON_QUOTE() function could in some situations
       write the quoted string to the same buffer that holds the
       input string, which could lead to wrong results. Now a
       check is made to be sure that it does not attempt write
       into the same buffer that it is reading from. (Bug

     * JSON: JSON_SEARCH() no longer performs any modification
       of cached Json_path objects, now making any needed
       updates to a String object that represents the path
       instead. This saves on the number of round trips required
       between the path's Json_path and String representations,
       which speeds up execution. In addition, the one_or_all
       and escape_char arguments to JSON_SEARCH() were
       unnecessarily cached; these arguments are no longer
       cached, which should also improve this function's
       execution time. (Bug #87383, Bug #26614455)
       References: See also: Bug #21450084, Bug #77785, Bug

     * A check was implemented based on data dictionary version
       information to prevent starting the MySQL 8.0 server with
       a data directory created by a later MySQL release. The
       check was necessary to prevent an in-place downgrade,
       which is currently not supported. (Bug #27708249)

     * Protected data dictionary tables are no longer accessible
       by statements placed in a server initialization file.
       (Bug #27674311, Bug #90010)

     * Data dictionary and INFORMATION_SCHEMA version numbers
       were synchronized with the new MySQL server version
       number. (Bug #27674285)

     * The server did not handle correctly certain LIKE queries
       using a BLOB column with a prefix index. (Bug #27660560)

     * For builds configured using -DWITH_PROTOBUF=SYSTEM,
       building failed on systems with ProtoBuf 3.5 installed.
       (Bug #27638713, Bug #89915)

     * The microseconds part of timestamps stored with persisted
       variables in mysqld-auto.cnf was always 000000. (Bug

     * Debian packages now handle dependencies for MeCab plugin
       dictionary files. Fedora packages now handle dependencies
       for both MeCab packages, not just the utf-8 package. (Bug
       #27612730, Bug #27613539)

     * The change in MySQL 8.0.11 for platforms that use systemd
       to run mysqld as a normal process (Type=notify) and
       communicate using a socket file did not work on SLES
       before SLES 12.2. (Bug #27604999)

     * The NON_UNIQUE column in the
       to MySQL 8.0, but became VARCHAR in MySQL 8.0 with the
       introduction of the data dictionary. The NON_UNIQUE
       column now has an integer type again (INT because the
       column need not be as large as BIGINT). (Bug #27593348,
       Bug #89793)

     * With some inputs, ST_Crosses() could cause a server exit.
       (Bug #27576700)

     * Some error messages were being written to the error log
       with an error ID of 0 rather than a legitimate error ID.
       (Bug #27575608)

     * mysql_upgrade did not set MYSQL_SERVER_PUBLIC_KEY
       correctly, leading to failure to read the key file. (Bug

     * If autocommit was disabled, mysql_upgrade produced an
       error when upgrading from MySQL 5.7 to 8.0. (Bug

     * For debug builds, displaying very long stage names from
       the PROCESSLIST_STATE column of the Performance Schema
       threads table could raise an assertion. (Bug #27545688)

     * Group Replication failed to start if certain required
       variables had been set as persisted variables, or if
       persisted variables were not set in proper timestamp
       order. (Bug #27545544, Bug #27522405)

     * gtid_purged handling had a memory leak. (Bug #27537968,
       Bug #89645)

     * Using SET PERSIST to persist optimizer_trace_offset
       resulted in an incorrect variable value after server
       restart. (Bug #27536421)

     * The validate_password component could leak memory. (Bug
       #27521770, Bug #89597)

     * A typo in sql/handler.h was corrected. Thanks to Su
       Tristan for the patch. (Bug #27516280, Bug #89594)

     * The Performance Schema variables_info table displayed
       incorrect VARIABLE_SOURCE and VARIABLE_PATH values for
       variables set within option files specified by !include
       or !includedir directives. (Bug #27514223)
       References: This issue is a regression of: Bug #25563891.

     * After upgrading from MySQL 5.7 to MySQL 8.0, the first
       attempt to start the server on a MySQL 5.7 data directory
       with --default-time-zone set to a specific time value
       such as "+00:00" caused the server to exit. (Bug
       #27512609, Bug #89584)

     * Lookups of character set internal numbers was not thread
       safe and could cause memory leaks. (Bug #27507950)

     * Using the -DWITH_LIBEVENT=system and -DWITH_ICU=system
       CMake options together caused configuration to fail. (Bug
       #27505535, Bug #89398)

     * Some messages were being written to the server error log
       using client error IDs. (Bug #27503787, Bug #89562)

     * When run in key migration mode, the server could report
       an error for successful operations. (Bug #27493997)

     * Upgrades from MariaDB to MySQL Community Edition failed
       on Fedora 27. (Bug #27484835)

     * ALTER TABLE could hang in a Waiting for tablespace
       metadata lock state. (Bug #27472087, Bug #89487)

     * Selecting from the Performance Schema status_by_thread or
       variables_by_thread table was not thread safe and could
       yield incorrect results. (Bug #27471510)

     * INSERT ... ON DUPLICATE KEY UPDATE could be handled
       improperly if a source table produced no rows. (Bug

     * SET PERSIST_ONLY ignored --skip-grant-tables and
       continued to perform checking against the dynamic
       privileges needed to set system variables. (Bug

     * For RPM packages and Docker RPM packages, the included
       my.cnf file now includes information indicating how to
       revert to the previous default authentication plugin
       (changing caching_sha2_password to mysql_native_plugin),
       for compatibility with older clients. (Bug #27454015, Bug

     * In string comparisons using >, only one operand was
       handled as utf32. (Bug #27452148)

     * A server exit during InnoDB initialization caused
       AddressSanitizer (ASan) to report a memory leak. The
       patch also implements proper handling of the data
       dictionary properties table in cases where the table
       contains data that cannot be parsed. (Bug #27447981, Bug

     * With -DWITH_SSL=system, if CMake could not find the
       system OpenSSL libraries and header files, it produced
       confusing messages. Now it exits immediately with an
       error. (Bug #27447874)

     * Configuring with -DWITH_INNODB_EXTRA_DEBUG=ON resulted in
       a linker error. (Bug #27444255, Bug #89412)

     * Configuring with -DWITH_ZLIB=system resulted in a linker
       error. (Bug #27435371, Bug #89373)

     * Metadata from result sets for UNION ALL queries could say
       NEWDATE rather than DATE. (Bug #27422376)

     * In builds with Undefined Behavior Sanitizer enabled,
       negation of -922337203685477580 could cause a server
       exit. (Bug #27419181)

     * With protocol compression enabled, a spurious assertion
       could be raised. (Bug #27418207, Bug #89324)
       References: This issue is a regression of: Bug #17922198.

     * Performance related to fetching tablespace objects from
       the data dictionary to populate the data dictionary cache
       was improved. (Bug #27402243)

     * If the server was started with --skip-grant-tables,
       clients that authenticate using the caching_sha2_password
       plugin were unable to connect. (Bug #27400095, Bug

     * Linux RPM and Debian packages now include dependency
       information for the Perl JSON module required to run the
       MySQL test suite. Linux RPM packages now include
       dependency information for the Perl Digest module
       required to run the MySQL test suite. (Bug #27392800, Bug
       #89250, Bug #27392808, Bug #89244)

     * A new system variable, default_collation_for_utf8mb4,
       enables setting the default collation for the utf8mb4
       character set. This variable is primarily intended to
       support replication from a MySQL 5.7 or older master
       server to a MySQL 8.0 slave server, or group replication
       with a MySQL 5.7 primary node and one or more MySQL 8.0
       secondaries. The value of the variable is replicated to
       the slave so that the slave can correctly process data
       originating from a master with a different default
       collation for utf8mb4. It may be helpful because the
       default collation for utf8mb4 in MySQL 5.7 is
       utf8mb4_general_ci but utf8mb4_0900_ai_ci in MySQL 8.0.
       The variable value determines the default utf8mb4
       collation for the following statements:


            utf8mb4 clause without a COLLATION clause, either
            for the table character set or for a column
            character set.

          + CREATE DATABASE and ALTER DATABASE having a
            CHARACTER SET utf8mb4 clause without a COLLATION

          + Any statement containing a string literal of the
            form _utf8mb4'some text' without a COLLATE clause.
       (Bug #27389878, Bug #27081073)

     * DESCRIBE with a column name option ignored the column
       name. (Bug #27387773, Bug #89224)

     * When run in key migration mode, the server ignored
       invalid options. (Bug #27387331)

     * Path name normalization could fail for very long path
       names. (Bug #27368298)

     * During configuration, CMake assumed that rpcgen was
       available rather than checking for it. (Bug #27368078)

     * The client authentication process could use memory after
       it had been freed. (Bug #27366143)

     * -DWITH_ZLIB=system could cause other CMake feature tests
       to fail. (Bug #27356658, Bug #89135)

     * On some systems, using mysqld --initialize to initialize
       the data directory was very slow. (Bug #27349579, Bug

     * Builds using RPM source packages now use a secure
       connection if Boost must be downloaded. (Bug #27343289,
       Bug #89104)

     * An internal check_datetime_range function that converted
       an ULONGLONG time value raised an assertion on Windows.
       (Bug #27340709)

     * Too much locking was being done for the
       caching_sha2_password authentication plugin (one
       lock/unlock per connection). This is now improved to one
       lock/unlock per plugin install/uninstall. (Bug #27335346)

     * A CREATE TABLE ... LIKE operation that implicitly
       assigned 'innodb_system' as the tablespace name for table
       partitions raised an assertion. (Bug #27331588)

     * SET PERSIST_ONLY could store large-valued variables
       incorrectly. (Bug #27322254)

     * The audit_log plugin could write statements to the binary
       log even with binary logging disabled. (Bug #27315321)

     * Certain queries using GREATEST() or LEAST() produced
       heap-use-after-free errors. (Bug #27312703)

     * An external_language column was added to the
       mysql.routines data dictionary table to support stored
       routines in different languages. The data stored in this
       column can be accessed through the EXTERNAL_LANGUAGES
       column of the INFORMATION_SCHEMA.ROUTINES table. (Bug
       #27309116, Bug #89038)

     * It is now prohibited to start the server with a
       lower_case_table_names setting that is different from the
       setting used when the server was initialized. The
       restriction is necessary because collations used by data
       dictionary table fields are based on the setting defined
       when the server is initialized, and restarting the server
       with a different setting would introduce inconsistencies
       with respect to how identifiers are ordered and compared.
       (Bug #27309094, Bug #89035)

     * For accounts that authenticated using the auth_sock
       authentication plugin, the server was unable to accept
       connections from clients from older MySQL versions. (Bug

     * An audit_log plugin memory leak was corrected. (Bug

     * The INFORMATION_SCHEMA.FILES table now obtains from
       storage engines the information needed for the following
       ROW_FORMAT, VERSION. (Bug #27292586)

     * Dropping a user-defined function did not always remove
       its entry from the Performance Schema
       user_defined_functions table. (Bug #27270498)

     * To reduce its size and storage footprint, Serialized
       Dictionary Information (SDI) is now generated in a
       compact JSON format. (Bug #27265584)

     * Concurrent execution of RESET PERSIST and SET PERSIST
       from multiple sessions could cause a server exit. (Bug

     * Tablespace statistics could be cached even if the
       statistics-collection process encountered an error. (Bug

     * SET PERSIST could fail to find the proper directory into
       which to write the mysqld-auto.cnf file. (Bug #27253828)

     * ALTER TABLE could not create generated NOT NULL geometry
       columns if the table contained data. (Bug #27252609)

     * The Performance Schema variables_info table displayed
       incorrect VARIABLE_SOURCE values for variables that were
       set in my.cnf and also persisted to mysqld-auto.cnf. (Bug

     * Improper handling of plugin loading and unloading could
       cause a server exit. (Bug #27247280, Bug #27297704)

     * The RESTART statement did not work for Ubuntu packages.
       (Bug #27245918)

     * LDAP authentication plugins were not built on FreeBSD.
       (Bug #27238252)

     * The server did not handle queries correctly when a cached
       value was evaluated as NULL by a windowing function, or
       when its argument was part of a GROUP BY with a ROLLUP
       operation which could be evaluated as NULL. (Bug

     * Windowing functions such as LAST_VALUE() did not work
       correctly with tables containing NOT NULL columns in all
       cases. (Bug #27230463)

     * Role cache invalidation could be performed incorrectly.
       (Bug #27225806)

     * Incorrect handling of persisted variables at server
       startup could result in a server exit. (Bug #27224682)

     * For upgrades from MySQL 5.7 to 8.0, the sql_mode value
       for object definitions could contain NOT_USED. (Bug

     * JSON_TABLE() failed if no default database was selected.
       (Bug #27217897)

     * Adding a unique index to an InnoDB table on which
       multiple locks were held could raise an assertion. (Bug

     * CREATE VIEW statements that used JSON_TABLE() in the view
       definition failed if no database was selected. (Bug

     * Queries on Performance Schema replication tables could
       return incorrect results, particularly when the execution
       plan used an index. (Bug #27184567)

     * For some statements, the FILE privilege was not properly
       checked. (Bug #27160888)

     * To better enable setting persisted variables at startup
       in the same order they were persisted with SET PERSIST,
       settings in mysqld-auto.cnf are first sorted based on
       timestamp (which is now stored in the file). (Bug

     * Setting the dragnet.log_error_filter_rules system
       variable to a very long value could cause a server exit.
       (Bug #27120953)

     * For platforms that use systemd (see Managing MySQL Server
       with systemd
       systemd was not always able to infer the state of a
       double-forked mysqld process. Consequently, systemd would
       attempt to restart mysqld even when that process
       terminated with status 1. systemd is now configured to
       run mysqld as a normal process (Type=notify rather than
       Type=forking). If the name of a socket file is specified
       in the environment variable NOTIFY_SOCKET, mysqld
       attempts to open a connection for communicating with
       systemd and writes its state changes there. (Bug
       #27109556, Bug #88463, Bug #26538598, Bug #87210)

     * ST_IsValid() returned incorrect results for some
       geographic polygons on non-WGS 84 ellipsoids. (Bug

     * A multiple-insert statement on a table containing a
       FULLTEXT key and a FTS_DOC_ID column caused a server
       error. (Bug #27041445, Bug #88267)
       References: This issue is a regression of: Bug #22679185.

     * In strict SQL mode, assignment of invalid values to
       AUTO_INCREMENT columns could be handled incorrectly,
       resulting in an assertion being raised. (Bug #27041393,
       Bug #88273)

     * Thread stack exhaustion could raise an assertion rather
       than returning an error. (Bug #27041350, Bug #88277)

     * SET PERSIST_ONLY did not properly consider whether the
       runtime validation function for persisted variables
       should be invoked. (Bug #27016247)

     * The audit_log plugin could mishandle aborts of event
       executions, causing a server exit. (Bug #27008133)

     * Some boundary cases for negation of large signed integers
       were corrected. (Bug #27004880, Bug #27008075)

     * An ALTER TABLE operation attempted to set the
       AUTO_INCREMENT value for table in a discarded tablespace.
       (Bug #26935001)

     * MyISAM index corruption could occur for bulk-insert and
       table-repair operations that involve the
       repair-by-sorting algorithm and many (more than 450
       million) rows. (Bug #26929724)

     * The Performance Schema could produce DIGEST_TEXT values
       with a trailing space. This no longer occurs. (Bug

     * Dropping an index from a system table could cause a
       server exit. (Bug #26881798)

     * A prepared statement using CREATE TABLE ... SELECT led to
       unexpected behavior when it referred in a GROUP BY to a
       view having the same name. (Bug #26881703)

     * With auto-commit disabled and an XA transaction in
       PREPARED state, attempts to execute XA COMMIT or XA
       ROLLBACK failed. (Bug #26848877, Bug #87836)

     * Some diagnostic messages produced by LDAP authentication
       plugins misleadingly suggested an error when no error had
       occurred. (Bug #26844713)

     * Initialization code for mysql_upgrade and mysqlpump was
       reorganized to avoid assertion failures. (Bug #26802211)

     * Full-text searches could raise an assertion due to
       improper handling of errors that occurred while
       attempting to acquire metadata locks. (Bug #26799898)

     * A keyring file created by the keyring_file plugin on a
       32-bit server was inaccessible by the keyring_file on a
       64-bit server, and vice versa. (Bug #26793060)

     * Metadata locks for column statistics were not displayed
       properly in the Performance Schema metadata_locks and
       events_waits_xxx tables. (Bug #26772858, Bug #87708)

     * The my_snprintf plugin service was removed and
       reimplemented using C++11 snprintf. (Bug #26696147, Bug

     * After an in-place upgrade from MySQL 5.7 to MySQL 8.0 on
       a server with a large number of tables, server startup
       failed to complete due to excessive memory consumption
       during data dictionary creation. (Bug #26486160)

     * An error occurring in a statement that modifies user
       privileges could result in deadlock for other
       transactions attempting to access the user privilege
       cache. (Bug #26475282)

     * The thread pool plugin logged too much information for
       failed connections. (Bug #26368725, Bug #86863)

     * Enabling multiple components concurrently could result in
       a server exit. (Bug #26171471, Bug #86514)

     * A malformed mysqld-auto.cnf file could cause a server
       exit. (Bug #26085774)

     * Creating a table in a reserved tablespace did not return
       an error. (Bug #26073851, Bug #86309)

     * For debug builds, using KILL to terminate a stored
       routine could raise an assertion. Thanks to Laurynas
       Biveinis for the patch. (Bug #26040870, Bug #86260)

     * If the init_connect system variable was set, its contents
       could not be executed by clients with expired passwords,
       who therefore were prevented from connecting. Now, if a
       client has an expired password, init_connect execution is
       skipped, which enables the client to connect and change
       password. (Bug #25968185)

     * Dates using the YYYYMMDD format were not recognized
       correctly in a query meeting all three of the following
       The query performed a left join.
       A DATE column in the inner table of the join was part of
       a multi-column primary key.
       Every column in the inner table's primary key was
       compared with another value; this could be either a
       literal or a column value. (Bug #25949639)

     * An in-place ALTER TABLE operation on a table with foreign
       keys resulted in a table definition mismatch. The new
       table definition passed to storage engine methods during
       the ALTER TABLE execution contained invalid foreign key
       names. (Bug #25915132, Bug #85997)

     * It was possible to assign nonexistent roles to an account
       as its default roles. (Bug #25755666, Bug #85561)

     * Using the C API, when trying to execute an INSERT
       prepared statement with CURSOR_TYPE_READ_ONLY set, the
       client hung. (Bug #25701141, Bug #85105)

     * RENAME USER failed even though the user or role to be
       renamed was not present in any role graph. (Bug

     * MySQL client programs could exit unexpectedly if
       malformed client/server protocol packets were received.
       (Bug #25471090)

     * Memory statistics collected by the Performance Schema
       could be incorrect due to race conditions. (Bug

     * Incorrect handling by the CONNECTION_CONTROL plugin of an
       internal hash led to spurious messages in the error log
       and eventual server exit. (Bug #25052009)

     * CURRENT_ROLE() and ROLES_GRAPHML() now return a string
       with the utf8 character set. Previously, they incorrectly
       returned a binary string. (Bug #24843257)

       result in multiple rows for a single component in the
       mysql.component system table. (Bug #24660436)

     * Performing SHOW PROCESSLIST while running a high load
       concurrently using the X Plugin could lead to an
       unplanned server exit. (Bug #24621170)
       References: See also: Bug #23057045.

     * The regular expression implementation in MySQL uses a
       String object---intended to be initialized as empty---to
       hold the current subject, and used the literal "" for
       this value. This could interfere with other functions
       that do likewise. This is fixed by constructing the
       String with a nullptr instead. (Bug #23276471)

     * mysqlpump could leak memory or exit when errors occurred.
       (Bug #23102944)

     * LDML 2.8 collation definitions could cause unexpected
       server behavior. (Bug #22819030)

     * Log-opening operations accessed log-name system variables
       without holding a lock on them. Multiple threads
       accessing such a variable could lead to a race condition
       and unexpected server behavior. (Bug #22591899)

     * When the range optimizer computed the prefix for a string
       of sufficient length, it was possible for it to truncate
       the string in the middle of a character, which could lead
       to assertion and other failures in debug builds. Now
       steps are taken in such cases to make sure that the
       string is truncated at a character boundary. (Bug
       #22475473, Bug #13712655)

     * Queries having subqueries or expressions in the GROUP BY
       clause could in some situations return random results,
       due to reading of uninitialized data. (Bug #20035304)
       References: See also: Bug #21922202.

     * The audit_log plugin did not log placeholder values for
       prepared statements. (Bug #16617026)

     * Integer columns in UNION statements could be cast to
       BIGINT even if a smaller integer type was more
       appropriate. (Bug #11747567, Bug #33004)

       (Bug #89796, Bug #27597980)

     * Window function row-buffer handling has been refactored
       to reduce the number of handler reads by 25%. (Bug
       #89512, Bug #27484133)

     * For some frames, the functions VARIANCE(), VAR_POP(), and
       VAR_SAMP() produced wrong results when evaluated with the
       windowing_use_high_precision system variable set to
       false. (Bug #89390, Bug #27438725)

     * Generated columns with a prefix index were not considered
       when the optimizer attempted to substitute an expression
       with an equivalent generated column. This prevented use
       of prefix indexes to speed up queries with predicates
       employing a generated column expression. (Bug #89291, Bug

     * FIRST_VALUE() did not always return NULL for an empty
       frame. (Bug #89116, Bug #27348276)

     * Regular expression functions accepting optional arguments
       did not return NULL as expected when one or more of these
       arguments was passed as an explicit NULL. (Bug #88872,
       Bug #27252630)

     * Row-based replication used the wrong set of indexes on
       the slave. (Bug #88847, Bug #27244826)

     * When executed with no default database having been
       chosen, EXPLAIN EXTENDED raised Error 1046 No database
       selected instead of the SQL syntax error expected due to
       the fact that the EXTENDED keyword has been removed. (Bug
       #88591, Bug #27153116)

     * The CMake option OPTIMIZER_TRACE=0 had no effect on
       builds and so is no longer used. (Bug #88520, Bug

     * A SELECT statement using GROUP BY with no constant or
       aggregate column failed a check for functional
       dependencies, correctly, on the first attempt but
       succeeded, wrongly, on the next. (Bug #88474, Bug
       References: See also: Bug #21807579.

     * A CREATE TABLE ... SELECT statement with a UNION in the
       SELECT failed in strict mode for a DATE column declared
       as NOT NULL. (Bug #87711, Bug #27068222)

     * Prepared statements using nested sub-selects were not
       always handled correctly. (Bug #87484, Bug #26657904)

     * The cost estimates for a query containing window
       functions did not take into account the cost of PARTITION
       BY or ORDER BY, nor did they include the cost of using
       the frame buffer. (Bug #87373, Bug #26612356)
       References: See also: Bug #26502118.

     * When processing a query with a subquery, the subquery is
       no longer optimized if outer query is known to produce an
       empty result; in such cases, EXPLAIN now shows Not
       optimized, outer query is empty.
       This change is made because, when the table used by the
       outer query is found empty at optimization, this sets the
       join column to NULL even when defined as not nullable,
       which leads to a conflict when optimizing the subquery.
       An exception is made if the outer query has aggregates
       without any GROUP BY; this means that it has a non-empty
       result, and that any subquery in the SELECT list must be
       evaluated and optimized, which reopens the nullability
       issue, which is now handled correctly for such cases.
       (Bug #83115, Bug #24713879)
       References: See also: Bug #83216, Bug #24760317.

     * When selecting from all columns making up a unique key
       containing nullable columns, with all columns in the
       WHERE condition set to non-null values, MySQL did not
       take into account their uniqueness, with the result that
       only_full_group_by missed detecting a functionally
       dependent column. (Bug #79291, Bug #22279903)

     * When using a partial index, the optimizer performed a
       more expensive table lookup instead of using the index,
       even when the partial index covered the entire set of
       data needed. (Bug #74359, Bug #19806106)

On Behalf of Oracle/MySQL Release Engineering Team
Balasubramanian Kandasamy

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

Reply via email to