What’s New in MySQL 9.4.0? Key Features, Fixes, and Improvements
MySQL 9.4.0 introduces extensive updates including charset handling fixes, macOS compilation options, component behavior changes, new system variables, deprecations, InnoDB memory and indexing enhancements, revised installation procedures, JavaScript stored‑procedure improvements, performance‑mode tweaks, vector function fixes, numerous new features, and a long list of resolved bugs across the server, client, and replication subsystems.
Overview
MySQL 9.4.0 is the latest stable release, bringing a broad set of functional enhancements, bug fixes, and deprecations that affect the server, client, storage engines, replication, and tooling.
Charset Support Changes
IFNULL() in LIKE : Using IFNULL() inside a LIKE clause now triggers ER_CANT_AGGREGATE_2COLLATIONS because the function returns a binary collation with NONE derivation. The fix lowers the priority of NONE collations, allowing the comparison collation to be derived from the other operand.
CREATE TABLE with generated expressions : When a generated column references a non‑ASCII identifier and the client charset is not UTF‑8 (e.g., GBK), a syntax error occurs.
Compilation Notes
macOS now supports -DWITH_KERBEROS for server builds.
Buffer adjustments for reading status variables fix potential issues on macOS /M1.
Removed compatibility handling for older CMake versions.
Minimum CMake version required is 3.14.6.
ICU library upgraded to 77‑1; Zstandard upgraded to 1.5.7.
Various warnings removed for Clang 20, GCC 15, and older CMake list handling.
Boost requirement increased from 1.85.0 to 1.87.0.
Linker now correctly uses ext::icu instead of an empty ${ICU_LIBRARIES} variable.
OpenSSL linking now prefers a generic openssl symlink, supporting OpenSSL 3.
Component Changes
Component‑registered UDFs can no longer be uninstalled while running; the server now stores prior registration state to avoid accidental unloads.
Configuration Changes
Windows service upgrades now respect custom service names.
MySQL Installer no longer drops custom server settings from my.ini during upgrades.
Custom error‑log names no longer cause hangs during installer upgrades.
System variable back_log default increased to 10000.
New variable server_memory caps the physical memory used for default variable calculations.
Deprecations and Removals
Plugin API deprecated; --early-plugin-load now emits a warning.
Keyring plugin loading now warns; see keyring component migration docs.
System variable temptable_use_mmap removed.
Functions MD5() and SHA1() deprecated.
InnoDB Updates
Improved memory management to prevent leaks in error‑handling paths.
Fixed information_schema.innodb_cmp_per_index returning unknown names under cache eviction.
Default innodb_change_buffer_max_size set to 5 to balance IO‑intensive workloads.
Various bug fixes: foreign‑key checks on row updates, buffer pool affinity handling, duplicate‑key errors during temporary table cleanup, and more.
Installation Notes
macOS mysqld start now fails if --plugin-dir is omitted while --basedir lacks a trailing slash and keyring_file is enabled.
Non‑root users can now install MySQL Debian packages.
RPM/Yum repositories now support Red Hat Enterprise Linux 10 and Oracle Linux 10.
JavaScript Stored Procedures
Memory‑exhaustion handling improved: second context.parse() call may succeed, but the server now correctly returns an out‑of‑memory error.
Bundled GraalVM Maven version upgraded to 24.2.1.0.1; GraalVM and Truffle libraries updated. mysqldump --routines now skips missing INFORMATION_SCHEMA.LIBRARIES tables on older servers.
BIT type now supported in JavaScript stored procedures.
Performance Modes
Debug code in pfs_get_thread_statement_locker_vc() removed from release builds.
Vector Data Types
VECTOR_TO_STRING()now correctly sets output collation.
New or Changed Features
mysql client --commands option : Enables or disables most client commands; disabled by default.
InnoDB now logs metadata of buf_page_t and buf_block_t for debugging.
Group replication adds error ER_GRP_RPL_APPLIER_THD_KILLED to distinguish kills.
NDB replication can shard binary logs across servers using --ndb-log-row-slice-count and --ndb-log-row-slice-id.
Signal‑handling history buffer increased to 1 GiB.
Curl bundled binary upgraded to 8.14.1.
Fixed Bugs
Hundreds of bugs were addressed, including but not limited to:
Group replication connection cleanup after member loss now stops after five minutes.
Performance regressions caused by removed redundant conditions in MySQL 8.0 are now fixed.
InnoDB foreign‑key checks now run only when needed.
Various memory leaks, assertion failures, and incorrect query handling across components such as the optimizer, replication, keyring, and the query rewrite plugin.
Windows MSI installer now checks for required Visual C++ Redistributable 14.42+.
Correct handling of non‑deterministic RAND() in RANGE window frames.
Additional Notes
For a complete list of changes, see the official MySQL documentation and the referenced bug numbers.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
dbaplus Community
Enterprise-level professional community for Database, BigData, and AIOps. Daily original articles, weekly online tech talks, monthly offline salons, and quarterly XCOPS&DAMS conferences—delivered by industry experts.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
