MySQL 9.4 Reference Manual Including MySQL NDB Cluster 9.4

1.4 What Is New in MySQL 9.4

This section summarizes what has been added to, deprecated in, changed, and removed from MySQL 9.4 since MySQL 9.3. A companion section lists MySQL server options and variables that have been added, deprecated, or removed in MySQL 9.4; see Section 1.5, “Server and Status Variables and Options Added, Deprecated, or Removed in MySQL 9.4”.

Features Added or Changed in MySQL 9.4

The following features have been added to MySQL 9.4:

  • JavaScript programs: WebAssembly library support.  Beginning with MySQL 9.4.0, JavaScript programs using the Multilingual Engine component now support libraries writtten in WebAssembly (see https://webassembly.org/). Such libraries can be created using the CREATE LIBRARY statement, which now supports a LANGUAGE WASM clause, and supplying a hexadecimal or base64-encoded representation of a compiled WebAssembly program.

    Programs written in C, C++, and other languages can be compiled to WebAssembly using Emscripten or another compilation tool which supports WebAssembly as a target.

    WebAssembly code is parsed during execution of CREATE LIBRARY, and can be seen in the output of SHOW CREATE LIBRARY (but not in the LIBRARY_DEFINITION column of the Information Schema LIBRARIES table).

    The 9.4.0 release also implements three JavaScript objects relating to WebAssembly: WebAssembly, TextEncoder, and TextDecoder.

    Users of the MySQL Option Tracker component can track usage of WebAssembly libraries.

    APIs specific to MySQL and some other APIs, such as WASI, are not available to library code.

    For further information and examples, see Section 27.3.9, “Using WebAssembly Libraries”.

  • JSON duality views.  MySQL 9.4.0 adds support for JSON duality views, providing a way to view data stored in one or more relational tables as a JSON document. JSON duality views can be created, altered, dropped, and viewed using the new CREATE JSON DUALITY VIEW and ALTER JSON DUALITY VIEW statements, along with the existing DROP VIEW and SHOW CREATE VIEW statements, which now work with both JSON duality views and SQL views.

    MySQL 9.4.0 also implements several Information Schema tables providing information about JSON duality views; these tables are listed here:

    This work also includes implementation of an ETAG() function for generating row hashes, useful for concurrency control. See this function's description for more information.

    For users of MySQL Enterprise Edition:

    • JSON duality views can be updated using INSERT, UPDATE, or DELETE statements; updates on a JSON duality view cause corresponding updates on the base table or tables to be performed. Supported by MySQL Enterprise Edition only.

    • JSON duality view usage is monitored by the Option Tracker component. See Section 7.5.8.2, “Option Tracker Supported Components”, for further information.

    See Section 27.7, “JSON Duality Views”, for more information and examples.

  • JavaScript programs language support.  As of MySQL 9.4.0, the MySQL Multilingual Engine component supports the ECMA-262 standard, 15th edition (2024).

    See https://262.ecma-international.org/15.0/.

  • MySQL Enterprise Firewall component.  MySQL 9.4.0 and later releases include a MySQL Enterprise Firewall component intended to replace the firewall plugin, which is now deprecated (see Features Deprecated in MySQL 9.4). The component implements the same functionality as the plugin, with the exception of account profiles, which are deprecated in the plugin, and which the component does not support.

    Like the firewall plugin, the component supports a number of system and status variables for configuring the component and getting information about its operations (see MySQL Enterprise Firewall Component System Variables, and MySQL Enterprise Firewall Component Status Variables). These are analogous to the variables supported by the plugin, but have different names.

    Additional information can be obtained by querying the related Performance Schema tables (see Section 29.12.17, “Performance Schema Firewall Tables”). These are the same Performance Schema tables as used by the firewall plugin.

    In addition to an installer script, a script is also provided to assist with upgrading an existing firewall plugin installation to use the component instead. See MySQL Enterprise Firewall Component Scripts, for descriptions of all such scripts included with the firewall component. For installation guidance, see Installing the MySQL Enterprise Firewall Component. For help with migrating from the firewall plugin to the firewall component, see Upgrading to the MySQL Enterprise Firewall Component.

    MySQL Enterprise Firewall is a commercial feature available as part of MySQL Enterprise Edition. For more information about the firewall component, see Section 8.4.8.2, “The MySQL Enterprise Firewall Component”.

  • JavaScript support for MySQL BIT type.  As of MySQL 9.4.0, the MySQL BIT type is supported in JavaScript stored routines. MySQL BIT values less than or equal to JavaScript.MAX_SAFE_INTEGER are converted to JavaScript Number; values greater than this are converted to BigInt.

    For further information, see Section 27.3.4, “JavaScript Stored Program Data Types and Argument Handling”.

  • mysql client --commands option.  The mysql client --commands option, introduced in MySQL 9.4.0, enables or disables most mysql client commands.

    This option is disabled by default in MySQL 9.4.0 and later. To enable it, start the mysql client with --commands or --commands=ON.

    For more information, see Section 6.5.1.1, “mysql Client Options”.

Features Deprecated in MySQL 9.4

The following features are deprecated in MySQL 9.4 and may be removed in a future series. Where alternatives are shown, applications should be updated to use them.

For applications that use features deprecated in MySQL 9.4 that have been removed in a later MySQL version, statements may fail when replicated from a MySQL 9.4 source to a replica running a later version, or may have different effects on source and replica. To avoid such problems, applications that use features deprecated in 9.4 should be revised to avoid them and use alternatives when possible.

  • MySQL Enterprise Firewall plugin.  The MySQL Enterprise Firewall plugin is deprecated in MySQL 9.4.0 and later, and is now subject to removal in a future version of MySQL. In its place, MySQL Enterprise Edition now provides a firewall component which provides the same core functionality (see Features Added or Changed in MySQL 9.4). Some features in the plugin are deprecated, and not supported in the component; these are listed here:

    For help with upgrading a firewall plugin installation to use the plugin component instead, see Upgrading to the MySQL Enterprise Firewall Component.

    MySQL Enterprise Firewall is a commercial feature available as part of MySQL Enterprise Edition. For more information, see Section 8.4.8, “MySQL Enterprise Firewall”.

  • Keyring plugin API, --early-plugin-load option.  As part of ongoing efforts to transition from MySQL plugins to MySQL components, MySQL 9.4.0 deprecates the API used to write keyring plugins. This API is now subject to removal from a future version of MySQL.

    As part of this work, the server command line option --early-plugin-load is also deprecated; as of MySQL 9.4.0, this option produces a deprecation warning when used. In addition, a deprecation warning is now raised whenever a keyring plugin is loaded, to serve as a reminder that you should migrate to the equivalent keyring component as soon as possible.

    For a summary of differences between keyring plugins and keyring components, see Section 8.4.5.1, “Keyring Components Versus Keyring Plugins”. For information about migrating from a keyring plugin to a keyring component, see Key Migration Using a Migration Server.

Features Removed in MySQL 9.4

The following items are obsolete and have been removed in MySQL 9.4. Where alternatives are shown, applications should be updated to use them.

For MySQL 9.3 applications that use features removed in MySQL 9.4, statements may fail when replicated from a MySQL 9.3 source to a MySQL 9.4 replica, or may have different effects on source and replica. To avoid such problems, applications that use features removed in MySQL 9.4 should be revised to avoid them and use alternatives when possible.

  • title.  description