These release notes were created with the assistance of MySQL HeatWave GenAI.
macOS: It is now possible to compile the server on MacOS using
-DWITH_KERBEROS
.Upgraded the bundled
libcurl
library to version 8.14.1. (Bug #38042758)MySQL Server now supports CMake 4, ensuring compatibility with future CMake versions where support for versions prior to 3.10 is expected to be discontinued. (Bug #38027636)
The included ICU library has been upgraded to version 77-1. (Bug #37870791)
The included
zstd
library has been upgraded to version 1.5.7. (Bug #37869972)Disabled
clang::musttail
when building with GCC 15. (Bug #37776018)Implemented the standards-compliant
my_char_traits<unsigned char>
for use as a drop-in replacement forstd::char_traits<unsigned char>
, which was deprecated in Clang 18 and removed in Clang 19. (Bug #37273525, Bug #37785339)The linker tried to use the empty Cmake variable
${ICU_LIBRARIES}
, even though the correct library (ext::icu
) was already linked elsewhere. (Bug #36524167)When compiling on Fedora 38, grep -E is now used in place of egrep. (Bug #36507549)
Compiling on macOS looked explicitly for
openssl@1.1
but now looks for the genericopenssl
symlink instead, to allow foropenssl@3
. (Bug #35468370)
Debian packages for installing MySQL can now be run by users other than root. This helps prevent issues for Debian or Ubuntu systems that require rootless installations. (Bug #37765153)
-
Important Change: Added the mysql client
--commands
option, which enables or disables most mysql client commands.This option is enabled by default. To disable it, start the client with
--commands=OFF
or--skip-commands
.For a complete list of all commands affected by this option, and additional information, see mysql Client Options. (WL #16949)
References: See also: Bug #36416568, Bug #38066040.
Group Replication: Added the error
ER_GRP_RPL_APPLIER_THD_KILLED
, to distinguish when the applier thread has been terminated using SQL KILL, rather than stopped by an error. (Bug #37764717)Binary packages that include
curl
rather than linking to the systemcurl
library have been upgraded to usecurl
8.14.1. (Bug #37389565)
-
Important Note; Group Replication: The Group Communication System (GCS) handles Group Replication communication between members, and keeps track of the group membership and connections between all group members. Membership tracking includes the membership's current and previous two iterations. When a member leaves, the remaining members in the group keep a record of the departing member but stop communicating with it until it returns. For example: The group contains members M1, M2, and M3. M3 leaves the group; M1 and M2 stop communicating with M3. When a new member (M4) joins, it learns the previous iterations of this group's membership and attempts to communicate with all servers, including those from previous iterations (in this case, M3).
In the event that some previous servers were gone and did not return, the new member continuously tried to connect to the missing servers; in some conditions, these ongoing connection attempts could introduce network latency affecting group member communication.
In order to avoid this issue, connections to servers that belong to iterations of the group membership are now stopped after 5 minutes, which should be sufficient time to re-establish valid connections without imposing a continuing impact on group communication. (Bug #37704514)
-
NDB Cluster: Following an upgrade from NDB 8.0 to NDB 8.4, all data nodes in the cluster underwent an unexpected simultaneous restart. This occurred when the transaction coordinator had no scan state, leading to protocol timeout; the resulting misalignment in protocol states caused data nodes to shut down unexpectedly. This is fixed by extending existing handling of an unexpected
SCAN_NEXTREQ
signal to cover the case when the scan is already stateless. (Bug #37994985)References: This issue is a regression of: Bug #37022901.
NDB Cluster: Concurrent
ALTER TABLE
statements could cause delays of up to 100 *TransactionDeadlockDetectionTimeout
before failing with a lock wait timeout when a client held a conflicting row lock, stalling the accompanyingget_commit_count()
call. The retry mechanism has been adjusted to identify locking issues sooner. (Bug #37955025)-
InnoDB: When rebuilding a primary key, the server sometimes encountered issues when duplicates were present, potentially leading to the server stopping unexpectedly.
Our thanks to Xizhe Zhang and the team at Alibaba for the contribution. (Bug #37822992)
InnoDB: Fixed an issue relating to dropping columns that were part of an index. (Bug #37726881)
InnoDB: Fixed an issue relating to DELETE operations. (Bug #37478594)
InnoDB: Creating a secondary index on a
VARCHAR
column could allocate more memory than configured, with the amount allocated being directly related to the value ofinnodb_ddl_buffer_size
, leading to errors similar to ERROR 1136 (21S01): Column count doesn't match value count at row 1. (Bug #37233273)InnoDB: Fixed an issue relating to indexing spatial datatype columns. (Bug #36682518)
-
InnoDB: A long semaphore wait crash could occur when a redo log consumer lagged behind after a failed MySQL Enterprise Backup incremental backup, preventing the redo log writer thread from advancing. Error messages were returned similar to the following:
[Warning] [MY-013934] [InnoDB] Redo log writer is waiting for MEB redo log consumer which is currently reading LSN=23335640211468 preventing reclamation of subsequent portion of the redo log. Consider increasing innodb_redo_log_capacity.
(Bug #36330455)
-
InnoDB: Fixed an issue relating to range queries on tables. (Bug #31360522)
References: See also: Bug #38063122.
Partitioning: Truncating a partition was rejected with a duplicate entry error when the partition ID exceeded
INT_MAX
, preventing creation of new partitioned tables. To mitigate this issue, theTable_partition_values_pk
class constructor now usesulonglong
instead ofint
for the object ID. (Bug #35912852)Replication: When using replication in a chain,
CREATE TABLE ... AS SELECT
sometimes resulted in inconsistent entries in the binary log, potentially causing replication to break on downstream servers. Error messages related to this issue included errors resulting from missingSTART TRANSACTION
statements in the log. (Bug #37986380)-
Replication: During semisync replication, when the length of the binary log suffix exceeded six digits (
.999999
), so that the next log file became—for example—mysql-bin.1000000
, the replication protocol unexpectedly changed from semisynchronous to asynchronous.Our thanks to Wuhao Cao and Karry Zhang and the team at Alibaba for the contribution. (Bug #115861, Bug #113813, Bug #37024069, Bug #36246779)
-
Group Replication: In an unstable network environment, a Group Replication InnoDB Cluster with
group_replication_paxos_single_leader=ON
experienced several long-running transactions that became stuck in thewaiting for handler commit
state. As a consequence,group_replication_set_as_primary()
was forced to wait, which in turn blocked other incoming queries and rendered the cluster unwritable.The issue involving long-running transactions stuck in
waiting for handler commit
occurred as follows: During an intermittent network partition, a secondary node incorrectly assumed the leader role due to outdated or inaccurate membership information. This resulted in conflicts in synode number allocation, causing transactions originating from the primary node to remain incomplete.We fix this by making sure that a secondary node always reflect the latest, accurate state before pushing the view message to Paxos. This ensures that outdated or inconsistent membership information does not lead to conflicts in leadership or synode number allocation. (Bug #37764970)
References: See also: Bug #117424, Bug #37237959, Bug #37645674.
-
NDB Cluster APIs: Excluding a
VARCHAR
column from an event definition resulted in an Invalid schema object version error. (Bug #37766391)References: See also: Bug #31848270.
Some triggers which called stored routines did not always execute correctly. (Bug #37915445)
A view using a CTE which contained a subquery was not always handled correctly. (Bug #37832605)
-
WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS()
did not always execute correctly. (Bug #37829550)References: See also: Bug #38063175.
On Fedora 24, Oracle MySQL RPMs could not be installed due to package conflicts when MariaDB was already installed on the system. With this fix, the conflicts are not properly handled to allow MySQL Server to be installed successfully. (Bug #37798784)
-
Improved a previous fix for an issue in which client connections were not always terminated correctly during shutdown. (Bug #37755594)
References: This issue is a regression of: Bug #35854919.
The Fedora 42 RPM installation packages have been adapted to accommodate the merged
/usr/bin
and/usr/sbin
directories in Fedora 42 and later. (Bug #37737658)Performance of fulltext searches using
InnoDB
, particularly for phrase searches, has been improved. The efficiency ofdoc_id
matching has been enhanced. (Bug #37682648)Queries against the
performance_schema.keyring_keys
table caused issues when thekeyring_okv
plugin (see Using the keyring_okv KMIP Plugin) was installed but not configured correctly. (Bug #37655299)-
The fix for Bug #30875669 was not actually included in the code for the mysql client when the bug was closed. The changes are now implemented. (Bug #37572191)
References: See also: Bug #30875669.
An init file having one or more single lines, each containing multiple SQL statements, sometimes gave rise to errors during initialization. (Bug #37559598)
-
Some sequences of
CREATE TABLE
andDROP TABLE
statements were not handled correctly. (Bug #37534068)References: This issue is a regression of: Bug #35721121.
UPDATE ... SET ...
could not always be rolled back successfully. (Bug #37489167)Multiple
DEFAULT
column expressions inCREATE TABLE
statements were not always handled correctly. (Bug #37436220)-
Queries having a correlated subquery which performed aggregation were sometimes (incorrectly) rejected with duplicate key errors during execution.
This issue was introduced by a previous fix which removed the restoration of the original reference slice (
set_ref_item_slice(REF_SLICE_SAVED_BASE)
) duringJOIN::cleanup()
execution under the assumption that this was not necessary. As a result, temporary table field references from previous executions were not cleared, leading to attempts to insert duplicate keys into temporary tables triggering the error Can't write; duplicate key in table.We fix this by restoring the original reference slice during cleanup, ensuring that any stale references are discarded. (Bug #37415167)
References: See also: Bug #32141711. This issue is a regression of: Bug #35856247.
-
Unquoted semicolon characters (
;
) within comments were not always flagged as errors, in spite of the fact that they are not allowed. (Bug #37117875)References: See also: Bug #38063286.
A query using a nested aggregate function which contained a subquery was not always properly handled. (Bug #36421727)
-
When attempting to transform a subquery to a derived table, certain cases were not always considered. (Bug #36421710)
References: This issue is a regression of: Bug #36921175.
With
optimizer_switch
set tosubquery_to_derived=on
, some queries withROLLUP
were not handled properly. (Bug #36314993)Setting
max_join_size
led to improper processing of some nested queries. (Bug #35625769)-
Events created within stored programs were not always handled correctly. (Bug #35395333, Bug #36402968, Bug #37918920)
References: This issue is a regression of: Bug #17809, Bug #11745618.
The transform of a scalar subquery into a join with a derived table where the subquery is in the
SELECT
list and the containing query is implicitly grouped should be allowed, but was rejected when thesubquery_to_derived
optimizer switch was enabled. (Bug #35150438)-
An error in
include/assert_grep.inc
could lead to erroneous results from any file that included it.Out thanks to Ke Yu for the contribution. (Bug #116239, Bug #37105430, Bug #37675340)
The query rewrite plugin (see The Rewriter Query Rewrite Plugin) did not work properly when the server was run with
autocommit=OFF
. (Bug #115437, Bug #36784795)-
Improved comments in
sql/range_optimizer/rowid_ordered_retrieval_plan.cc
.Our thanks to Xiaodong Huang and the Tencent team for the contribution. (Bug #107972, Bug #34422274)