Web lists-archives.com

MySQL Community Server 8.0.1-dmr has been released (part 2/3)




[ This is part 2 of the announcement ]

   Functionality Added or Changed

     * InnoDB: By default, InnoDB reads uncommitted data when
       calculating statistics. In the case of an uncommitted
       transaction that deletes rows from a table, InnoDB
       excludes records that are delete-marked when calculating
       row estimates and index statistics, which can lead to
       non-optimal execution plans for other transactions that
       are operating on the table concurrently using a
       transaction isolation level other than READ UNCOMMITTED.
       To avoid this scenario, a new configuration option,
       innodb_stats_include_delete_marked, can be enabled to
       ensure that InnoDB includes delete-marked records when
       calculating persistent optimizer statistics. (Bug
       #23333990)

     * InnoDB: Geometry parsing and bounding box computational
       code for r-trees was moved from InnoDB to the server.

     * InnoDB: InnoDB now supports NOWAIT and SKIP LOCKED
       options with SELECT ... FOR SHARE and SELECT ... FOR
       UPDATE locking read statements. NOWAIT causes the
       statement to return immediately if a requested row is
       locked by another transaction. SKIP LOCKED removes locked
       rows from the result set. See Locking Read Concurrency
       with NOWAIT and SKIP LOCKED
(http://dev.mysql.com/doc/refman/8.0/en/innodb-locking-reads.html#innodb-locking-reads-nowait-skip-locked).
       SELECT ... FOR SHARE replaces SELECT ... LOCK IN SHARE
       MODE, but LOCK IN SHARE MODE remains available for
       backward compatibility. The statements are equivalent.
       However, FOR SHARE supports NOWAIT, SKIP LOCKED, and OF
       tbl_name options. See SELECT Syntax
       (http://dev.mysql.com/doc/refman/8.0/en/select.html).
       OF tbl_name applies locking queries to named tables.
       Note
       OF is now a reserved word and cannot be used as an
       identifier without identifier quoting.

     * InnoDB: The InnoDB tablespace encryption feature now
       supports encryption of redo log and undo log data,
       controlled by the innodb_redo_log_encrypt and
       innodb_undo_log_encrypt configuration options. See Redo
       Log Data Encryption
(http://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace-encryption.html#innodb-tablespace-encryption-redo-log),
       and Undo Log Data Encryption
(http://dev.mysql.com/doc/refman/8.0/en/innodb-tablespace-encryption.html#innodb-tablespace-encryption-undo-log).

     * InnoDB: InnoDB internal temporary tables that are stored
       on disk now support multiple cursor positions, permitting
       single writer and multiple reader access within the same
       thread. The purpose of this enhancement is to provide
       support for recursive and non-recursive common table
       expressions (CTEs).
       Additionally, consistent-read access to InnoDB on-disk
       internal temporary tables is replaced by a dirty-read
       scheme, and row counts for InnoDB on-disk internal
       temporary tables now use row count statistics instead of
       slower table scans.

     * InnoDB: InnoDB now compresses large objects into a
       sequence of smaller zlib streams for tables that use
       ROW_FORMAT=COMPRESSED. Previously, large object data was
       compressed into a single zlib stream.

     * Replication: View change events from a Group Replication
       group can now be replicated to an external multithreaded
       slave (MTS) of type DATABASE. (Bug #25170698)

     * Replication: When a negative or fractional timeout
       parameter was supplied to
       WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS(), the server behaved
       in unexpected ways. With this fix:

          + A fractional timeout value is read as-is, with no
            round-off.

          + A negative timeout value is rejected with an error
            if the server is on a strict SQL mode; if the server
            is not on a strict SQL mode, the value makes the
            function return NULL immediately without any waiting
            and then issue a warning.
       (Bug #24976304, Bug #83537)

     * Replication: Added the binlog_expire_logs_seconds system
       variable, which sets an interval in seconds for purging
       of the binary log. The effects of this variable and
       expire_logs_days are cumulative, making it possible to
       set a period such as 1.5 days. To completely disable
       automatic binary log purging, set both variables equal to
       0, which is the default value for both of them. (Bug
       #71697, Bug #18260088)

     * Replication: Performance schema tables have been added to
       monitor replication lags and queues. The
       replication_connection_status table has updated
       information on the last transaction queued in the relay
       log, as well as the transaction currently being queued in
       the relay log. The
       replication_applier_status_by_coordinator table has
       updated information on the last transaction written to
       the buffer of a worker, as well as the transaction
       currently being processed by the coordinator. The
       replication_applier_status_by_worker table has updated
       information on the last transaction applied by the
       worker, as well as on the transaction currently being
       applied. The information presented in each of these
       tables contains the transaction's GTID, commit
       timestamps, processing stage timestamp, and the timestamp
       of the completion.
       In the replication_applier_status_by_worker table, the
       LAST_SEEN_TRANSACTION column is replaced by the
       APPLYING_TRANSACTION column.

     * Replication: The new binlog_expire_logs_seconds variable
       is a global server variable in addition to the existing
       expire_logs_days variable. The purpose is to facilitate
       finer grained retention policies of binary logs than the
       current day granularity.

     * Replication: Work has been done to reduce contention
       between receiver (I/O) and applier (SQL) replication
       threads. This ensures slaves keep up with a higher insert
       load on their master.

     * Replication: The binlog-transaction-dependency-tracking
       variable has been added to improve writeset-based
       multi-threaded slave dependency tracking on masters. This
       enables you to choose whether to put information in the
       binary log that allows the slave to parallelize based on
       commit timestamps or transaction write sets.
       Parallelizing on write sets has potentially much more
       parallelism since it does not depend on the commit
       history, and as such, applying binary logs on a slave may
       explore better the underlying computing hardware (cpu
       cores) and ultimately this means that replication can
       become a lot faster. Our testing shows that we can apply
       binlog on the slave about 4 times faster, even for a
       single-threaded workload, which is the most difficult
       workloads for multi-threaded slaves.

     * Replication: Correct recovery of DDL statements or
       transactions by binary log implements support for correct
       recovery of DDL transactions based on the binary log
       data. In the context of the new data-dictionary it
       becomes possible to make metadata changes and write them
       to the binary log as a single transaction by using the
       2-phase commit protocol.

     * Replication: Multi-source replication now supports
       per-channel replication filters. This makes it possible
       to filter out the execution of selected replicated data
       from a specific channel. Until now replication filters
       have been global, and only applicable to all channels.

     * Replication: Row-based replication now uses extended
       table metadata in the binary log. The extended metadata
       serves two major purposes: slaves use the metadata to
       transfer data smoothly when its table structure is
       different from master's, and external software can use
       the metadata to decode row events and store the data into
       external databases.

     * Replication: Group Replication now supports SQL
       transaction SAVEPOINT.

     * Replication: An infrastructure for GTID based delayed
       replication and replication lag monitoring has been added
       to enable you to properly monitor replication lag. Two
       new timestamps that are associated with each transaction
       (not each event or statement) in the binary log have been
       introduced. The original_commit_timestamp is in
       microseconds since the epoch when the transaction was
       committed on the original master, and the
       immediate_commit_timestamp is in microseconds since the
       epoch when the transaction was committed on the immediate
       master.

     * Replication: The RESET MASTER statement has been extended
       to allow specification of a binary log file number. The
       RESET MASTER TO statement accepts an argument which
       specifies the index of the new binary log file to use.
       The purpose is to simplify failover procedures by
       replacing the FLUSH BINARY LOGS and PURGE BINARY LOGS TO
       statements with a single RESET MASTER statement.

     * Replication: The process used for how delay is defined
       and calculated for delayed replication have been
       improved. This relies on a new timestamp in the binary
       log, the immediate_commit_timestamp, which is the number
       of microseconds since epoch when the transaction was
       written to the binary log of the immediate master. This
       means that the delay is no longer computed per-event, it
       is now applied per-transaction.

     * Replication: It is now possible to specify whether
       information written into the binary log enables
       replication slaves to parallelize based on commit
       timestamps, or on transaction write sets.
       Using write sets has a the potential for greater
       parallelism than using commit timestamps since it does
       not depend on the commit history. When applying binary
       logs in this fashion on a replication slave, it may be
       able to leverage capabilities of the underlying computing
       hardware (such as CPU cores) and thus speed up this
       process.
       The interface for choosing the source of parallelization
       is implemented as a new server system variable
       binlog_transaction_dependency_tracking which can take any
       one of the values COMMIT_ORDER, WRITESET, or
       WRITESET_SESSION. COMMIT_ORDER (the default) causes
       parallelization information to be logged using commit
       timestamps; WRITESET causes this information to be logged
       using write sets in such a way that any transactions not
       updating the same row can be parallelized; and
       WRITESET_SESSION acts in the same fashion as WRITESET,
       except that updates originating with the same session
       cannot be reordered. The size of the row hash history
       that is kept in memory for tracking transaction
       dependencies can be set using
       binlog_transaction_dependency_size, also introduced in
       this release.

     * JSON: Added the JSON utility function JSON_PRETTY(),
       which prints an existing JSON value, or any string that
       can successfully be parsed as a JSON document, in a
       format that can be easily read by humans. Each JSON
       object member or array value is displayed on a separate
       line of the output; each child object or array is
       intended 2 spaces with respect to its parent.
       Examples:
mysql> SELECT JSON_PRETTY('123');
+--------------------+
| JSON_PRETTY('123') |
+--------------------+
| 123                |
+--------------------+

mysql> SELECT JSON_PRETTY("[1,3,5]");
+------------------------+
| JSON_PRETTY("[1,3,5]") |
+------------------------+
| [
  1,
  3,
  5
]      |
+------------------------+

mysql> SELECT JSON_PRETTY('{"a":"10","b":"15","x":"25"}');
+---------------------------------------------+
| JSON_PRETTY('{"a":"10","b":"15","x":"25"}') |
+---------------------------------------------+
| {
  "a": "10",
  "b": "15",
  "x": "25"
}   |
+---------------------------------------------+


     * JSON: Previously, when sorting JSON values in a query
       using ORDER BY, each value was represented by a part
       having a fixed length in the sort key, each such part
       requiring 1K of memory. In many cases this usage was
       excessive---for example, an integer scalar value requires
       only a relatively very few bytes, so that the remainder
       of the 1K (90% or more) was taken up by padding.
       Variable length parts for JSON sort keys have been
       introduced to address this issue, with each key part now
       taking up only the space that is needed to store the
       value. This has the following benefits for performance:

          + Because sort buffer space is used more effectively,
            filesorts need not flush to disk as early or often,
            which means that more data can be sorted in memory.

          + Shorter keys can be compared more quickly than
            longer ones, providing a noticeable improvement in
            performance for in-memory sorts as well as sorts
            requiring disk usage.

     * The WEIGHT_STRING() debugging function no longer supports
       the LEVEL clause. (Bug #25469683)

     * For Developer Studio 12.5, 32-bit builds are now disabled
       unless the FORCE_UNSUPPORTED_COMPILER option is given.
       (Bug #25267157, Bug #84230)

     * Several foreign key constraint checks that were storage
       engine agnostic were being done inside InnoDB. These are
       now done at the SQL layer. (Bug #25252847)

     * Some GIS out-of-bounds checking was simplified. Thanks to
       Daniel Black for the contribution. (Bug #25202470, Bug
       #84062)

     * The set of compiler flags used for Developer Studio 12.5
       was improved. (Bug #25148549, Bug #83955)

     * CMake now uses CMAKE_POLICY of CMP0022 NEW rather than
       CMP0022 OLD. (Bug #25090147, Bug #83804)

     * If MySQL was configured to build with the -Wno-error
       option, mysql_config produced incorrect output for its
       --cflags option.
       The set of compiler options that mysql_config and
       pkg-config produce now is determined by whitelisting
       rather than blacklisting. (Bug #25040566, Bug #22898475,
       Bug #80662)

     * The performance of UTF-8 binary collations was improved.
       (Bug #24788778, Bug #83247, Bug #25076862)

     * The systemd service file for mysqld now includes a
       Documentation value in the [Unit] section to provide a
       link to the systemd documentation in the MySQL Reference
       Manual. (Bug #24735762)

     * Unit testing now uses Google Mock 1.8. (Bug #24572381,
       Bug #82823)

     * The unimplemented and nonstandard WITH CUBE clause for
       GROUP BY is no longer supported.
       Note
       CUBE is now a reserved word and cannot be used as an
       identifier without identifier quoting.
       (Bug #24572048, Bug #82821)

     * These outdated build scripts were removed from MySQL
       source distributions: BUILD/SETUP.sh, BUILD/autorun.sh,
       BUILD/cmake_configure.sh, BUILD/compile-dist, and
       cmake/configure.pl. (Bug #24512933)

     * Consistency and maintainability of Debian/Ubuntu
       packaging maintainer scripts was improved. (Bug
       #23588977)

     * In-place ALTER TABLE operations are now possible for
       column modifications of tables containing generated
       columns that depend on columns with a DEFAULT value if
       the modified columns are not involved in the generated
       column expressions. For example, changing the NULL
       property of a separate column can be done in place
       without a table rebuild. (Bug #22987899, Bug #80832)

     * For dumps of the mysql system database, mysqldump no
       longer generates DDL statements for the
       innodb_index_stats and innodb_table_stats tables. Such
       statements fail at dump reload time because those tables
       are not user accessible. (Bug #22655287)

     * If mysqld is invoked with --daemonize, stdout and stderr
       are redirected to /dev/null if connected to a terminal
       type device, so that mysqld can behave as a true daemon.
       (Bug #21627629)

     * mysql_secure_installation is more strict about what it
       considers valid yes and no responses. (Bug #13344753, Bug
       #62925)

     * MySQL client and utility programs reported their own
       program-specific version number when invoked with the
       --version option, and the version strings did not follow
       a consistent format. Now these programs print the MySQL
       version number (same as mysqld) in a consistent format.
       (Bug #11763201, Bug #55885)

     * A new mysqldump option, --network-timeout, enables large
       tables to be dumped by setting max_allowed_packet to its
       maximum value and network read and write timeouts to a
       large value. This option is enabled by default. To
       disable it, use --skip-network-timeout. (Bug #11754493,
       Bug #46103)

     * Added two JSON aggregation functions JSON_ARRAYAGG() and
       JSON_OBJECTAGG(). The JSON_ARRAYAGG() function takes a
       column or column expression as an argument, and
       aggregates the result set as a single JSON array, as
       shown here:
mysql> SELECT col FROM t1;
+--------------------------------------+
| col                                  |
+--------------------------------------+
| {"key1": "value1", "key2": "value2"} |
| {"keyA": "valueA", "keyB": "valueB"} |
+--------------------------------------+
2 rows in set (0.00 sec)

mysql> SELECT JSON_ARRAYAGG(col) FROM t1;
+---------------------------------------------------------------------
---------+
| JSON_ARRAYAGG(col)
         |
+---------------------------------------------------------------------
---------+
| [{"key1": "value1", "key2": "value2"}, {"keyA": "valueA", "keyB": "v
alueB"}] |
+---------------------------------------------------------------------
---------+
1 row in set (0.00 sec)

       The order of the array elements is unspecified.
       JSON_OBJECTAGG() takes two columns or expressions which
       it interprets as a key and a value, respectively; it
       returns the result as a single JSON object, as shown
       here:
mysql> SELECT id, col FROM t1;
+------+--------------------------------------+
| id   | col                                  |
+------+--------------------------------------+
|    1 | {"key1": "value1", "key2": "value2"} |
|    2 | {"keyA": "valueA", "keyB": "valueB"} |
+------+--------------------------------------+
2 rows in set (0.00 sec)

mysql> SELECT JSON_OBJECTAGG(id, col) FROM t1;
+---------------------------------------------------------------------
-------------------+
| JSON_OBJECTAGG(id, col)
                   |
+---------------------------------------------------------------------
-------------------+
| {"1": {"key1": "value1", "key2": "value2"}, "2": {"keyA": "valueA",
"keyB": "valueB"}} |
+---------------------------------------------------------------------
-------------------+
1 row in set (0.00 sec)

       A NULL key causes an error; duplicate keys are ignored.
       For more information, see Aggregate (GROUP BY) Functions
(http://dev.mysql.com/doc/refman/8.0/en/group-by-functions-and-modifiers.html).
       (Bug #78117, Bug #21647417)

     * MySQL now supports an IMPORT TABLE statement that imports
       nontransactional tables based on information contained in
       .SDI (Serialized Dictionary Information) files. For more
       information, see IMPORT TABLE Syntax
       (http://dev.mysql.com/doc/refman/8.0/en/import-table.html).

     * The deprecated libmysqld embedded server library has been
       removed, along with:

          + The mysql_config --libmysqld-libs, --embedded-libs,
            and --embedded options

          + The CMake WITH_EMBEDDED_SERVER,
            WITH_EMBEDDED_SHARED_LIBRARY, and
            INSTALL_SECURE_FILE_PRIV_EMBEDDEDDIR options

          + The (undocumented) mysql --server-arg option

          + The mysqltest --embedded-server, --server-arg, and
            --server-file options

          + The mysqltest_embedded and
            mysql_client_test_embedded test programs

     * The deprecated replace utility has been removed. If you
       wish to continue using this utility, be sure to retain a
       copy from an installed version of MySQL before upgrading
       to the current version.

     * The removal of the mysql_shutdown() C API function in
       MySQL 8.0.0 has been reverted. It is still to be removed
       in a future MySQL release, but that removal has been
       deferred.

     * Work was done to clean up the source code base,
       including: Removal of unneeded CMake checks; removing
       unused macros from source files; reorganizing header
       files to reduce the number of dependencies and make them
       more modular, removal of function declarations without
       definitions.

   Bugs Fixed

     * Incompatible Change: The stored definition of a view for
       which an explicit column name list was provided could be
       invalid. For example, for this statement:
CREATE VIEW v1 (name2) AS SELECT 1 AS name1 UNION SELECT 2 ORDER BY na
me1;

       The stored definition looked like this, which is invalid:
CREATE VIEW v1 AS SELECT 1 AS name2 UNION SELECT 2 AS 2 ORDER BY name1
;

       Now column names within the stored definition are not
       replaced by the column name list:
CREATE VIEW v1 (name2) AS SELECT 1 AS name1 UNION SELECT 2 AS 2 ORDER
BY name1;

       An incompatibility resulting from this change is that the
       CREATE VIEW statement can no longer be recreated solely
       from the INFORMATION_SCHEMA VIEWS table, because the
       VIEW_DEFINITION value does not show the column name list.
       Instead, you must also consult the COLUMNS table to get
       the column name list. Alternatively (and more simply),
       use SHOW CREATE VIEW. (Bug #23265335, Bug #81377)

     * InnoDB: In debug builds, a call that initialized latch
       debugging raised an assertion due to a race condition.
       (Bug #25700405)

     * InnoDB: InnoDB did not set the compression algorithm when
       opening a partitioned table. (Bug #25685868)

     * InnoDB: The restriction that required the first undo
       tablespace to use space ID 1 was removed. The first undo
       tablespace may now be assigned a space ID other than 1.
       Space ID values for undo tablespaces are still assigned
       in a consecutive sequence. (Bug #25551311)

     * InnoDB: A DROP TABLE operation raised an assertion on a
       server with an innodb_force_recovery setting of 5 or 6.
       DROP TABLE is no longer permitted with these
       innodb_force_recovery settings. (Bug #25385590)
       References: This issue is a regression of: Bug #19779113.

     * InnoDB: Compiling the server without the Performance
       Schema caused a build failure. (Bug #25348787)

     * InnoDB: During read-ahead, the wrong page size was used
       to calculate the tablespace size. (Bug #25330449)

     * InnoDB: Compiling on Fedora 25 using DWITH_LZ4=system
       resulted in a build failure due to a deprecated
       LZ4_COMPRESS_LIMITEDOUTPUT function. (Bug #25297593)

     * InnoDB: Disabling macros such as UNIV_PFS_MUTEX,
       UNIV_PFS_RWLOCK, and UNIV_PFS_THREAD caused compilation
       errors. (Bug #25251082)

     * InnoDB: A NULL virtual column field name in a virtual
       index caused a server exit during a field name comparison
       that occurs while populating virtual columns affected by
       a foreign key constraint. (Bug #25222337)

     * InnoDB: The file handle type name for InnoDB file I/O
       Performance Schema instrumentation was changed from
       os_pfs_file_t to pfs_os_file_t. (Bug #25220118)

     * InnoDB: Transactions with subqueries on
       INFORMATION_SCHEMA tables could block concurrent DDL
       operations. (Bug #25200952)

     * InnoDB: During a range comparison, a secondary index
       field number was passed instead of clustered index field
       number, eventually causing the retrieval of an incorrect
       field. (Bug #25175249)

     * InnoDB: A server exit on restart was caused by missing
       my_thread_init() and my_thread_exit() functions for
       background threads that initialize the st_my_thread_var
       structure. (Bug #25167032)

     * InnoDB: A memcached read operation with a non-default
       read batch size configuration resulted in a server exit.
       (Bug #25147515)

     * InnoDB: The INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
       table reported NULL for a foreign key constraint name
       (UNIQUE_CONSTRAINT_NAME) after restarting the server.
       (Bug #25126722)

     * InnoDB: A gap lock was taken unnecessarily during foreign
       key validation while using the READ COMMITTED isolation
       level. (Bug #25082593)

     * InnoDB: Loading InnoDB tables required more memory in
       MySQL 5.7 due primarily to the addition of in-memory
       structure members introduced with temporary table
       optimizations. The in-memory structure members, only used
       for temporary tables, are now only allocated as needed.
       (Bug #25080442)

     * InnoDB: After a TRUNCATE TABLE operation on a table with
       a FULLTEXT index, space size was incorrectly calculated
       resulting in an invalid read. (Bug #25053705)

     * InnoDB: A prepared XA transaction was rolled back by a
       high priority transaction. The high priority transaction
       should wait if the blocking transaction is in a prepared
       state. (Bug #25032066)

     * InnoDB: InnoDB passed an invalid argument to
       syscall(SYS_futex). (Bug #24923840, Bug #83375)

     * InnoDB: After redo log recovery, the node size of an undo
       tablespace object could sporadically be zero, eventually
       causing an error. Additionally, the undo tablespace
       object was incorrectly placed on the LRU list, and the
       header page of the undo tablespace could be present the
       buffer cache when the tablespace object is freed, causing
       a file-open failure on the first page read. (Bug
       #24916359)

     * InnoDB: During a checkpoint, all MLOG_FILE_NAME redo log
       records were written in a single mini-transaction (mtr),
       causing a log parsing buffer overflow. (Bug #24793413,
       Bug #83245)

     * InnoDB: On a MySQL 64-bit build on Windows, a file I/O
       retry result was misinterpreted due to a missing cast
       necessary for the correct operation of the retry path,
       resulting in a failing assertion and operating system
       error. (Bug #24711351)

     * InnoDB: The GCC mach_parse_compressed function should
       load one to five bytes depending on the value of the
       first byte. Due to a GCC bug, GCC 5 and 6 emit code to
       load four bytes before the first byte value is checked
       (GCC Bug #77673). A workaround prevents this behavior.
       Thanks to Laurynas Biveinis for the patch. (Bug
       #24707869, Bug #83073)

     * InnoDB: Code related to tablespace type functions was
       improved to address issues with naming consistency,
       function distribution, and function usage. (Bug
       #24706739, Bug #83092)

     * InnoDB: A mechanism was added to debug builds to ensure
       that keys for InnoDB Performance Schema instrumentation
       are registered with Performance Schema. The mechanism
       causes startup to fail on debug builds if the number of
       Performance Schema keys does not match the number of
       registered Performance Schema keys. (Bug #24686908)

     * InnoDB: A race condition while updating table statistics
       could result in an estimated row count of 1 and an
       incorrect query execution plan. (Bug #24666839, Bug
       #82968)

     * InnoDB: Due to a glibc bug, short-lived detached threads
       could exit before the caller had returned from
       pthread_create(), causing a server exit. Thanks to
       Laurynas Biveinis for the patch. (Bug #24605956, Bug
       #82886)

     * InnoDB: An error in code related to table statistics
       raised an assertion in the dict0stats.cc source file.
       (Bug #24585978)

     * InnoDB: The list of module base names representing
       modules in the InnoDB code base that allocate memory
       using ut_malloc or ut_new was incomplete. The list is
       used by the Performance Schema for reporting of InnoDB
       memory allocation event data. (Bug #24571816)

     * InnoDB: Some InnoDB rw-lock and mutex keys were not
       registered for use with the Performance Schema. (Bug
       #24571597)

     * InnoDB: After increasing the value of innodb_undo_logs
       and restarting the server, the number of active undo
       tablespaces was not increased when assigning undo
       tablespaces to newly allocated rollback segments. (Bug
       #24488141)

     * InnoDB: The unused MLOG_UNDO_HDR_DISCARD redo log record
       type and related functions were removed. (Bug #24482001)

     * InnoDB: An assertion was raised when the purge thread
       started due to the server not recognizing a tablespace ID
       as an undo tablespace ID. (Bug #24479773)
       References: This issue is a regression of: Bug #23517560.

     * InnoDB: InnoDB incorrectly reported an error about
       missing encryption when restoring pages from the
       doublewrite buffer during recovery. (Bug #24471076)

     * InnoDB: InnoDB reported an incorrect estimate for the
       number of pages in the buffer pool for a table. The
       number of pages was not decremented correctly when pages
       were removed. (Bug #24464147)
       References: This issue is a regression of: Bug #21747906.

     * InnoDB: The following code changes related to undo
       tablespace management were implemented:

          + An in-memory array for temporary tablespace rollback
            segments was added, freeing 32 slots in the TRX_SYS
            page for use by redo-enabled rollback segments.

          + Code comments related to undo logs and rollback
            segments were revised.

          + Fixed arrays that list rollback segments and undo
            tablespaces were replaced by dynamic size arrays.

          + The function that initializes undo tablespaces was
            refactored.

          + A class was added for managing just-in-time creation
            of undo and undo file names.
       (Bug #24462978)

     * InnoDB: A cached undo segment was not removed from the
       rollback segment history during a slow shutdown. (Bug
       #24450908)

     * InnoDB: An error during a table-rebuilding operation on a
       table with only a generated clustered index
       (GEN_CLUST_INDEX) raised and assertion due to an error
       called with an invalid key name. (Bug #24444831)

     * InnoDB: MySQL did not build with GCC 6.1.1. (Bug
       #24438752)

     * InnoDB: Rotating the tablespace encryption master key
       while the server is in read-only mode raised an assertion
       instead of displaying an error message. (Bug #24404091)

     * InnoDB: On a table without an explicitly defined primary
       key, InnoDB did not replace the implicit clustered index
       (GEN_CLUST_INDEX) when a unique key was defined on a NOT
       NULL column. (Bug #24397406)

     * InnoDB: handler::keys_to_use_for_scanning() was removed
       from the handler API. The function was no longer used.
       The HA_READ_ORDER index flag provides the same
       information for each index. (Bug #24364448)

     * InnoDB: Page cleaner threads asserted due to a regression
       related to the adaptive hash index feature. (Bug
       #24346574)
       References: This issue is a regression of: Bug #21407023.

     * InnoDB: InnoDB failed to free memory used by the
       full-text optimizer thread. (Bug #24331265)

     * InnoDB: During recovery, InnoDB attempted to fetch LOB
       pages using a null reference. (Bug #23615208)

     * InnoDB: When adding a new index, the server dropped an
       internally defined foreign key index and attempted to use
       a secondary index defined on a generated virtual column
       as the foreign key index, causing a server exit. InnoDB
       now permits a foreign key constraint to reference a
       secondary index defined on a generated virtual column.
       (Bug #23533396)

     * InnoDB: An INFORMATION_SCHEMA.FILES query resulted in a
       server exit due to a race condition with a concurrent
       tablespace creation operation. (Bug #23477214)

     * InnoDB: A concurrent DML operation during an in in-place
       ALTER TABLE operation that rebuilt the table did not
       update a virtual index, resulting in a mismatch between
       the virtual index and clustered index. (Bug #23219499)

     * InnoDB: A TRUNCATE TABLE operation held the dict_sys
       mutex while scanning for and removing pages from the
       buffer pool, causing concurrent DDL operations to stall.
       The mutex is now released during the scan and acquired
       again when the scan is completed. (Bug #23070734, Bug
       #80060)

     * InnoDB: Inserting GIS data into an r-tree raised an
       assertion due to a missing page number field that was
       encountered when storing the b-tree cursor. (Bug
       #23044098)

     * InnoDB: Writing to an InnoDB internal temporary table did
       not increment the Handler_write counter. (Bug #23024178)

     * InnoDB: Changes to the InnoDB recovery process in MySQL
       5.7 could require up to three scans of the redo log
       during recovery. To reduce the number of scans, the first
       and second scans are were merged. With this change, there
       is only one scan unless the redo log record hash table
       that is populated by the scan reaches its memory
       threshold. In this case, a second scan is initiated that
       performs a simultaneous scan and apply. (Bug #22963951,
       Bug #80788)

     * InnoDB: A table-copying online ALTER TABLE operation on a
       ROW_FORMAT=REDUNDANT table with indexed virtual columns
       raised an assertion. (Bug #22018745)

     * InnoDB: After a server restart, concurrent INSERT
       operations a table with an auto-increment primary key
       resulted in a duplicate entry error. The current
       auto-increment value was not changed after
       auto_increment_increment and auto_increment_offset
       settings were modified. (Bug #20989615, Bug #76872)

     * InnoDB: Performance Schema instrumentation for InnoDB
       file I/O was disabled on Windows. (Bug #14025581)

     * InnoDB: The row_search_mvcc() function unnecessarily
       traversed the entire table for a range query, which
       occurred when the record was not in the transaction read
       view. (Bug #84202, Bug #23481444, Bug #25251375)

     * Packaging: The my_create_minidump function in the mysys
       library called the Windows API function MiniDumpWriteDump
       with an incorrect value (NULL) for the ExceptionParam
       parameter. This resulted in exception information being
       omitted from the minidump file. (Bug #24505650, Bug
       #82695)

     * Partitioning: For a partitioned table, dropping a
       partition dropped triggers for the table as well. (Bug
       #24449174)

     * Partitioning: Updating a row of a table that had
       partitioning on a generated column could raise an
       assertion failure for debug builds, and return incorrect
       results in nondebug builds. (Bug #22574695, Bug #80080)

     * Replication: MySQL 8.0.1 adds the original commit
       timestamp related statements, but mysqlbinlog was wrongly
       reporting that these statements have been present since
       MySQL 8.0.0 because they were written to the log with the
       incorrect version number 80000. The fix changes the
       version to 80001 in mysqlbinlog dumps. (Bug #25710507)

     * Replication: MEMBER_STATE of a group replication member
       did not go from ERROR to OFFLINE when the STOP
       GROUP_REPLICATION command was executed if the error state
       was due to ER3092. (Bug #25674926)

     * Replication: With flow control enabled, reaching a
       minimum flow control quota of 1 will made Group
       Replication not stop throttling when the cause of
       throttling was no longer in effect. (Bug #25461354)

     * Replication: Using an unresolvable host name in
       group_replication_group_seeds caused START
       GROUP_REPLICATION to fail. The fix ensures that host
       names in group_replication_group_seeds are validated when
       starting Group Replication and the list must contain at
       least one valid address. Invalid addresses are ignored.
       (Bug #25460324, Bug #84674)

     * Replication: Lock contention impeded binary relay
       performance during processing of the relay log file on
       the slave. (Bug #25321231, Bug #77778)

     * Replication: A failed node that was removed from the
       cluster could be expelled upon rejoining the cluster.
       (Bug #25311008)

     * Replication: The _gr_user account created by Group
       Replication plugin installation was not reliably removed
       when the plugin was uninstalled. (Bug #25298987)

     * Replication: When starting Group Replication on an
       offline node, the node could be configured for
       replication, but fail for recovery. (Bug #25256910)

     * Replication: When using a multi-threaded slave, applier
       errors displayed worker ID data that was inconsistent
       with data externalized in Performance Schema replication
       tables. (Bug #25231367)

     * Replication: Not all Group Replication GCS debug and
       trace messages were enabled in debug mode. (Bug
       #25209109)

     * Replication: Compiling MySQL 5.7.17 failed with a
       variable length array error. (Bug #25163241)

     * Replication: In row-based replication, a message that
       incorrectly displayed field lengths was returned when
       replicating from a table with a utf8mb3 column to a table
       of the same definition where the column was defined with
       a utf8mb4 character set. (Bug #25135304, Bug #83918)

     * Replication: Group Replication GCS was not discarding
       messages when a member within the group was inactive.
       (Bug #25134074)

     * Replication: Some unnecessary warnings were given when
       the Group Replication plugin was compiled on Windows
       platforms. (Bug #25119288)

     * Replication: If the binary log on a master server was
       rotated and a full disk condition occured on the
       partition where the binary log file was being stored, the
       server could stop unexpectedly. The fix adds a check for
       the existence of the binary log when the dump thread
       switches to next binary log file. If the binary log is
       disabled, all binary logs up to the current active log
       are transmitted to slave and an error is returned to the
       receiver thread. (Bug #25076007)

     * Replication: As assertion could be raised if the Group
       Replication plugin attempted to contact the server when
       that was no longer possible. (Bug #25071492)

     * Replication: The GTID transaction skipping mechanism that
       silently skips a GTID transaction that was previously
       executed did not work properly for XA transactions. (Bug
       #25041920)

     * Replication: After executing restarts on the group
       replication applier SQL thread, the plugin could no
       longer detect failure of the thread. (Bug #24969065)

     * Replication: Building Group Replication on Windows
       requires a minimum CMAKE version of 2.8.12. (Bug
       #24964522)

     * Replication: If a relay log index file named relay log
       files that did not exist, RESET SLAVE ALL sometimes did
       not fully clean up properly. (Bug #24901077)

     * Replication: When the MTS slave applier stopped because
       of an (injected) error, it reported no useful information
       for troubleshooting. (Bug #24822686)

     * Replication: FLUSH BINARY LOG could become slow with data
       replicated from many servers. (Bug #24806259, Bug #83270)

     * Replication: When using XA transactions, if a lock wait
       timeout or deadlock occurred for the applier (SQL) thread
       on a replication slave, the automatic retry did not work.
       The cause was that while the SQL thread would do a
       rollback, it would not roll the XA transaction back. This
       meant that when the transaction was retried, the first
       event was XA START which was invalid as the XA
       transaction was already in progress, leading to an
       XAER_RMFAIL error. (Bug #24764800)
       References: See also: Bug #24923091, Bug #24966941.

     * Replication: Enabling the group replication plugin caused
       the performance_schema_max_mutex_classes default value of
       200 to be exceeded. As a result, some group replication
       mutex instruments did not appear in the
       performance_schema.setup_instruments table. (Bug
       #24746530)

     * Replication: A partially failed CREATE USER, RENAME USER,
       or ALTER USER statement was not correctly consuming an
       auto-generated or specified GTID when binary logging was
       disabled. (Bug #24693798)

     * Replication: Binlog_sender, which writes events from the
       binary log to a packet buffer and then sends the packet
       to the slave, did not reduce the size of the send buffer
       as expected. (Bug #24643036)

     * Replication: The group commit update of GTIDs has been
       refactored to improve performance on workloads with many
       small transactions. (Bug #24398760)

     * Replication: If the relay_log option was not specified in
       a configuration file, the relay_log_basename variable was
       being internally constructed on the fly using hostname
       but the relay_log_basename variable was not set. When a
       slave tried to access this uninitialized variable it
       resulted in an unexpected halt of the server. (Bug
       #24352667)

     * Replication: For servers built with yaSSL, using group
       replication with secure connections could result in
       timeout failures waiting for view delivery. (Bug
       #23592214)

     * Replication: When using a multi-threaded slave
       (slave_parallel_workers greater than 0) the value of
       Seconds_Behind_Master was incorrect when rotating a relay
       log. (Bug #23532304)

     * Replication: An XA PREPARE statement that failed during
       the intermediate steps could lead to an inconsistent XA
       transaction state, where ID = -1 but the binlogged flag
       was set to true. This caused asserts while executing XA
       COMMIT and XA ROLLBACK queries. (Bug #22915670)

     * Replication: The server prevented several
       replication-related administrative statements from
       working if the read_only system variable was enabled.
       (Bug #22857926)

     * Replication: CHANGE MASTER TO for a channel that did not
       exist could raise an assertion. (Bug #22255698)

     * Replication: The delay specified by the
       binlog_group_commit_sync_delay system variable was
       applied to too many binary log commit groups. (Bug
       #21420180)

     * Replication: The number of generated unwanted fseeks into
       the binary log file being replicated to a slave has been
       reduced. (Bug #83226, Bug #24763579)

     * Replication: The fix for Bug #81657 was not correctly
       merged into MySQL 8.0. Thanks to Laurynas Biveinis for
       alerting us. (Bug #83124, Bug #24715790)

     * Replication: The rpl.rpl_binlog_errors test was failing
       sporadically on Windows. (Bug #82302, Bug #24330138)

     * Replication: When binlog_group_commit_sync_delay was set
       to a value between 1 and 9, if
       binlog_group_commit_sync_no_delay_count was set to a
       value greater than 1, and the number of transaction
       commits was less than
       binlog_group_commit_sync_no_delay_count, these commits
       hung forever if no more commits were received; and if
       binlog_group_commit_sync_no_delay_count was set to 0, all
       transaction commits hung forever. (Bug #80652, Bug
       #22891628)

     * Replication: Concurrent CREATE TRIGGER and DROP TRIGGER
       statements were not being binary logged in the correct
       order, causing slaves to fail. (Bug #77095, Bug
       #21114768)

     * Microsoft Windows: On Windows, SHOW TABLES FROM db_name
       hung if db_name was given in uppercase. (Bug #24800048,
       Bug #83262)

     * Microsoft Windows: 32-bit builds are no longer supported
       on Windows, but CMake failed to detect when a 32-built
       build would be attempted, resulting in compilation errors
       later. Now CMake detects 32-bit build attempts and
       produces an appropriate error message. (Bug #24487483,
       Bug #82645)

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