Added the new
audit_log_filter_uninstall.sqlscript to simplify removing MySQL Enterprise Audit. For information about this plugin, see MySQL Enterprise Audit. (Bug #35611072)
mysql_native_passwordplugin, which was deprecated previously, now is no longer mandatory and can be disabled at server startup. For information about this plugin, see Native Pluggable Authentication. For general information about pluggable authentication and other available authentication plugins, see Pluggable Authentication and Authentication Plugins.Caution
If the server-side
mysql_native_passwordauthentication method is disabled, older client accounts that use the client-side plugin (prior to MySQL 5.5 and possibly MySQL 5.6) are no longer able to connect and the server writes an “Access denied” message to the error log. These connections are no longer possible because, although the protocol remains compatible, the authentication method supported by the client is missing.
MySQL Enterprise Edition now supports authentication to MySQL Server using devices such as smart cards, security keys, and biometric readers in a WebAuthn context. The new WebAuthn authentication method is based on the FIDO and FIDO2 standards. It uses a pair of plugins,
authentication_webauthnon the server side and
authentication_webauthn_clienton the client side. The server-side WebAuthn authentication plugin is included only in MySQL Enterprise Edition distributions. For additional information, see WebAuthn Pluggable Authentication.
The pluggable FIDO authentication method is deprecated with the introduction of WebAuthn authentication. (WL #15006)
The client library now supports the use of query attributes in prepared statements with the introduction of
mysql_stmt_bind_named_param(), a new C API prepared statement function.
mysql_stmt_bind_named_param()replaces the now deprecated
mysql_stmt_bind_named_param()enables binding both unnamed and named parameters of a prepared statement. For an overview of the interface, see C API Prepared Statement Interface. (Bug #35435138, WL #15803)
Earlier distributions, such as MySQL 5.1 and MySQL 5.0, included servers that did not advertise pluggable authentication. When a newer client using any pluggable authentication method attempted to connect to one of these older servers, the server emitted a “bad handshake” error message. This fix now ensures that client-side authentication (specifically, the
--default-authoption) works properly for all servers, including those that do not support pluggable authentication. In addition,
caching_sha2_passwordas the default authentication method when the server does not support pluggable authentication. (Bug #90994, Bug #28082093)
Microsoft Windows: Updated code to compile with the latest MSVC 2022 version, v17.7.2. (Bug #35737379)
Removed the MYSQL_PARSE_ARGUMENTS macro and the obsolete
support-files/compiler_warnings.supfile. (Bug #35661316)
WITH_CURLCMake option to
bundlednow uses the bundled curl distribution in
extra/curl/. (Bug #35649213)
Removed CMake configuration definitions related to the 32-bit architecture as 32-bit is not supported as of MySQL 8.1.0. (Bug #35621081)
Fixed RPATH definitions in the CMake code for telemetry_client and component_telemetry so they'll build properly with debug mode enabled. (Bug #35598485)
Increased the minimum required CMake version from 3.5.1 to 3.14.6. (Bug #35553331)
Very long path names of
keyring_encrypted_filesource files were shortened to conform with the 256-character limit established by Windows compilers. (Bug #35493420)
Improved ASAN for clang support on Windows. (Bug #35468711)
Compiling on macOS would explicitly look for email@example.com but now looks for the generic openssl symlink to also allow openssl@3. (Bug #35468370)
WITH_DEVELOPER_ENTITLEMENTSmacOS CMake option; it did not activate due to a typo. (Bug #35374026)
Added experimental C++20 compiler support for Linux. Usage requires GCC 10+ or Clang 11+. (Bug #35362952, Bug #35667284)
Simplified the way OpenSSL is imported by utilizing the standard CMake OpenSSL::SSL and OpenSSL::Crypto libraries. The "system" type uses FIND_PACKAGE, alternative system types use pkg-config, and custom paths utilize FIND_PATH/FIND_FILE/FIND_LIBRARY. (Bug #35140672)
Fixed a string concatenation warning produced when compiling with Clang 12. (Bug #111614, Bug #35549962)
Made additional improvements to
Thanks to Nikolai Kostrigin for the contribution. (Bug #111549, Bug #35534309)
Building with WITH_PROTOBUF=system failed with Protobuf 22 or newer due to Protobuf 22 adding the Abseil dependency. (Bug #111469, Bug #111623, Bug #35546459, Bug #35550389)
WITH_ZLIB="system" would break the MySQL build as it failed to find ZLIB.
Thanks to Amazon for the contribution. (Bug #111467, Bug #35511210)
References: This issue is a regression of: Bug #35057542.
On EL7 aarch64-based platforms, fixed an issue related to how fetching the CPU cache line size returned 0 that caused the MySQL server to unexpectedly halt. (Bug #110752, Bug #35479763)
References: See also: Bug #107081, Bug #34095278.
The C++ Standardization Committee's Library Working Group recently resolved an issue (LWG-3865 Sorting a range of pairs) which changes how the comparison operators are defined for
std::pair. This fix updates the equality operator used in two files in
sql/authto align with this change.
Based on a suggestion by the Microsoft Visual Studio team. (Bug #110254, Bug #35137978)
Incompatible Change: The
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()SQL function, deprecated in MySQL 8.0 (see Changes in MySQL 8.0.18 (2019-10-14, General Availability)), has been removed; attempting to invoke it now causes a syntax error. Use
WAIT_FOR_EXECUTED_GTID_SET()instead. (WL #13180)
binlog_transaction_dependency_trackingserver system variable is now deprecated, and subject to removal in a future version of MySQL. Setting or retrieving the value of this variable now triggers a warning, as does using the equivalent startup option
--binlog-transaction-dependency-tracking. Applications depending on this variable (or option) should begin migrating away from it as soon as possible. No replacement for this variable or its functionality is planned or needed. (WL #13964)
expire_logs_daysserver system variable, which was deprecated in MySQL 8.0, has now been removed, and is no longer supported. This means that, beginning with this release, any attempt to get or set this variable at runtime results in an error. Trying to start the server while employing the equivalent startup option (
--expire-logs-days) is also now rejected with an error.
expire_logs_days; this variable continues to be supported, and allows you to specify expiration periods in units other than an integral number of days. (WL #11006)
The deprecated server startup options
--disconnect-slave-event-count, deprecated in MySQL 8.0, have been removed in this release. Attempting to start mysqld with either of these options now results in an error.
These options were formerly used in testing; no replacement for them is planned. (WL #14854)
newserver system variables are now deprecated, and a warning is now issued whenever either of these variables is set or read. Expect these variables are to be removed in a future version of MySQL; applications which rely on them should migrate away from such dependencies as soon as possible. (WL #8609)
--character-set-client-handshakeserver option, originally intended for use with upgrades from very old versions of MySQL, is now deprecated, and a warning is issued whenever it is used. You should expect this option to be removed in a future version of MySQL; applications depending on this option should begin migration away from it as soon as possible. (WL #13220)
Two changes in this release affect granting of privileges in MySQL. One of these changes impacts database grants; the other concerns host names used in grants. These changes are listed here:
Database-level grants. The use of the characters
_as wildcards in database-level grants is now deprecated, and you should expect for this wildcard functionality to be removed in a future MySQL release. The intent is for these characters always to be treated as literals, as they are already whenever the value of the
partial_revokesserver system variable is
For example, with
GRANT SELECT ON db_.* TO user1allows
user1to select from any table in a database named
db_, but does not allow
user1to select from tables in databases
dby, and so on. You should expect this always to be the case once support for wildcards in database names in grants is removed.
Host name '%' in grants. The treatment of
%by the server as a synonym for
localhostwhen checking privileges is now also deprecated and thus also subject to removal in a future version of MySQL.
Currently, privileges granted to
'user1'@'%'are also granted to
'user1'@'localhost'. This automatic assignment is now deprecated; once the behavior is removed, it will be necessary always to grant privileges to
'user1'@'localhost'explicitly, using the
In both of the cases listed, no warnings or errors are raised in the user session or logs, since doing so could very quickly produce a great many such messages.
(WL #14280, WL #15676)
It is recommended to use the Performance Schema implementation of
SHOW PROCESSLISTinstead. As such,
performance_schema_show_processlistis also deprecated and subject to removal in a future MySQL release. (WL #15915)
SET_USER_IDprivilege is deprecated and is subject to removal in a future version of MySQL. When
SET_USER_IDis granted using
GRANT, a SQL warning informs you of the deprecation status. It is now superseded by these new privileges:
During an upgrade of MySQL Server, these privileges coexist as follows:
If none of the user accounts has
ALLOW_NONEXISTENT_DEFINERgranted, then all user accounts with
SET_USER_IDgranted are also granted
SET_USER_IDprivilege remains granted.
The existing assignment of
SUPERholders, if none of the existing accounts has it, changes to grant
ALLOW_NONEXISTENT_DEFINERonly if none of the user accounts has
At runtime, when the ACL tables are read (as with
FLUSH PRIVILEGES, a server startup, and so on) and a
SET_USER_IDgrant is sourced, a warning message is added to the error log detailing the account
SET_USER_IDreceiving the grant. (WL #15874)
Support for the
TLS_AES_128_CCM_8_SHA256ciphersuite now is deprecated and subject to removal in a future version of MySQL. Any attempt to set it using either the
admin_tls_ciphersuitessystem variable now returns a warning. By default, both system variables accept these ciphersuites:
Several previously supported ciphers now are deprecated and subject to removal in a future version of MySQL. If the deprecated ciphers are specified using either the
admin_ssl_ciphersystem variable, then a warning now is issued. By default, both system variables accept these ciphers:
MySQL Enterprise Firewall now permits its memory cache to be reloaded periodically with data stored in the firewall tables. Previous implementations reloaded the cache only at server startup or when the server-side plugin was reinstalled. The new
mysql_firewall_reload_interval_secondssystem variable sets up the schedule to use to reload table data at runtime, or it disables the reload capability (default). For an overview, see Scheduling Firewall Cache Reloads. (WL #15696)
MySQL Enterprise Firewall previously stored internal tables, functions, and stored procedures in the
mysqlsystem database. Now, the new
mysql_firewall_databaseserver system variable enables specifying a custom schema to use with the existing installation scripts and at server startup.
A new script,
uninstall_firewall.sql, now simplifies removing the firewall (see Installing or Uninstalling MySQL Enterprise Firewall). (WL #15655)
STR_TO_DATE()function did not perform complete range checking on the string to be converted, so that it was possible to pass to it a string which would yield an invalid date, such as
'2021-11-31'. (Bug #108782, Bug #34704094)
SQL_AFTER_GTIDSoption is now fully compatible with the multi-threaded applier.
Previously, when MTA was enabled (that is, whenever
replica_parallel_workerswas set greater than 1), and the user attempted to use this option, the statement raised the warning
ER_MTS_FEATURE_IS_NOT_SUPPORTED, and the replica was switched to single-threaded mode. Now this is no longer an issue, and a replica which needs to catch up with missing transactions can do so while taking advantage of the performance benefits of multithreading.
Performance of statements using the set operations
INTERSECTis improved using a new hash table optimization which is enabled automatically for such statements. To cause the optimizer to revert to the temporary table optimization used in previous versions of MySQL, set the
hash_set_operationsoptimizer switch introduced in this release to
off. The amount of memory allocated for this optimization can be controlled by setting the value of the
set_operations_buffer_sizeserver system variable; increasing the buffer size can further improve execution times of some statements using these operations.
For more information, see Switchable Optimizations. (WL #15257)
On Windows, the MSI package definition files were updated to work with the Windows Installer XML (WiX) toolset version 4. Note that they can no longer be used with previous versions of the toolset. (Bug #35613791)
libeditlibrary was upgraded to version 20221030-3.1. (Bug #35489173)
SUM_ROWS_EXAMINEDcolumn of the Performance Schema
events_statements_summary_by_digesttable did not provide a correct count of rows for Index Merge. (Bug #35616015)
Under certain circumstances, if an out of memory condition occurred during Performance Schema initialization, the server closed unexpectedly during the cleanup process. (Bug #111860, Bug #35635853)
The Performance Schema Server Telemetry Metrics service is added in this release. An interface which provides plugins and components a way to query telemetry meters (metric groups), metrics, and metric measurements, in order to periodically export these measurements using Open Telemetry protocol.
For more information on this interface, see the Server telemetry metrics service section in the MySQL Source Code documentation.
The following were added:
Performance Schema tables:
The following was changed:
The default value of
performance_schema_max_rwlock_classeshas changed from 60 to 100 to better accomodate the growing number of rwlocks.
See Telemetry. (WL #15199)
Binary packages that include curl rather than linking to the system curl library have been upgraded to use curl 8.4.0. Important issues fixed in curl version 8.4.0 are described at https://curl.se/docs/security.html. (Bug #35897778)
References: See also: Bug #35709229.
Added the following types of messages to the server startup and shutdown processes as noted in this list:
Start and end messages for server initialization when the server is started with
--initialize-insecure; these are in addition to and distinct from those shown during normal server startup and shutdown.
Start and end messages for
Start and end messages for init file execution during server initialization.
Start and end messages for for execution of compiled-in statements during server initialization.
Start and end mesages for crash recovery during server startup (if crash recovery occurs).
Start and end messages for initialization of dynamic plugins during server startup.
Start and end messages for compoenents initialization step (apparent during server startup).
Messages for shutdown of replica threads, as well as graceful and forceful shutdown of connection threads, during server shutdown.
Start and end messages for shutdown of plugins and components during server shutdown.
Exit code (return value) information with shutdown messages during initialization or shutdown.
Replication: This release continues work done previously releases to update terminology used in features relating to MySQL Replication. MySQL 8.2 deprecates a number of SQL statements, including
RESET BINARY LOGS AND GTIDSinstead),
SHOW MASTER STATUS(use
SHOW BINARY LOG STATUS),
SHOW MASTER LOGS(use
SHOW BINARY LOGS), and
PURGE MASTER LOGS(use
PURGE BINARY LOGS). In addition, the
DISABLE ON SLAVEoption for
ALTER EVENTis now deprecated, and is superseded by
DISABLE ON REPLICA.
Related changes include the following:
mysqldump adds an option
--output-as-versionwhich defines the level of terminology used in the dump for statements relating to replicas and events, making it possible to create dumps that are compatible with previous versions of MySQL that accept only terminology that is now deprecated. Possible values for this option are
The default is
SERVER, which causes mysqldump to obtain the server version and output commands that are compatible with that version; this means that, if the server version is previous to 8.2.0, the output contains deprecated
DISABLE ON SLAVEterminology for events, and if it is previous to 8.0.23, the output also uses the deprecated
MASTERterminology for statements used on replicas. If
--output-as-versionis set to
SHOW CREATE EVENTshows how the event would have been created in a server of a version previous to 8.2.0. If the option is set to
BEFORE_8_0_23, the dump also uses deprecated statements for replicas such as
CHANGE MASTER TO.
A new value
BEFORE_8_2_0is added for the
terminology_use_previousserver system variable. Setting the variable to this value causes the server to print
DISABLE ON SLAVE(now deprecated) instead of
DISABLE ON REPLICAin the output of
SHOW CREATE EVENT. This is also now done when
BEFORE_8_0_26, in addition to those effects it already had previously.
SLAVESIDE_DISABLEDis now deprecated, and no longer used in event descriptions such as in the Information Schema
REPLICA_SIDE_DISABLEDis now shown instead. This can be overridden using
Com_show_master_statussystem status variable is renamed to
Com_show_binary_log_status. The previous name is deprecated but remains supported for backwards compatibility.
EXPLAINnow supports a
FOR DATABASEoption which causes the statement to be analyzed as if it had been run in the database specified by the option. The database must exist and the user must have the necessary privileges to access it.
The syntax is as shown here, where
stmtis an explainable statement:
EXPLAIN [options] FOR SCHEMA schema_name stmt
stmtto be run as if
schema_namewere the current database.
This option is incompatible with
FOR CONNECTION; the two cannot be used together in the same
For more information and examples, see Obtaining Execution Plan Information. (WL #15785)
Incompatible Change: Upgraded the bundled libfido2 library to libfido2 v1.13.0. This libfido2 version requires OpenSSL 1.1.1 or higher, which means the authentication_fido and authentication_fido_client authentication plugins are no longer available on the following platforms: Enterprise Linux 6 and 7, Solaris 11, and SLES 12. (Bug #35685515)
Important Change: For platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 3.0.10. Issues fixed in OpenSSL version 3.0.10 are described at https://www.openssl.org/news/cl30.txt. (Bug #35702863, Bug #35732474)
Important Change: Added support for Debian 12, Fedora 39, macOS 14, and Ubuntu 23.10. For macOS, the macOS 13 binaries were tested on macOS 14.
For mysqldump: added an
--ignore-viewsoption to skip table views in the generated dump file.
Our thanks to Meta for the contribution. (Bug #30284943, WL #15662)
Our thanks to Meta for the contribution. (Bug #27411227, WL #15662)
Our thanks to Meta for the contribution. (Bug #27411227, WL #15662)
Added a new
--no-login-pathscommand-line option that disables login paths from being processed. It was added to each MySQL client that has the
--login-pathoption. (WL #12429)
records_in_rangeperformed an excessive number of disk reads for insert operations.
Our thanks to Facebook for the contribution. (Bug #109595, Bug #34976138)
InnoDB: If a MySQL table in a system schema had an INSTANT ADD column that was added before 8.0.29 (they are not allowed as of that version), and after MySQL was upgraded to a version greater than 8.0.29, DMLs on these tables would result in the server unexpectedly closing.
Our thanks to Richard Dang for the contribution. (Bug #35625510)
innodb_doublewriterelated error messages. (Bug #35482724)
InnoDB: Fixed processing of single character tokens by a FTS parser plugin.
Our thanks to Shaohua Wang for the contribution. (Bug #35432973)
InnoDB: Improved flush handling, to help make sure flushing is correctly and uniformly handled throughout the code. (Bug #35385801)
InnoDB: While innodb_redo_log_capacity_update changed log capacity and waited for the next governor thread iteration to finish, the governor thread was not always aware of the change if it was already running in parallel. The log_files_wait_until_next_governor_iteration routine in this case just waited for the current iteration to finish. Now it waits for a full iteration to complete. (Bug #35145188)
InnoDB: If an index creation attempt was interrupted by 'kill query', InnoDB would not always attempt to drop the index being created if another thread referenced the table; and when the other reference was held by the stats background thread. This would raise an assertion error. (Bug #34823462)
References: This issue is a regression of: Bug #33399379.
InnoDB: B-tree validation could exceed the maximum wait time for large tables with debug mode enabled. (Bug #34411425)
InnoDB: Fixed a potential transaction rollback issue stemming from the ALTER TABLE EXCHANGE PARTITIONS statement. (Bug #110869, Bug #35352168)
References: This issue is a regression of: Bug #33700835.
InnoDB: When creating full-text indexes spanning multiple columns, index creation could fail with an error similar to "ERROR 1062 (23000): Duplicate entry 'NULL-NULL'." (Bug #109242, Bug #33542939, Bug #34846823)
InnoDB: The last detected deadlock section of the engine status log was only showing 1024 characters for the combined thread and query information. Fixing by removing the printed query string limit. (Bug #80927, Bug #23036096)
Replication: Memory used by binary log compression was not instrumented. (Bug #35290223)
Replication: The server did not honor the setting for the
binlog_transaction_compression_level_zstdserver system variable. (Bug #34833913)
Replication: The first and last transaction timestamps for the relay log showed incorrect values when querying the
performance_schema.binary_log_transaction_compression_statstable. This was due to direct use of
my_getsystime()to populate the
binary_log_transaction_compression_stats; this function returns the timestamp value multiplied by 10, leading to the incorrect column values. We fix this by dividing the value returned by
my_getsystime()by 10 before propagating it. (Bug #32022794)
Replication: For large transactions （greater than 4GB） and very small values of
MASTER_HEARTBEAT_PERIOD, it was possible for the heartbeat event to be sent before binary log rotation could complete, causing
RESET REPLICAand similar statements affecting the replica to hang. (Bug #111149, Bug #35431274)
Replication: To detect dependencies and conflicts among transactions, MySQL Replication uses writesets which are extracted from keys that are
NOT NULL(primary keys by definition, as well as unique and foreign keys which are
NOT NULL) whenever
transaction_write_set_extractionis enabled (the default in both cases). In the case of multi-column unique keys using only the leading parts of column values (see Column Prefix Key Parts), the writesets were not properly generated, which sometimes led to spurious duplicate key errors; this was due to the fact that the whole values of referenced key columns were added to the writeset in such cases, even though the keys themselves referenced only the column prefix. (Bug #111027, Bug #35404584)
Group Replication: Removed a memory leak found in the internal function call_gr_incoming_connection_cb(). (Bug #111529, Bug #35526671)
Following a change made in MySQL 8.0.23, in some cases where
GROUP_CONCAT()had previously returned
NULL, it did so no longer. (Bug #35730982)
References: This issue is a regression of: Bug #32053547.
Conversion of some subquery predicates to antijoins was not handled correctly. (Bug #35710378)
References: This issue is a regression of: Bug #35184353.
When no rows matched the
WHEREcondition of a query, the results of the query as prepared (using
PREPARE) differed from those of the same query when run directly. (Bug #35689804)
It was not possible to pass configuration options to the telemetry_client from the command line.
Also, the telemetry_client configuration options
helpwere renamed to
otel-help. (Bug #35616866)
A subquery in the inner expression of a semijoin caused the containing query to be rejected with Internal error: Key not found. (Bug #35535934)
References: See also: Bug #31401468, Bug #34453026.
Removed an assertion in strings/ctype-ucs2.cc. (Bug #35512282)
The transformation of correlated scalar subqueries to a join with a derived table added a redundant
ANY_VALUE()wrapper to a
GROUP BYcolumn. (Bug #35507109)
Some queries using
INTERSECTwere not always processed correctly. (Bug #35504625)
References: See also: Bug #35362424.
In some cases, the
QUOTE()function returned binary data rather than the expected
NULL. (Bug #35499232)
The server did not always apply the subquery-to-derived transformation correctly to correlated subqueries. (Bug #35497723)
On Fedora, fixed MySQL Cluster 8.1.0 packages to not reference non-Cluster MySQL packages as dependencies. (Bug #35495002)
With AddressSanitizer enabled (compiled with -WITH_ASAN=true), ASAN complained and caused MySQL to unexpectedly halt if a MySQL client in interactive mode encountered a dollar sign as the first character. (Bug #35493484)
References: This issue is a regression of: Bug #35303407.
REPEAT()function we may evaluate the count argument during resolution if it is determined to be constant, but due to query rewriting introducing cached values, it was possible for the argument to be evaluated differently at resolution time and at run time.
audit_log_rotate()manually could cause the function to appear unresponsive when the output performance was low, the workload on the server was heavy, and the
audit_log_strategysystem variable had a write strategy of
PERFORMANCE. (Bug #35397216)
In some cases the
NULLeven though it had previously been resolved as non-nullable. (Bug #35381715)
References: See also: Bug #35145246, Bug #35195181.
ON PROCEDUREstatement worked after it was first issued, but following
FLUSH PRIVILEGESor a restart of the MySQL server, the user named in the
GRANTstatement could no longer execute the procedure. (Bug #35380295)
When a backslash character was used to escape the '
_' wildcard character in a database name pattern inside the
database_namequeries did not return the expected results. (Bug #35338567)
A previous fix in MySQL 8.0.30 for a stored program that was not executed correctly following the first invocation did not cover the case where it contained a
Our thanks to Hao Lu for the contribution. (Bug #35328028)
References: This issue is a regression of: Bug #33754993.
Fixed or removed a number of improper references in the data dictionary and stored procedure code. (Bug #35325895, Bug #35325909, Bug #35325920, Bug #35325935)
The MySQL command-line client with
--comments=onwas unable to properly process multi-line comments prior to MySQL built-in commands. (Bug #35290350)
Item_typecast_yearclass did not have its own
print()member function override, which meant that some of the definitions shown for views, tables, or both could be malformed. (Bug #35244286)
For a query with a derived condition pushdown where a column in the condition needs to be replaced, a matching item could not found, even when known to be present, when the replacement item was wrapped in a
ROLLUPwhile the matching item was not. (Bug #35211828)
References: This issue is a regression of: Bug #33349994.
An issue with stored functions was found to be a regression from work done previously to improve internal functions that are used in copying values between columns. (Bug #35150382)
References: This issue is a regression of: Bug #32742537.
When a condition that needed to be pushed down to a derived table had one outer-referenced field and another local to the query block, an assertion which checks for consistent dependency information for referenced items did not hold good. This was because, after collecting information related to a field in an expression, dependency and context were not cleared before collecting information for the next field in the expression.
We fix this by clearing the dependency and context information before looking into a new field in the expression. (Bug #35102220)
Updated the Kerberos library bundled with commercial builds to version 1.21.2. (Bug #35001935)
If the probe input for a hash join is empty, we do not need to read the build input, because we already know that the result will be empty. We now therefore read from the probe input first when the join is a left join or an antijoin; for these join types we must read the probe input even if the build input is empty, although the converse is not true. (Bug #34940000)
Some inserts on tables with triggers were not always handled correctly. (Bug #34920120)
References: See also: Bug #35178672, Bug #35195079.
FORMAT = JSONwere not always processed correctly, and sometimes raised assertions in debug builds. (Bug #34909766)
Some complex queries using multiple common table expressions were not always handled correctly. (Bug #34900334)
References: This issue is a regression of: Bug #34377854.
Some queries with window functions were not pushed down correctly. (Bug #34778435)
Row estimates for a
SELECT DISTINCTquery were the same as for an identical
DISTINCTmodifier. This distorted cost estimates, which could lead to choosing inefficient query plans. (Bug #34762651)
Handled an unexpected condition which could arise during join optimization. (Bug #31401468)
References: See also: Bug #34350945.
Execution of a prepared statement containing one or more common table expressions led to an assertion in debug builds. (Bug #111955, Bug #35671595)
For Enterprise Linux, changed the krb5-devel build requirement from commercial to all builds. (Bug #111596, Bug #35546449)
EXPLAIN FORMAT=TREElost the subquery in a hash join.
Our thanks to Wen He and the Tencent team for the contribution. (Bug #111564, Bug #35537921)
In some cases, an unexpected server exit followed a partitioning function error. (Bug #111443, Bug #35507164)
When pushing a condition down to a derived table, we clone the condition, and, if the underlying field is a view reference (that is, a field from a merged derived table), we strip off the view reference and clone the expression that it references. When the underlying expression is a constant expression from a table that is on the inner side of an outer join, it cannot be treated as a normal constant because of the need to generate
NULLvalues. When we stripped off the view reference, this information was lost, leading to wrong results.
We fix this by avoiding condition pushdown for such cases. (Bug #111355, Bug #35634714)
A join on a
BINARYcolumn with a
VARBINARYcolumn of the same size, having matching values equal in size to that of the
BINARYcolumn in both columns, did not produce any matching rows. (Bug #111290, Bug #35467555)
A case was found that was not handled by work done in MySQL 8.0.24 for supporting transforms of correlated scalar subqueries: When the scalar subquery is grouped in addition to being correlated, the transformation needs to check that—for each partition of the result set, as partitioned by the inner expression (columns) being added to the group by—there is at most one row in the derived table so constructed. (Bug #111189, Bug #35473657)
For a user with no roles granted to it, any
SET ROLEstatement caused MySQL to forget all permissions associated directly with that user account until the session ongoing was terminated and a new one started. For example, a
SHOW TABLESstatement that succeeded previously was rejected following
SET ROLE ALL,
SET ROLE NONE, or
SET ROLE DEFAULTbecause the user's privileges were no longer recognized. (Bug #110997, Bug #35386565)
Clone_Snapshot::extend_and_flush_files()always created files of type
OS_CLONE_DATA_FILE. This function uses
flush_redo()to handle redo log files, which must be of type
OS_CLONE_LOG_FILE, which could sometimes lead to errors in
This problem is now fixed by ensuring that the type is set correctly when creating the new file.
Our thanks to Tencent for the contribution. (Bug #110569, Bug #35240055)
As of this release, non-default values of
autocommitare ignored for this scenario. (Bug #110535, Bug #35254025)
The low limit heuristic did not work well for
ORDER BY DESCdue to choosing the wrong index. (Bug #107626, Bug #34306497)