These release notes were created with the assistance of MySQL HeatWave GenAI.
Updated the
audit_log_rotate_on_sizesystem variable to require theAUDIT_ADMINprivilege for modification. (Bug #38620615)-
MySQL now supports a more modular and efficient auditing system with the introduction of the Audit Log component. This update splits the monolithic Audit Log software into smaller, more manageable components, encapsulated into MySQL components, making it easier to install, manage, and maintain. The new component-based architecture allows for improved flexibility and customization, enabling users to easily configure audit log settings, such as output file location, format, and buffer size. With this enhancement, MySQL provides a more streamlined and user-friendly auditing experience, allowing you to focus on monitoring and analyzing your database activities with greater ease.
See MySQL Enterprise Audit Component for more information. (WL #12716)
MySQL Server's
clang-tidyconfiguration now consistently disables all brace checks, includinghicpp-braces-around-statements, to prevent duplicate diagnostics. (Bug #38601902)A number of unused symbols were removed from the code base. (Bug #38557463)
-
The cmake macro
MYSQL_CHECK_PROTOBUFdid not properly handle multiple calls when using system protobuf. Errors were returned similar to the following:ADD_LIBRARY cannot create imported target "ext::libprotobuf" because another target with the same name already exists.(Bug #38417986)
The
mysqlx_portserver variable was not persisted in themy.inifile when set through the Type and Networking configuration page. (Bug #38728671)-
MySQL Configurator treated single-quotes (') as part of the password.
The configurator now correctly handles quoted passwords by removing any quotes, double quotes, or backticks from the beginning and end of the password. (Bug #38069029)
Server file permissions were not applied as specified with
--server-file-permissions-access. Full access was granted regardless of the value defined. (Bug #38068994)--slow-query-log-filecould be used even if the slow query log was not enabled. (Bug #38068822)-
It was possible to set the
--general-log-fileCLI option when the general log was disabled.As of this release, an error is returned. (Bug #38068775)
-
--open-win-firewallcould be used when TCP/IP connections were disabled.As of this release,
--open-win-firewallcan only be used when TCP/IP connections are enabled. (Bug #38068699) Updating the password with MySQL Configurator took a long time. (Bug #37459271)
-
A number of issues were corrected in the Server API documentation.
Our thanks to Daniƫl van Eeden for the contribution. (Bug #114671, Bug #117516, Bug #37329988, Bug #37615382, Bug #36526371)
MySQL Server now supports a new GTID set data structure, providing a simpler, more modern, and efficient library for handling Global Transaction IDs. This implementation replaces the existing library, offering improved maintainability and performance. (WL #16076)
InnoDB: InnoDB redo logging error messages now include the current LSN and redo log capacity information, and the
MONITORoutput has been enhanced to display redo log capacity details. (Bug #37645185)InnoDB: If an
XA PREPAREDtransaction existed during a server shutdown or crash, restarting the server with a non-zero--innodb-force-recoveryvalue caused InnoDB to incorrectly change the transaction state fromPREPAREDtoACTIVE. This could lead to issues ranging from assertion failures to rolling back thePREPAREDtransaction. (Bug #35659774)InnoDB: InnoDB now generates unique rowid values in tables without primary keys more efficiently. (Bug #13395168)
-
InnoDB: The field
fk_max_recusive_levelindict_table_t structis no longer used and has been removed.Our thanks to Xiaocong Ding for the contribution. (Bug #119063, Bug #38492574)
-
InnoDB: If the server closed during transaction commit, transactions in an already committed state could remain in the undo log. If the transaction is already committed, it is cleared from trx_sys->rw_trx_list during recovery, but is not cleared from active_tw_trxs of the trx_sys->shards. This invalid transaction stored in the trx_sys->shards could cause errors or assertions in the execution of the later queries.
As of this release, during cleanup on startup, processed transactions are not added to trx_sys->shards.
Our thanks to Yewei Xu and the team at Tencent for the contribution. (Bug #118515, Bug #38132549)
InnoDB: When selecting blob data after a small partial update, incorrect results may be returned due to inconsistencies in the Multi-Version Concurrency Control (MVCC) for blob objects. (Bug #114138, Bug #36342348)
InnoDB: Concurrent execution of FLUSH TABLE FOR EXPORT with DROP TABLE and DML operations could result in a deadlock. (Bug #110485, Bug #35221441)
Fixed an issue related to bulk inserts. (Bug #38208188)
MySQL Server now supports a new startup option,
container_aware, which controls the server's ability to discover and adhere to CPU and memory resource limits set by a container. (WL #16937)
GraalVM performance metrics are now available on Windows. (Bug #38498718)
-
The
SHOW CREATE LIBRARYcommand generated HEX representations of binary libraries on x86_64 architectures withFFFFFFpatterns before each byte with the high bit set.Our thanks to Akshat Nehra and the team at Amazon for the contribution. (Bug #118927, Bug #38458235)
The table IDs reported in the I_S views for JSON Duality Views differed from those reported by ORACLE DB due to differences in calculation order, leading to inconsistent
REFERENCED_TABLE_IDvalues when multipleContent_tree_nodesreferred to the same base table. (Bug #38624596)
-
MySQL now supports enhanced debugging capabilities with the addition of timestamps to GCS/XCOM trace file entries.
For more information, see the
group_replication_communication_debug_optionssystem variable documentation in Group Replication System Variables. (WL #17008)
-
Option Tracker now supports MySQL Shell and MySQL Shell for VS Code.
The following status variables were added:
The following system variable was added:
See Option Tracker Component. (WL #16659, WL #17000)
Fixed an issue relating to Common Table Expressions (CTE). (Bug #38573285)
Using the
coalesceorany_valuefunctions with specific JSON operations, such asjson_searchandjson_remove, could cause an assertion failure. (Bug #38549573)-
Negative year values were accepted as valid datetime values by one method, but not by another.
Negative year values are now always reported as errors. (Bug #38487373)
Fixed issues relating to executing specific SELECT queries. (Bug #38465147, Bug #38465178)
Fixed an issue related to executing specific SQL queries. (Bug #38448700)
Fixed an issue relating to
SHOW CREATE TABLE. (Bug #38298692)Queries which used REGEXP took longer to execute as prepared statements than as direct queries. (Bug #114056, Bug #36326728)
For platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 3.0.18. For more information, see OpenSSL 3.0 Series Release Notes. (Bug #38632932)
-
Important Change: It is now possible to view accounts which have been temporarily locked, using the new Performance Schema table
TEMPORARY_ACCOUNT_LOCKS.The Performance Schema table,
HOST_CACHE, was extended with the following columns:COUNT_ACCOUNT_LOCKED_ERRORS: The number of errors caused by a permanently locked account.COUNT_TEMPORARY_ACCOUNT_LOCKED_ERRORS: The number of errors caused by a temporarily locked account.
(Bug #37378977, WL #16803)
Fixed an issue relating to querying variables. (Bug #38100668)
Performance Schema did not capture SQL or digests for prepared statements from non-MySQL clients. (Bug #114480, Bug #36445818)
-
Negative numbers on digests in
WHEREwere not parsed properly.Our thanks to Yakir Gibraltar for the contribution. (Bug #110045, Bug #35078042)
-
The following logs are now instrumented for Telemetry Logging:
Slow Query Log
General Log
See The setup_loggers Table and Configuring Log Telemetry. (WL #17167)
-
Connecting to a MySQL server with a non-existing user now consistently returns an "Access denied for user" error message, regardless of the username length or MySQL version. Previously, errors were returned similar to the following:
ERROR 1045 (28000): Access denied for user 'foo'@'localhost' (using password: NO), ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded(Bug #36527984)
Fixed an issue relating to authentication. (Bug #118447, Bug #38077617)
The error message returned when attempting to create a user with an existing user name was unclear. (Bug #28331, Bug #11746738)
-
MySQL now supports enhanced security and flexibility with the relocation of
MD5()andSHA1()SQL functions to a separate component, allowing for greater control over deprecated hashing algorithms and improved compliance with security standards. You can install theclassic_hashingcomponent to continue usingMD5()andSHA1()functions in your applications, ensuring a seamless transition and maintaining the integrity of your database operations. This update enables you to choose whether to utilize these functions, promoting a more secure environment by avoiding unacceptable hashing algorithms as defined by industry standards.See Legacy Hashing Component for more information. (WL #16956)
-
MySQL Server now supports table-level DML tagging for JSON duality views. You can explicitly specify allowed DML operations (
INSERT,UPDATE,DELETE) per table when defining a JSON duality view. Restrictive tags (NO INSERT,NO UPDATE,NO DELETE) are also supported to explicitly disallow specific operations. You can specify combinations of these tags. At runtime, JSON duality views validate incoming DML operations against the configured tags and accept or reject operations accordingly. This provides per-table control over write operations within a single duality view definition. The behavior is compatible with Oracle DB JSON duality views.See CREATE JSON DUALITY VIEW Statement for more information. (WL #17053)
The bundled version of
opentelemetry-cppwas upgraded to version 1.23.0. (Bug #38483354)As of this release,
GROUPING()is permitted in queries withoutROLLUP. (Bug #38168051)
InnoDB: Under certain circumstances, when using the
que_eval_sqlinterface, a race condition could occur. (Bug #118705, Bug #38310595)mysqltest did not print the symbolic error code (error name) for failed SQL statements. (Bug #38743161)
Running SET PERSIST on a system variable after an upgrade can result in duplicate variable entries across different sections in
mysqld-auto.cnf. (Bug #38680162)Binary log purged before persited
binlog_expire_*options were loaded. (Bug #38554467)Fixed an issue relating to changing users and roles. (Bug #38492547)
Linux debug builds started with the
--basediroption set to an existing absolute path will no longer assert thatlocal_mysql_homeends with a specific character. (Bug #38483568)Releasing MDLs before the
Auto_releaserhas run could cause asserts in debug builds due to locks not being released. (Bug #38430539)When 2 of 6 instances in a geographically dispersed InnoDB Cluster lost connectivity, the primary server became unresponsive, causing the
COMMITandINSERToperations to become unresponsive as well. (Bug #38380392)Fixed an issue related to user name handling. (Bug #38355483)
mysqldump's
--order-by-primaryoption sorted data by every index on the table, instead of just sorting by the primary key. (Bug #38284832)Fixed several issues relating to Thread Pool blocking connections from closing. (Bug #38170188, Bug #36782728, Bug #38549372)
Under certain circumstances, when used for an upgrade, mysqlpump altered the SQL mode and collation of stored procedures. (Bug #38154661)
Fixed several issues in the parser. (Bug #37866044, Bug #38483735)
Upgraded the MySQL Server to use non-deprecated OpenSSL algorithms for enhanced security and compatibility. (Bug #33951773)
It was possible to specify a password expiry policy for externally authenticated users. (Bug #32724080)
GTID gaps were generated because of the
replica- skip-errorsoption. (Bug #28590993)Database names containing a backslash were not correctly quoted when using the
--routinesoption with mysqldump. (Bug #22240504)If server was started on Windows platforms with --skip-grant-tables, privileges were not checked and remote connections were not permitted. As a result, the server might not start. (Bug #118805, Bug #38328780)
(Bug #97091, Bug #30381098)
-
A memory management issue occurred in the CSV engine when meta files became inaccessible.
Our thanks to Yan Huang for the contribution. (Bug #93394, Bug #28987279)
Trailing comments on the
!includediror!includedirectives in the MySQL configuration file could prevent the server from starting. (Bug #87657, Bug #26750972)