dev.mysql.com

  • Important Change; Replication: When binlog_transaction_dependency_tracking (deprecated) was set to WRITESET or WRITESET_SESSION, while binlog_format was MIXED, dependencies were not tracked for statement parts of a transaction, and were not properly calculated, leading to collisions betweens transactions on MTA replicas.

    Because using the writeset information for conflict detection in this way can lead to false negatives, we now limit the usage of writesets for conflict checks to row-based logging only (binlog_format=ROW). (Bug #35931702)

  • InnoDB: The InnoDB table statistics were not updated by bulk loaded statements. (Bug #35889669)

  • InnoDB: LHS and RHS comparison values were added to their associated error handlers. (Bug #35814266)

  • InnoDB: Improved recv_apply_hashed_log_recs() to better handle the DB_CORRUPT error code. (Bug #35595808)

  • InnoDB: The hash function used by the adaptive hash index (AHI) was improved to increase performance. (Bug #35449386)

  • InnoDB: If change buffer entries are present during startup, a disabled innodb_validate_tablespace_paths option will no longer be enforced and instead the MySQL server will proceed to validate all tablespaces. Otherwise, secondary indexes could end up corrupted. (Bug #35208990)

  • InnoDB: During concurrent DDL and DML operations, DDL could fail if the online log grew too large. Buffer handling was improved to prevent this issue. (Bug #35115601)

  • InnoDB: When clearing an AHI index from all buffer pool pages, the block state would potentially change to BUF_BLOCK_MEMORY before acquiring the block mutex thus causing an unexpected halt. (Bug #35037114)

  • InnoDB: The Innodb_row_lock_current_waits variable could show a non-zero value when there were no row locks.

    Our thanks to Bin Wang for the contribution. (Bug #112532, Bug #35849707)

  • InnoDB: Removed redundant code related to handling FIL_PAGE_LSN during recovery.

    Our thanks to Alexi Xing for the contribution. (Bug #108731, Bug #34687854)

  • Replication: It was possible in some cases when an error occurred while applying an event for the error reported to apply to the previous event rather than to the current one. (Bug #35945223)

  • Replication: Enabling binlog_transaction_compression on the source suppressed ER_RPL_MTA_STATISTICS messages on the replica. (Bug #35923771)

  • Replication: An issue with calculating the current number of bytes used for Log_event events in Performance Schema memory instrumentation made it appear as though the sql/replica_sql thread on the replica grew endlessly and never decreased in size. (Bug #35546877)

  • Replication: Stopping replication while replicating CREATE TABLE AS SELECT caused the server to exit. (Bug #33934013)

  • Group Replication: Following a major outage, when all instances were reachable, rebooting the cluster hung and failed rejoining instances.

    This happened in such cases because the old secondaries retained old credentials to connect to the nodes, leading to a partial connection, in which, when a second server tried to rejoin the group, it was able to contact the primary and send an add_node() command to it, but could not be contacted in turn by the primary. The solution, is to validate that, when receiving an add_node(), we have established bi-directional communication with the new node. (Bug #35763950)

    References: See also: Bug #34898318.

  • Group Replication: Removed a potential memory leak in xcom_tcp_server_startup(). (Bug #35594709)

  • Group Replication: The monitor I/O thread for a managed replication channel (channel with asynchronous connection failover mechanism enabled) might fail for any of several reasons for which the error log entry lacked any root cause and reported only the following: [Warning] [MY-013684] [Repl] The Monitor IO thread failed to detect if the source belongs to the group majority on the source (host:127.0.0.1 port:3310 network_namespace:) for channel 'read_replica_replication'. (Bug #35082638)

  • Group Replication: A lock instituted by Transaction_monitor_thread::start() in plugin/group_replication/src/group_actions/group_actions_transaction_controller.cc was never explicitly released. (Bug #35064211)

  • Group Replication: The timeout set by group_replication_set_as_primary() did not terminate DDL statements. (Bug #35042876)

  • Group Replication: A forced START GROUP_REPLICATION while a replication channel was in an error state could lead to an unplanned server exit. (Bug #34724344)

  • Group Replication: Removed a possible memory leak in plugin/group_replication/src/certifier.cc. (Bug #110518, Bug #35226747)

  • macOS: The secure_file_priv system variable did not always work correctly on Mac OS. (Bug #30274493)

  • Microsoft Windows: Improved exception handing to ensure that the output is correct in debug mode. (Bug #35944853)

  • JSON: Added missing checks for error handling to NULLIF(), COALESCE(), and the shift (>>) operator. (Bug #113668, Bug #35513196, Bug #36198403)

    References: See also: Bug #31358416.

  • JSON: JOIN and GROUP BY handled some JSON column values differently. (Bug #101048, Bug #31969607)

  • For building Enterprise Linux 8 RPMs, the build scripts now point to a newer strip command (under /opt/rh/gcc-toolset-12), and they now check that the corresponding dwz tool is available. (Bug #36086236)

  • BIO_get_mem_data() used an incorrect argument type.

    Our thanks to Samuel Chiang for the contribution. (Bug #35950004)

  • Removed an assertion failure at CreateIteratorFromAccessPath() in access_path.cc. (Bug #35944739)

    References: This issue is a regression of: Bug #32788576.

  • During shutdown, InnoDB purging of threads can sometimes (depending on the volume of data) take a considerable amount of time to complete its work; this could leave users with the impression that the shutdown process had hung. This fix adds adds an externally visible systemd notification indicating that this step is in progress. (Bug #35902058)

  • In some cases, calling a loadable function installed by an improperly initialized plugin caused an unplanned shutdown. (Bug #35889261)

  • When the MYSQL_FIREWALL plugin failed to initialize properly during server startup, this led to errors in the server log and sometimes unplanned termination of mysqld. (Bug #35853298)

  • Some nested queries with GROUP BY were not handled correctly. (Bug #35846402, Bug #35945822)

    References: This issue is a regression of: Bug #32918400.

  • The access path for dbug_dump in debug mode used the wrong value.

    Our thanks to Tianfeng Li for the contribution. (Bug #35835858)

  • Equality propagation replaced a non-nullable (primary key) column inside a CAST() with a nullable column without changing the nullability of the CAST expression. (Bug #35829972)

    References: See also: Bug #34898903.

  • MySQL could not be built using -DPROTOBUF_BUILD_SHARED_LIBS=OFF. (Bug #35827217)

  • mysqld -D printed some of its error logging information to stdout. (Bug #35810857, Bug #35830459)

  • Removed an assert in HashJoinIterator::Init(), in hash_join_iterator.cc. (Bug #35789589)

  • Removed an assertion seen when a table value constructor with an ORDER BY clause was used as an IN or EXISTS subquery. (Bug #35785452)

  • In limited cases, passing data to the MD5() encryption function could halt the server. (Bug #35764496)

  • Some subselects from views were not always handled correctly. (Bug #35738548)

  • While performing an operation such as the bulk renaming of many tables, simultaneously executing a data definition statement similar to CREATE TABLE ... SELECT could stop the server unexpectedly. (Bug #35735937)

  • Improved handler state resource allocation. (Bug #35713711)

  • UPDATE HISTOGRAM did not behave as expected in all cases.

    UPDATE HISTOGRAM did not behave as expected in all cases. (Bug #35710404)

  • EXPLAIN ANALYZE did not always produce the expected result. (Bug #35710383)

  • An error occurred during subquery resolution. (Bug #35710373)

    References: This issue is a regression of: Bug #35184353.

  • Some row subqueries were not always handled correctly. (Bug #35710218)

  • Refreshing of used table information is now postponed to the start of the next execution, just after tables have been opened, when we know that all table objects are in a proper state. (Bug #35710213, Bug #36030073)

  • Some HAVING queries did not produce expected results. (Bug #35710183)

  • Removed an assertion in hash_join_iterator.cc. (Bug #35703114)

    References: This issue is a regression of: Bug #34940000.

  • Removed an assert in composite_iterators.cc. (Bug #35686098)

  • Some recursive CTEs did not function as expected. (Bug #35654240)

  • The combination of INSTALL COMPONENT and SET GLOBAL with a subquery could cause the server to exit. (Bug #35647759)

  • Some queries using OVER (PARTITION ...) were not always executed successfully. (Bug #35627798)

  • Some subqueries with ROLLUP were not always handled correctly. (Bug #35621842, Bug #35804794)

  • When performing EXPLAIN FORMAT=TREE for certain queries, the cost of reading the first row for an Append access path was lower than for the first child input access path, which should not be possible. (Bug #35590128)

  • Removed an assertion in IsBitSet(), in sql/join_optimizer/join_optimizer.cc. (Bug #35590108)

  • Removed the CPACK_COMPONENT_GROUP_INFO_DISPLAY_NAME configuration option from the Windows installation MSI interface. Now the INFO_BIN and INFO_SRC files are always installed. (Bug #35529968)

  • When attempting a subquery-to-derived transformation, an ER_FIELD_IN_GROUPING_NOT_GROUP_BY error was not thrown, even when a field in the projection list was neither part of the GROUP BY, nor was functionally dependent on one. (Bug #35508108)

  • Some queries using windowing functions were not always handled correctly. (Bug #35471471)

  • In debug builds, a case-altered column name could cause the server to exit. (Bug #35449266)

  • MySQL Server installation packages contained two copies of the INFO_SRC file. (Bug #35400142)

  • Setting a user variable inside the argument of a window function, which in turn was evaluated using the window frame buffer, led to an assert. Setting of user variables inside expressions is already deprecated; this fix merely avoids the assert. (Bug #35390341, Bug #36008133)

    References: This issue is a regression of: Bug #32644631, Bug #32802301.

  • Removed an assert in Item_typecast_signed::val_int(). (Bug #35049440)

  • Improved the output from my_print_stacktrace(), which prints the stack trace when MySQL terminates unexpectedly. (Bug #34904177, Bug #36027494)

  • The error message parser in utilities/comp_err.cc did not handle escaped apostrophe characters correctly. (Bug #34637697)

  • After privileges had been granted to a role, revoking from the role a privilege which had not been granted to it explicitly appeared to succeed, and no error or warning was returned. (Bug #34063709)

  • Some SELECT DISTINCT queries were not always handled correctly. (Bug #33725447)

  • Removed an assertion failure in sql/field.cc. (Bug #112503, Bug #35846221)

  • Removed an assertion in sql/sql_resolver.cc. (Bug #112498, Bug #35846192)

  • Sme queries having the form SELECT AVG(...) OVER (PARTITION BY ...) were not always handled correctly. (Bug #112460, Bug #35710179, Bug #35845413)

  • Upgrading MySQL using an official MySQL Yum or SUSE repository always enables the MySQL service. Now it enables the service only after installing, and preserves (and does not edit) the existing value while upgrading. (Bug #112382, Bug #35823558)

  • MEM_ROOT::AllocBlock() did not satisfy the condition minimum_length > wanted_length, due to a mismatch between block size and mininum_length. A successful return (false) from ForceNewBlock() is expected to have a new block supporting minimum_length, but this assumption failed when mininum_length was larger; thus AllocBlock() did not conform to its contract.

    This fix is based on a contribution from Kaiwang Chen. (Bug #112304, Bug #35793743)

  • The same query returned different results using the NO_BNL optimizer hint. (Bug #112296, Bug #35788971)

  • In debug builds, using the NTH_VALUE() window function with an empty logical range produced an assertion error. (Bug #111562, Bug #35537311)

  • Ordering a nested block where the ORDER BY contained a window function raised an assert in sql/sql_executor.cc. (Bug #111306, Bug #34856256, Bug #35471522)

  • Several functions did not have a default data-type assignment for their arguments, which could affect prepared statements by raising an assertion error in debug builds. These default types now are assigned:

    • DOUBLE for format_bytes() and format_pico_time()

    • BIGINT for ps_thread_id()

    (Bug #110677, Bug #35287798)

  • A VALUES statement in a correlated lateral or (other) dependent subquery yielded an incorrect result. (Bug #109252, Bug #110076, Bug #34852090, Bug #35087820)

  • If the argument to a window function contained a subquery, the access path of that subquery was printed twice by EXPLAIN FORMAT=TREE. We fix this by ensuring that we ignore duplicate paths in such cases. (Bug #103609, Bug #32855925)

  • In some cases, selecting from a view leaked a small amount of memory. (Bug #103133, Bug #32764586)

  • A WHERE condition using the IN() operator with a table value constructor returned all rows. An example of an affected query would be SELECT * FROM t1 WHERE a IN (VALUES ROW(5), ROW(55)). (Bug #98268, Bug #30775369)

  • The --wait command-line option did not function with the mysql client. (Bug #31422, Bug #11747227)

Read the original on dev.mysql.com ↗