-
Important Change; Replication: When
binlog_transaction_dependency_tracking(deprecated) was set toWRITESETorWRITESET_SESSION, whilebinlog_formatwasMIXED, 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_pathsoption 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_waitsvariable 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_compressionon the source suppressedER_RPL_MTA_STATISTICSmessages on the replica. (Bug #35923771)Replication: An issue with calculating the current number of bytes used for
Log_eventevents in Performance Schema memory instrumentation made it appear as though thesql/replica_sqlthread on the replica grew endlessly and never decreased in size. (Bug #35546877)Replication: Stopping replication while replicating
CREATE TABLE AS SELECTcaused 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 anadd_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()inplugin/group_replication/src/group_actions/group_actions_transaction_controller.ccwas 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_REPLICATIONwhile 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_privsystem 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:
JOINandGROUP BYhandled someJSONcolumn 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()inaccess_path.cc. (Bug #35944739)References: This issue is a regression of: Bug #32788576.
During shutdown,
InnoDBpurging 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 visiblesystemdnotification 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_FIREWALLplugin 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 BYwere not handled correctly. (Bug #35846402, Bug #35945822)References: This issue is a regression of: Bug #32918400.
-
The access path for
dbug_dumpin 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 theCASTexpression. (Bug #35829972)References: See also: Bug #34898903.
MySQL could not be built using
-DPROTOBUF_BUILD_SHARED_LIBS=OFF. (Bug #35827217)mysqld
-Dprinted some of its error logging information tostdout. (Bug #35810857, Bug #35830459)Removed an assert in
HashJoinIterator::Init(), inhash_join_iterator.cc. (Bug #35789589)Removed an assertion seen when a table value constructor with an
ORDER BYclause was used as anINorEXISTSsubquery. (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 ... SELECTcould stop the server unexpectedly. (Bug #35735937)Improved handler state resource allocation. (Bug #35713711)
-
UPDATE HISTOGRAMdid not behave as expected in all cases.UPDATE HISTOGRAM did not behave as expected in all cases. (Bug #35710404)
EXPLAIN ANALYZEdid 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
HAVINGqueries 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 COMPONENTandSET GLOBALwith 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
ROLLUPwere not always handled correctly. (Bug #35621842, Bug #35804794)When performing
EXPLAIN FORMAT=TREEfor certain queries, the cost of reading the first row for anAppendaccess path was lower than for the first child input access path, which should not be possible. (Bug #35590128)Removed an assertion in
IsBitSet(), insql/join_optimizer/join_optimizer.cc. (Bug #35590108)Removed the
CPACK_COMPONENT_GROUP_INFO_DISPLAY_NAMEconfiguration option from the Windows installation MSI interface. Now theINFO_BINandINFO_SRCfiles are always installed. (Bug #35529968)When attempting a subquery-to-derived transformation, an
ER_FIELD_IN_GROUPING_NOT_GROUP_BYerror was not thrown, even when a field in the projection list was neither part of theGROUP 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_SRCfile. (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.ccdid 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 DISTINCTqueries 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 conditionminimum_length > wanted_length, due to a mismatch between block size andmininum_length. A successful return (false) fromForceNewBlock()is expected to have a new block supportingminimum_length, but this assumption failed whenmininum_lengthwas larger; thusAllocBlock()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_BNLoptimizer 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 BYcontained a window function raised an assert insql/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:
(Bug #110677, Bug #35287798)
A
VALUESstatement 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
WHEREcondition using theIN()operator with a table value constructor returned all rows. An example of an affected query would beSELECT * FROM t1 WHERE a IN (VALUES ROW(5), ROW(55)). (Bug #98268, Bug #30775369)The
--waitcommand-line option did not function with the mysql client. (Bug #31422, Bug #11747227)