[This is part 2 of the announcement]

   Bugs Fixed

     * Incompatible Change; JSON: If a JSON object contained
       multiple members with the same key name, MySQL kept the
       first member and discarded the remainder. This
       contradicts RFC 7159, which suggests that duplicate key
       names can be handled in one of the ways listed here:

          + Report an error (or otherwise fail to parse the

          + Report all of the name-value pairs, including

          + Report the last name-value pair only
       When a JSON text is evaluated in JavaScript, the last
       name-value pair is kept if multiple pairs with the same
       name are specified. MySQL now does likewise, and
       implements the last of the three options just listed, as
       shown here:
mysql> CREATE TABLE t1 (c1 JSON);

mysql> INSERT INTO t1 VALUES ('{"x": 17, "x": "red", "x": [3, 5, 7]}')

mysql> SELECT c1 FROM t1;
| c1               |
| {"x": [3, 5, 7]} |

       The fix for this issue also corrects a failure in the
       MySQL 8.0 server to handle insertion into a JSON column
       of data containing JSON arrays as the values for multiple
       identical keys. (Bug #86620, Bug #86866, Bug #26238736,
       Bug #26369555)

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

     * InnoDB: A long semaphore wait occurred when executing
       (Bug #26779650)

     * InnoDB: Invalid error handling code was removed from a
       function related to tablespace import. (Bug #26595476)

     * InnoDB: File-per-table tablespaces created prior to MySQL
       5.6 caused a failure during an in-place upgrade to MySQL
       8.0.2. The tablespaces were not registered with the
       InnoDB SYS_TABLESPACES system table, as required.
       Tables with decimal columns created prior to MySQL 5.5
       also caused a failure during an in-place upgrade to MySQL
       8.0.2, due to a precision type mismatch. (Bug #26542296,
       Bug #87229)

     * InnoDB: A segmentation fault occurred when attempting to
       open a table that was altered while strict mode was
       disabled to include conflicting TABLESPACE and
       COMPRESSION attributes. (Bug #26375851)

     * InnoDB: A segmentation fault occurred during a DML
       operation that used the TempTable storage engine. (Bug

     * InnoDB: Implicit row format conversion during an ALTER
       TABLE ... REORGANIZE PARTITION operation raised an
       invalid assertion. (Bug #26326611)

     * InnoDB: An ALTER TABLE operation that rebuilt an
       encrypted table did not set the encryption attribute
       properly. (Bug #26243264)

     * InnoDB: A memory leak was encountered on Windows when
       using the TempTable storage engine for in-memory internal
       temporary tables. (Bug #26237680)

     * InnoDB: Misleading errors were produced when running
       Valgrind tests on a server build that was not enabled for
       Valgrind testing. (Bug #26037206)

     * InnoDB: Problematic code related to dropping orphan
       full-text search tables caused an invalid object ID
       assertion failure on startup. (Bug #25998362)

     * InnoDB: Allocated memory was not initialized before it
       was written to a file, resulting in a Valgrind error.
       (Bug #25913151, Bug #85986)

     * InnoDB: Replication lag occurred on slave instances
       during large update operations on tables with many
       partitions. (Bug #25687813, Bug #85352)

     * InnoDB: A cursor position check by a multiversion
       concurrency control row search function raised an
       assertion. (Bug #25377592)

     * InnoDB: The wrong variable was passed to the
       row_mysql_handle_errors routine causing an assertion
       failure. (Bug #25183130)

     * InnoDB: A long wait for a dictionary operation lock held
       by a full-text search synchronization operation caused a
       server exit. (Bug #24938374)

     * InnoDB: Assertion code was modified to account for the
       possibility of a transaction attempting to acquire an
       explicit lock on a record while another transaction
       converts an implicit lock to an explicit lock on the same
       record prior to a commit operation. (Bug #24344131)

     * InnoDB: A FLUSH TABLES ... FOR EXPORT operation on an
       encrypted or page-compressed table raised an assertion.
       (Bug #22916982)

     * InnoDB: A CREATE TABLE ... SELECT operation raised an
       assertion failure when the newly created table was
       dropped before the transaction was committed. (Bug

     * Partitioning: In certain cases when fetching heap records
       a partition ID could be set to zero. (Bug #86255, Bug

     * Partitioning: It was possible for a CREATE TABLE
       statement that failed to create a partitioned InnoDB
       table not to be rolled back correctly. This was due to an
       extraneous commit made while performing a check of
       foreign key information. Since partitioned tables do not
       presently support foreign keys, this check is
       unnecessary, and so is no longer made in such cases. (Bug
       #85299, Bug #25667278)

     * Replication: On a multi-threaded slave, it was possible
       for a deadlock state to occur due to the timing of
       updates to the record of disk space used by the relay
       log. The timing of the update has now been changed so
       that the deadlock cannot occur. (Bug #26729635)

     * Replication: With slave_preserve_commit_order=1 set, a
       deadlock could occur between a transaction holding a
       shared write lock on a table, and a transaction earlier
       in the commit order that also required a shared write
       lock. (Bug #26666609)

     * Replication: The Group Replication flow control variables
       now correctly permit you to have some members in a group
       that do not affect the minimum throughput of the
       flow-control mechanism, effectively ignoring those
       members in case they become blocked. (Bug #26537497)

     * Replication: It was possible to start the server with
       invalid values for the Group Replication flow control
       options. Now, the
       --group-replication-flow-control-max-quota, and
       options are validated on server startup. (Bug #26531899)

     * Replication: The unused variable opt_reckless_slave was
       removed. (Bug #26500285)

     * Replication: When the Group Replication plugin
       Delayed_initialization_thread failed to start due to
       unavailable resources, a locked mutex was being kept
       behind which would cause issues on
       Delayed_initialization_thread destructor. The fix ensures
       that the mutex is unlocked when the thread fails to
       start. (Bug #26394678)

     * Replication: If hostname resolution was not working for a
       member in Group Replication, the error returned when
       attempting to connect was referring to credentials. The
       error message has been improved to describe the problem
       with hostname resolution. (Bug #26368004)

     * Replication: In the case of delayed initialization of the
       Group Replication plugin, deployed in single-primary
       mode, secondaries were able to get writes through an
       asynchronous replication channel, which is not allowed in
       normal initialization of the Group Replication plugin.
       (Bug #26314756)

     * Replication: If the options file contained Group
       Replication related settings the server could stop
       unexpectedly on start up. (Bug #26314472)

     * Replication: FLUSH LOGS attempted to send an OK message
       after having already sent an error response during the
       commit phase. (Bug #26272158)

     * Replication: With GTIDs generated for incident log
       events, MySQL error code 1590 (ER_SLAVE_INCIDENT) could
       not be skipped using the --slave-skip-errors=1590 startup
       option on a replication slave. (Bug #26266758)

     * Replication: The Group Replication plugin no longer sets
       auto_increment_increment and auto_increment_offset
       variables when single primary mode is active. (Bug

     * Replication: Group Replication partition threads were not
       visible in the Performance Schema tables. (Bug #26241008)

       was set to an incorrect value when
       ified" on a recovering member. (Bug #26180350)

     * Replication: The values of the
       group_replication_recovery_use_ssl and
       variables were not being updated when configured for the
       Group Replication recovery channel. (Bug #26142801)

     * Replication: When replicating a partitioned table with an
       index, on a replication slave where HASH_SCAN was
       specified as part of the slave_rows_search_algorithms
       setting, the slave I/O thread sometimes stopped with an
       error HA_ERR_KEY_NOT_FOUND. (Bug #26137159)

     * Replication: group_replication_force_members could be
       used in situations where the group was working properly,
       in other words a majority was reachable. This incorrect
       use could cause instability in the group. Therefore, its
       use has been restricted to the scenario for which it was
       created, for forming a new membership from a subset of a
       previous group's membership when a majority of the
       members are unreachable. (Bug #26093967)

     * Replication: It was possible to set server_uuid to the
       same value as group_replication_name. Doing so could
       result in unexpected behavior because GTIDs are
       identified by a UUID. Now it is not possible to set
       server_uuid to the same value as group_replication_name.
       (Bug #26035931)

     * Replication: The system variable pseudo_slave_mode, which
       is for internal server use, sometimes raised an assertion
       when it was changed inside a transaction. The server no
       longer changes this variable inside a transaction. (Bug
       #26034192, Bug #86250)

     * Replication: When write sets are used for parallelization
       by a replication slave (as specified by the
       binlog_transaction_dependency_tracking system variable),
       empty transactions are now ignored, and the handling of
       relay log rotation has been optimized. (Bug #25982097)

     * Replication: The Performance Schema
       replication_applier_status_by_worker table sometimes
       incorrectly displayed a value for APPLYING_TRANSACTION
       for an inactive worker, because the table was being
       populated before the worker thread stopped. (Bug
       #25896166, Bug #85951)

     * Replication: On a member which had both Group Replication
       and asynchronous replication running simultaneously,
       asynchronous replication was not respecting the
       restrictions required by Group Replication, such as only
       using InnoDB storage engine, tables requiring primary
       keys and so on. This could also be encountered when
       running mysqlbinlog against the member. Now, members that
       are running Group Replication and asynchronous
       replication do not allow Group Replication's requirements
       to be broken. (Bug #25609945)
       References: See also: Bug #25828806.

     * Replication: Joining a member running a lower version to
       a group running a higher version resulted in the members
       running the higher version becoming unreachable. (Bug

     * Replication: Attempting to uninstall the plugin while
       START GROUP_REPLICATION executed could result in
       unexpected behavior. (Bug #25423650)

     * Replication: In case of a failure while creating multiple
       slave applier worker threads, some threads would be left
       orphaned and their resources would not be collected.
       Thanks to Laurynas Biveinis for his contribution to
       fixing this bug. (Bug #24679056, Bug #82980)

     * JSON: Containers in the internal representations of JSON
       objects and arrays (Json_object and Json_array) have been
       changed to use smart pointers rather than raw pointers to
       Json_dom, so that orphaned DOM objects are now
       automatically destroyed. (Bug #26161264)

     * JSON: ASCII character 31 (\u001f, the unit separator) in
       a string literal within a JSON document was not quoted
       when the JSON document was formatted as a string (for
       example, by CAST('"\u001f"' AS JSON)). (Bug #25977959)

     * JSON: When a path_expression identified a nonarray value,
       the JSON_INSERT() and JSON_ARRAY_INSERT() functions
       failed to evaluate path_expression[0] as equal to
       path_expression. (Bug #86213, Bug #26022576)

     * JSON: Searches with JSON_EXTRACT() that used wildcards
       took an inordinate amount of time. (Bug #84523, Bug
       References: See also: Bug #83959, Bug #25151440.

     * Under heavy load, an infinite loop occurred in
       Performance Schema buffer container code. (Bug #26666274)

     * MySQL-specific typedefs such as uchar and my_bool were
       inadvertently reintroduced into the client namespace if
       the mysql.h header file was included. (Bug #26588846, Bug
       #26582752, Bug #87337)

     * uint8korr() and related macros were fixed so that they
       explicitly do unaligned accesses, even on x86. (Bug

     * The main.mysql_upgrade_grant, main.roles-upgrade, and
       auth_sec.secure_file_priv_warnings, test cases mishandled
       the error log. The sys_vars.innodb_redo_log_encrypt_basic
       test case output was unstable. Thanks to Laurynas
       Biveinis for the patches. (Bug #26562401, Bug #87279, Bug
       #26575150, Bug #87313, Bug #26575142, Bug #87314, Bug
       #26582158, Bug #87303)

     * For debug builds, with sql_buffer_result enabled,
       recursive common table expressions caused a server exit.
       (Bug #26556025)

     * Incorrect resolution of a window function as a constant
       function could result in a server exit. (Bug #26500442)

     * Compiling with -DWITHOUT_SERVER=1 resulted in
       my_symlink.c compilation failure due to missing #include
       for my_dir.h. Thanks to Christian Hesse for the patch.
       (Bug #26495816, Bug #87137)

     * Compiling with -DWITH_SSL=system -DWITH_ZLIB=system
       assumed that the system openssl zlib command was
       available, which might not be the case. Now availability
       of that command is checked, and if unavailable, the
       zlib_decompress utility is built. (Bug #26494495, Bug

     * yaSSL could incorrectly perform TLS cipher negotiation.
       (Bug #26482173)

     * Some thread_stack settings could result in a server exit.
       (Bug #26438067)

     * REPLACE(UUID(),...) expressions could be cached
       (improperly) and return the same value for each row of a
       result set. (Bug #26395601)

     * When building MySQL within the source tree, make install
       installed some CMake files into the mysql-test directory
       within the tree. (Bug #26385175, Bug #86905)

     * The PROCESS_ID column in the Performance Schema
       session_connect_attrs and session_account_connect_attrs
       tables was changed from INT to BIGINT UNSIGNED to
       accommodate larger process ID values. Thanks to Daniƫl
       van Eeden for the patch. (Bug #26357806, Bug #86835)

     * The index on a generated column, whose value was
       generated from JSON_EXTRACT(), was sometimes not used by
       the optimizer when it should have been. (Bug #26352119)

     * Setting the log_error_services system variable to NULL
       caused a server exit. (Bug #26331795)

     * For tar file packages, some test suite shared libraries
       were installed in the server package rather than the test
       package. (Bug #26329850)

     * SHOW COLUMNS for a valid view could fail. (Bug #26322203,
       Bug #86778)

     * An operation that caused renaming or removal of histogram
       statistics could cause a server exit. (Bug #26303972)

     * For a VARCHAR column, sorting using an explicit collation
       (ORDER BY col_name COLLATE collation_name) was much
       slower than with an implicit collation (no COLLATE
       clause), even if the explicit collation was the same as
       the implicit collation. (Bug #26286790, Bug #86710)

     * SET binlog_format = ROW produced a syntax error because
       ROW is now a reserved word. This syntax is now recognized
       specially to preserve backward compatibility. (Bug

     * SET PERSIST_ONLY, should be permitted only to users who
       have the PERSIST_RO_VARIABLES_ADMIN and
       SYSTEM_VARIABLES_ADMIN privileges, but was incorrectly
       also permitted to users with the SUPER privilege. (Bug

     * The information_schema_stats configuration option,
       introduced in MySQL 8.0.0, was removed and replaced by
       information_schema_stats_expiry defines an expiration
       setting for cached INFORMATION_SCHEMA table statistics.
       For more information, see Optimizing INFORMATION_SCHEMA
       STATISTICS_DYNAMIC internal system views were removed.
       (Bug #26203731, Bug #83957)

     * Source packages for Debian platforms contained prebuilt
       debug binaries, causing build failures on any
       architectures other than the one on which those binaries
       were built. (Bug #26186911)

     * The UDF registration service did not work if used during
       server startup. (Bug #26173244)

     * Disabling table instrumentation by changes to the
       Performance Schema setup_objects table could cause
       incorrect index names in index statistics. (Bug

     * A misleading error message was returned when attempting
       to drop a nonexistent tablespace file. (Bug #26133507,
       Bug #86438)

     * When running mysqlbinlog with the
       --read-from-remote-server option, rewrite rules specified
       using the --rewrite-db option were ignored, so data was
       not written to the target database. (Bug #26117735, Bug

     * Timestamp data copied from the data dictionary cache
       during a DDL operation was converted using a time_zone
       value that was no longer valid. The resulting timestamp
       data was incorrect, causing an error in release builds
       and an assertion failure in debug builds. (Bug #26091333,
       Bug #86290)

     * Successful data dictionary updates but failure to write
       the binary log event could result in an inconsistent
       state. (Bug #26037355)

     * mysqlbinlog now prints the full metadata for the event
       type Table_map_log_event. (Bug #26020990)

     * For UPDATE or DELETE statements with an ORDER BY ...
       LIMIT clause, the optimizer sometimes failed to identify
       a cheaper ordering method than filesort. (Bug #25899921)

     * The rpl_diff.inc test case file did not find the data
       difference between servers. Thanks to Yura Sorokin for
       the patch. (Bug #25860138, Bug #85838)

     * The combination of an index virtual generated column, a
       foreign key, and a trigger could cause an assertion to be
       raised. (Bug #25817660)

     * Selecting from a view could yield different results with
       materialization enabled versus materialization disabled.
       (Bug #25782811, Bug #85622)

     * After using SET PERSIST to set the event_scheduler system
       variable, the server failed to restart if started with
       the --skip-grant-tables option. (Bug #25776940)

     * An assertion could be raised for MIN()/MAX() access to
       system tables. (Bug #25738624)

     * A failed DROP VIEW could be written to the binary log.
       (Bug #25680097)

     * SHOW CREATE VIEW sometimes added a database name prefix
       to table names that was not present in the original view
       definition. (Bug #25634576, Bug #85176)

     * The Performance Schema variables_info table displayed
       incorrect VARIABLE_SOURCE and VARIABLE_PATH values for
       variables set within option files specified by !include
       or !includedir directives. (Bug #25563891)

     * mysqlpump displayed incorrect progress information about
       the number of tables dumped. (Bug #25432850)

     * The mysqlpump progress indicator was incorrect for number
       of tables. (Bug #25432850)

     * Calculations for UCA 9.0.0 collations were inefficient
       for tailoring rules containing contraction characters.
       (Bug #25426632, Bug #84577, Bug #25426632, Bug #84577)

     * GROUP BY DESC on DECIMAL values could incorrectly group
       NULL with non-NULL values. (Bug #25407964)

     * Some mysqldump warnings went to the standard output
       rather than the standard error output and consequently
       were written to the dump file. (Bug #25380000, Bug

     * NULL values generated as a result of WITH ROLLUP were
       replaced with the previous row's value when executing a
       prepared statement on a view having the GROUP BY .. WITH
       ROLLUP clause. (Bug #25174118)

     * A parser refactoring in MySQL 8.0.1 resulted in incorrect
       handling of some INSERT ... ON DUPLICATE KEY UPDATE
       statements. These problems have been corrected. (Bug
       #24716127, Bug #25526439, Bug #25071305)

     * For debug builds, a CREATE TABLE statement with a
       VARBINARY or BINARY column having a default value in
       hexadecimal format caused a server exit. (Bug #24679166,
       Bug #83020)

     * A mysqldump memory leak was fixed. Thanks to Yura Sorokin
       for the patch. (Bug #23531150, Bug #81714)

     * If a session rolled back to a savepoint and then was
       killed, the statements up to the point of the savepoint
       could be committed. (Bug #22350047, Bug #79596)

     * MySQL accepted a reference to an alias of an aggregated
       expression defined in an outer query block even when the
       reference occurred within a GROUP BY subquery where the
       reference was meaningless. (Bug #21974346)

     * Some SELECT DISTINCT queries with GROUP BY could return
       incorrect results. (Bug #20692219)

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

Reply via email to