Web lists-archives.com

MySQL Community Server 8.0.13 has been released (part 2/2)




[This is part 2 of the announcement]

Bugs Fixed


     * Important Note: The libevent library included with the
       MySQL Server was upgraded to version 2.1.8. (Bug
       #28207237)

     * InnoDB; Partitioning: Removed old InnoDB handler and
       partitioning code that referenced .frm files, and thus no
       longer had any purpose. (Bug #27995316)

     * InnoDB: An assertion was raised during a DROP TABLE
       operation. A thread that was accessing the table through
       the memcached API released metadata locks before
       releasing the table. (Bug #28531148)

     * InnoDB: The being_modified bit in a LOB reference was set
       but the bit modification was not logged, causing an
       assertion failure. (Bug #28443837)

     * InnoDB: Window functions returned incorrect results when
       the optimizer used the InnoDB storage engine for internal
       temporary tables. (Bug #28430650)

     * InnoDB: Adjusting the server time to an earlier time
       caused periodic redo flushes to be missed. (Bug
       #28430358, Bug #90670)

     * InnoDB: An ALTER TABLE operation that added a primary key
       produced a segmentation fault. (Bug #28395278)
       References: This issue is a regression of: Bug #27753193.

     * InnoDB: A conditional check was removed by removing the
       ReadView::complete() function and splitting its work
       among other functions. This change helps optimize
       performance on ARM 64-bit. (Bug #28385211, Bug #91759)

     * InnoDB: Leftover thread_mutex code was removed from
       InnoDB source code files. (Bug #28363673, Bug #91678)

     * InnoDB: Type changes were implemented to eliminate
       warnings that occurred when compiling InnoDB with
       Microsoft Visual Studio 2017. (Bug #28338720)

     * InnoDB: An invalid assertion was raised when a B-tree
       flag used to mark shared index locks was used to mark a
       shared-exclusive index lock. (Bug #28317172)

     * InnoDB: The sharp checkpoint mechanism no longer forces
       preflushing of dirty pages when requesting a checkpoint
       for the currently available LSN.
       The log checkpointer thread now takes the concurrency
       margin (the per thread margin for free space in the log)
       into account when determining if the next checkpoint
       write is required and whether to wake up page cleaners to
       force a sync-flush of dirty pages. Page cleaner threads
       take the concurrency margin into account when determining
       whether to flush dirty pages and how many pages to flush.
       (Bug #28297462)

     * InnoDB: A misplaced debug crash point caused a
       transaction timeout resulting in test failures. (Bug
       #28295814)

     * InnoDB: InnoDB error message format was modified to
       remove duplicate text. (Bug #28289789)

     * InnoDB: Unnecessary cycles of freeing and allocating
       memory caused JSON performance degradation on Windows.
       (Bug #28278737)

     * InnoDB: To avoid checking hardware support each time a
       hardware-optimized checksum is computed, asserts were
       converted to debug-only asserts. (Bug #28267334, Bug
       #91485)

     * InnoDB: A patch that combined Variance-Aware Transaction
       Scheduling (VATS) with functionality that releases read
       locks caused gap locks to be removed without granting
       locks to waiting transactions, resulting in transaction
       timeouts. (Bug #28261530)
       References: This issue is a regression of: Bug #28261530.

     * InnoDB: The log_checkpointer thread failed to write new
       checkpoints in a timely manner when the amount of redo
       was small. (Bug #28220222)

     * InnoDB: The server exited during an in-place upgrade from
       MySQL 5.7 to MySQL 8.0 due to an attempted eviction of a
       foreign-key-related table from the cache. At the end of
       the upgrade process, tables with FULLTEXT indexes were
       marked as ready for eviction without checking for foreign
       key relationships. (Bug #28212734, Bug #91325)

     * InnoDB: The format of the following Performance Schema
       and INFORMATION_SCHEMA table columns was modified:

          + data_locks.ENGINE_LOCK_ID

          + data_lock_waits.REQUESTING_ENGINE_LOCK_ID

          + data_lock_waits.BLOCKING_ENGINE_LOCK_ID

          + INNODB_TRX.TRX_REQUESTED_LOCK_ID
       The previous format was trx_id:table_id for table locks
       and trx_id:space_id:page_no:heap_no for record locks. The
       new format is trx_immutable_id:table_id:lock_immutable_id
       for table locks and
       trx_immutable_id:space_id:page_no:heap_no:lock_immutable_
       id for record locks.
       lock_immutable_id and trx_immutable_id are 64-bit values
       that do not change during the lifetime of a lock or
       transaction, respectively, and are unique among other
       instance object IDs. (Bug #28176910)

     * InnoDB: The list of permitted lock mode descriptors used
       by the LOCK_MODE column of the Performance Schema
       data_locks table was expanded to include REC_NOT_GAP,
       INSERT_INTENTION, PREDICATE, and PRDT_PAGE. REC_NOT_GAP
       indicates a record-only lock. INSERT_INTENTION indicates
       an insert intention lock. PREDICATE and PRDT_PAGE
       descriptors indicate a spatial index lock. (Bug
       #28176805)

     * InnoDB: Table names were not compared in lowercase on
       macOS with a setting of lower_case_table_names=2, which
       caused instability after restarting the server. (Bug
       #28170699, Bug #91204)

     * InnoDB: Macros used to define constant values in InnoDB
       source code were changed to constant expressions. (Bug
       #28152926)

     * InnoDB: A flag that prevents transactions from being
       rolled back during commit is now set earlier to prevent
       scenarios in which a high priority transaction could
       abort a transaction that is in the process of being
       committed. (Bug #28140462)

     * InnoDB: A query that scanned the primary key of a table
       did not return the expected result. (Bug #28104394, Bug
       #91032)

     * InnoDB: Unnecessary header file inclusions were removed
       from InnoDB source code files. (Bug #28086759)

     * InnoDB: An apparent hang due to the log writer running
       out of free space in the redo log caused the server to
       exit. (Bug #28072385, Bug #90993)

     * InnoDB: A query interruption during a lock wait caused an
       error. (Bug #28068293)

     * InnoDB: After upgrading from MySQL 5.7 to MySQL 8.0,
       invalid warnings indicated that undo tablespace IDs were
       not in the undo tablespace range. The warnings occurred
       if the MySQL 5.7 installation was configured to use
       separate undo tablespaces. (Bug #28060337)

     * InnoDB: Error messaging was improved for startup failures
       on an incomplete cloned data directory. (Bug #28032131)

     * InnoDB: A segmentation fault occurred during an XA COMMIT
       operation. (Bug #27995891)

     * InnoDB: Unused code was removed from the TempTable
       storage engine source code. (Bug #27978968)

     * InnoDB: An index record was not found when updating a
       secondary index defined on a generated column. (Bug
       #27968952)

     * InnoDB: A spurious negation operator in an IF condition
       caused the Variance-Aware Transaction Scheduling (VATS)
       algorithm to be used for table locks. (Bug #27944920)
       References: This issue is a regression of: Bug #27572937.

     * InnoDB: The update log applied as part of an online ALTER
       TABLE operation did not take into account the computed
       value of the generated column in the old row while
       updating the secondary index. (Bug #27921932)

     * InnoDB: Buffer pool memory allocation was not fully
       accounted for in Performance Schema
       memory/innodb/buf_buf_pool statistics. (Bug #27917595,
       Bug #90561)

     * InnoDB: An unsupported DDL operation involving a foreign
       key constraint raised an assertion. (Bug #27912873)

     * InnoDB: A lock-related debug assertion failure was raised
       when more than one lock matched a search condition, which
       could lead to releasing the wrong lock. (Bug #27898384)

     * InnoDB: A function that removes aborted indexes during
       the prepare phase of an online ALTER TABLE operation did
       not record its changes. (Bug #27879325)

     * InnoDB: A general tablespace created in MySQL 5.7 with no
       assigned table caused a failure when upgrading to MySQL
       8.0. (Bug #27877485)

     * InnoDB: Concurrent undo tablespace truncation and master
       key rotation operations raised an assertion. (Bug
       #27872369)

     * InnoDB: A boolean marker identifying whether a
       transaction holds a mutex was not placed in the correct
       location. (Bug #27870035)

     * InnoDB: An attempted foreign key check on a discarded
       table caused a segmentation fault. (Bug #27804668)

     * InnoDB: B-tree bulk load operations could leave a page in
       a partially initialized state. (Bug #27802098)

     * InnoDB: Starting the server inside a Docker container on
       a NUMA enabled operating system raised an "mbind:
       Operation not permitted" error. (Bug #27792853)

     * InnoDB: A partitioned table TABLE_ID value stored in a
       storage-engine-private data field in the data dictionary
       was not adjusted properly after an ALTER TABLE ...
       PARTITION operation. (Bug #27784462)

     * InnoDB: The server halted with a "log writer overwriting
       data after checkpoint - waited too long" error. (Bug
       #27779266)

     * InnoDB: With innodb_flush_log_at_trx_commit=2, the
       log_flusher thread could wait for an event with a timeout
       period equal to the innodb_flush_log_at_timeout setting,
       causing an initialization delay. (Bug #27762596)

     * InnoDB: An assertion was raised during an OPTIMIZE TABLE
       operation. (Bug #27753193)

     * InnoDB: Transaction rollback due to a deadlock caused an
       assertion failure in debug builds. Initiation of an
       attachable transaction for accessing the data dictionary
       was not expected during transaction rollback. (Bug
       #27729974)

     * InnoDB: With innodb_flush_log_at_trx_commit=0 and binary
       logging enabled, redo logs were not flushed as expected
       during the commit phase of DDL operations. (Bug
       #27691035)

     * InnoDB: With REDUNDANT or COMPRESSED row format and READ
       COMMITTED isolation level, only the LOB value prefix and
       possibly the external part of an old LOB value were
       returned, which could cause a JSON document to be viewed
       as corrupted. If there was no LOB value prefix, an old
       LOB value with new values for other fields could be
       returned, causing data inconsistency. (Bug #27624990)

     * InnoDB: A debug option that permits pausing periodic
       checkpoints became obsolete after periodic checkpoint
       ownership was moved from the master thread to a log
       checkpointer thread. The debug option was replaced by
       another method of pausing periodic checkpoints. (Bug
       #27588328)

     * InnoDB: A transaction on a table with a spatial index
       defined on a column with a spatial reference identifier
       (SRID) was able to insert into an area selected for
       update by another transaction. (Bug #27577612)

     * InnoDB: A foreign key constraint name was duplicated
       during a rename table operation, causing a failure during
       later query execution. (Bug #27545888)

     * InnoDB: A Serialized Dictionary Information (SDI)
       deletion failure raised an assertion. (Bug #27493634)

     * InnoDB: A server exit occurred after freeing large object
       (LOB) index entries during a LOB purge or rollback. (Bug
       #27419474)

     * InnoDB: In a function called before the execution of a
       statement in a stored procedure, a read and write
       operation on trx->lock.start_stmt was not protected by a
       mutex. (Bug #27325898)

     * InnoDB: The INFORMATION_SCHEMA.FILES and
       INFORMATION_SCHEMA.INNODB_TABLESPACES tables did not show
       the actual undo tablespaces that were present in the
       MySQL instance. Only the two default undo tablespaces
       were shown. (Bug #26820406)

     * InnoDB: An error occurred during a DDL operation due to a
       mismatch in a REDUNDANT row format calculation that
       determines the length of the online log. (Bug #26375771)

     * InnoDB: Enabling innodb_undo_log_truncate negatively
       affected transaction processing performance. Instead of
       performing two checkpoints during an undo tablespace
       truncate operation, pages that belong to the tablespace
       file are now flushed from disk. (Bug #26322656)

     * InnoDB: A helper class was introduced to improve
       performance associated with reading from secondary keys
       when there are multiple versions of the same row.
       Thanks to Domas Mituzas for the contribution. (Bug
       #25540277, Bug #84958)

     * InnoDB: The location of the Innodb Merge Temp File that
       reported by the wait/io/file/innodb/innodb_temp_file
       Performance Schema instrument was incorrect. (Bug
       #21339079, Bug #77519)

     * Partitioning: When a CREATE TABLE ... PARTITION BY ...
       statement failed due to an invalid partition definition,
       the server did not remove any partition files which might
       have been created prior to encountering the invalid
       PARTITION clause. (Bug #27798708)
       References: See also: Bug #88043, Bug #26945644.

     * Partitioning: It was possible to perform FLUSH TABLES FOR
       EXPORT on a partitioned table created with
       innodb_file_per_table=1 after discarding its tablespace.
       Attempting to do so now raises ER_TABLESPACE_DISCARDED.
       (Bug #95045, Bug #27903881)
       References: See also: Bug #80669, Bug #22899690.

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

     * Replication: When a group member resumes after being
       suspended for some time and is not able to process all
       pending messages, it enters the ERROR state. However, the
       remaining members see it as UNREACHABLE, and wait until
       the member's suspicion expires to evict it from the
       group. The behavior has now been modified and a member
       stopping due to some error tries to connect to a known
       peer to request its removal from the group, before
       installing the leave view. (Bug #28252687)

     * Replication: When a replication slave is restarted by a
       START SLAVE statement, the columns in the Performance
       Schema table replication_applier_status_by_worker
       beginning APPLYING_TRANSACTION are now reset on a slave
       that is operating in single-threaded mode. These columns
       were always reset on a multi-threaded slave, because the
       existing worker threads were terminated by the statement
       and the information could not be retained. The behavior
       has now been standardized across the slave configurations
       by resetting the columns for a single-threaded slave as
       well. (Bug #28248026)

     * Replication: If Group Replication was started on server
       with an invalid group_replication_group_name, the server
       would stop unexpectedly. (Bug #28219136)

     * Replication: If a multi-threaded replication slave was
       stopped, changed to a single-threaded slave (by setting
       slave_parallel_workers > 0), and restarted, the
       Performance Schema table
       replication_applier_status_by_worker showed irrelevant
       timestamps because the old monitoring information had not
       been cleared. (Bug #28191382)

     * Replication: If the
       group_replication_recovery_retry_count variable was
       modified while the member was already making a
       reconnection attempt, the connection attempt could enter
       an infinite loop. (Bug #28092714)

     * Replication: When the binlog_group_commit_sync_delay
       system variable is set to a wait time to delay
       synchronization of transactions to disk, and the
       binlog_group_commit_sync_no_delay_count system variable
       is also set to a number of transactions, the MySQL server
       exits the wait procedure if the specified number of
       transactions is reached before the specified wait time is
       reached. The server manages this process by checking on
       the transaction count after a delta of one tenth of the
       time specified by binlog_group_commit_sync_delay has
       elapsed, then subtracting that interval from the
       remaining wait time.
       If rounding during calculation of the delta meant that
       the wait time was not a multiple of the delta, the final
       subtraction of the delta from the remaining wait time
       would cause the value to be negative, and therefore to
       wrap to the maximum wait time, making the commit hang.
       The data type for the remaining wait time has now been
       changed so that the value does not wrap in this
       situation, and the commit can proceed when the original
       wait time has elapsed. Thanks to Yan Huang for the
       contribution. (Bug #28091735, Bug #91055)

     * Replication: In debug builds, an assertion failed because
       more than 255 collations are now available in MySQL. (Bug
       #28015761)

     * Replication: An assertion was raised in debug builds
       because the MySQL server recorded a GTID consistency
       violation, but did not remove the record after the
       relevant statement failed to execute successfully. The
       handling of this situation has now been improved to
       ensure that the server checks at the end of a transaction
       whether a GTID consistency violation was produced by a
       failed statement, and if this is the case, restores the
       previous GTID consistency state. (Bug #27903831, Bug
       #90551)

     * Replication: The group_replication_exit_state_action
       variable enables you to specify what action is taken if a
       member involuntarily leaves the group, but when starting
       a server with group_replication_start_on_boot enabled the
       group_replication_exit_state_action variable was being
       ignored during the following scenarios:

          + valid number of group members was exceeded

          + incompatible configuration of the member system
            variables (various)

          + the joining member had more transactions than the
            group

          + the joining member's version was not compatible with
            the group
       (Bug #27881311)

     * Replication: With GTIDs in use for replication,
       transactions including statements that caused a parsing
       error (ER_PARSE_ERROR) could not be skipped manually by
       the recommended method of injecting an empty or
       replacement transaction with the same GTID. This action
       should result in the slave identifying the GTID as
       already used, and therefore skipping the unwanted
       transaction that shared its GTID. However, in the case of
       a parsing error, because the statement was parsed before
       the GTID was checked to see if it needed to be skipped,
       the replication applier thread stopped due to the parsing
       error, even though the intention was for the transaction
       to be skipped anyway.
       With this fix, the replication applier thread now ignores
       parsing errors if the transaction concerned needs to be
       skipped because the GTID was already used. Note that this
       behavior change does not apply in the case of workloads
       consisting of binary log output produced by mysqlbinlog.
       In that situation, there would be a risk that a
       transaction with a parsing error that immediately follows
       a skipped transaction would also be silently skipped,
       when it ought to raise an error. (Bug #27638268)

     * Replication: When a RESET SLAVE statement was issued on a
       replication slave with GTIDs in use, the existing relay
       log files were purged, but the replacement new relay log
       file was generated before the set of received GTIDs for
       the channel had been cleared. The former GTID set was
       therefore written to the new relay log file as the
       PREVIOUS_GTIDS event, causing a fatal error in
       replication stating that the slave had more GTIDs than
       the master, even though the gtid_executed set for both
       servers was empty. Now, when RESET SLAVE is issued, the
       set of received GTIDs is cleared before the new relay log
       file is generated, so that this situation does not occur.
       (Bug #27636289)

     * Replication: The master's receiver thread for
       semisynchronous replication held a mutex while reading
       acknowledgements from slaves, but the same mutex was
       required to add or remove a semisynchronous slave,
       causing those operations to be delayed by the
       acknowledgement activity. The issue has now been fixed by
       not acquiring the mutex to read the acknowledgements from
       slaves. (Bug #27610678, Bug #89370)

     * Replication: In code for replication slave reporting, a
       rare error situation raised an assertion in debug builds,
       but in release builds, returned leaving a mutex locked.
       The mutex is now unlocked before returning in this
       situation. Thanks to Zsolt Parragi for the patch. (Bug
       #27448019, Bug #89421)

     * Replication: Entries in the relay log info log (the
       slave_relay_log_info table) for the Group
       Replication-specific channels group_replication_applier
       and group_replication_recovery were not being cleared by
       a RESET SLAVE or RESET SLAVE ALL command. (Bug #27411175)

     * Replication: Automatic retrying of transactions on a
       replication slave, as specified by the
       slave_transaction_retries system variable, was taking
       place even if the transaction had a non-temporary error
       that would repeat on retrying or that indicated wider
       issues. Now, transactions are only automatically retried
       if there is either no error, or an error that is only
       temporary. (Bug #27373559, Bug #89143)

     * Replication: When FLUSH statements for specific log types
       (such as FLUSH SLOW LOGS) resulted in an error, the
       statements were still written to the binary log. This
       stopped replication because the error had occurred on the
       master, but did not occur on the slave. MySQL Server now
       checks on the outcome of these FLUSH statements, and if
       an error occurred, the statement is not written to the
       binary log. (Bug #24786290, Bug #83232)

     * Replication: The PASSWORD() function, which produces a
       hash of the password, was deprecated in MySQL 5.7 and
       removed in MySQL 8.0. When a SET PASSWORD statement that
       used this function was replicated from a MySQL 5.6 master
       to a MySQL 5.7 slave, or from a MySQL 5.7 master with the
       log_builtin_as_identified_by_password system variable set
       to ON to a MySQL 5.7 slave, the password hash was itself
       also hashed before being stored on the slave. The issue
       has now been fixed and the replicated password hash is
       stored as originally passed to the slave. (Bug #24687073)

     * Replication: If an ORDER BY clause was used in retrieving
       records from certain Performance Schema tables relating
       to replication, an empty set was returned. The issue has
       now been fixed. (Bug #22958077, Bug #80777)

     * Replication: When replication channels are used on a
       slave for multi-source replication, a START SLAVE
       statement that does not specify an individual channel (so
       without the FOR CHANNEL clause) should start the I/O
       thread and the SQL thread for all of the channels on the
       replication slave. However, if a RESET SLAVE statement
       was used on such a slave, a subsequent START SLAVE
       statement did not start the non-default channels. Now,
       replication channels that are deinitialized as a result
       of a RESET SLAVE statement, rather than as a result of an
       error in the initialization process, are identified and
       are restarted by a START SLAVE statement that applies to
       all channels. (Bug #22809607)

     * Replication: Issuing RESET SLAVE on a replication slave
       does not change any replication connection parameters
       such as master host, master port, master user, or master
       password, which are retained in memory. However, these
       connection parameters are reset if you issue RESET SLAVE
       ALL. Previously, if the slave mysqld was restarted
       immediately after issuing RESET SLAVE (including a server
       crash as well as a deliberate restart), the connection
       parameters were reset as if RESET SLAVE ALL had been
       used.
       Now, when master_info_repository=TABLE is set on the
       server (which is the default from MySQL 8.0), replication
       connection parameters are preserved in the crash-safe
       InnoDB table mysql.slave_master_info as part of the RESET
       SLAVE operation. They are also retained in memory. In the
       event of a server crash or deliberate restart after
       issuing RESET SLAVE but before issuing START SLAVE, the
       replication connection parameters are retrieved from the
       table and reused for the new connection.
       If master_info_repository=FILE is set on the server
       (which is the default in MySQL 5.7), replication
       connection parameters are only retained in memory, so the
       behavior remains the same as previously. If the slave
       mysqld is restarted due to a server crash or a deliberate
       restart immediately after issuing RESET SLAVE, the
       connection parameters are lost. In that case, you must
       issue a CHANGE MASTER TO statement after the server start
       to respecify the connection parameters before issuing
       START SLAVE.
       If you want to reset the connection parameters
       intentionally, you need to use RESET SLAVE ALL, which
       clears the connection parameters. In that case, you must
       issue a CHANGE MASTER TO statement after the server start
       to specify the new connection parameters. (Bug #20280946)

     * Replication: Compilation warnings related to unused
       functions in xdr_utils have been reduced. Thanks to Zsolt
       Parragi for the patch. (Bug #91071, Bug #28099963)

     * Replication: When group_replication_group_seeds contained
       a DNS based entry which resolved to its own local
       address, Group Replication could not start. (Bug #90483,
       Bug #27882096, Bug #28074929)

     * Replication: Issuing START GROUP_REPLICATION and then
       forcibly stopping the mysqld process, for example using
       control-C, could result in an unexpected halt of the
       server. (Bug #90457, Bug #27873419)

     * Microsoft Windows: An error now is written to the server
       log when the presence of the NO_AUTO_CREATE_USER value
       for the sql_mode option in the options file prevents a
       MySQL 8.0 server from starting. (Bug #28061945, Bug
       #90967)

     * Microsoft Windows: On Windows, uninstallation of the
       MySQL Server MSI package through MySQL Installer produced
       a spurious popup window. (Bug #27463864)

     * Microsoft Windows: On Windows, DBUG_ABORT did not print
       the custom stack trace and other information. (Bug
       #21383530)

     * JSON: The server did not reject creation of a table with
       a generated column in which the generated column used
       JSON_TABLE(), even though subqueries, parameters,
       variables, stored functions, and user-defined functions
       are not permitted in expressions for generated columns.
       The server now checks more aggressively to make sure any
       of the disallowed constructs (including JSON_TABLE()) are
       rejected for use in such expressions. (Bug #28518485)

     * JSON: SELECT ... FROM JSON_TABLE() sometimes failed with
       a permissions error for a user other than MySQL root.
       This issue could also occur when such a query was used as
       the basis for a view, and a SELECT from the view failed.
       (Bug #28255453, Bug #27923406)
       References: See also: Bug #27189940.

     * JSON: The JSON_TABLE() function subjected integer values
       greater than or equal to 2^31 to wraparound. For example,
       the query SELECT id FROM
       JSON_TABLE('[{"id":"2147483648"}]', '$[*]' COLUMNS (id
       BIGINT UNSIGNED PATH '$.id')) AS json returned
       -2147483648. (Bug #27856835)

     * JSON: In some contexts, the NULLIF() function returned
       its first argument as a boolean value rather than its
       actual type. This was noticed when the result of this
       function was used as an argument to JSON_ARRAYAGG() or
       JSON_OBJECTAGG(), but could have occurred in other cases
       in which NULLIF() was used in a similar fashion. (Bug
       #90833, Bug #28007237)

     * JSON: When a JSON document which contained binary data
       was converted to base-64 encoded text for display,
       newline characters in the encoded string were not
       properly escaped, so that the text representation could
       not be parsed as JSON, and was thus truncated, corrupted,
       or both. Now MySQL makes sure that any newline characters
       in the encoded string are escaped. (Bug #90503, Bug
       #27891359)

     * On the Fedora 29 platform, OpenSSL 1.0.x is used to build
       packages because 1.1.1 support is not ready. If you build
       MySQL from source, it is recommended that you build using
       the compat-openssl10-devel package. (Bug #28737143)

     * On the Fedora 29 platform, upgrading from MariaDB to
       MySQL 8.0.13 failed due to missing obsoletes. (Bug
       #28727698)

     * MySQL binary distributions for SLES 12 now are built
       using GCC 7. The lowest supported GCC version on this
       platform is now 5.3 (previously 4.8.5). (Bug #28542723)

     * Trying to add a functional index on a subquery should not
       be possible, and caused the server to hit an assertion
       when trying to resolve the indexed expression. Now in
       such cases, the expression is disallowed, and the servers
       returns an appropriate error message. (Bug #28526493)

     * Added a range check when performing calculations with
       exponents. (Bug #28505423)

     * CMAKE -DWITHOUT_SERVER=1 resulted in build errors. (Bug
       #28501563, Bug #92011)

     * When a prefix index was specified with a length of 8
       bytes, the Sub_part column in the output of SHOW INDEXES
       was NULL. (Bug #28499603)

     * Compilation failed for GCC 8 with MySQL configured to use
       some system libraries. (Bug #28471072, Bug #91914)

     * For debug builds, if the server bootstrapping phase
       failed, missing cleanup code caused an assertion to be
       raised. (Bug #28435378, Bug #91847)

     * Numeric ranges in MySQL builds could differ between the
       ARM and Intel x64 platforms. (Bug #28401869)

     * For mysqldump --tables output, file names now always
       include a .txt or .sql suffix, even for file names that
       already contain a dot. Thanks to Facebook for the
       contribution. (Bug #28380961, Bug #91745)

     * Concurrent INSERT and SELECT statements on a MERGE table
       could result in a server exit. (Bug #28379285)

     * On SLES 15, upgrading from MariaDB packages to MySQL
       packages failed due to incorrect obsoletes information.
       (Bug #28292138)

     * The data dictionary auto releaser now allocates maps for
       data dictionary object types dynamically. Also, maps were
       added for column statistics and resource groups used in
       size calculations and object removal, and an auto
       releaser was added for ANALYZE TABLE operations. (Bug
       #28245522, Bug #91420)

     * It was possible for a UNION query that mixed different
       character sets to fail with a spurious error. (Bug
       #28237675)
       References: This issue is a regression of: Bug #83895,
       Bug #25123839.

     * CHECK TABLE ... FOR UPGRADE on temporary tables could
       raise an assertion. (Bug #28220374)
       References: This issue is a regression of: Bug #24741307.

     * A divide-by-zero error could occur in the range
       optimizer. (Bug #28214186)

     * Due to a GCC 8 bug, recursion in foreign key checks could
       exhaust stack space. (Bug #28200774)

     * When sql_mode was set to the empty string, queries of the
       form SELECT CONCAT( FORMAT(LPAD(char,2,''), 1) ) were not
       handled properly; the same was also true for
       similarly-formed queries using RPAD() in place of LPAD().
       (Bug #28197977)

     * Non-privileged users could change their own account
       password history and reuse properties. (Bug #28191838)

     * The OpenSSL 1.1 OPENSSL_malloc_init() call did not work
       well on Windows. To address this, alternative allocation
       wrappers are used instead of the defaults from OpenSSL.
       Consequently, OpenSSL memory instrumentation is turned
       off. (Bug #28179051)

     * Allocation of certain object types during data dictionary
       lookups resulted in a stack buffer overflow. (Bug
       #28176453)

     * An internal server operation that attempted to perform a
       commit while fetching table statistics from the
       INFORMATION_SCHEMA could raise an assertion. (Bug
       #28165060)

     * Certain stored procedures could cause a server exit. (Bug
       #28156802)

     * Output for CREATE USER statements could differ in the
       general query log and audit log. (Bug #28147710)

     * For UPDATE and DELETE statements that produce an error
       due to sql_safe_updates being enabled, the error message
       was insufficiently informative. The message now includes
       the first diagnostic that was produced, to provide
       information about the reason for failure. For example,
       the message may indicate that the
       range_optimizer_max_mem_size value was exceeded or type
       conversion occurred, either of which can preclude use of
       an index.
       Additionally: (1) Using EXPLAIN for such statements does
       not produce an error, enabling users to see from EXPLAIN
       plus SHOW WARNINGS output why an index is not used. (2)
       For multiple-table deletes and updates, an error is
       produced with safe updates enabled only if any target
       table uses a table scan. (Bug #28145710, Bug #91080)

     * MySQL Server and test RPM packages were missing
       perl-Data-Dumper as a dependency. (Bug #28144933, Bug
       #72926)

     * Server startup could fail if a service needed by a
       component was not yet initialized. (Bug #28142250)

     * SHOW CREATE TABLE could omit foreign key RESTRICT
       options. This in turn could cause foreign key RESTRICT
       options to be lost from tables dumped with mysqldump and
       restored from the dump file. (Bug #28122781, Bug #91110)

     * The mysql client was slow to import large multiple-line
       statements in batch mode. Memory allocation is now more
       efficient for this situation. Thanks to Sinisa
       Milivojevic for the patch. (Bug #28116512, Bug #85155)

     * The SUM() and AVG() functions did not handle correctly a
       string argument used with a window function. (Bug
       #28105241)

     * Excessive nesting of geometry collections caused the
       server to exhaust stack space. The server now raises an
       error if there is a danger of stack overrun. (Bug
       #28100563)

     * For the mysql client, the -b short option was associated
       with two long options, --no-beep and --binary-as-hex. The
       -b option now is associated only with --no-beep. (Bug
       #28093271)

     * For a table with an auto-increment primary key,
       concurrent ALTER TABLE ... ADD ... VIRTUAL and INSERT
       statements could lead to duplicate-key errors. (Bug
       #28089240)

     * Handling of floating-point values by SUM() was improved.
       (Bug #28080199)

     * Some expressions using ST_Simplify() could cause a server
       exit. (Bug #28079969)

     * Testing on a UBSan-enabled build returned a "member call
       on null pointer of type 'struct Event_db_repository'"
       error. (Bug #28066155)

     * The WITH_GMOCK CMake option did not handle Windows path
       names properly. (Bug #28061409, Bug #90964)

     * INFORMATION_SCHEMA queries that attempted to cache table
       statistics could raise a debugging assertion. (Bug
       #28035207)

     * If roles were assigned to accounts, certain sql_mode
       settings could cause the server to be unable to start.
       (Bug #28030423)

     * Group lookups for LDAP authentication plugins could fail
       if the user had insufficient privileges. Now, group
       search operations bind again using root credentials if
       those are available. (Bug #28016008)

     * ANALYZE TABLE ... UPDATE HISTOGRAM statements produced by
       mysqldump contained a syntax error. (Bug #28014376, Bug
       #90846)

     * Generated columns having indexes and that used a string
       function were not always populated correctly. (Bug
       #27973409)

     * Fixed-length sort keys, such as those used by priority
       queues, that fit exactly were assumed to have failed.
       (Bug #27970481, Bug #92448, Bug #28654343)

     * For an empty result, REPLACE() sometimes returned a null
       string rather than an empty string. (Bug #27960921)

     * Dropping a table that was created with a user-defined
       collation no longer available could cause a server exit.
       (Bug #27952999)

     * Joining the INFORMATION_SCHEMA REFERENTIAL_CONSTRAINTS
       and TABLE_CONSTRAINTS tables on the CONSTRAINT_NAME
       failed because the column collations differed. (Bug
       #27945704, Bug #90690)

     * Some operations on DECIMAL values could cause a server
       exit. (Bug #27942277)

     * Stored program definitions in mysqldump dump files
       sometimes included the NO_AUTO_CREATE_USER SQL mode.
       Because that mode has been removed in MySQL 8.0, loading
       such a dump file into a MySQL 8.0 server failed.
       mysqldump now removes NO_AUTO_CREATE_USER from the
       definition of dumped stored programs. (Bug #27931181, Bug
       #90624)

     * Very long table keys were handled incorrectly on
       replication slaves. (Bug #27930505)

     * mysqld did not determine its installation directory
       correctly if that directory was the last one listed in
       $PATH. (Bug #27922896)

     * During server startup/shutdown, PID files could be
       mishandled. (Bug #27919254)

     * On rare occasions, setting a savepoint could raise an
       assertion. (Bug #27898591)

     * Runtime errors could occur for calls to copy_integer().
       myfunc_int(), mysql_sys_var_int(), or thd_killed(); for
       calls to MyISAM sorting functions; or for values outside
       the range of representable values of type unsigned long
       long. (Bug #27894901, Bug #90515, Bug #27871951, Bug
       #27918095, Bug #90609, Bug #27937522, Bug #90661, Bug
       #27978325, Bug #27962900)

     * mysql_install_plugin failed to report plugin-specific
       errors if the server was unable to store plugin metadata
       in the data dictionary. (Bug #27893406)

     * ssl_fips_mode cannot be set to ON unless the OpenSSL
       requirements are satisfied, but a failed attempt still
       resulted in the value being displayed as ON. (Bug
       #27891890)

     * The symbol for the mysql_result_metadata() C API function
       was not exported by the client library on Windows. (Bug
       #27868095)

     * For InnoDB tables, self-referencing foreign keys could be
       created, causing server misbehavior. (Bug #27864515)

     * A UNION query mixing different character sets produced
       invalid output when performed in a prepared statement or
       a stored procedure. (Bug #27849293)

     * Debian packages were missing a dependency for
       libcurl-dev. (Bug #27844465)

     * --help output for client programs did not include the
       current --ssl-fips-mode value. (Bug #27838966)

     * A runtime error could occur for calls to
       Derived_key_comp(). (Bug #27830679)

     * For MEMORY tables, memory overflow errors could occur.
       (Bug #27799513)

     * When converting from a BLOB (or TEXT) type to a smaller
       BLOB (or TEXT) type, no warning or error was reported
       informing about the truncation or data loss. Now an
       appropriate error is issued in strict SQL mode and a
       warning in nonstrict SQL mode. (Bug #27788685, Bug
       #90266)

     * For debug builds, my_strnxfrm_unicode_full_bin() could
       raise an assertion. (Bug #27752619)

     * In builds with Undefined Behavior Sanitizer enabled,
       signed integer overflow could occur in GIS calculations.
       (Bug #27751479, Bug #27744399, Bug #27811282)

     * It was possible in some cases for the internal function
       regexp::EvalExprToCharset() to bind a reference to a
       misaligned address. (Bug #27743722)

     * The severity of messages produced by the server about
       being unable to read key files has been escalated from
       INFORMATION to WARNING. (Bug #27737195)

     * No temporary table field was created for an expression
       using window functions combined with a rollup, causing
       queries containing these to fail. (Bug #27735167)

     * The expression FIND_IN_SET( JSON_UNQUOTE(
       JSON_SET('{}','$','') ), 1) was not evaluated properly.
       (Bug #27731699)

     * Failure to create a temporary table during a MyISAM query
       could cause a server exit. Thanks to Facebook for the
       patch. (Bug #27724519, Bug #90145)

     * parser_max_mem_size was ineffective when parsing stored
       program definitions. (Bug #27714748)

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

     * These scripts are no longer included in RPM packages
       (they are unnecessary because they are compiled into the
       mysqld binary): fill_help_tables.sql,
       mysql_sys_schema.sql, mysql_system_tables.sql,
       mysql_system_tables_data.sql, mysql_system_users.sql.
       (Bug #27672991)

     * Unique::io_cache was not cleaned up properly when
       restarting an index merge operation, leading to an
       assertion in debug builds. (Bug #27599292)

     * Using a binary or hexadecimal literal value in a ENUM
       column resulted in a string type with bytes not permitted
       by the data dictionary character set. (Bug #27592803)

     * It was possible for CONVERT() to fail under the following
       conditions:
       The size of the result of the conversion was greater than
       max_allowed_packet
       sql_mode was '' (that is, empty).
       The character set of the result differed from
       character_set_connection (Bug #27592714)

     * Use of ENUM or SET fields with JSON_TABLE() could result
       in unexpected behavior. (Bug #27571251)

     * Host name resolution errors could cause the audit_log
       plugin to fail. (Bug #27567003)

     * Unsuccessful connection attempts were not being written
       to the error log when log_error_verbosity=3. (Bug
       #27539838)

     * Persisted system variables with a value of NULL were
       written to mysqld-auto.cnf incorrectly. (Bug #27512616)

     * An earlier code cleanup caused FEDERATED storage engine
       failures. (Bug #27493633, Bug #89537)
       References: This issue is a regression of: Bug #25943754.

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

     * An attempted read of an uncommitted transaction raised an
       assertion. (Bug #26876608)

     * ALTER TABLE ... REORGANIZE PARTITION ... could result in
       incorrect behavior if any partition other than the last
       was missing the VALUES LESS THAN part of the syntax. (Bug
       #26791931)

     * In some cases when ER_DATA_TOO_LONG was the appropriate
       error, ER_TRUNCATED_WRONG_VALUE_FOR_FIELD was reported
       instead. (Bug #26475237, Bug #87100)

     * A last_checked_for_upgrade column that stores the current
       server version number was added to the mysql.tables data
       dictionary table to track successful CHECK TABLE ... FOR
       UPGRADE operations. This data was previously stored in
       .frm files to avoid rechecking tables unnecessarily. (Bug
       #24741307, Bug #83169)

     * A range check for the product of a signed and unsigned
       integer could be performed incorrectly. (Bug #17081376,
       Bug #69715)

     * Specifying the maximum possible value for a YEAR column
       failed when expressed as a real constant such as
       2155.0E00 or 2.15E3. (Bug #91226, Bug #28172538)

     * Prevented potential member access within a null pointer
       of type SELECT_LEX. (Bug #90689, Bug #27945614)

     * The base used for calculation of line numbers reported in
       warnings generated by SELECT statements has been changed
       from the number of input rows read to the actual row
       numbers seen by the user. For statements using GROUP BY,
       this number is now based on the number of aggregate
       groupings. (Bug #90667, Bug #27938507)

     * Estimates contained by histograms for the number of
       distinct values in each bucket, which can be employed to
       estimate the number of distinct values in a table, can
       now be used by the Optimizer's histograms::Histogram
       interface. (Bug #90465, Bug #27872281)

     * Selecting from the INFORMATION_SCHEMA.KEYWORDS table
       failed when no default database had been selected. (Bug
       #90160, Bug #27729859)

     * ANALYZE TABLE UPDATE HISTOGRAM failed to return an error
       condition to the client when lock_wait_timeout was
       exceeded during statement processing. (Bug #89738, Bug
       #27574375)

     * It was possible to create a table t having a generated
       column g and then to execute ALTER TABLE t ALTER COLUMN g
       SET DEFAULT ...; attempting to set the default for a
       generated column in this fashion now fails with Error
       1221 Incorrect usage of DEFAULT and generated column.
       This is the same behavior as for a similar CREATE TABLE
       statement. (Bug #88619, Bug #27164393)

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