Databases 29 min read

What’s New in MySQL 9.2? Highlights, Fixes, and Feature Changes

MySQL 9.2 introduces a host of updates—including new CREATE_SPATIAL_REFERENCE_SYSTEM privileges, memory‑optimised statement binding, corrected character‑set handling, revamped compilation options, component enhancements, deprecations, optimizer tweaks, performance‑schema improvements, pluggable authentication fixes, and numerous bug fixes across InnoDB, replication, and utilities—providing a comprehensive overview of the release’s technical changes.

dbaplus Community
dbaplus Community
dbaplus Community
What’s New in MySQL 9.2? Highlights, Fixes, and Feature Changes

Account Management

The release adds a CREATE_SPATIAL_REFERENCE_SYSTEM privilege, allowing users to run CREATE SPATIAL REFERENCE SYSTEM, CREATE OR REPLACE SPATIAL REFERENCE SYSTEM and DROP SPATIAL REFERENCE SYSTEM without requiring the global SUPER privilege.

C API

Memory usage during prepared‑statement reuse is reduced by introducing a dedicated MEM_ROOT for bound‑parameter arrays, which is cleared on each mysql_stmt_bind_param() or mysql_stmt_bind_named_param() call.

Character Set Support

Fixes a bug where queries executed on a view with a non‑ASCII character set returned zero rows when the client charset was latin1; the server now correctly uses the view’s charset during condition push‑down.

Compilation Notes

macOS builds now use the OBJECT library instead of routing_guidelines and have removed obsolete CMake code.

Homebrew‑provided Clang can be used for building MySQL.

Windows builds now enable -DWITH_ASAN and have disabled several compiler warnings (C26445, C26821) related to gsl::span.

Support for -DWITH_SASL on Windows has been removed.

Solaris builds now require GCC ≥ 11.4.

CMake 3.26+ writes a CMakeFiles/CMakeConfigureLog.yaml instead of the old CMakeError.log.

Component Changes

MLE component now stores USAGE_DATA as a string rather than a boolean. Installing the option‑tracker component in one session and uninstalling it in another can cause the server to hang. Key‑ring configuration errors are now logged correctly. Certain SET PERSIST + INSTALL COMPONENT sequences could crash the server.

Configuration

On Windows, the MySQL Configurator no longer runs the deprecated FLUSH PRIVILEGES statement.

Deprecation and Removal

The FLUSH PRIVILEGES statement is deprecated and will emit a warning; it will be removed in a future release.

Related privileges and commands ( FLUSH_PRIVILEGES, mysqladmin flush‑privileges, mysqladmin reload) are also deprecated.

Various “Version Token” plugin functions are deprecated and will be removed.

Doxygen Comment Updates

The payload length calculation for the COM_QUERY packet now reflects the actual query length.

Firewall

Post‑upgrade, some stored procedures related to the MySQL Enterprise Firewall were not handled correctly; this has been fixed.

Installation

When upgrading from MySQL 5.7, the automatically created mysql.sys and mysql.session accounts now use the caching_sha2_password authentication plugin instead of mysql_native_password.

Optimizer Enhancements

EXPLAIN FORMAT=JSON now includes index‑lookup references ( lookup_references) matching the old ref field.

Hash joins that spent time on unused HashJoinChunk objects have been optimized.

EXPLAIN FORMAT=TREE now shows clustered primary‑key scans for ROR (row‑order‑by) intersection plans.

Incorrect aggregation push‑down in WHERE clauses has been corrected.

Performance Schema

Non‑root users running START REPLICA now have system users assigned to foreground replication threads.

The PROCESSLIST table now records system users for threads without a username.

Metadata lock type changes are now reflected in the METADATA_LOCKS table.

Pluggable Authentication

Issues with the AUTHENTICATION_POLICY_ADMIN privilege have been resolved: users with the privilege can now create accounts without the default authentication policy being forced, and users without the privilege receive the appropriate policy enforcement.

The authentication_openid_connect plugin is now registered in the option‑tracker component.

SQL Syntax Changes

The BINLOG keyword can no longer be used as an unquoted identifier in stored programs; applications must be updated before upgrading.

New or Changed Features

Windows Configurator now includes a CLI for configuring, re‑configuring, removing, or upgrading MySQL Server installations.

Binary packages now bundle curl 8.11.1 instead of linking to the system curl library.

A new static‑analysis tool is available under scripts/static_analysis.md and via python3 scripts/static_analysis.py --help.

MySQL now uses OpenSSL 3.x for improved cryptographic performance.

Fixed Bugs

Numerous InnoDB, replication, group‑replication, optimizer, and utility bugs have been addressed, including:

Spatial index corruption after tiny MBR updates.

Assertion failures in I/O buffer serialization (debug builds).

Incorrect handling of large FTS_DOC_ID values.

Memory leaks in mysqladmin and option_tracker/udfs.cc.

Deadlocks in group replication caused by ticket‑manager and inbound‑replication interactions.

Incorrect error handling in Item_bool_func2::resolve_type().

Various race conditions, missing includes, and incorrect error codes across the server.

Utility Updates

The

mysqldump
--column-statistics

option is now disabled by default.

Full‑text search and concurrent DDL/DML issues have been fixed.

Improved handling of DROP VIEW when a table with the same name exists.

EXPLAIN JSON version handling now includes a version field when explain_json_format_version=2.

The --ssl-mode=disable flag now correctly disables SSL in mysqlslap.

MySQL Shell Changes

Instance Metadata Service v1 is no longer supported.

New routing‑guideline API (e.g., create_routing_guideline(), get_routing_guideline(), routing_guidelines(), remove_routing_guideline(), import_routing_guideline()).

Updated set_routing_option(), routing_options(), and router_options() methods.

Added utilities for dumping and loading binary logs: util.dumpBinlogs() and util.loadBinlogs().

Fixed a Windows‑username‑encoding bug that prevented loading Python plugins.

Other Notable Fixes

GraalVM now replaces the V8 JavaScript engine.

Command history is auto‑saved by default ( history.autoSave=true).

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

mysqlRouter
dbaplus Community
Written by

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.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.