These release notes were created with the assistance of MySQL HeatWave GenAI.
Dropping a database is now possible even if its corresponding directory is missing from the file system, maintaining a consistent state for the database. (Bug #38711166)
-
Generated Invisible Primary Keys (GIPK) were added to tables even when UNIQUE NOT NULL keys existed, when
sql_generate_invisible_primary_key=ON. If the unique key was autoincremented, GIPK creation failed.As of this release, UNIQUE NOT NULL keys are treated as Primary Key-equivalent for CREATE and ALTER statements. (Bug #38195294)
-
Applying mysqlbinlog output failed while executing
CREATE TABLE ... START TRANSACTIONwhich were immediately followed by comments, preceded by#. Errors were returned similar to the following:ERROR 3977 (HY000) at line 117: Only BINLOG INSERT, COMMIT and ROLLBACK statements are allowed after CREATE TABLE with START TRANSACTION statement.(Bug #36313112)
-
It was not possible to create tables with a Primary Key Equivalent if
SQL_REQUIRE_PRIMARY_KEYwas enabled. Errors were returned similar to the following:ERROR 3750 (HY000): Unable to create or change a table without a primary key, when the system variable 'sql_require_primary_key' is set. Add a primary key to the table or unset this variable to avoid this message. Note that tables without a primary key can cause performance problems in row-based replication, so please consult your DBA before changing this setting.(Bug #31402520)
It was not possible to drop columns, on a table with virtual columns, using
LOCK=NONE. (Bug #83557, Bug #24962142)
-
Fixed an issue related to processing certain gzip files. The MySQL Server has been updated to relax the
.gzheader checks, allowing ordinary gzip files to be processed. Errors were returned similar to the following:Invalid audit log file content(Bug #38980223)
Fixed an issue related to the
audit_log_prune_secondssystem variable. You can now setaudit_log_prune_seconds. Checks have been added to ensureaudit_log_prune_secondsdoes not exceed a certain threshold based on other system variable values, includinglog_offload.log_analytics_scheduleandaudit_log_rotate_on_time. (Bug #38941456)A new feature has been introduced that rotates the audit log file based on elapsed time, controlled by the new variable
audit_log.rotate_on_time. (WL #17213)-
Audit Log now supports automatic recovery from invalid filter configurations, ensuring that the server can start even if an invalid filter is found in the table. With this update, if an invalid filter configuration is detected, it will be replaced in- memory at startup with a default filter that logs all events, preventing any loss of audit activity. This feature is controlled by the global variable
audit_log.filter_recovery_mode(oraudit_log_filter_recovery_modefor the Audit Log plugin), which allows users to choose from three recovery modes: LOG_ALL_IF_INVALID_FILTER_DETECTED, LOG_NOTHING_IF_INVALID_FILTER_DETECTED, and ABORT_IF_INVALID_FILTER_DETECTED. This enhancement provides greater flexibility and reliability in managing audit log configurations, reducing the risk of operational issues and ensuring that critical audit data is not missed.See
audit_log.filter_recovery_modeandaudit_log_filter_recovery_modefor more information. (WL #17179)
-
Authentication now supports PBKDF2 storage format with Caching_sha2_password, providing enhanced security and flexibility. This update allows for the use of PBKDF2 with SHA512, enabling a smoother migration path from existing formats and ensuring even stronger security guarantees. With this change, users can switch to the new storage format without requiring client-side modifications, and administrators can enforce the preferred storage format for added security. Overall, this enhancement strengthens password protection and offers a more robust authentication experience.
See Caching SHA-2 Pluggable Authentication for more information. (WL #17160)
-
The following components, previously availabile only in MySQL Enterprise Edition, are now available in MySQL Community Edition:
(WL #17234, WL #17235, WL #17236, WL #17237)
-
The Telemetry component, previously available only in MySQL Enterprise Edition, is now available in MySQL Community Edition.
See Telemetry. (WL #17224)
-
Microsoft Windows: On Windows, MySQL Configurator did not validate group names defined with
--named-pipe-full-access-group.As of this release, an error is returned if the group does not exist. (Bug #38068986)
-
When altering a table's character set, the date and time data type columns are converted in both the data dictionary and SDI. However, the new collation_id in SDI did not match that of the Field object.
As of this release, ALTER TABLE CONVERT TO CHARACTER SET does not alter the character set for temporal types stored in data dictionary or SDI. The server always uses
my_charset_latin1for temporal types in data dictionary and SDI.Our thanks to Venkatesh Prasad Venugopal and the team at Percona for the contribution. (Bug #114830, Bug #36574259)
A new variable,
replica_allow_higher_version_source, has been introduced that lets you enable or disable replication from a higher version source into a lower version replica. (WL #17202)
Memory usage during FTS index construction for large tables has been optimized. (Bug #39040226)
Fixed an issue relating to multi-value indexes. (Bug #39040128)
Fixed an issue in the parallel reader. (Bug #39033858)
dict_sdi_create_idx_in_memfunction added columns in a different order than expected, with thecompressed_lenanduncompressed_lenfields swapped. (Bug #38810801)Under certain circumstances, running
CREATE INDEXwith a high value for--innodb_parallel_read_threadscould cause the disk space to fill up, leading to disk space exhaustion. (Bug #38370155)Fixed an issue related to
TRUNCATE TABLE. (Bug #38169053)Under certain circumstances, if the
cgroupsmemory limit was set to a very high value, and--innodb-dedicated-server=ON, MySQL could fail to start. (Bug #37944614)Under certain circumstances, when calculating the maximum possible index record size, an assertion failure could occur. (Bug #85060, Bug #25579578)
MySQL Server now supports handling resource limitations set using the cpuset cgroup, providing a mechanism for assigning a set of CPUs to the application running in the cgroup. This update enables the server to adhere to the restrictions set by the cpuset-cpus cgroup controller, ensuring accurate calculation of logical CPUs available to the MySQL Server. With this enhancement, users can expect improved performance and efficient resource utilization, as the server can now correctly determine the number of logical CPUs according to cgroup restrictions. (WL #16851)
-
MySQL Clone plugin now supports cloning between consecutive LTS versions higher than 9.7.0.
See Clone Plugin Limitations and Remote Cloning Prerequisites. (WL #16520)
-
Using the
monthnamefunction within a JSON scope resulted in an assertion error. Errors were returned similar to the following:Assertion `mtime.time_type == MYSQL_TIMESTAMP_DATE in JSON(Bug #38980997)
-
MySQL Community Server now supports DML operations on JSON Duality Views, enabling users to perform insert, update, and delete operations on these views. This enhancement expands the functionality of JSON Duality Views, which were previously limited to DDL operations in the Community Server edition. With this update, users can now fully leverage the capabilities of JSON Duality Views in MySQL Community Server, making it easier to manage and manipulate data in a flexible and efficient manner.
See DML Operations on JSON Duality Views for more information. (WL #17246)
MySQL now supports the use of auto-increment columns in DML operations with JSON duality views, allowing for more flexible and efficient data management. With this update, you can leverage auto-generated values for primary keys, enabling easier insertion of data into JSON duality views. The system automatically handles the generation of these values, streamlining the data insertion process and reducing the need for manual intervention. This enhancement provides a more seamless and intuitive experience for users working with JSON duality views, making it easier to manage and manipulate data in a variety of scenarios. (WL #17056)
Fixed an issue relating to optimized prepared DELETE and UPDATE statements. (Bug #39071552)
Fixed an issue relating to Batched Key Access path and partitioning. (Bug #38947039)
Fixed an issue relating to query management. (Bug #38928287)
Fixed an issue relating to memory management. (Bug #38573278)
TIMEDIFF()returned the wrong result if the first argument wasDATETIMEand the second argument wasDATE. (Bug #38181443, WL #16895)TIMEDIFF()did not return NULL if unsupported values were used. (Bug #38179658, WL #16895)FROM_DAYS()did not handle out of range values, or values less than 366, consistently. (Bug #38177844, Bug #38177993, WL #16895)DAYNAME()did not return the day name if used in an arithmetic expression but returned the day number instead. (Bug #38177821, WL #16895)ADDDATE()returned an incorrect result if the first argument was year zero (0000). (Bug #38177766, WL #16895)When copying a DATE value to an INTEGER column, the DATE value was extended to DATETIME and 00:00:00 was added to it. (Bug #38043311)
Fixed an issue relating to the Optimizer's SQL planner. (Bug #35634700)
Overflow handling of date arithmetic has been improved. (Bug #32019977)
CAST()of a year column returned the wrong result. (Bug #29616536, Bug #35093107, WL #16895)Under certain circumstances, with
ALLOW_INVALID_DATESsql_mode enabled, invalid dates were not properly handled and no warning was issued if they were set toNULL. (Bug #20583945, WL #16895)ADDTIME, SUBTIME, ADDDATE, and SUBDATE did not return NULL for invalid values. (Bug #12805124)
-
When errors and warnings occured during background histogram updates, the conditions in the diagnostic area were not cleared, leading to future background histogram updates emitted the same stale conditions to the error log.
Our thanks to Tony Chen and the team at Amazon for the contribution. (Bug #119922, Bug #38983545)
IN operator returned an unexpected result if one of values in the list is NULL. (Bug #119650, Bug #38831745)
Datetime comparisons were inconsistent depending on the type used to store the values, INT or BIGINT. (Bug #119136, Bug #38819341, WL #16895)
-
Fixed an issue with NULL detection for temporal data types in derived tables after a derived merge.
Our thanks to Xingyu Yang and the team at Tencent for the contribution. (Bug #118658, Bug #38191248)
Under certain circumstances,
INTERSECTcould return an incorrect result. (Bug #117911, Bug #37804715)-
A histogram generated by
ANALYZE TABLE UPDATE HISTOGRAM ONwas not be accepted bycol_nameANALYZE TABLE UPDATE HISTOGRAM ONif the histogram was built on acol_nameUSING DATA ...bigintcolumn with values outside theuint32range.Our thanks to Tianfeng Li for the contribution. (Bug #116611, Bug #37269033)
-
Conditions on const tables and on previously joined tables were not consistently taken into account when building ranges in
get_quick_record_count(). This could lead to suboptimal or incorrect range estimates, especially when range predicates depended on values from const or earlier-joined tables.Our thanks to Xingyu Yang for the contribution. (Bug #112737, Bug #35912840)
Using
DISTINCTwith date functions returned inconsistent results. (Bug #109351, Bug #34889757)Assigning a date value to a
bigintcolumn in MySQL resulted in zeroes being appended to the end of the value, unless an explicit cast was used. Support for automatic casting in assignment operations has been added when the right-hand side is a single value or column. (Bug #79563, Bug #22353325, WL #16895)-
The Hypergraph Optimizer is now available in MySQL Community Edition.
It can be enabled in one of the following ways:
Session scope:
SET optimizer_switch='hypergraph_optimizer=on|off'Global scope:
SET GLOBAL optimizer_switch='hypergraph_optimizer=on|off'Persisted scope:
SET PERSIST optimizer_switch='hypergraph_optimizer=on|off'Server startup:
mysqld --optimizer-switch='hypergraph_optimizer=on|off'Per-statement hint:
/*+ SET_VAR(optimizer_switch='hypergraph_optimizer=on|off') */
(WL #17265)
Building with PGO (Profile Guided Optimization) is now also supported for RPM builds on SLE/openSUSE and Fedora, by adding
--define=with_pgo 1to the rpmbuild command line. (Bug #38915967)For platforms on which OpenSSL libraries are bundled, the linked OpenSSL library for MySQL Server has been updated to version 3.5.5. For more information, see OpenSSL 3.5 Series Release Notes. (Bug #38867109, WL #17209)
-
Prepared statements with mismatched parameter types could enter infinite loops and consume 100% CPU after re-preparation.
Our thanks to Alex Xing for the contribution. (Bug #38600714)
X Protocol now supports PBKDF2 storage format with Caching_sha2_password. (Bug #38879953)
It was not possible to use double quotes in
revoke_schema_privileges_from_all_accounts_exceptifANSI_QUOTESwas present insql_mode. (Bug #39105598)Fixed an issue relating to Information Schema privileges. (Bug #35243416, Bug #37387633)
The
SETSkeyword was not included in the parser's identifier keyword lists, preventing its use as an unquoted identifier. (Bug #119904, Bug #38974036)-
The SQL parser consumed a large amount of memory when parsing very large queries with many large
INclauses.As of this release, the SQL parser's memory management has been improved. (Bug #105004, Bug #33390851)