MySQL 8.0 Release Notes

2 Changes in MySQL 8.0.43 (2025-07-22, General Availability)

Note

These release notes were created with the assistance of HeatWave GenAI.

Compilation Notes

  • 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 for std::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 generic openssl symlink instead, to allow for openssl@3. (Bug #35468370)

InnoDB Notes

  • Fixed an issue relating to importing tables. (Bug #37621360)

Installation Notes

  • 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)

Functionality Added or Changed

  • 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 system curl library have been upgraded to use curl 8.14.1. (Bug #37389565)

Bugs Fixed

  • 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 misalignement 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 accompanying get_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 of innodb_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, the Table_partition_values_pk class constructor now uses ulonglong instead of int 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 missing START 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 for the contribution. (Bug #115861, Bug #37024069)

  • 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 the waiting 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 of doc_id matching has been enhanced. (Bug #37682648)

  • Queries against the performance_schema.keyring_keys table caused issues when the keyring_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 and DROP 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 in CREATE 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)) during JOIN::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 to subquery_to_derived=on, some queries with ROLLUP 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 the subquery_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)