- The server could return
LDAP_OPERATIONS_ERROR
for LDAP authentication failures, rather than only for actual LDAP server errors such as when an AD domain is not accessible. Now, the server returnsLDAP_AUTHENTICATION_ERROR
, a MySQL-specific error code, to indicate authentication errors. (Bug #100333, Bug #31680279)
- The
sha256_password_auth_client_nonblocking()
function always returned an error, even when the public key was available. (See the MySQL Server Doxygen documentation, available at https://dev.mysql.com/doc/index-other.html.) Our thanks to Facebook for the several fixes in this patch. (Bug #34556764)
- Microsoft Windows: The
authentication_ldap_sasl
server plugin is no longer built for Windows as only the client is supported for SASL-based LDAP authentication. (Bug #34448155) - On Windows, compiling MySQL server using VS 2022 would emit an error about two projects named “parser-t” if tests and the NDB storage engine were enabled. The tests were renamed to avoid conflict on case-insensitive operating systems. (Bug #34790413)
- On MacOS, silenced deprecation warnings generated by Xcode 14; this includes suggestions to use snprintf(3) instead of sprintf(3), and warnings about possible loss of precision from 64 to 32 bit integers. (Bug #34776172)
- Removed the boost library usage from the plugins. (Bug #34694419)
- Removed all 3rd party files named ‘
Makefile
‘ as they were not used. (Bug #34648199) - Added clang 15 support. (Bug #34638573)
- Located and removed unused code; located it using fastcov. (Bug #34583577)
- Improved code related to building the ndbcluster plugin by fixing warnings generated with ‘gcc 11.2.0 RelWithDebInfo on Ubuntu 22.04’ and ‘gcc 8.3.1 on el6’. (Bug #34384889)
- Now use full file paths for the Bison and Flex source files to help simplify debugging and gcov reports. (Bug #109022, Bug #34776151)
- Building MySQL would fail if the building user lacked access to the mysqld temporary directory. Now
--no-defaults
is used when creating theINFO_BIN
file. (Bug #108947, Bug #34756282)
- Use of the dollar sign (
$
) as the first character of an unquoted identifier is now deprecated, raises a warning (ER_WARN_DEPRECATED_SYNTAX_NO_REPLACEMENT
), and is subject to removal in a future release.This affects statements using such an identifier for the name of any database, table, view, column, stored program, or alias. Identifiers beginning with a dollar sign are still permitted only when they are quoted—that is, delimited by single or double quote marks (
'
or"
), or by backtick characters (`
), depending on the server SQL mode. Example:mysql> TABLE $t; # Unquoted, produces warning +------+ | a | +------+ | 1 | | 2 | +------+ 2 rows in set, 1 warning (0.00 sec) mysql> SHOW WARNINGS\G *************************** 1. row *************************** Level: Warning Code: 1681 Message: '$ as the first character of an unquoted identifier' is deprecated and will be removed in a future release. 1 row in set (0.00 sec) mysql> TABLE `$t`; # Quoted, no warning +------+ | a | +------+ | 1 | | 2 | +------+ 2 rows in set (0.00 sec)
User variables are not affected by this change. For example, the statement
SELECT 1 INTO @$x
does not produce a warning.See Schema Object Names, for more information. (Bug #34785775)
References: See also: Bug #34684193.
- The
CLIENT_NO_SCHEMA
flag is deprecated. Client programs that specifyCLIENT_NO_SCHEMA
as theclient_flag
argument tomysql_real_connect()
can now omit the flag and thedb
argument to have the connection set the database value to the current (or default) database. Thelibmysqlclient
library now prints a warning on standard error whenmysql_real_connect()
is called withCLIENT_NO_SCHEMA
. In addition, the server adds a deprecation warning for every non-prepared query executed, if the connection hasCLIENT_NO_SCHEMA
. - Previously, legacy compression-control parameters were deprecated and replaced with new configuration parameters for greater control over the use of compression in connections to the server. The new and deprecated parameters are:
- The
--compression-algorithms
client option enables deprecation of the legacy--compress
client option and theCompression
status variable. - The
MYSQL_OPT_COMPRESSION_ALGORITHMS
C API option enables deprecation of the legacyMYSQL_OPT_COMPRESS
C API option. - The
MASTER_COMPRESSION_ALGORITHMS
option for theCHANGE MASTER TO
statement enables deprecation of the legacyslave_compressed_protocol
system variable.
The deprecated parameters will be removed in a future MySQL version.
Now, the following client programs print a deprecation warning to standard error when a client user invokes one of the programs with
--compress
(or-C
, if applicable): mysqlpump, mysqlcheck, mysql, mysqladmin, mysqlbinlog, mysqldump, mysqlimport, mysqlshow, mysqlslap, mysql_upgrade, and mysqltest.The mysqlbackup
--compress
option has different capabilities and is not deprecated. - The
- Host names of endpoints specified in
component_keyring_oci
configuration files, and obtained from the Oracle Cloud Infrastructure Console or by querying the Oracle Cloud Infrastructure API, now can retain thehttps://
prefix that previously had to be removed when generating a MySQL configuration for the Oracle Cloud Infrastructure Vault keyring component. (Bug #34636297)
- On Windows, the client-side Kerberos authentication plugin now supports GSSAPI through the MIT Kerberos library. It is possible to choose between SSPI and GSSAPI at runtime using a new plugin option supported by the
authentication_kerberos_client
authentication plugin on Windows. Client users invoke mysql or mysqldump with the--plugin-authentication-kerberos-client-mode
command-line option to set the mode to GSSAPI. The default mode of theauthentication_kerberos_client
plugin is SSPI, previously the only authentication method on Windows.For more information, see Connection Commands for Windows Clients in GSSAPI Mode.
- The MySQL
ST_Transform()
function now supports all Cartesian projections, with the exceptions of EPSG 1042 (Local Northing), EPSG 1043 (Local Easting), EPSG 9816 (Tunisia Mining Grid), and EPSG 9826 (Lambert Conic Conformal (West Orientated)). (Bug #27272733, Bug #34495023)
- It is now possible to set the default format for the output of any
EXPLAIN
statement which obtains a query execution plan, and which has noFORMAT
option, using theexplain_format
system variable added in this release. Like theFORMAT
option, this variable can take any of the valuesTRADITIONAL
,JSON
, orTREE
.DEFAULT
is also supported as a synonym forTRADITIONAL
. (DEFAULT
is not supported with the FORMAT option for EXPLAIN.) Suppose the value ofexplain_format
isTREE
; in this case, the output from any suchEXPLAIN
uses the tree-based format, as thoughFORMAT=TREE
had been specified as part of theEXPLAIN
statement.Any value set for
explain_format
is overridden by aFORMAT
option. This means that, ifexplain_format
is set toTREE
, supplyingFORMAT=JSON
when invokingEXPLAIN
causes the value ofexplain_format
to be ignored, and the result is displayed using theJSON
format.explain_format
also affects the behavior ofEXPLAIN ANALYZE
; since this statement supports only theTREE
format, if the value of explain_format is notTREE
, this means that anyEXPLAIN ANALYZE
statement that does not specify theTREE
format explicitly raises the error This version of MySQL doesn’t yet support ‘EXPLAIN ANALYZE withformat
format’.The new system variable has both global and session scope, can be persisted, and can be set from the command line (as
--explain-format
) or in amy.cnf
option file.See the description of
explain_format
. See also Obtaining Execution Plan Information, and Obtaining Information with EXPLAIN ANALYZE, for further information and examples.References: See also: Bug #33629360.
- Whenever a connection was terminated due to inactivity, the thread pool plugin printed only a generic message about connections timing out; this often made analysis of such timeouts more difficult than necessary. A new
INFO_LEVEL
message makes it clear that a connection has been terminated due to inactivity in the thread pool, as well as which timeout value was used to make this determination. (Bug #34767607) - Two columns added to the Performance Schema
tp_thread_state
table in this release make it possible to identify a thread’s type, and to map threads in this table to those in the Performance Schemathreads
table. The type of thread is now shown in thetp_thread_state
table’sTP_THREAD_TYPE
column, and the thread’s unique ID in theTHREAD_ID
column. For more information, see The tp_thread_state Table. (Bug #34020058)
- Important Change: For platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 1.1.1s. Issues fixed in OpenSSL version 1.1.1s are described at https://www.openssl.org/news/cl111.txt. (Bug #34828308)
- Binary packages that include curl rather than linking to the system curl library have been upgraded to use curl 7.86.0. (Bug #34828111)
- The internal resource-group enhancement added in MySQL 8.0.31 is refactored, but it continues to support the
Resource_group_supported
status variable. (Bug #34702833, Bug #34699751)References: Reverted patches: Bug #34264356.
- Important Change: The implementation of the
max_join_size
system variable, although documented as a maximum number of rows or disk seeks, did not check the number of rows or disk seeks directly, but instead treatedmax_join_size
as the maximum estimated cost to permit. While cost and row count are correlated, they are not the same, and this could lead to unexpected results when some large queries were allowed to proceed.In this release, we change how
max_join_size
is used, so that it now actually limits the maximum number of row accesses in base tables. If the estimate indicates that a greater number of rows must be read from the base tables, an error is raised. This makes the actual behavior better reflect what is documented. (Bug #83885, Bug #25118903) - InnoDB: Several adaptive hash index (AHI) code optimizations and improvements were implemented, addressing various issues including potential race conditions. (Bug #33601434)
- Replication: When
SOURCE_HEARTBEAT_PERIOD
was set to a very small value (such as 1 microsecond) on the server usingCHANGE REPLICATION SOURCE TO
, and the mysqlbinlog client program was started with--read-from-remote-server
and--stop-never=1
, it was possible for the binary log dump thread to send anEOF
packet to the client before all events had been sent. (Bug #34860923) - Replication: Removed an assert from
sql/rpl_group_replication.cc
which triggered a false error in testing. (Bug #34619134) - Replication: After MySQL was started with
--server-id=0
, trying to change the server ID by usingSET PERSIST server_id=
(where N is an integer greater than zero) and restarting the server had the following results:N
SELECT @@server_id
returnedN
.- Any replication SQL statement such as
START REPLICA
was rejected withER_SLAVE_CONFIGURATION
.
To fix this problem, we now ensure that such checks use the value of the server variable rather than the value passed to the startup option. (Bug #34412816)
- Replication: When replicating compressed binary log events generated by the
NDB
binary log injector, relay log positions were not updated in the multithreaded applier, thus causing replication to hang. (Bug #33889030)References: See also: Bug #33784241.
- Replication: Issuing
STOP REPLICA SQL_THREAD
while the SQL thread was handling a transaction caused replication to stop immediately, instead of waiting 60 seconds for the event group to complete before shutting down the SQL thread as expected.The root cause of this issue was due to the internal variable storing the last event start time not being reset after the SQL thread was restarted.
We fix this by resetting the variable holding the last event start time whenever the SQL thread is started. (Bug #33646899)
- Replication: While their wording might imply otherwise, the log messages
Setting super_read_only=ON
(ER_GRP_RPL_SUPER_READ_ON
) andSetting super_read_only=OFF
(ER_GRP_RPL_SUPER_READ_OFF
) were written only after the operations were attempted, and not beforehand, or while the operations were ongoing. This sometimes led to confusion when setting the variable was rejected, and this was logged prior to the set attempt itself being logged. To keep this from happening, these messages are now logged just prior to attempting the operation. (Bug #108843, Bug #34728079) - Replication: The
relay_log_space_limit
system variable is a 64-bit value, but its valid maximum was specified internally as that of a 32-bit value. (Bug #106323, Bug #33799840) - Replication: Eliminated an unnecessary update of the
gtid_executed
table which was performed when rotating the binary logs. (Bug #106116, Bug #33759477) - Group Replication: The
WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE
column of the MySQL Performance Schema’sreplication_group_communication_information
table reflects the runtime value of a Paxos Single Leader setup in a group, letting users know what the value ofgroup_replication_paxos_single_leader
must be on joining members.A group that was bootstrapped with single-leader enabled but with its protocol version downgraded to one that did not support it reported
WRITE_CONSENSUS_SINGLE_LEADER_CAPABLE
equal to0
, as expected, but attempting to join an instance to the group usinggroup_replication_paxos_single_leader = 0
was not possible.To solve this problem, we change the behaviour and make the value of
group_replication_paxos_single_leader
consistent with the communication version that the group is running. Since this variable was introduced in MySQL 8.0.27, it is not known or used in any previous version, and so we now enforce the following rules:- When a node tries to join a group that is running MySQL 8.0.26 or earlier and we are version 8.0.27 or later, we reject the attempt with an error stating that
group_replication_paxos_single_leader
must beOFF
before joining the group - When we try to use
group_replication_set_communication_protocol()
to set a version less than 8.0.27 and we are of version 8.0.27 or later, we reject the function call ifgroup_replication_paxos_single_leader
is notOFF
.
In addition, we also change the value checked to determine whether changing the group leader is allowed after running
group_replication_set_communication_protocol()
. Previously, this was the runtime value ofgroup_replication_paxos_single_leader
, which takes effect only after a group reboot. Instead, when we rungroup_replication_set_communication_protocol()
, we now use the value shown by thereplication_group_communication_information
table’sWRITE_CONSENSUS_SINGLE_LEADER_CAPABLE
column, described previously. (Bug #34555045, Bug #34828311) - When a node tries to join a group that is running MySQL 8.0.26 or earlier and we are version 8.0.27 or later, we reject the attempt with an error stating that
- Group Replication: When a group was run with
group_replication_consistency = AFTER
and a secondary failed due to external conditions such as an unstable network, the secondary could sometimes encounter the error Transaction ‘GTID’ does not exist on Group Replication consistency manager while receiving remote transaction prepare.The root cause of this issue was that the primary might log out of order the
View_change_log_event
with which the secondary rejoined; when the secondary used the primary as the group donor, this could cause the secondary to catch up with the group improperly and, eventually, generate incorrect GTIDs for the group transactions. The group replication primary ensures that theView_change_log_event
is logged after all preceding transactions, but there was a window during which transactions ordered after theView_change_log_event
on the group global order could be logged before the event.To solve this issue, we now make sure that transactions ordered before a view are always logged before the
View_change_log_event
, and that transactions ordered after a view are always logged after this event. This is now done by the binary log ticket manager, which guarantees the order in which transactions in the binary log group commit are committed. (Bug #104980, Bug #33405699)References: See also: Bug #34746357.
- Microsoft Windows: When compiling MySQL on Windows platforms, the CMake
-DWITH_WIN_JEMALLOC
option was not always handled correctly. (Bug #108341, Bug #34698376) - JSON: While saving the result of
JSON_ARRAYAGG()
orJSON_OBJECTAGG()
in a column, the data type information was lost due to the result being an item of typeSUM_FUNC_ITEM
. To fix this, we remove the type check and this way retain the original type information. (Bug #108326, Bug #34548259) - Some remote connections to the server were not handled correctly. This issue arose as the result of a previous fix for an issue with
require_secure_transport
. (Bug #348557411)References: This issue is a regression of: Bug #34094706.
- Some query plans were not stable due to nondeterministic sorting of
Key_use_array
insql_optimizer.cc
; now we sort it withstd::stable_sort()
instead ofstd::sort()
. (Bug #34823952)References: This issue is a regression of: Bug #25965593.
- Binary packages that include OpenLDAP rather than linking to the system OpenLDAP library were upgraded to use version 2.5.13. (Bug #34815046)
- In some cases, an unexpected packet sent by the server to a MySQL client program during authentication could result in an infinite loop. (Bug #34805922)
- GIS data was not always handled correctly in windowing functions. (Bug #34778646)
- A thread remained bound to the CPU of a dropped resource group even after it was assigned to the user default resource group (
USR_default
).USR_default
has 0 CPU priority and no CPU affinity, so with this fix, the thread now is able to run any CPU withUSR_default
. (Bug #34748973) - With JSON logging enabled, calling the
audit_log_rotate()
function did not rotate the file as expected. A rotated file name consists of the timestamp from the last event logged into the file. When the file is empty, last timestamp is the same as the timestamp in the already created file. To fix this issue, the function now uses the current time to name the file if the file is empty. (Bug #34733508) - Some queries having multiple lateral derived tables did not produce the expected result. (Bug #34716246)
- The bundled zlib library has been upgraded to zlib 1.2.13; zlib 1.2.13 is now the minimum zlib version supported. (Bug #34711762)
- Certain
INTERSECT
queries were not handled correctly. (Bug #34642435) - Using the
MAX_EXECUTION_TIME
optimizer hint with a value greater than the stated maximum kept an upgrade to MySQL 8.0.30 from completing; this caused the server to report a warning which was interpreted by the upgrade process as an unrecoverable error. (Bug #34607401) - In certain cases, evaluation of window functions was not performed correctly. (Bug #34572136)
References: This issue is a regression of: Bug #32644631, Bug #32802301.
- Some CTEs were not processed correctly. (Bug #34572040, Bug #34634469)
References: This issue is a regression of: Bug #33856374.
- Values returned from functions or operators that convert a value to
FLOAT
(CAST(... AS FLOAT)
,CONVERT(..., FLOAT)
,JSON_VALUE(... RETURNING FLOAT))
may have extra precision in their internal representation, since they are stored in double precision internally. This sometimes caused unexpected results when checking such values for equality, such asSELECT DISTINCT
returning duplicates and comparison operators incorrectly reporting two equal values as unequal.We fix this problem by stripping off the extra double precision from the values before returning them, and by making any conversion from float to string in these conversion operators use float format instead of double format. (Bug #34554755)
- Removed an assertion in
query_expression::assert_not_fully_clean()
. (Bug #34526104) - Upgrading from MySQL 5.7 to MySQL 8.0 with a very large number of tables in a single database caused the server to consume excessive memory. It was found that, during the process of checking whether tables could be upgraded, we fetched all the data dictionary
Table
objects upfront, processing each and fetching its name, then performedCHECK TABLE ... FOR UPGRADE
on the list. Fetching all objects beforehand was not necessary in this case, and contributed greatly to memory consumption.To correct this problem, we now fetch one
Table
object at a time in such cases, performing any required checks, fetching its name, and releasing the object, before proceeding with the next one. (Bug #34526001) - When creating natural join columns, a hidden column added as part of a materialized derived table is used in constructing the join condition, which is later used to check whether the join eligible for pushdown to derived tables. The current issue arose when this column was not retrieved from the derived table due to it being hidden; this occurred even when the condition pushdown optimization was not enabled. We solve this problem by rejecting all hidden columns added internally, and not merely for hidden columns added for functional indexes. (Bug #34523627)
- Types were not derived consistently from user variables. This could be seen, for example, by executing the following statements repeatedly:
CREATE TABLE t AS SELECT @max_error_count UNION SELECT 'a'; SHOW CREATE TABLE t;
In this particular case, the output of the
SHOW CREATE TABLE
statement showed`@max_error_count` text
the first time, and`@max_error_count` mediumblob
in successive iterations. (The second is correct.) (Bug #34523475) - Following work done in MySQL 8.0.23 to improve host resolution for user accounts, the time needed for
CREATE USER
to complete increased significantly, particularly when running many such statements in close succession.Prior to upgrading to this release, you can work around this issue when issuing many such statements in succession by preceding them with a single
CREATE USER 'fakeuser' ACCOUNT LOCK
(you can use any user name that does not conflict with existing ones for this). When finished, you can (and should) clean up by issuing the following statements:DROP USER 'fakeuser'; FLUSH PRIVILEGES;
For more information, see Access Control, Stage 1: Connection Verification. (Bug #34449016)
- The
data_masking
server-side plugin could emit a runtime error and halt unexpectedly. (Bug #34445632) - Some multiply nested queries were not performed correctly. (Bug #34377854)
- When merging a derived table, a nested join condition is added to the derived table and the underlying tables are added to this join nest. In addition, the join condition is associated with the derived table.
Evaluation for range access is skipped if the table is an inner table of an outer join or if the table is an inner table and the join is not a semijoin. For a a derived table, the underlying base table was treated as being of the latter kind, range analysis was skipped, and the range access method was thus unavailable.
To fix this problem, we now evaluate for range access when the embedding table is a derived table, and ensure that the join condition associated with the derived table is used for the range optimization. (Bug #34347116)
- A
LOAD DATA INFILE
statement issued with a subquery could cause the server to return an incorrect warning (Subquery returns more than 1 row
). (Bug #34336033) - Improved handling of resource allocation for internal temporary tables. (Bug #34174001)
- A specific column added after a drop using the
INSTANT
algorithm could cause a data error and a server exit. (Bug #34122122) - A query such as
SELECT 1 AS one FROM t WHERE 1=(SELECT 1 UNION SELECT 2)
is transformed to this:SELECT 1 AS one FROM t JOIN ( SELECT 1 AS col1 UNION SELECT 2) derived WHERE 1 = derived.col1;
The optimizer in this case pushed down
1 = derived.col1
into the union, removing the contribution fromSELECT 2
, which led to an erroneous result. We now no longer push the condition down in such cases. (Bug #33910786) - Reimplemented retention of item trees having multiple references, by using a reference count in every
Item
object. Also removed old code no longer needed due to this change. (Bug #33725415) - Some parenthesized query expressions with either or both of
ORDER BY
andLIMIT
were not always handled correctly. (Bug #33725330) - An assert occurred in
InnoDB
during upgrade of the data dictionary when the definition of theinnodb_ddl_log
table changed, even when such changes were effectively null operations, such as updatingutf8
andutf8_bin
in table and column definitions toutf8mb3
andutf8mb3_bin
, respectively. (Bug #33688509)References: This issue is a regression of: Bug #33787300.
SET PERSIST
accepted dot-separated names of variables registered by components as well asMyISAM
multiple key cache variables, butRESET PERSIST
rejected the same names with a syntax error. To fix this discrepancy, we add support in this toRESET PERSIST
for variable names containing a dot character (.
). (Bug #33417357)- Some grouped queries were not always handled correctly. (Bug #33294005, Bug #33349994)
- When multifactor authentication used the
auth_socket
authentication plugin for the first factor, the server executed the wrong code during the second-factor authentication workflow and returned an error message. The second factor could be any authentication plugin. (Bug #33192223) - Use of a wild card as a column identifier in an
INSERT
statement was allowed by the parser even though the syntax is not supported, which led to an assert in debug builds and a silent rejection of the statement in release builds. This construction has been removed as a possibility from the grammar, and is now handled strictly as a syntax error. (Bug #33142665)References: This issue is a regression of: Bug #30528450.
- In prepared statements, some types of subqueries could cause a server exit. (Bug #33100586)
- Some floating-point literals were not always handled correctly. (Bug #32824429)
- A
DELETE
statement with a table alias could result in an intermittent server exit. (Bug #32762229) - Moved INFO_SRC and INFO_BIN from the mysql-common package to the mysql-community-server-core package, the same package as mysqld and more consistent with RPM packaging. (Bug #32752147)
- Some queries making use of
MATCH()
within aHAVING
clause were not handled correctly. (Bug #32616816, Bug #32934558, Bug #34782389) - A
CREATE VIEW
statement that contained a subquery sometimes led to an assertion in debug builds. (Bug #108783, Bug #34703610) - The deduction of data types for dynamic parameters passed as parameters to a user-defined SQL function was correct only for a single parameter; with more than one parameter, no such deduction was performed for the second and following parameters, with the result that their types were always reported erroneously to clients as
MYSQL_TYPE_INVALID
. (Bug #108545, Bug #34629157) - The internal function
clone_os_copy_file_to_buf()
did not advance the buffer position in the event of a partial read.Our thanks to Laurynas Biveinis for the contribution. (Bug #108317, Bug #34543194)
- Views that access system views could encounter an access-denied error during normal use if the pushdown condition included expressions that used native functions from the system view. (Bug #108202, Bug #34515868)
- When using window functions, the current row could reevaluate itself based on the wrong record in some cases. (Bug #108008, Bug #34431996)
- A condition pushdown into a
UNION
of queries havingLIKE
clauses did not preserve the correct character set, leading to an (erroneous) empty result.We solve this problem in two parts:
- By refactoring resolution of
LIKE
expressions, in which character set determination and propagation were previously performed in two separate blocks of the code that were not always consistent with one another. - By adding, in the internal
parse_expression()
function, a character set prefix to any literal character string that is cloned.
(Bug #107787, Bug #34359297, Bug #34589153)
- By refactoring resolution of
- The
audit_log
server-side plugin always logged an entire multiple query, rather than logging only the specific part of the query that was executed. Changing when the query length is set resolves the issue. (Bug #107390, Bug #34207811) - Following an upgrade to MySQL 8.0.27 a specific query started consuming comparatively high amounts of memory whenever it was run within a stored procedure. (Bug #107327, Bug #34190122)
- When a mysqld startup option was used with the
maximum-
prefix, the upper bound for the corresponding system variable was set but its current value was not checked against or adjusted according to the new limit and thus could in some cases be greater than the stated maximum. We fix this by adjusting the current value if it is larger than the new user defined maximum value. (Bug #99029, Bug #31072098) - The
mysql_stmt_close()
C API function could stop responding after a prepared statement was canceled usingKILL QUERY
. (Bug #84470, Bug #25584097)
转自 MySQL :: MySQL 8.0 Release Notes :: Changes in MySQL 8.0.32 (2023-01-17, General Availability)