MySQL 9.4 Reference Manual Including MySQL NDB Cluster 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”.
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:
JSON_DUALITY_VIEWS
:
Per-view information about JSON duality views.
JSON_DUALITY_VIEW_COLUMNS
:
Columns defined in JSON duality views.
JSON_DUALITY_VIEW_LINKS
:
Parent-child relationships between JSON duality views
and their base tables.
JSON_DUALITY_VIEW_TABLES
:
Tables referenced by JSON duality views.
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”.
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:
Account profiles. The firewall component supports group profiles only. You can migrate account profiles to group profiles using the instructions found in Migrating Account Profiles to Group Profiles.
Information Schema tables. The tables described in Section 28.7, “INFORMATION_SCHEMA MySQL Enterprise Firewall Plugin Tables”, are not supported by the firewall component.
Server variables. The server variables listed in MySQL Enterprise Firewall Plugin System Variables, and MySQL Enterprise Firewall Plugin Status Variables, are all deprecated; the component provides its own analogs to these.
Stored procedures and functions. Stored routines and functions provided by the plugin are replaced with similar ones implemented by the component.
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.
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