Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Release dates for all upcoming MariaDB Server releases can be found on Jira.
Enterprise Server Release NotesCommunity Server Release NotesColumnStore Release NotesMaxScale Release NotesConnectors Release NotesEnterprise Kubernetes Operator Release NotesDownload Latest ReleasesRelease CriteriaRelease ModelCompatibility and DifferencesPlatform Deprecation PolicyMaintenance PolicyFeature Deprecation PolicyInformation about MariaDB Enterprise Server releases
MariaDB's encryption plugins provide transparent data encryption (TDE) for stored data, securing tablespaces and logs to protect sensitive information and meet compliance.
Release notes for MariaDB Enterprise Server 11.4 series releases
Release notes for MariaDB Enterprise Server 10.5 series releases
Release notes for MariaDB Enterprise Server 10.4 series releases
MariaDB Enterprise Server enhances the community version with advanced features, security, high availability, support, and tools for enterprise use.
Release notes for MariaDB Enterprise Server 10.6 series releases
Old Release notes for MariaDB Enterprise Server releases
and MariaDB Community Server support data-in-transit encryption, which secures data transmitted over the network. The server and clients encrypt data using the Transport Layer Security (TLS) protocol, a newer version of the Secure Socket Layer (SSL) protocol.
is available on the MariaDB documentation.
MariaDB Enterprise Server 10.5.4-1 is an internal release of MariaDB Enterprise Server 10.5, released on 2020-07-16
This release of MariaDB Enterprise Server 10.5 is an internal release.
MariaDB Enterprise Server 10.5.4-1 was released on 2020-07-16.
This release substantially aligns to the features made available in MariaDB Enterprise Server 10.5.4-2.
The release schedule for MariaDB Enterprise Server
enables a predictable development and operations experience through an . This enterprise lifecycle incorporates optimized builds, predictable release behavior, and vendor support.
Minor and maintenance releases of MariaDB Enterprise Server incorporate bug fixes and security fixes. Like all releases of MariaDB Enterprise Server, minor and maintenance releases undergo extensive QA testing before release to customers.
The frequency of minor and maintenance releases is variable. Minor or maintenance releases occur for each release series at least quarterly. A portion of minor and maintenance releases occur on a pre-scheduled basis. Additional releases may be added by MariaDB Corporation between scheduled release dates to manage the flow of change or to address specific defects.
Upcoming minor or maintenance releases are scheduled for:
2026-03-16
2026-06-15
2026-09-14
2026-12-14
See the list of
MariaDB Enterprise Server is available to MariaDB subscription customers via the .
If you are not yet a MariaDB subscription customer, for more information.
MariaDB Enterprise Server binary and source code is delivered over secure protocols from MariaDB Corporation-maintained infrastructure.
The AWS KMS Encryption Plugin (aws_key_management) integrates with Amazon Web Services (AWS) KMS
MariaDB Enterprise Server 10.5.19-14 has been withdrawn, and is no longer available from MariaDB package repositories.
A regression has been reported for MariaDB Enterprise Server 10.5.19-14, which results in InnoDB not freeing undo logs when they are no longer needed. This issue could cause the InnoDB system tablespace or the undo log tablespaces to grow indefinitely.
Customers who have deployed MariaDB Enterprise Server 10.5.19-14 may contact MariaDB Support for assistance or upgrade to the next maintenance release. The next maintenance release of MariaDB Enterprise Server is scheduled for 2023-06-12.
Release notes for MariaDB Enterprise Server 11.8 series releases
This section contains release notes for MariaDB Enterprise Server releases divided into the major MariaDB series
Features that are in MariaDB Enterprise Server 11.4 but not in MariaDB Community Server 11.4
MariaDB Enterprise Server is a premium version of MariaDB Community Server that focuses on stability, robustness, and predictability.
In addition to different release cycles, QA, etc, there are also feature differences. MariaDB Enterprise Server has different default settings to be more secure from the start, and also only includes features that are fully supported and maintained.
In addition to this, there are Enterprise Features and some backported features. The following are features that are in MariaDB Enterprise Server 11.4 but not in MariaDB Community Server 11.4:
Index limit increased to 128 indexes.
Slow master shutdown as default
MariaDB Enterprise Cluster (powered by Galera)
XA Support
Non-Blocking operation for DDLs
TLS certificate expiration monitoring
SSL/TLS is enabled by default
Dynamic resize of
Dynamic change of threads
Sybase SQL mode for extended aliases
New, Detailed Replication Lag Representation
New Information Schema Table For Password-Related Data
GTID binlog events now include the thread ID
Automatic SST user account management for Galera
PARSEC authentication plugin
Extending timestamp range to 2106
Limit the size of the created disk temporary files and tables
The Software Bill of Materials (SBOM) JSON file is generated in the downloads archive
Vector Search capability has been added (MENT-2233)
Segmented key cache for Aria
A new variable (default 1) to define the number of segments has been added. The default disables the new feature.
Data-at-rest encryption secures data on the file system.
MariaDB Enterprise Server and MariaDB Community Server support data-at-rest encryption, which secures data on the file system. The server and storage engines encrypt data before writing and decrypt it during reads, ensuring that the data is only unencrypted when accessed directly through the server.
Encryption Plugins
HashiCorp Vault
Amazon Web Services (AWS) KMS
File Key Management
Binary Logs
Gcache
Additional information is available on the page.
MariaDB Enterprise Server and MariaDB Community Server support , which secures data on the file system. The server and storage engines encrypt data before writes and decrypt it during reads, ensuring that the data is only unencrypted when accessed directly through the server.
In many versions of MariaDB Server, the GCache used by Galera Cluster does not support data-at-rest encryption.
However, MariaDB Enterprise Server 10.4 and later support an enterprise version of Galera 4, which adds support for encrypting the GCache.
In those versions, the GCache supports the following data-at-rest encryption features:
The GCache can be automatically encrypted.
For more information, see the following resources:
MariaDB Enterprise Server and MariaDB Community Server support , which secures data on the file system. The server and storage engines encrypt data before writing and decrypt during reads, ensuring that the data is only unencrypted when accessed directly through the server.
They support multiple encryption plugins, which are suited for different use cases.
It integrates with HashiCorp Vault
It supports key rotation
It securely communicates with the remote KMS using TLS.
It integrates with AWS KMS
It supports key rotation
It must be compiled from source
Stores encryption keys in a local plain-text key file
The plain-text key file can be encrypted
It does not support key rotation.
Supported by MariaDB Enterprise Server
Yes
Yes
Yes
Supported by MariaDB Community Server
No
Yes
Yes
Supports key rotation
Yes
Yes
No
MariaDB Enterprise Server Software Bill of Materials (SBOM) information
MariaDB publishes a Software Bill of Materials (SBOM) for each MariaDB Enterprise Server release. An SBOM lists the components that make up a build (libraries, packages, versions, licenses, and hashes); enabling customers to meet compliance requirements, perform vulnerability management, and understand supply chain risk.
Coverage: Core MariaDB Enterprise Server binaries and packages for each supported platform/release
Formats: CycloneDX JSON (.json)
Contents: Component names & versions, suppliers, licenses, purls/CPEs (when available), cryptographic hashes, and dependencies
Availability: SBOM files are provided alongside each release’s download artifacts in the customer portal, or from the "Software Bill of Materials (SBOM)" link on the Enterprise Server download page
Updates: A new SBOM is published for every release; compare SBOMs across versions to see component deltas
Vulnerability management: Import the SBOM into a scanner or platform to match against advisories (e.g., OSV/CVE feeds)
Compliance & audits: Produce component/license reports and demonstrate software composition controls
Change analysis: Diff SBOMs between versions to identify updated/deprecated components
The recommended viewer for the MariaDB SBOM files is the CycloneDX Web Tool (hosted by the CycloneDX project), which can be found at https://cyclonedx.github.io/cyclonedx-web-tool
Advantages of the CycloneDX Web Tool include:
Our SBOM files are explicitly built for CycloneDX including upload/view functionality for both XML and JSON
The CycloneDX Web Tool is maintained by the CycloneDX project so it aligns with the standard and will remain compatible
The CycloneDX Web Tool works via browser so you do not need to install anything
MariaDB Enterprise Server 10.5.3-1 is an internal release of MariaDB Enterprise Server 10.5, released on 2020-05-21
This release of MariaDB Enterprise Server 10.5 is an internal release.
MariaDB Enterprise Server 10.5.3-1 was released on 2020-05-21.
The successor to this release is MariaDB Enterprise Server 10.5.4-2.
Features that are in MariaDB Enterprise Server 10.4 but not in MariaDB Community Server 10.4
MariaDB Enterprise Server is a premium version of MariaDB Community Server that focuses on stability, robustness, and predictability.
MariaDB Enterprise Server enables a predictable development and operations experience through an enterprise lifecycle. This enterprise lifecycle incorporates optimized builds, predictable release behavior, and vendor support. For more information about the Enterprise Server Lifecycle .
In addition to different release cycle, QA, and etc..., there are also feature differences. MariaDB Enterprise Server has different default settings to be more secure from the start and also only includes features that are fully supported and maintained.
In addition to this there are Enterprise Features and some backported features. The following are features that are in MariaDB Enterprise Server 10.4 but not in MariaDB Community Server 10.4:
Index limit increased to 128 indexes
Slow master shutdown as default
(powered by Galera)
New option
GTID support for MariaDB Enterprise Cluster (powered by Galera)
Crash recovery for semi-synchronous replication
to dump data as of a given time for system versioned tables
JSON functions
MariaDB Enterprise Server 11.6.17-13 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2024-04-24
MariaDB Enterprise Server 10.6.17-13 is a maintenance release of 10.6. This release includes a fix for a regression introduced with MariaDB Enterprise Server 10.6.17-12. Users of MariaDB Enterprise Server 10.6.17-12 are encouraged to upgrade to the latest version 10.6.17-13.
MariaDB Enterprise Server 10.6.17-13 was released on 2024-04-24.
This release incorporates MariaDB ColumnStore engine version 23.10.1.
An UPDATE to a unique/primary key field can result in a server crash, if the update results in a duplicate key error message. The crash is more likely to happen for a server configuration with a lower setting than the default (299008) for --thread_stack, or when the UPDATE is executed inside of a stored function (MENT-2065)
For MariaDB Enterprise Server 10.6.17-12, if an update is not possible, a workaround is to increase the current setting of --thread_stack by 100k
In alignment to the , MariaDB Enterprise Server 10.6.17-13 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
An overview of changes, improvements, and what's new in MariaDB Enterprise Server 10.4
MariaDB Enterprise Server 10.4 introduces the following new features:
MariaDB Enterprise Server uses an that provides optimized builds, predictable release behavior, and vendor support.
enables reliable and predictable schema change behavior.
collects trace data to aid query optimization and diagnosis of query execution issues.
support has been expanded from system-versioned tables to also include application-time period and bitemporal tables.
provides support for auditing resource access to MariaDB Enterprise Server.
enables non-blocking backups of MariaDB Enterprise Server.
With , data is encrypted before writing to the disk and decrypted when read from disk. MariaDB Enterprise Server extends data-at-rest encryption support to include:
Encryption of Spatial indexes
Key rotation when encrypting the InnoDB Redo Log
Encryption of MariaDB Enterprise Cluster's write-set cache (GCache)
MariaDB Enterprise Server includes support for , which incorporates Galera Cluster 4. New features include:
Parallel replication and improved performance when blocks of grouped transactions can be committed without conflict.
The , to eliminate transaction limitations by fragmenting huge transactions for replication.
Rolling upgrades to permit a smooth transition of MariaDB Cluster deployments to Galera 4 functionality by operating as a Galera 3-compatible node until all nodes are Galera 4-compatible.
MariaDB Enterprise Server includes changes to improve data reliability and SQL functionality:
System tables use the Aria storage engine, making them crash-safe.
UNIQUE index support for the BLOB data type.
data type validation.
Parentheses in UNION, INTERSECT, and EXCEPT operations to control order of execution.
MariaDB Enterprise Server features improvements, including:
Ability to reload SSL certificates without server restart.
SET PASSWORD option to specify authentication plugins.
Improved support for authentication plugins, including the ability to set multiple authentication plugins on individual users. Also supported is fallback on internal methods, such as password authentication.
ALTER USER option for account locking, to enable MariaDB Enterprise Server to reject all new connections for an account.
Account blocking based on number of failed login attempts.
Ability to set password expiration dates.
Logging of access when passwords are ignored, e.g., for passwordless authentication by UNIX socket.
MariaDB Enterprise Server enables a predictable development and operations experience through an enterprise lifecycle — incorporating optimized builds, predictable release behavior, and vendor support
MariaDB Enterprise Server incorporates enhancements that are not present in MariaDB Community Server, including
Premium features meet enterprise scaling and operations requirements.
Priority bug fixes are available first to enterprise customers.
Increased the code stability through restricted release of new functionality.
Risk reduction from untested or incompatible features through the inclusion of only features with level 3 support (engineering code-level support) from MariaDB Corporation.
Optimized the configuration defaults.
For details on features added to enhance, harden, and secure MariaDB Enterprise Server, see the following pages:
Releases of MariaDB Enterprise Server are predictable because,
Major releases are delivered on a schedule.
The minor releases are focused on small, incremental defect remediation.
Critical fixes from newer release series are selectively backported.
Enterprise-grade testing drives a low defect rate.
Specific changes present in each release are communicated.
Additional information on the release cycle for MariaDB Enterprise Server can be found in MariaDB Corporation Engineering Policy.
Planned releases of MariaDB Enterprise Server are scheduled.
MariaDB Enterprise Server is available to MariaDB subscription customers via the MariaDB Customer Portal.
If you are not yet a MariaDB subscription customer, contact MariaDB Corporation for more information.
MariaDB Enterprise Server binary and source code is delivered over secure protocols from MariaDB Corporation-maintained infrastructure as detailed in the Deployment Guide.
Releases of MariaDB Enterprise Server are given an identifier such as 'MariaDB Enterprise Server 10.5.8-5,' whose components are,
The product name (MariaDB Enterprise Server).
Release series (10.5, spoken "ten-five").
The point release of MariaDB Community Server used as the base of this Enterprise Server release (.8, spoken "ten-five-eight").
The release postfix of MariaDB Enterprise Server starts with '-1' and is incremented for subsequent releases in that release series (-5, spoken "ten-five-eight-dash-five").
On the Debian and Ubuntu platforms, the release postfix contains a period instead of a dash, such that release postfixes start with .1 and increment for subsequent releases in that release series (.5, spoken "ten-five-eight-dot-five").
Additional information on the release numbering for MariaDB Enterprise Server can be found in MariaDB Corporation Engineering Policy.
MariaDB Corporation offers vendor support for MariaDB Enterprise Server, including,
Customer support as detailed in the Subscription Services Policy
Professional services, including migration services, remote DBA services, and consulting
Customer communications, managed via the MariaDB Customer Portal
Features that are in MariaDB Enterprise Server 10.5 but not in MariaDB Community Server 10.5
MariaDB Enterprise Server is a premium version of MariaDB Community Server that focuses on stability, robustness, and predictability.
MariaDB Enterprise Server enables a predictable development and operations experience through an enterprise lifecycle. This enterprise lifecycle incorporates optimized builds, predictable release behavior, and vendor support.
In addition to different release cycle, QA, and etc..., there are also feature differences. MariaDB Enterprise Server has different default settings to be more secure from the start and also only includes features that are fully supported and maintained.
In addition to this there are Enterprise Features and some backported features. The following are features that are in MariaDB Enterprise Server 10.5 but not in MariaDB Community Server 10.5:
Index limit increased to 128 indexes
Slow master shutdown as default
(powered by Galera)
Non-Blocking operation for DDLs
Dynamic resize of
Dynamic change of threads
Sybase SQL mode for extended aliases
Crash recovery for semi-synchronous replication
to dump data as of a given time for system versioned tables
JSON functions
Option for SQL thread to limit maximum execution time per query
Features that are in MariaDB Enterprise Server 10.6 but not in MariaDB Community Server 10.6
MariaDB Enterprise Server is a premium version of MariaDB Community Server that focuses on stability, robustness, and predictability. For more information about MariaDB Enterprise Server in general please look here.
In addition to different release cycle, QA, and etc..., there are also feature differences. MariaDB Enterprise Server has different default settings to be more secure from the start and also only includes features that are fully supported and maintained.
In addition to this there are Enterprise Features and some backported features. The following are features that are in MariaDB Enterprise Server 10.6 but not in MariaDB Community Server 10.6:
Index limit increased to 128 indexes
Slow master shutdown as default
MariaDB Enterprise Cluster (powered by Galera)
XA Support
Non-Blocking operation for DDLs
TLS certificate expiration monitoring
SSL/TLS enabled by default
Dynamic resize of
Dynamic change of threads
Sybase SQL mode for extended aliases
to dump data as of a given time for system versioned tables
JSON functions
CONVERT_PARTITION / CONVERT_TABLE
Option for SQL thread to limit maximum execution time per query
Allow to be changed after database creation
Make the optimizer handle UCASE(varchar_col)=...
Easier way to retrieve all users that have privileges on a specific table
Make dynamic
Add timezone information to
option for innodb_data_file_path system variable
New, Detailed Replication Lag Representation
New Information Schema Table For Password Related Data
GTID binlog events now include the thread ID
Software Bill of Materials (SBOM) JSON file generates in the downloads archive.
MariaDB Enterprise Server 11.6.23-19 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2025-09-08
Release date: 8 Sep 2025
MariaDB Enterprise Server 10.6.23-19 is a maintenance release of . This release includes a variety of fixes.
This release incorporates MariaDB ColumnStore engine version 23.10.6
updated to
Adding (with ALTER TABLE) a UNIQUE constraint that is USING HASH to a table with foreign keys could've caused the table to become corrupted. ()
Server crashes in do_mark_index_columns instead of ER_DUP_ENTRY on partitioned table ()
CREATE OR REPLACE with self-referencing CHECK hangs forever, cannot be killed ()
Segfault on INTERSECT ALL with UNION in Oracle mode ()
This commit fixes a bug where Aria tables are used in (master->slave1->slave2) and a backup is taken on slave2. In this case it is possible that the replication position in the backup, stored in mysql.gtid_slave_pos, will be wrong. This will lead to replication errors if one is trying to use the backup as a new slave. ()
Fatal InnoDB error: Unknown error Temp file write failure ()
semi sync makes the master unresponsive when a replica is stopped ()
json_extract crashes in Item_func_json_extract::read_json ()
Inconsistency detected - create sequence ()
Replica stops with "Found invalid event in binary log" ()
ALTER TABLE require ALTER privilege on sequence from DEFAULT value expression ()
In certain cases privileges on sequences were too restrictive, for example, SELECT on a table might've erroneously required INSERT privilege on a sequences ()
AUTO_INCREMENT leads to non-serializable on results ()
UNIQUE constraint that was USING HASH and UNIQUE constrant WITHOUT OVERLAPS could be violated under heavy load in READ COMMITTED transaction isolation mode. ()
UNIQUE KEY USING HASH accepting duplicate records ()
For the complete list of changes in this release, see the .
In alignment to the , MariaDB Enterprise Server 10.6.22-18 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Oracle Linux 8 (x86_64, ARM64)
Oracle Linux 9 (x86_64, ARM64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Ubuntu 24.04 (x86_64, ARM64)
Red Hat UBI 8 (x86_64, ARM64)
Red Hat UBI 8 is part of the Enterprise Server Docker Image. It does not support MariaDB Enterprise Cluster (Galera) or MariaDB ColumnStore.
Some components of MariaDB Enterprise Server are supported on a subset of platforms. See for details.
MariaDB Enterprise Server 10.5.6-4 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2020-10-07
This fourth release of 10.5 is a hotfix release to address a CVE which has been rated "critical" using the criteria defined in the .
MariaDB Enterprise Server 10.5.6-4 was released on 2020-10-07.
#1:
MariaDB CVEs are assigned a word rating instead of a CVSS base score. See the for details.
This release originally included .
This release has been updated to include on 2020-11-09.
In alignment with the , MariaDB Enterprise Server 10.5.6-4 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
This ninth release of 10.4 is a hotfix release to address a CVE which has been rated "critical" using the criteria defined in the .
MariaDB Enterprise Server 10.4.15-9 was released on 2020-10-07.
#1:
MariaDB CVEs are assigned a word rating instead of a CVSS base score. See the for details.
In alignment with the , MariaDB Enterprise Server 10.4.15-9 is provided for:
Red Hat Enterprise Linux 8
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 6
CentOS 8
CentOS 7
CentOS 6
Debian 10
Debian 9
Debian 8
SUSE Linux Enterprise Server 15
SUSE Linux Enterprise Server 12
Ubuntu 20.04
Ubuntu 18.04
Ubuntu 16.04
Microsoft Windows
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
CentOS 6, Debian 8, and Red Hat Enterprise Linux 6 are no longer supported as per the . Older releases are available from the . Instructions for installation are included as a README file within the download.
This page is: Copyright © 2025 MariaDB. All rights reserved.
CVE (with cve.org link)
CVSS base score
N/A (Critical)#1
CVE (with cve.org link)
CVSS base score
N/A (Critical)#1
MariaDB Enterprise Server 10.4.34-24 is a maintenance release of . This release includes a variety of fixes.
MariaDB Enterprise Server 10.4.34-24 was released on 2024-06-11.
Galera has been updated to 26.4.18
The GCS protocol version has been changed, preventing a downgrade of individual nodes of a MariaDB Enterprise Cluster
With --gtid-ignore-duplicate set, a transaction can be double-applied from another replication source if applying the transaction from the initial source required retrying in parallel execution. (MDEV-33475)
Backups of server with innodb_encrypt_tables=1 can become corrupted in mariadb-backup --prepare (MDEV-33334)
Galera-replicated events can, in some cases, contain the wrong time when versioning is used (MDEV-18590)
Using current MariaDB Enterprise Backup against an older server can result in a crash, as the system variable @@aria_log_dir_path does not exist (MDEV-31251)
For encrypted table spaces, an ALTER operation can hang when an encryption thread works on the same tablespace (MDEV-33770)
EXPLAIN statement that uses a subquery which has a query plan that A) will examine less than @@expensive_subquery_limit rows and B) will use the join buffer, could cause a crash. (MDEV-21102)
MariaDB Enterprise Backup fails with the following error message if the prepare step of the backup encounters a data directory, which happens to store wsrep xid position in TRX SYS page: (MDEV-33540)
InnoDB: Crash recovery is broken due to insufficient innodb_log_file_sizeSpider/ODBC passed double quotes for names, in ANSI style (MENT-958)
Default charset doesn't work with the PHP MySQLi extension (MDEV-32975)
Spider returns parsing failure on valid left join select by translating the on expression to () (MDEV-33679)
Original IP not shown in network-related error messages when proxy_protocol is in use (MDEV-33506)
Incorrect DEFAULT expression evaluated in UPDATE (MDEV-33790)
Table is getting rebuilt with ALTER TABLE ADD COLUMN, although it should be an instant operation, not requiring a rebuild (MDEV-33214)
For the complete list of changes in this release, see the changelog.
In alignment with the enterprise lifecycle, MariaDB Enterprise Server 10.4.34-24 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some of the components of MariaDB Enterprise Server are supported on a subset of platforms. See MariaDB Engineering Policies for details.
The latest long-term stable series is MariaDB Enterprise Server 11.8
MariaDB Enterprise Server 10.5.27-21 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2024-12-10
MariaDB Enterprise Server 10.5.27-21 is a maintenance release of MariaDB Enterprise Server 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.27-21 was released on 2024-12-10.
A new parameter --quick-max-column-width is now available in the mariadb client to limit the field width when used with the --quick mode (MDEV-34704)
This release incorporates MariaDB ColumnStore engine version 5.6.8
Using group_concat with a compressed or GIS column can lead to a server crash and potential data corruption for users performing group_concat operations on tables containing these data types (MDEV-16699)
A query could cause a crash if it has a HAVING clause with a construct tblX.column=column_or_constant and the optimizer was able to infer that table tblX is a constant table. Note that HAVING clause may be from the original query or may come from ) (MDEV-23983)
Calling a UDF for the engine SPIDER results in a crash if the SPIDER storage engine plugin could not be loaded (MDEV-34682)
Under Windows Subsystem for Linux, InnoDB crashes on ALTER TABLE or OPTIMIZE TABLE (MDEV-34938)
Server crashes when setting wsrep_cluster_address after adding invalid value to wsrep_allowlist table (MDEV-31173)
mariadbd hangs on startup when --init-file target does not exist (MDEV-34814)
Possible server crash in cases where the function DEFAULT() is part of a query (MDEV-35276)
Possible unique hash index corruption for system-versioned tables after DML including DELETE HISTORY statement. This can lead to data corruption, crashes, and incorrect query results (MDEV-33470)
Possible error log entry
[ERROR] InnoDB: Record in index `c` of table `test`.`t` was not found on update...In some situations, where a MariaDB Enterprise cluster (Galera) node crashes, some threads are still working. This is visible via the error log, which is still getting errors written by the node. As the node stops interacting correctly with other cluster nodes and is blocking them from taking over the primary state, the whole cluster hangs (MDEV-32363)
When a user runs mariadb-binlog with --stop-position, they would expect the output to contain events up to that event. If the output did not contain events up to that event, this may result in various unexpected behaviors, e.g., an incomplete database state if they piped the output to the mariadb client and expected certain transactions to have executed in the database, yet never were run (MDEV-27037)
Changing a data type of a field used in a foreign key constraint fails with Error "Cannot change column '...': used in a foreign key constraint '...'" (MDEV-34392)
This ALTER only fails if the type of field is changed in a multi-ALTER statement, where types of other fields are changed with the ALTER
Creation of a view with UNION and SELECT ... FOR UPDATE in the definition fails with error "ER_PARSE_ERROR (1064): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near..." (MDEV-29537)
INSERT...SELECT on MyISAM or ARIA tables are replicated by MariaDB Enterprise Cluster (Galera) (MDEV-34647)
SELECT MIN on Spider table returns more rows than expected (MDEV-26345)
Can't selectively restore sequences using innodb tables from backup (MDEV-32350)
LOAD DATA INFILE with geometry data fails (MDEV-34883)
Executing an UPDATE statement in prepared statement mode having positional parameter bound with an array can result in an incorrect number of updated rows in case there is a BEFORE UPDATE trigger that executes yet another UPDATE statement to change a table (MDEV-34718)
Recovery fails to note some log corruption, resulting in "log sequence number in the future" error messages, and possibly adds more corruption (MDEV-34802)
When log corruption is noted, the server can now only be started when using the option innodb_force_recovery
Unexpected error "Row size too large (> 8123)..." for a correct INSERT after a instantly dropped BLOB column (MDEV-35122)
Wrong binlog timestamps on secondary nodes of MariaDB Enterprise Cluster (MENT-2164)
When the MariaDB Enterprise Audit Plugin is configured to log ACL queries, a statement CREATE USER .. IDENTIFIED VIA ed25519 USING PASSWORD(...) is logged including the password (MENT-2181)
When the MariaDB Enterprise Audit Plugin is configured to log ACL queries, passwords are masked for CREATE USER .. IDENTIFIED BY, but not for CREATE OR REPLACE USER, or SET STATEMENT ... FOR CREATE USER (MENT-2188)
Unnecessary copying of log records by MariaDB Enterprise Backup when further transaction commits are blocked by BACKUP STAGE BLOCK_COMMIT (MENT-2133)
It also would cause further effort of rolling back incomplete transactions after the backup is restored
Aria internal temporary tables unnecessarily write all changed blocks to disk when the table is closed at end of query (MENT-2182)
For the complete list of changes in this release, see the changelog.
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 10.5.27-21 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "MariaDB Corporation Engineering Policies".
MariaDB Enterprise Server 10.4.28-19 is a maintenance release of . This release includes a variety of fixes.
MariaDB Enterprise Server 10.4.28-19 was released on 2023-03-13.
Output for the function has been optimized to reduce the number of lines needed. (MDEV-19160)
For compatibility, has been added as an alias to JSON_DETAILED(). (MDEV-19160)
This release incorporates Galera library version 26.4.14
When executing a DELETE or UPDATE with a subselect, the server can crash. (MDEV-10087)
When performing an incremental backup, MariaDB Enterprise Backup does not reflect databases that have been dropped and recreated. (MDEV-23335)
When DELETE HISTORY is executed for a system versioned table with a full-text index, the server can crash. (MDEV-25004)
When an ALTER TABLE statement causes InnoDB to rebuild a table with a spatial index, the server can crash. (MDEV-29856)
When using SPIDER with SPIDER_DIRECT_SQL and spider_udf_ds_use_real_table=1, the server can crash. (MDEV-29855)
When executing REPLACE INTO ... PARTITION(...), the server can crash. (MDEV-29636)
Galera SST doesn't properly handle undo* files from InnoDB. As a result, SST may terminate incorrectly when --innodb-undo-tablespaces is set to 3 or more. (MDEV-30157)
With a query containing nested WINDOW clauses, the server can crash. (MDEV-30052)
When executing a SELECT from a complex view with a WHERE clause and with the setting derived_merge=on, the server can crash. (MDEV-30081)
Infinite sequence of recursive calls when processing embedded CTE, when such a reference has the same table name as the name of the CTE. (MDEV-30248)
A deadlock between InnoDB statistics updates and BLOB insert can result in a server hang. (MDEV-29883)
GET_LOCK() / RELEASE_LOCK() calls are not rejected by MariaDB Enterprise Cluster. (MDEV-27115)
With a cluster-wide conflict, MariaDB Enterprise Cluster can hang if a binlog purging is running (such as in the case that binlog expiration is configured). (MDEV-29512)
mariadbd hangs when running with --wsrep-recover and --plugin-load-add=ha_spider.so options. (MDEV-30370)
log_query_not_using_indexes=OFF is ignored when log_slow_filter is an empty string. (MDEV-21187)
MariaDB Enterprise Backup returns with an error when the option --galera-info is used for creating a backup of a MariaDB Server instance, which is not a MariaDB Enterprise Cluster node. Failed to get master wsrep state from SHOW STATUS (MDEV-30293)
When querying a table with virtual generated columns using full text search, these columns are not generated and are always NULL in the result set. (MDEV-29169)
Identifiers are not quoted for the output of SHOW GRANTS. Using the result to execute the grant statement results in a syntax error if reserved keywords are used. (MDEV-30056)
Spider table with CHARSET utf32/utf16/ucs2 tries to set client CHARSET to unsupported value. (MDEV-29562)
Incorrect results are returned when using STDDEV_SAMP() with a view. (MDEV-19071)
A spurious error can be generated: ERROR 1292 (22007) at line 15: Truncated incorrect DECIMAL value:
When running mariadb-binlog using the option --verbose, cannot read row events with compressed columns: Error: Don't know how to handle column type:... (MDEV-25277)
Incorrect results are returned with outer join, merged derived table, and view. (MDEV-28602)
Some DDL, such as ANALYZE, can be completed out of order on parallel replicas. (MDEV-30323)
seconds_behind_master is incorrect for delayed parallel replicas. (MDEV-29639)
APT reports the message:
dpkg: warning: downgrading galera-4 from 26.4.12-buster to 26.4.12-bullseye ([MDEV-29392](https://jira.mariadb.org/browse/MDEV-29392))
function added.
In alignment with the enterprise lifecycle, MariaDB Enterprise Server 10.4.28-19 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64 Red Hat Enterprise Linux 8 packages)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see MariaDB Corporation Engineering Policies.
MariaDB Enterprise Server 10.5.29-23 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2025-06-11
MariaDB Enterprise Server 10.5.29-23 is a maintenance release of 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.29-23 was released on 11 Jun 2025.
This release incorporates MariaDB ColumnStore engine version 5.6.9.
MariaDB effectively running as root CAP_DAC_OVERRIDE ()
my_getopt compares option names case sensitively ()
updated to
Assertion InnoDB searching row in wrong partition for multiple system versioned DELETE with same timestamp and same multistatement transaction ()
ALTER TABLE…SEQUENCE does not work correctly with InnoDB ()
Server aborts while deleting the record in spatial index ()
Upgrades fail on Windows ()
Field pointer may be uninitialized in fill_record ()
Incorrect undo logging for indexes on virtual columns whose index ID does not fit in 32 bits ()
With wsrep_ignore_apply_errors = 0, the node crashes due to assertion thd->is_error() failed in Sql_cmd_dml::prepare(), shown in the logs ()
In some cases, if there are MDL locks (for example, when LOCK TABLE is executed), a node could get stuck in the system thread due to incorrect handling of metadata locks (MDL) in server code when a transaction was BF aborted. ()
Regression after the fix for - sometimes the server crashes with an assertion in wsrep::transaction::before_rollback(), for example when using OPTIMIZE TABLE on an ARIA table with wsrep_osu_method=RSU. ()
SST failure occurs when gtid_strict_mode is enabled under high load, such as OLTP load is active on the primary node. A typical symptom of this error is the presence of the diagnostic "[ERROR] mariadbd: Error writing file 'binlog'", in the debug version it is also possible to crash on assertion in the wsrep::transaction::before_rollback() function with the message "Assertion `state() == s_executing || state() == s_preparing || state() == s_prepared || state() == s_must_abort || state() == s_aborting || state() == s_cert_failed || state() == s_must_replay' failed". ()
In Galera, creating sequence with a small cache leads to signal 6 error: [ERROR] WSREP: FSM: no such a transition REPLICATING -> COMMITTED. ()
Under high load wsrep internal thread may terminate due to memory pressure conditions, but this is not a crash, however in debug version user may encounter assertion in wsrep_to_isolation_begin() function with following message: "int wsrep_to_isolation_begin(THD*, const char*, const char*, const TABLE_LIST*, const Alter_info*, const key_array*, const HA_CREATE_INFO*): Assertion `(0)' failed." ()
Assertion `commit_trx' failed in innobase_commit() (ha_innodb.cc). An INSERT with sql_log_bin=0 is still replicated in Galera (per ), despite binary logging being disabled. This results in a partial binlog bypass, requiring a two-phase commit (2PC). During 2PC, the INSERT is first prepared (entering the PREPARED state in InnoDB), and on commit, the new assertion from fails, causing a crash with "Assertion 'commit_trx' failed" in logs. ()
When a sequence is used and inserts run in parallel on multiple Galera nodes, a transaction may be aborted after passing certification. If it then attempts to roll back, the binlog statement cache—which includes reserved sequence values—may be written prematurely. This causes a crash with the diagnostic "WSREP: FSM: no such a transition REPLICATING -> COMMITTED" in the logs, as the transaction is supposed to replay and only write to the binlog during the final commit. ()
corruption when query cache cannot allocate block ()
Stack looping and SIGSEGV in Item_args::walk_args on UPDATE ()
Server crash in find_field_in_tables, Assertion `name' failed in find_field_in_table_ref ()
Long server_audit_file_path causes buffer overflow ()
Server crash when inserting from derived table containing insert target table ()
Segfault on concurrent ALTER and SELECT for partitioned table ()
ST_PointFromWKB ignores SRID argument and always creates the POINT with 0 for it's SRID ()
mariadb-dump used wrong quoting character ()
After a corrupted table on one node triggers the cluster to vote to evict a node that failed a transaction, the current master can’t commit any more and hangs. (, MENT-2081)
intended to fix spider wrapper so that it is case insensitive, among other things. However that fix was incomplete, as the udf spider_direct_sql may still require case sensitivity. fixes this. ()
Creating partitioned tables is disallowed when wsrep_osu_method=TOI and wsrep_strict_ddl=ON, preventing alteration or deletion of partitioned tables. ()
Attempting to create a CONNECT engine table results in "non-InnoDB sequences in Galera cluster" error message in logs due to an incorrect engine check. ()
MariaDB Backup returns with an error like "Error on file ./test/t1#P#p513.MYD open during `test`.`t1` table copy for partitioned MyISAM tables when running out of file handles (MENT-2089)
User without any privileges to a sequence can read from it and modify it via column default ()
User has unauthorized access to a sequence through a view with security invoker ()
The untested ha_spider::index_first_internal constructs broken queries ()
Wrong results from tables with a single record and an aggregate ()
Unexpected error 1264 'Out of Range Value for Column' when inserting into ... select ... from a spider table ()
group by handler missing constant fields when selecting from a view ()
Tests calling the udf spider_copy_tables fail with --view-protocol ()
For the complete list of changes in this release, see the .
In alignment to the , MariaDB Enterprise Server 10.5.28-22 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Red Hat UBI 8 (x86_64, ARM64)
Red Hat UBI 8 is part of the Enterprise Server Docker Image. It does not support MariaDB Enterprise Cluster (Galera) or MariaDB ColumnStore.
Some components of MariaDB Enterprise Server are supported on a subset of platforms. See for details.
This fifth release of 10.4 is a maintenance release, including a variety of fixes.
MariaDB Enterprise Server 10.4.11-5 was released on 2020-01-06.
no longer sends unnecessary warnings to the error log about maximum row size for DDL statements when and ()
Redundant writes to the redo log have been removed. ()
The default for the plugin load option plugin-maturity is now stable (MENT-240)
and the MariaDB Audit plugin trace now add the user who initiated statements with the DELAYED option. In previous versions a system user was added. (MENT-237)
MariaDB ColumnStore, a columnar storage engine, is now included with MariaDB Enterprise Server 10.4. Specific details on this component may be found in the .
no longer permits to be set to SYSLOG on Microsoft Windows. (MENT-258)
A table could not be loaded after an instant ALTER ... ADD COLUMN or ALTER ... DROP COLUMN, if the primary key is a CHAR column with variable-length encoding like UTF8 ()
In rare conditions commits could be applied in the wrong order if the replica is running in optimistic mode. ()
Primary (master) could crash when it executes and a replica (slave) reconnects having reset its connection status with the primary (e.g., CHANGE MASTER TO MASTER_USE_GTID = slave_pos). (MENT-19376)
"Out of memory" error could occur when accessing partitioned tables. ()
A crash could occur when ADD PRIMARY KEY was executed by a connection just after another connection issued an instant ADD COLUMN to the same table and if DMLs were executed at the same time. ()
A crash could occur when rowid filtering optimization is enabled using ()
Client received error SEC_E_INVALID_TOKEN when SSL is used and connecting to MariaDB Enterprise Server running on Microsoft Windows. ()
The restore of tables was not always possible if MariaDB Backup was using the parameters --incremental ()
An incomplete result set was returned when was too small. ()
A query with system versioning filters did not show an error when executed on not . ()
erroneously reported error "Found a misplaced row" for with history partition. ()
An instant operation could fail when adding a column and changing the collation on a non-indexed column. ()
Interface Changes
None.
In alignment with the , MariaDB Enterprise Server 10.4.11-5 is provided for:
Red Hat Enterprise Linux 8
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 6
CentOS 8
CentOS 7
CentOS 6
Ubuntu 18.04
Ubuntu 16.04
Debian 10
Debian 9
Debian 8
SUSE Linux Enterprise Server 15
SUSE Linux Enterprise Server 12
Microsoft Windows
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
CentOS 6, Debian 8, and Red Hat Enterprise Linux 6 are no longer supported as per the . Older releases are available from the . Instructions for installation are included as a README file within the download.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This fourth release of 10.4 is a maintenance release, including a variety of fixes.
MariaDB Enterprise Server 10.4.10-4 was released on 2019-11-18.
New option innodb_change_buffer_dump added to Debug builds. This option dumps the contents of the change buffer to the server error log at startup. This is useful when a slow shutdown cannot be performed successfully. ()
Eliminated unnecessary logging of warnings to the error log regarding maximum row size for DML statements which should be present only for DDL operations. (MENT-454)
Improved [[]] error logging to explain that GCache recovery is not possible when GCache encryption is enabled. (MENT-373)
... could overwrite binary logs if certain conditions were present. () Conditions which must be present to trigger this bug:
is executed on the MariaDB Server host, and
Configuration files from the master are used, and
Configuration files enable binary logging
If unable to upgrade to MariaDB Enterprise Server 10.4.10-4, where this bug is fixed, a workaround is available: use the --defaults option to to avoid the bug-triggering conditions by specifying a different configuration file.
Prior removal of a FULLTEXT index from an table can cause a hang on startup. ()
Removal of a FULLTEXT index from an table can cause a hang. ()
Change to a table containing a FULLTEXT index can cause Server to become unresponsive. ()
Removal of a virtual column used by an index can result in a crash. (MENT-434)
, , or on an table can cause Server to become unresponsive. ()
INSTANT ADD COLUMN on an table which includes a OREIGN KEY definition can result in a crash. (MENT-435)
INSTANT column DROP or column reorder can result in a crash. Server restart can also crash unless is set to E2E or greater. ()
Unnecessary logging of warnings to the error log regarding maximum row size for DML statements which should be present only for DDL operations. (MENT-454)
After server restart, a using a FULLTEXT index on tables can fail to return some data. ()
and MariaDB Backup, when using mbstream, recreated xtrabackup_info in the same directory as the backup file. Repeated extract of the backup could fail. ()
mysqld_multi.sh script could not be launched and returned a syntax error. (MENT-433)
Though not supported on Microsoft Windows, the system variable for the Audit plugin accepted a SYSLOG value. ()
FOREIGN KEY constraints have been ignored during when parent table is . ()
from child table with FOREIGN KEY was not possible when the table is . ()
cannot perform GCache recovery when GCache encryption is enabled, but no warning was sent to the error log. (MENT-373)
Installing MariaDB Enterprise Server from repository failed on CentOS 7 due to package dependencies. (MENT-420)
WARN_INNODB_PARTITION_OPTION_IGNORED error code added
In alignment with the , MariaDB Enterprise Server 10.4.10-4 is provided for:
CentOS 8
CentOS 7
CentOS 6
Debian 10
Debian 9
Debian 8
Red Hat Enterprise Linux 8
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 6
SUSE Linux Enterprise Server 15
SUSE Linux Enterprise Server 12
Ubuntu 18.04
Ubuntu 16.04
Microsoft Windows
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
CentOS 6, Debian 8, and Red Hat Enterprise Linux 6 are no longer supported as per the . Older releases are available from the . Instructions for installation are included as a README file within the download.
This page is: Copyright © 2025 MariaDB. All rights reserved.
CVE (with cve.org link)
CVSS base score
5.5
4.9
4.9
CVE (with cve.org link)
CVSS base score
6.5
6.5
4.4
MariaDB Enterprise Server 11.6.12-8 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2023-05-24
MariaDB Enterprise Server 10.6.12-8 is a maintenance release of MariaDB Enterprise Server 10.6. This release includes a variety of fixes. Users of MariaDB Enterprise Server 10.6.12-7 are encouraged to upgrade. Additional steps are required if upgrading from Enterprise Server 10.6.12-7 to 10.6.12-8.
The next scheduled maintenance release for MariaDB Enterprise Server is 2023-06-12.
MariaDB Enterprise Server 10.6.12-8 was released on 2023-05-24.
CVE (with link)
CVSS base score
N/A (Medium)
#1:
MariaDB CVEs are assigned a word rating instead of a CVSS base score. See the MariaDB Engineering Policy for details.
MariaDB Enterprise Server 10.6.12-8 has a special upgrade procedure that only applies to users who previously deployed MariaDB Enterprise Server 10.6.12-7.
The following procedure is required to truncate the undo log tablespaces:
Upgrade from ES 10.6.12-7 to 10.6.12-8 using the normal upgrade procedure.
After the server has been started with ES 10.6.12-8, set innodb_fast_shutdown=0:
SET GLOBAL innodb_fast_shutdown=0;Shutdown the server:
$ sudo systemctl stop mariadbChange innodb_undo_tablespaces to a different value than its current value:
[mariadb]
innodb_undo_tablespaces=4Start the server:
$ sudo systemctl start mariadbThe optimizer can now use column histogram data when estimating output cardinality of hashed (BNL-H) joins. (MDEV-30812)
Starting with this release, the has a new flag called hash_join_cardinality that can enable the feature.
When enabled, the optimizer uses a formula that provides conservative estimates.
To enable this functionality in a given session, set the flag using the :
SET optimizer_switch='hash_join_cardinality=on';When a prepared statement is used to query a view that contains a UNION, the server can crash. (MDEV-31102)
When is set and is greater than 0, replica servers can hang if data is inserted into tables with a sequence. (MDEV-29621)
In previous releases, the replica server would treat full inserts into the sequence as DDL statements, which would cause it to acquire an exclusive lock on the sequence table. If another parallel replication thread is waiting on the lock at the same time, the two threads can deadlock.
Starting with this release, replica servers manage their locks better to avoid deadlocks in this scenario.
When InnoDB splits or merges a B-tree page, the server can hang due to a race condition. (MDEV-29835)
When InnoDB undo log truncation is enabled by setting innodb_undo_log_truncate=ON, if some undo log tablespace exceeds innodb_max_undo_log_size, the server can hang. (MDEV-30863)
In previous releases, InnoDB chooses an undo log tablespace for truncation and marks all the related rollback segments with the state "truncation in progress". When the truncation is completed, InnoDB fails to re-enable the rollback segments. Consequently, if there are further write transactions before the server is shut down, the transactions must wait for usable rollback segments in a busy-loop. Since InnoDB does not re-enable the rollback segments, the transactions wait indefinitely.
Starting with this release, InnoDB properly manages the state of rollback segments when InnoDB undo log truncation is enabled.
For certain data distributions, the optimizer histogram code can produce wrong selectivity, which can lead to performance degradation. (MDEV-31067)
The optimizer does not take into account the selectivity of the equality conditions for Block Nested Hash (BNL-H) joins.
In previous releases, this issue can cause mis-estimates and bad query plans when running with set to 3 or higher (the default is 2).
When the lateral derived optimization is used to execute a query, the derived table is re-filled on every incoming row combination, even if the parameter values have not changed. (MDEV-26301)
When is optimistic and is greater than 0, can fail with an out-of-order binlog error if the sequence uses InnoDB. (MDEV-31077)
In previous releases, the following error can be raised:
Last_Error: Error 'An attempt was made to binlog GTID 0-1-100 which would create an out-of-order sequence number with existing GTID 0-1-100 and gtid stric mode is enabled' on query. Default database: 'test'. Query: 'alter sequence s1 restart with 1' will be shown.InnoDB does not free undo logs when they are no longer needed. (MDEV-31234)
In the previous release, when innodb_undo_tablespaces is set to 0, the undo logs would be stored in the InnoDB system tablespace (ibdata1 by default), so this issue could cause the InnoDB system tablespace to grow indefinitely.
Starting with this release, InnoDB frees undo logs when they are no longer needed.
For servers that previously ran ES 10.6.12-7, a special procedure is required to truncate the undo log tablespaces after the upgrade is complete.
InnoDB history list length increases faster in MariaDB Enterprise Server 10.6 compared to MariaDB Enterprise Server 10.5 for the same load. (MDEV-29401)
This release incorporates MariaDB ColumnStore engine version 23.02.3.
hash_join_cardinality=off has been incrementally added to the default value of the system variable.
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 10.6.12-8 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 18.04 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Windows packages are not currently available for this release.
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see MariaDB Corporation Engineering Policies".
An overview of changes, improvements, and what's new in MariaDB Enterprise Server 10.6
MariaDB Enterprise Server 10.6 introduces the new features listed below.
DDL (Data Definition Language) statements are now atomic operations. If the DDL statement is not fully successful, the operation will be rolled back. When the server crashes or is killed in the middle of a DDL statement, the operation is rolled back during crash recovery when the server is restarted.
During crash recovery, the server uses the DDL log to determine if an operation needs to be rolled back. When the is enabled, the crash recovery process ensures that the successful operations are written to the binary log and that the unsuccessful operations are not.
By default, the DDL log is at ddl-recovery.log in the . When DDL statements are being executed, the DDL log is synchronized to disk very frequently. If you want to configure a custom path for the DDL log, the option can be used.
As of this release, the following storage engines fully support atomic DDL:
ignores already-locked rows.
One use case for this feature is within applications that sell a limited resource, such as ticketing, rentals, or seat-based sales. In these applications, you need a way to display only the available inventory. This can be accomplished by querying available inventory and skipping locked rows.
allows database-specific and table-specific filters.
For example:
returns a table from JSON data.
Queryable rows and columns are produced based on the JSON input, but are not stored in a table on disk. Column mappings are defined in a JSON path expression.
Prior to this release, the and functions could be used to retrieve values from JSON data on a per-column basis.
With JSON_TABLE():
JSON data can JOIN with existing tables.
A table can be created from JSON data using against a JSON_TABLE().
enables extraction of nested data from JSON arrays and objects.
sys schema provides a set of views, functions, and stored procedures to aid DBA analysis of the .
Additional syntax is supported for
OFFSET start { ROW | ROWS } FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { ONLY | WITH TIES } is an alternative to LIMIT .. OFFSET
The WITH TIES option requires the use of ORDER BY and allows the number of rows to exceed the FETCH count to ensure that the final row in the chunk includes any additional rows that have the same values in the ORDER BY fields (eliminating the need to fetch the next chunk to check for spill-over).
For example, the following query can return more than 10 rows if there are more username rows that match the username in the 10th row (the order of the purchase values within the complete set of each username's records is non-deterministic):
For example, the following query specifies ONLY instead of WITH TIES, so the query can't return more than 10 rows:
When , consistency is guaranteed for a Primary server in an HA (Primary/Replica) topology when using semi-synchronous replication.
Prior to this release, when using semi-synchronous replication, if a Primary crashed before sending a transaction to the Replica, on restart the Primary could recover incomplete InnoDB transactions when rejoining as a Replica.
With this release, when using semi-synchronous replication and with rpl_semi_sync_slave_enabled=ON, incomplete transactions will be rolled-back on the Replica, ensuring the new Primary (former Replica) and new Replica (former Primary) remain in sync.
Expanded compatibility with Oracle through new functions:
Added function
Added function
Added function
Added function
Expanded compatibility with Oracle through enhancements:
With sql_mode=ORACLE added MINUS as an alias to EXCEPT
With sql_mode=ORACLE improved SYSDATE to allow use without parenthesis.
With sql_mode=ORACLE supports a pseudo-column name as an alias for the function.
With sql_mode=ORACLE subqueries in a FROM clause do not require the AS clause.
Enhanced compatibility with Sybase SQL Anywhere through [sql_mode=EXTENDED_ALIASES]
With sql_mode=EXTENDED_ALIASES, alias resolution and use of column aliases in the SQL list and WHERE clause.
With sql_mode=EXTENDED_ALIASES, support use of an alias in the list before the alias is defined.
With sql_mode=EXTENDED_ALIASES, if the same label is used for an alias and a column, the alias is used.
The UUID data type has been backported for more efficient storage of UUID values.
The new is available to set the maximum execution time for queries on replica nodes.
To simplify maintenance, the supports new clauses to convert tables to partitions, and partitions to tables
In previous releases, the number of undo logs was configurable before InnoDB was initialized. With this release, the number of undo logs can also be configured after install
has been backported
has been backported
A new view sys.privileges_by_table_by_level in the sys schema, to show privileges granted to a table on a global, schema, or table level
Option s3_debug can now be changed without the need to restart the server
New Time Zone Options %Z and %z for DATE_FORMAT
Server Audit Log with Milliseconds Precision Timestamps
See also:
MariaDB Enterprise Server 10.5.25-19 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2024-06-11
MariaDB Enterprise Server 10.5.25-19 is a maintenance release of 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.25-19 was released on 2024-06-11.
Galera has been updated to 26.4.18
The GCS protocol version has been changed, preventing a downgrade of individual nodes of a MariaDB Enterprise Cluster
This release incorporates MariaDB ColumnStore engine version 5.6.8.
With --gtid-ignore-duplicate set a transaction can be double-applied from another replication source if at applying the transaction from the initial source required retrying in parallel execution. ()
Backups of server with innodb_encrypt_tables=1 can become corrupted in mariadb-backup --prepare ()
The TIMESTAMP value of '1970-01-01 00:00:00' can be inserted via a INSERT ...FROM ... SELECT in strict mode although it should result in an error ()
Galera-replicated events can in some cases contain the wrong time when versioning is used ()
wrong row targeted with "insert ... on duplicate" and "replace", leading to data corruption ()
Using current MariaDB Enterprise Backup against an older server can result in a crash, as the system variable @@aria_log_dir_path does not exist ()
When using a non-default setting for "innodb_change_buffering", the server can crash ()
When a fulltext search query with more than 4G inserted or updated rows is executed, the server can crash ()
For encrypted table spaces an ALTER operation can hang when an encryption thread works on the same tablespace ()
EXPLAIN statement that uses a subquery which has a query plan that A) will examine less than @@expensive_subquery_limit rows and B) will use join buffer could cause a crash. ()
For a SPIDER table, when deleting partitions from a table, the server can crash ()
When replaying a binary log with mariadb-binlog, the tool can crash if the binary log includes statements related to sequences, like SELECT NEXTVAL(s) ()
MariaDB Enterprise Backup fails with the following error message if the prepare step of the backup encounters a data directory which happens to store wsrep xid position in TRX SYS page: ()
Assertion when user commits an empty transaction for DDL that was killed during certification: ()
Graceful node shutdown can crash garbd and MariaDB Enterprise Cluster can go non-primary when SSL is used ()
Wrong result sets are returned by the second execution of prepared statements from selects using mergeable derived tables pushed into external engine ()
A query that uses a derived table that employs constructs with side-effects, like (SELECT @var:=... ) as derived_tbl, could produce wrong results ()
ORDER BY COLLATE improperly applied to non-character columns which is resulting in an unordered result set ()
Spider/ODBC passed double quotes for names, in ANSI style (MENT-958)
Default charset doesn't work with PHP MySQLi extension ()
Bad SEPARATOR value in GROUP_CONCAT on character set conversion can lead to a wrong result ()
Spider returns parsing failure on valid left join select by translating the on expression to () ()
When creating a temporary InnoDB table with CREATE TEMPORARY TABLE ... AS SELECT ... from an InnoDB table as a non SUPER / READ ONLY ADMIN user, the following error is shown instead of creating the table: ()
CREATE TEMPORARY TABLE (without SELECT), INSERT ... SELECT, and CREATE ... LIKE are not affected by this bug
A view created via JSON_ARRAYAGG returns an incorrect JSON object ()
Mariadb-dump trusts the server and does not validate the data. A modified dump file can include system commands used by the mariadb-client. Dumps are now loaded in the sandbox mode by default, a system call will result in an error ()
Updating a case insensitive large unique key with an insensitive change of the value can result in a duplicate key error ()
When setting binlog_annotate_row_events=1, an event of binlog file can be truncated ()
Wrong result with semi-join and split-table derived table from queries with an IN subquery predicate in the WHERE clause and a derived table in the FROM clause to which split materialized optimization could be applied. ()
With galera, correct transactions could not be committed with the following error when accessing system tables for read, and write to innodb tables in the same transaction: ()
A wrong result on 2-nd execution of a prepared statement is possible when selecting from a view using a merged derived table ()
Original IP not shown in network related error messages when proxy_protocol is in use ()
Incorrect DEFAULT expression evaluated in UPDATE ()
group by optimization incorrectly removing subquery where subject buried in a function ()
Table is getting rebuild with ALTER TABLE ADD COLUMN although it should be an instant operation not requiring a rebuild ()
Aggregation functions fail to leverage uniqueness property ()
Generally, computing aggregate function with DISTINCT argument: aggregate_func(DISTINCT col1, col2, ...) requires producing a de-duplicated set of its arguments, which can be CPU-intensive
When we select from one table the argument list includes the table's PRIMARY (or UNIQUE) key:
then the arguments are guaranteed not to have duplicates. Such cases are now detected allowing the optimizer to skip de-duplication.
For the complete list of changes in this release, see the .
In alignment with the , MariaDB Enterprise Server 10.5.26-20 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
MariaDB Enterprise Server 10.4.33-23 is a maintenance release of 10.4. This release includes a variety of fixes.
MariaDB Enterprise Server 10.4.33-23 was released on 2024-03-11.
Galera has been updated to 26.4.17
BLOB corruption on UPDATE of PRIMARY KEY with FOREIGN KEY ()
Corrupted table after instant ADD COLUMN failed due to attempting to exceed the maximum record length ()
ALTER command, before entering TOI, tries to collect foreign keys of a table. For this it opens the main table with SHARED_HIGH_PRIO MDL lock which disregards any waiting queued lock requests. If there is a DML operation running on the same table, and a real TOI operation as well, this TOI operation tries to BF-abort DML operation. At the same time, because ALTER is not yet TOI, and it runs with HIGH_PRIO MDL lock, it disregards waiting TOI operation, and gets the lock and immediately gets BF-aborted either by TOI directly or by aborted DML operation. Since there is no wsrep transaction for ALTER, it gets BF-aborted by setting killed state for the tread. But before entering TOI, ALTER doesn't check killed state, so it replicates, and applies on the other nodes successfully, but then it rolls back on the local node, causing inconsistency ()
Crash while trying to complain "unsupported meta-data version" on ALTER TABLE...IMPORT TABLESPACE with MySQL 8.0 files ()
Wrong table attribute PAGE_COMPRESSED=1 shown for tables in the InnoDB system tablespace ()
MariaDB crashes with foreign_key_checks=0 when changing a column and adding a foreign key at the same time ()
Sometimes node has been dropped from the cluster on startup Shutdown with async replica () with diagnostics like:
and
GTIDs may diverge in Galera cluster after CREATE TABLE AS ()
This can subsequently lead to diagnostics like:
and node crash:
SHOW SLAVE STATUS can deadlock an errored replica when a parallel replica worker gets killed at about when SHOW is issued ()
When executing SELECT BINLOG_GTID_POS(@binlog_file...) with the user variable being NULL, the server can crash ()
A Query that uses a specific SQL construct can cause a server crash. The construct is an equality comparison of table-less row subquery and a subquery that has a UNION operation at the top level: (SELECT 'foo', 'bar') = (SELECT col1, col2 FROM t1 ... UNION ...) ()
A DELETE with ORDER BY and semijoin optimization can cause a crash ()
Possible crash when lateral derived in a query is guaranteed to return no rows ()
When using EXCHANGE PARTITION to replace a partition with a table, the server can crash if the to be exchanged table is using a virtual column which is not matching the partitioning key ()
When using INSERT DELAYED with a table using virtual columns, the server can crash ()
When using SELECT from a derived table with using AS OF, the server can crash ()
When using JSON_CONTAINS_PATH in a comparison in a prepared statement, the server can crash on execution of the statement ()
Server hangs on DROP DATABASE after a failing LOCK TABLES on Spider table : ()
When using two temporary tables in OPTIMIZE TABLE, executed as a prepared statement, the server can crash ()
When calling SP invoking another SP with a parameter requiring a type conversion, the server can crash ()
SHOW WARNINGS can show wrong foreign key related warnings/errors from an earlier transaction for InnoDB ()
LeakSanitizer errors in mem_heap_create_block_func upon query from I_S.INNODB_SYS_TABLES with LIMIT ROWS EXAMINED ()
Query from I_S.INNODB_SYS_INDEXES exceeding LIMIT ROWS EXAMINED causes ER_UNKNOWN_ERROR and LeakSanitizer errors in rec_copy_prefix_to_buf_old ()
Unexpected ER_ERROR_ON_RENAME upon DROP non-existing FOREIGN KEY with ALGORITHM=COPY ()
FOREIGN_KEY_CHECKS does not prevent non-copy alter from creating invalid FK structure ()
Secondary indexes on VARCHAR columns may be corrupted when the VARCHAR is extended so much that a column prefix index must be used ()
Spider: Valid LEFT JOIN results in ERROR 1064 ()
Syntax error upon query with subquery from Spider table ()
Spider doesn't recognize SEMI-JOIN ()
wsrep_provider_options can be truncated on deep and long directory paths with diagnostics like: "Warning 1265 Data truncated for column 'VARIABLE_VALUE' at row 1" in the server log ()
Mariadb-dump option --delete-master-logs is ignored ()
multi source replication filters breaking GTID semantic ()
wsrep_gtid_domain_id is ignored on any node other than bootstrapped node when the wsrep_gtid_mode is set to ON ()
A connection can control RAND() in following connection if used in conjunction with set rand_seed1, rand_seed2 ()
mariadb-upgrade does not remove mysql.plugin entries for plugins that became bundled. Error message "[ERROR] mariadbd: Plugin 'unix_socket' is already installed." is shown when upgrading ()
TaskMax not set to infinity in the MariaDB systemd unit, therefor a lower number than defined in max_connections might be possible for the number of connections ()
If storage engine Spider is loaded upon server startup, Spider related system, and status variables are not available (MENT-2043)
Regular expressions cannot be used in queries on tables of type SPIDER ()
MariaDB Enterprise Backup sometimes shows the error Can't open shared library '/file_key_management.so' (errno: 2, cannot open shared object file: No such file, or directory) when the option --target-dir is not used with --prepare ()
The database part is not case sensitive in Stored Procedure names. This can lead to using the wrong stored procedure, if the same database name is used as lower, and uppercase. ()
CREATE UNIQUE INDEX can fail with an incorrect "ERROR 1286 (42000): Unknown storage engine 'partition'" ()
After successful connection, server sets SERVER_STATUS_AUTOCOMMIT in server_status in the OK packet although the global variable autocommit=0 is set ()
In some cases it is possible to create a Spider table which is referencing to a table on the same instance although spider_same_server_link=0 is set ()
Spider fails to auto-discover a table structure with ERROR 12500 (HY000): unknown ()
REGEXP_REPLACE treats empty strings different than REPLACE in ORACLE mode ()
The Enterprise Audit Plugin does not always report the user name (MENT-2035)
An ALTER using ALGORITHM=INPLACE or adding new indexes can increase the table space file size ()
Operations that involve extending InnoDB files can be extremely slow when the data directory resides on an NFS server that uses a smaller block size than 4096 bytes ()
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 10.4.33-23 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server are supported on a subset of platforms. See MariaDB Engineering Policies for details.
MariaDB Enterprise Server 10.4.32-22 is a maintenance release of 10.4. This release includes a variety of fixes. Users of MariaDB Enterprise Server 10.4.31-21 are encouraged to upgrade. Additional steps are required if upgrading from Enterprise Server 10.4.31-21 to 10.4.32-22.
MariaDB Enterprise Server 10.4.32-22 was released on 2023-12-12.
CHACHA20-POLY1305 support when WolfSSL is used ()
The semi-synchronous replication magic number error "[ERROR] Read semi-sync reply magic number error" has been improved to show the semi-sync acknowledgment reported with printing the hex-dump of the failing network packet ()
Disable TLS v1.0 and 1.1 for MariaDB. TLSv1.1 removed from the default tls_version system variable. ()
A warning is shown if TLSv1.0 or TLSv1.1 are selected.
With binary log enabled transactions that are filtered out of binlogging by any of binlog_{do,ignore}_db option may be lost in the engine. ()
DROP INDEX followed by CREATE INDEX may corrupt data ()
Assertion fails in MDL_context::acquire_lock upon parallel replication of CREATE SEQUENCE ()
A hang or crash could be observed in parallel replication of STATEMENT binlog format transactions modifying temporary tables. E.g. witnessed in rpl.rpl_parallel_temptable failure. ()
A failure that occurs due to unnecessary replication of CACHE INDEX and LOAD INDEX INTO CACHE although this is a local operation. ()
Rowid filter does not process a storage engine error correctly. A query that's executing a locking read and is using the Rowid Filter could cause a server crash if it has encountered a Lock Wait Timeout or Deadlock or a similar error when building the Rowid Filter. ()
Crash when HAVING in a correlated subquery references columns in the outer query ()
Due to a flaw in the SST scripts, it was not possible to execute SST when datadir, or some innodb log directory points to a path that is actually a symlink to the actual data directory. ()
Server can crash when a table of type SPIDER starts with a comment string which is not a parameter for SPIDER. ()
Node crashes when trying to execute "CREATE TABLE ... WITH SYSTEM VERSIONING AS SELECT ..." ()
Lock wait timeout with INSERT-SELECT, autoinc, and statement-based replication ()
Too strict assertion which leads to a problem since with the BINLOG statement we can execute binlog events on master also (not only in applier). ()
Galera cannot support wsrep_forced_binlog_format=[MIXED|STATEMENT] during CREATE TABLE AS SELECT. But a crash in the form of an assertion is an overreaction. Now a warning is issued instead. ()
When using ROW_FORMAT=COMPRESSED, the server can crash with the warning "InnoDB: 2048 bytes should have been read. Only 0 bytes read. Retrying for the remaining bytes." in the server log ()
Possible server crash when setting SPIDER option spider_delete_all_rows to 0 and delete all rows of a spider table ()
Use of nested row constructs in the left expression of an IN subquery should produce an error. Example: (a,(b,c)) IN (SELECT ...). In some degenerate cases, the error was not detected, and this causes a crash at a further stage in query processing. ()
A table-less subquery with a LIMIT clause with non-zero offset, like ( SELECT two LIMIT 1 OFFSET 1) can produce unexpected results. If used inside ORDER BY, it can cause a crash. ()
Possible crash in the full-text search plugin parser when using FULLTEXT...WITH PARSER. ()
Intermittent crashes when using SEQUENCE in combination with Galera ()
When two clients execute FLUSH TABLES WITH READ LOCK/UNLOCK TABLES on a Galera node, the node would sometimes get stuck in a paused state. This can cause the next requests to fail. ()
Sometimes a node has been dropped from the cluster on startup/shutdown with async replication enabled due to inconsistency issues with the mysql.gtid_slave_pos table (between master and replica nodes), because previously this table was not previously replicated within the cluster. ()
Server crashes in check_sequence_fields upon CREATE TABLE .. SEQUENCE=1 AS SELECT .. ()
Crash when searching for the best split of derived table ()
When a new user is connecting or a user is changing the password while FLUSH PRIVILEGES is executed, the server can crash (MENT-1707)
Prefix keys for CHAR return error "ERROR 1062 (23000): Duplicate entry 'ß' for key 'a'" for MyISAM and Aria when inserting data ()
Possible wrong results of DISTINCT with NOPAD collations when SET big_tables=1; is set ()
Missed kill when the SQL thread goes to wait for parallel slave worker queues to drain. KILL query did not affect a replication thread, which remained alive unexpectedly by the user. ()
InnoDB tries to purge non-delete-marked records of an index on a virtual column prefix. An error like "InnoDB: tried to purge non-delete-marked record in index b of table test.t" is shown in the server log ()
lock_row_lock_current_waits counter in information_schema.innodb_metrics may become negative ()
SHOW REPLICA STATUS Last_SQL_Errno race condition on Errored replica restart. A contradictory YES of slave_running_status and an error code in Last_SQL_Errno will be shown ()
Auto-increment no longer works for explicit FTS_DOC_ID ()
In some cases, replaying transactions on other MariaDB Enterprise Cluster nodes results in an wrong "Failed to insert streaming client" warning ()
Wrong bit encoding using COALESCE ()
getting error 'Illegal parameter data types row and bigint for operation '+' ' when using ITERATE in a FOR..DO ()
While checking for altered column in foreign key constraints, InnoDB fails to ignore virtual columns ()
seconds_behind_master is inaccurate for Delayed replication ()
The wsrep_sst_method variable can be set to an invalid value using the SET statement. ()
Misleading help text for mysqlbinlog (mariadb-binlog) -T/--table option ()
mbstream breaks page compression on XFS ()
MyISAM tables took transactional metadata locks although there were no active transactions. ()
"rpm --setugids" breaks PAM authentication ()
A multi-row Insert into an empty table fails if the table has a unique index using hash. CHECK TABLE returns with "Table 't1' is marked as crashed and should be repaired" ()
wrong table name in InnoDB's "row too big" errors ()
Slow log Rows_examined for the slow_log can be out of range. In this case the server log includes "([ERROR] Unable to write to mysql.slow_log)" ()
An incorrect examined rows number is used in some cases like in the slow query log, with LIMIT ROWS EXAMINED, or with ANALYZE FORMAT=JSON when a query gets executed inside of a function. Each stored function call doubles the current count during processing ()
Optimize is_file_on_ssd() to speedup opening tablespaces on Windows ()
Significant slowdown for query with many outer joins ()
An incorrect examined rows number is used in some cases like in the slow query log, with LIMIT ROWS EXAMINED, or with ANALYZE FORMAT=JSON when an executed query includes a stored function Each stored function call doubles the current count during processing ()
Parallel replication deadlock victim preference code erroneously removed. As a result, parallel slave could retry transaction execution more times than necessary. ()
mysql_install_db doesn't properly grant proxy privileges to all default root user accounts ()
The second node cannot be started because Galera SST rsync wants to replicate snapshot directory when datadir is on a NetApp storage with NFS access ()
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 10.4.32-22 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server are supported on a subset of platforms. See for details.
MariaDB Enterprise Server 10.4.27-18 is a maintenance release of . This release includes a variety of fixes.
MariaDB Enterprise Server 10.4.27-18 was released on 2022-12-21.
The view shows details about the InnoDB temporary tablespace, which is the tablespace where InnoDB temporary tables are stored. ()
Starting with this release, the details about the InnoDB temporary tablespace can be shown by querying for the name innodb_temporary:
When a table's default collation is set to the default collation for the table's character set, shows the COLLATE clause. ()
In previous releases, MariaDB Enterprise Server reduced the size of SHOW CREATE TABLE output by excluding the COLLATE clause if the table's default collation was set to the default collation for the table's character set.
When a column is renamed in a partitioned table with using the , the table can be corrupted. ()
When the InnoDB storage engine performs change buffer operations, the can overflow, which can cause table corruption. (MENT-1661, )
When a query contains an IN/ALL/ANY predicand and the subquery contains a GROUP BY clause with an IN/ALL/ANY predicand with a single-value subquery as the left operand, the server can crash. ()
If an InnoDB table contains a foreign key constraint and the child table's DATABASE_NAME/TABLE_NAME.ibd is longer than 330 characters, when the parent table is renamed, the server can crash. ()
When a DDL statement is executed using the , and is set, the server can hang. (, )
When renaming a table to a long name, the server can crash. ()
When an causes InnoDB to rebuild a table with a spatial index, the server can crash. ()
When an InnoDB temporary table contains a spatial index, the server can crash if the temporary table is dropped due to DROP TEMPORARY TABLE or client disconnect. ()
When querying a partitioned table using the PARTITION syntax, if the WHERE clause results in an index merge, the server can crash. ()
When detecting CTE dependencies of nested CTEs that include one or more recursive CTEs, infinite recursion can occur until the server crashes. ()
When the is configured to use the bundled wsrep_notify.sh script, the server can hang during startup. ()
When selecting from InnoDB's (such as , , and ), if connections with open XA transactions are disconnected or killed at the same time, the server can crash. ()
For some queries that involve tables with different but convertible character sets for columns taking part in the query, a repeatable execution of such queries in the prepared statement mode or as part of a stored routine can crash the server. ()
When executing a SELECT .. UNION .. SELECT or statement, the server can crash. ()
When is set and a view that includes a subquery is queried, the server crashes. ()
When the rolling upgrade procedure for MariaDB Enterprise Cluster (powered by Galera) is used to upgrade from ES 10.3 to ES 10.4, the joiner nodes can crash after the upgrade to ES 10.4. ()
In previous releases, the on the joiner node could contain the following error about the crash:
When an application-time period with an empty name is added to a table using , the server can crash. ()
In previous releases, statements like the following could cause the server to crash:
When the Spider storage engine's ODBC foreign data wrapper is used with MariaDB Connector/ODBC 3.1.10, and later, the server can crash. (MENT-1415)
In the presence of replication filters, revoking privileges from a non-existing user on a primary (master) breaks replication on the replica (slave). ()
When is set on a replica node, the replica node does not skip replicated . ()
When a Spider table has a prefix index, query results can be incorrect. ()
InnoDB can extend tablespace files when additional capacity is not required. ()
When an InnoDB table is being rebuilt, and a BLOB is updated during the online rebuild, a memory leak can occur. ()
When a view is queried using a prepared statement, the query fails with the error code. ()
In previous releases, the following error would occur:
When an InnoDB table contains virtual generated columns that are indexed, InnoDB fails to purge secondary index records. ()
When using the InnoDB adaptive hash index, non-locking reads can return wrong results due to a potential ACID violation. (, , )
When is used on a temporary table, an empty result set is returned. ()
When a sequence is used as the default value in a table, rows inserted by an INSERT ... SELECT statement can be assigned the wrong values. ()
When a column has both a UNIQUE index and a FULLTEXT index, full-text search using MATCH(..) AGAINST(..) does not work properly. ()
If the server is started with the enabled, but the TLS certificates and keys are not configured, the server will advertise the TLS support in the handshake but will not actually be able to use it. ()
With MariaDB Enterprise Cluster, when is configured, the joiner node ignores custom values for the system variable, and the SST copies the buffer pool file to the default location instead. ()
When a TIMESTAMP column is filtered in a subquery inside the ALL operator, the results can be incorrect. ()
When the does not contain a port number, the status variable shows 0 as the port number. ()
When is enabled, performance is impacted if the rowid filter contains no elements. ()
When MyRocks is installed from a Debian package, the rocksdb.cnf configuration file gets installed to /etc/mysql/mariadb.conf.d/ instead of /etc/mysql/conf.d/. ()
When is executed, spurious errors about table rebuilds are logged. ()
In previous releases, the following messages would be logged, even though the tool already mitigated the issues itself:
In alignment with the , MariaDB Enterprise Server 10.4.27-18 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64 Red Hat Enterprise Linux 8 packages)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
MariaDB Enterprise Server 10.4.22-14 is a maintenance release of MariaDB Enterprise Server 10.4. This release includes a variety of fixes.
MariaDB Enterprise Server 10.4.22-14 was released on 2021-12-13.
Galera updated to 26.4.10
no longer enables pushdown of UDFs and Stored Functions to the Data Node by default: ()
The default value of has changed from -1 to 0
In previous releases, Enterprise Spider pushed UDFs and Stored Functions down to the Data Node by default, which could cause query results to be inconsistent.
Starting with this release, all UDFs and stored functions are evaluated on the Spider Node by default. If desired, pushdown of UDFs and Stored Functions can be explicitly enabled by setting . Testing is recommended to confirm that query results are consistent.
provide descriptions of each column in the COMMENT column option. ()
A new system variable has been added. It is required by for the replication of the MariaDB Global Transaction ID to other nodes in the cluster (MENT-932)
, powered by Galera, can crash on INSERT if the table does not have a primary key and if the data for a field exceeds 4096 bytes. ()
When an InnoDB tablespace (.ibd) file is imported using without a corresponding .cfg file, InnoDB causes a server crash. (, )
When (or ) is executed against an InnoDB table with a FULLTEXT index, InnoDB can cause a server crash. (, MENT-1198)
Resolving aggregate functions that are used in a view can cause in a crash. ()
Executing under can cause in a crash. ()
If two InnoDB tables have a and an operation cascades from the parent table to the child table, an index on a virtual generated column in the child table can become corrupt. ()
, powered by Galera, crashes with errors like: [ERROR] WSREP: Trx 236236 tries to abort slave trx 236238 ()
Server crashes when a table uses a sequence as a column default (DEFAULT NEXT_VALUE(my_seq)) and the table is used concurrently by both a prepared statement and a normal statement. ()
InnoDB causes server crash when a table is converted from utf8mb3 to utf8mb4 ()
When enabling , server crash can occur. (MENT-1307)
MariaDB Enterprise Audit occasionally hangs when rotating logs. (MENT-1339)
InnoDB sometimes causes server crash during when the imported tablespace contains columns that have been instantly reordered or dropped. The MariaDB error log contains the following error message: (, ) Schema mismatch (Index field name newcol doesn't match tablespace metadata field name for field position…
can crash due to an incorrect conflict resolution on multi-master setup. (, )
hangs while it is executing DELETE FROM mysql.wsrep_cluster, which can be seen in the process list. (, )
does not prevent replication. ()
joiner node incorrectly uses localhost for TLS certificate verification and fails to join cluster when and encrypt=3 are configured. ()
mariadb --binary-mode is not able to replay some outputs if 0 is in the data. ()
Memory leak with row-based replication can lead to high memory usage on replica servers. ()
and generate invalid SQL for some complex views. ()
When statement-based or mixed replication is used and a DML statement encounters an error in a transaction that creates or drops a temporary table, non-committed writes to transactional tables can be incorrectly replicated to replica servers. ()
joiner node fails to join cluster when and Backward Compatible SST TLS Mode is configured. ()
does not work correctly for UDF and stored functions if used in a query's WHERE conditions. ()
If an INVISIBLE column has a computed default value, an statement that doesn't specify a value for the column causes the default value to be ignored. ()
Password validation plugins (including ) cause a user's existing password hash to be removed from the server's in-memory privilege cache when the user tries to change their password to an invalid password. ()
In packets sent from the server, a column's "Original Name" field can contain the column's alias instead of original name of the column. This metadata mismatch can cause to raise an exception. ()
When using and MariaDB Replication with GTID between two clusters, MariaDB Replication between the clusters is not working. Also, system variable is missing. (MENT-1324)
With , a on a table with a Foreign Key Constraint is not replicated to other nodes. ()
On CentOS 7, auth_pam_tool has incorrect permissions. ()
In alignment with the , MariaDB Enterprise Server 10.4.22-14 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64 Red Hat Enterprise Linux 8 packages)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see .
This sixth release of 10.4 is a maintenance release, including a variety of fixes.
MariaDB Enterprise Server 10.4.12-6 was released on 2020-03-02.
The systemd start and stop timeout for the MariaDB service is now set to 900 seconds (15 minutes). ()
MariaDB ColumnStore 1.4.3 is included in this release. Specific details on this component may be found in the .
For (Galera Library 26.4.4):
Setting was not effective because it was done after the socket was connected or accepted. The default value also caused TCP receive buffer auto-tuning to be disabled. This led to sub-optimal performance in high-bandwidth WAN clusters. The default value for has been changed to auto, which lets the kernel tune the TCP receive buffer. A new variable socket.send_buf_size with a default value of auto was added to allow send buffer tuning.
The ENFORCE option for parameter slave-run-triggers-for-rbr can now be used to ensure that triggers defined on a table on the replica are executed for row-based replication (RBR) when a trigger on a primary (master) exists for this table. The LOGGING option already exists but only allows executing triggers on the replica for row-based replication if no trigger exists for this table on the primary (master). (MENT-607)
On Windows: Removed a misleading OS error 203 logged by in the error log when the datadir is defined as a network resource. ()
During a server restart, recovery could encounter an out-of-memory condition. A restart was only possible after increasing . ()
On a rollback of a large insert or update, or during a background task to purge transaction history after a large update or delete, the server could hang. ()
On a rollback or during a background task to purge transaction history due to a SPATIAL INDEX, the server could hang. ()
Crashes could occur rarely when using ALTER TABLE ... IMPORT TABLESPACE ()
Possible server crash if (default) is set and if the value for parameter pos in does not point to the beginning of an event in the binary log. ()
A replication primary (master) running in semi-sync mode could crash when is executed, and the replica reconnects using the GTID protocol. ()
could encounter a deadlock if a backup is taken from a replica with is set to a value greater than 0 ()
could crash when used in combination with FLUSH TABLES and UNLOCK TABLES (MENT-438)
The aria_pack utility crashed when running an offline datafile compression on a table. ()
Dropping a partition with wsrep_OSU_method=RSU and SESSION sql_log_bin=0 caused the (Galera) node to hang. ()
Shutdown of a replica (slave) Server could hang when is set to a value greater than 0 ()
Using to set a timeout for the statement resulted in a crash. (MENT-634)
Querying the system status variable after enabling Galera Cluster Replication in for a running server could result in a crash. (MENT-633)
Executing or on tables could lead to an unexpected SQL Error (1118): Row size too large, when (default). ()
Queries, which use window functions and implicit grouping, could return wrong results. ()
Queries which use DISTINCT COUNT(*) OVER() in the expression returned wrong results. ()
Inefficient thread handling in the thread pool, impacting any application that uses the thread pool. ()
The MariaDB Enterprise Server config file mariadb-enterprise.cnf was not registered as a config file in RPM packages. (MENT-591)
generated a SQL syntax error. (MENT-643)
A query using GROUP BY with an expression containing a field of a view could return wrong results. ()
Running the script mysql_tzinfo_to_sql for could result in inconsistent timezone information across different nodes. ()
Using the option with would cause it to run out of memory. ()
For (Galera Library 26.4.4):
GCS delivered a JOIN message even if the node was in a DONOR state.
GCache could contain mixed histories from different clusters.
GComm socket timestamping/liveness checking produced false positives during replication of large transactions, which caused excessive amounts of broken connections.
Large transactions were able to monopolize bandwidth when segmentation was configured, causing delays in messages relayed by the segment representative. The fix implements fair queuing of messages.
Due to a bug in quorum computation, two primary conflicting components were formed when the group merged and partitioned again while the new primary view was forming.
A range plan was not always used for multi-join queries. ()
An on an table adding a new first column, which is used to define the system versioning period, could lead to unexpected errors. This only happened when the transaction-based system version was used. (, )
Server could not be started when is set in a config file. (MENT-625)
system variable default value changed from 80 to 90.
In alignment with the , MariaDB Enterprise Server 10.4.12-6 is provided for:
Red Hat Enterprise Linux 8
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 6
CentOS 8
CentOS 7
CentOS 6
Ubuntu 18.04
Ubuntu 16.04
Debian 10
Debian 9
Debian 8
SUSE Linux Enterprise Server 15
SUSE Linux Enterprise Server 12
Microsoft Windows
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
CentOS 6, Debian 8, and Red Hat Enterprise Linux 6 are no longer supported as per the Older releases are available from the . Instructions for installation are included as a README file within the download.
This page is: Copyright © 2025 MariaDB. All rights reserved.
SELECT *
FROM ticketing
WHERE claimed = 0 AND section = 'B'
ORDER BY row DESC
LIMIT 10
FOR UPDATE SKIP LOCKED;{
"connect_event" : "ALL",
"table_event" : ["READ","WRITE",{"ignore_tables" : "mysql.*"}],
"query_event" : ["DDL",{"tables" : "test.t2"}]
}SELECT username, purchase
FROM user_purchases
ORDER BY username
OFFSET 305 ROWS
FETCH NEXT 10 ROW WITH TIES;SELECT username, purchase
FROM user_purchases
ORDER BY username, purchase
OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY;CVE (with cve.org link)
CVSS base score
4.9
InnoDB: Crash recovery is broken due to insufficient innodb_log_file_size!wsrep_has_changes(thd) || (thd->lex->sql_command == SQLCOM_CREATE_TABLE && !thd->is_current_stmt_binlog_format_row()) || thd->wsrep_cs().transaction().state() == wsrep::transaction::s_abortedERROR 1290 (HY000): The MariaDB server is running with the --read-only option so it cannot execute this statementTransactional commit not supported by involved engineSELECT aggregate_func(DISTINCT t1.primary_key, ...) FROM t1;[ERROR] Slave SQL: Error 'WSREP has not yet prepared node for application use' on query[ERROR] Slave SQL: Node has dropped from cluster, Gtid 1-1-1, Internal MariaDB error code: 1047" in the server log[ERROR] mariadbd: Error writing file '/opt/maria10.1/binlog/BINLOG' (errno: 1950 "Unknown error 1950")"wsrep::transaction::before_rollback(): Assertion state() == s_executing || state() == s_preparing || state() == s_prepared || state() == s_must_abort || state() == s_aborting || state() == s_cert_failed || state() == s_must_replay` failed4.9
SELECT * FROM information_schema.INNODB_SYS_TABLESPACES
WHERE name LIKE 'innodb_temporary';[Note] WSREP:
####### Assign initial position for certification: 5c410a36-23a8-11ed-a44c-f6f37823dd10:3, protocol version: -1
[ERROR] WSREP: Corrupt buffer header: addr: 0x7f722bd5b530, seqno: 7019267256999739392, size: 825111097, ctx: 0x559652a28678, flags: 14391. store: 46, type: 49
[ERROR] mysqld got signal 6 ;ALTER TABLE t
ADD PERIOD IF NOT EXISTS FOR `` (s,e);ERROR 1615 (HY000): Prepared statement needs to be re-preparederror: Table rebuild required. Please do "ALTER TABLE `TABLE_NAME` FORCE" or dump/reload to fix it!"CVE (with cve.org link)
CVSS base score
7.5
7.5
6.5
5.5
5.5
CVE (with cve.org link)
CVSS base score
7.8
5.9
MariaDB Enterprise Server 11.6.20-16 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2024-12-10
MariaDB Enterprise Server 10.6.20-16 is a maintenance release of MariaDB Enterprise Server 10.6.
MariaDB Enterprise Server 10.6.20-16 was released on 2024-12-10.
New, Detailed Replication Lag Representation (MENT-2095)
The Seconds_Behind_Master field of SHOW REPLICA STATUS can be complex and confusing, especially when parallel replication, delayed replication, or the option sql_slave_skip_counter is used. To help provide a consistent view of replication lag, three new fields have been added to the statement's output to provide specific timing information about the state of the IO and SQL threads.
Three new values have been added to the replica status:
Master_last_event_time
Timestamp of the last event read from the primary by the IO thread
Slave_last_event_time
Timestamp from the primary of the last event committed on the replica
Master_Slave_time_diff
The difference of the above two timestamps
New Information Schema Table For Password Related Data (MENT-2145) A new information Schema view, USERS, has been added, which DBAs can use to get insights about password related information for a user. This information can be used:
by an application to inform a user about a password about to expire or an account which is at risk of being blocked due to the number of wrong passwords entered
by DBAs to query users which have been blocked because of too many invalid passwords entered
The new view includes the fields:
USER – A string including user name and host
PASSWORD_ERRORS – A counter with the current number of wrong passwords entered
Reset to 0 when a correct password has been entered
An account is blocked, if max_password_errors is reached
NULL for accounts with privilege CONNECTION ADMIN
PASSWORD_EXPIRATION_TIME – The date and time when the password expires or NULL, if the password never expires
GTID binlog events now include the thread ID (MENT-2180)
The thread ID and the corresponding statement can now be retrieved from binary logs
The output of mariadb-binlog also includes the thread ID
A new parameter --quick-max-column-width is now available in the mariadb client to limit the field width when used with the --quick mode (MDEV-34704)
JSON_TABLE allows to specify default column values, but they had to be specified as string constants (MDEV-25822)
With this patch, one can specify default values as any literals (string, integer, decimal number, date literal, etc) Example:
SELECT *
FROM
json_table('{"a": "123"}',
'$' columns(col1 INT PATH '$.a' DEFAULT 1 ON empty)) AS T;
SELECT *
FROM
json_table('{"a": "123"}',
'$' columns(col1 DATE PATH '$.DATE' DEFAULT DATE '2020-01-01' ON empty)) AS T;A new option --skip-freed-pages has been added to the innochecksum tool (MENT-2183)
This option can be used to skip reporting freed undo logs as existing undo log pages
This release originally incorporated MariaDB ColumnStore engine version 23.10.2
This release now incorporates MariaDB ColumnStore engine version 23.10.3
Possible corruption due to a rare race condition between page creation and eviction (MDEV-34453)
An error like "[ERROR] InnoDB: Trying to read ... bytes at ... outside the bounds of the file" will be shown in the error log
Using group_concat with a compressed or GIS column can lead to a server crash and potential data corruption for users performing group_concat operations on tables containing these data types (MDEV-16699)
Unique hash index corruption for system-versioned tables after DML including a DELETE HISTORY statement, causing data corruption and error 'Record in index not found on update' (MDEV-33470)
When using Total Order Isolation (TOI) executing ALTER TABLE while a SR transaction is in progress, the user encounters a freeze and a server error "InnoDB: WSREP: BF lock wait long for trx" (MDEV-34836)
A query could cause a crash if it has a HAVING clause with a construct tblX.column=column_or_constant and the optimizer was able to infer that table tblX is a constant table. Note that the HAVING clause may be from the original query or may come from ) (MDEV-23983)
Calling a UDF for the engine SPIDER results in a crash if the SPIDER storage engine plugin could not be loaded (MDEV-34682)
The use of XA PREPARE may cause InnoDB to hang (MDEV-34690)
Under Windows Subsystem for Linux, InnoDB crashes on ALTER TABLE or OPTIMIZE TABLE (MDEV-34938)
Server crashes when setting wsrep_cluster_address after adding invalid value to wsrep_allowlist table (MDEV-31173)
mariadbd hangs on startup when --init-file target does not exist (MDEV-34814)
Possible server crash in cases where the function DEFAULT() is part of a query (MDEV-35276)
Primary stalling when a DDL is executed using semi-sync replication with wait point = AFTER_SYNC (MENT-2162)
Deadlock on Replica during BACKUP STAGE BLOCK_COMMIT on XA transactions (MENT-2152)
In some situations, where a MariaDB Enterprise cluster (Galera) node crashes, some threads are still working. This is visible via the error log, which is still getting errors written by the node. As the node stops interacting correctly with other cluster nodes and is blocking them from taking over the primary state, the whole cluster hangs (MDEV-32363)
When switching to the SQL Mode EXTENDED_ALIASES and selecting from a table of type SPIDER, the server can crash (MENT-2108)
When a user runs mariadb-binlog with --stop-position, they would expect the output to contain events up to that event. If the output did not contain events up to that event, this may result in various unexpected behaviors, e.g., an incomplete database state if they piped the output to the mariadb client and expected certain transactions to have executed in the database, yet never were run (MDEV-27037)
A table name can not be reused when the table was changed using "ALTER TABLE...STATS_PERSISTENT=0" and was dropped afterwards. This also results in the error "Can't write; duplicate key in table 'mysql.innodb_table_stats" in tsing ALTER TABLE...STATS_PERSISTENT=0 fails to drop statistics" (MDEV-34207)
Changing a data type of a field used in a foreign key constraint fails with Error "Cannot change column '...': used in a foreign key constraint '...'" (MDEV-34392)
This ALTER only fails if the type of field is changed in a multi-ALTER statement, where types of other fields are changed with the ALTER
Creation of a view with UNION and SELECT ... FOR UPDATE in the definition fails with error "ER_PARSE_ERROR (1064): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near..." (MDEV-29537)
In some contexts text strings containing numbers with the integer part equal to zero and the fractional part not equal to zero were erroneously evaluated as FALSE in WHERE condition (MDEV-34123)
INSERT...SELECT on MyISAM or ARIA tables are replicated by MariaDB Enterprise Cluster (Galera) (MDEV-34647)
Storage Engine S3 causes 500 error when using Huawai Cloud S3 and possibly other S3 providers (MDEV-34867)
A new option S3-provider has been added. S3-provider=Huawai needs to be set for Huawai Cloud S3
JSON_TABLE doesn't properly unquote strings (MDEV-27412)
SELECT MIN on Spider table returns more rows than expected (MDEV-26345)
Can't selectively restore sequences using innodb tables from backup (MDEV-32350)
LOAD DATA INFILE with geometry data fails (MDEV-34883)
Executing an UPDATE statement in prepared statement mode having positional parameter bound with an array can result in an incorrect number of updated rows in case there is a BEFORE UPDATE trigger that executes yet another UPDATE statement to change a table (MDEV-34718)
Recovery fails to note some log corruption, resulting in "log sequence number in the future" error messages, and possibly adds more corruption (MDEV-34802)
When log corruption is noted, the server can now only be started when using the option innodb_force_recovery
When SET GLOBAL innodb_adaptive_hash_index=ON is set, ALTER TABLE...IMPORT TABLESPACE with FULLTEXT SEARCH may corrupt the adaptive hash index (MDEV-35059)
InnoDB fails to merge the change buffer to ROW_FORMAT=COMPRESSED tables. This can result in secondary indexes in ROW_FORMAT=COMPRESSED tables becoming corrupted, which in turn would lead to wrong results for queries that use those secondary indexes (MDEV-34879)
CHECK TABLE would notice the corruption
OPTIMIZE TABLE would fix the corruption
No error/warning returned when a transaction is executed, which includes transactional and non-transactional engines (MDEV-30653)
When using the experimental option wsrep_mode=REPLICATE_ARIA a transaction can possibly include changes to tables using transactional and non-transactional engines. But only the changes of the transactional engine will be rolled back in case of a conflict
NOTE: Experimental features should not be used on production
Unexpected error "Row size too large (> 8123)..." for a correct INSERT after a instantly dropped BLOB column (MDEV-35122)
Wrong binlog timestamps on secondary nodes of MariaDB Enterprise Cluster (MENT-2164)
InnoDB fails to shrink the system tablespace when it contains leaked undo log pages. It fails to free the unused segment if a XA PREPARE transaction exist or if the previous shutdown was not done with innodb_fast_shutdown=0 (MENT-2148)
The :autoshrink attribute needs to be set for the system tablespace to free disk space on startup
When the MariaDB Enterprise Audit Plugin is configured to log ACL queries, a statement CREATE USER .. IDENTIFIED VIA ed25519 USING PASSWORD(...) is logged including the password (MENT-2181)
When the MariaDB Enterprise Audit Plugin is configured to log ACL queries, passwords are masked for CREATE USER .. IDENTIFIED BY, but not for CREATE OR REPLACE USER, or SET STATEMENT ... FOR CREATE USER (MENT-2188)
Bug that causes blocking issues when other transactions attempt to acquire locks on records held by an XA transaction in the prepared state, even if those records haven't been modified (MDEV-34466)
This affects InnoDB storage engine, XA transactions, and non-blocking mode
Unnecessary copying of log records by MariaDB Enterprise Backup when further transaction commits are blocked by BACKUP STAGE BLOCK_COMMIT (MENT-2133)
It also would cause further effort of rolling back incomplete transactions after the backup is restored
Aria internal temporary tables unnecessarily write all changed blocks to disk when the table is closed at end of query (MENT-2182)
For the complete list of changes in this release, see the changelog.
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 10.6.20-16 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Ubuntu 24.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see MariaDB Corporation Engineering Policies".
MariaDB Enterprise Server 11.4.8-5 is a Stable (GA) maintenance release of MariaDB Enterprise Server 11.4, released on 2025-09-08
Release date: 8 Sep 2025
MariaDB Enterprise Server 11.4.8-5 is a maintenance release of . This release includes a variety of fixes.
This release incorporates MariaDB ColumnStore engine version 23.10.6
Segmented key cache for Aria ()
A new variable (default 1) to define the number of segments has been added. The default disables the new feature.
Backport fixes for Vectors to MariaDB Enterprise 11.4 ()
Overflow/inf in vec_distance_euclidean
Sporadic segmentation faults possibly related to vector search
Incorrect error/docs for Vector column lengths (max = 65532
Unexpected ER_TABLE_EXISTS_ERROR on primary or replica upon CREATE OR REPLACE for partitioned table
Cannot access shared MEM_ROOT without a lock
Can't find record in 't1' on INSERT to Vector table
Create vector table failed with VECTOR INDEX when innodb_force_primary_key=on
Assertion when adding FK to MyISAM/Aria table with a vector index
UBSAN: 32801 is outside the range of representable values of type 'short'
Always release ctx in mhnsw_delete_all
Optimise dot_product by loop-unrolling by a factor of 4
Vector index search allocates too much memory for large ef_search
ALTER performs vector truncation without WARN_DATA_TRUNCATED or similar warnings/errors
DATA/INDEX DIRECTORY options are ignored for vector index
DATA/INDEX DIRECTORY handling is inconsistent
Assert with vector index and very long PK
InnoDB: Failing assertion: prebuilt->select_lock_type != LOCK_NONE || srv_read_only_mode || trx->read_view.is_open()
Crash on disconnect when dropped Aria table with vector key under lock
InnoDB assert with vector index under LOCK TABLES
mhnsw: support powerpc64 SIMD instructions
mhnsw: support aarch64 SIMD instructions
IGNORED attribute has no effect on vector keys
IMPORT TABLESPACE does not work for tables with vector, although allowed
Vector-related error messages worth improving when possible
Adding a regular index on a vector column leads to invalid table structure
Vector values do not survive mariadb-dump / restore
Server crashes in Charset::mbminlen / Item_func_vec_fromtext::val_str upon mixing vector type with string
Server crashes in mhnsw_read_first upon using vector key with views
Server crashes when checking/updating a table having vector key after enabling innodb_force_primary_key
ALTER TABLE re-creating vector key is no-op with non-copying alter algorithms (default)
Server crash in FVector::distance_to upon concurrent SELECT
Server crashes in Item_func_vec_distance_common::get_const_arg
Non-copying ALTER does not pad VECTOR column, vector search further does not work
Assertion bitmap_is_set(&read_partitions, next->id) failed in int partition_info::vers_set_hist_part(THD *)
Repositories for RedHat 10 x86_64 and aarch64 have been added
Support added for Red Hat Enterprise Linux 10, AlmaLinux 10, Rocky Linux 10 and Oracle Linux 10
MariaDB systemd multi-instance service was changed to not attempt changes to the permissions on its pam helper server. This prevents unconstructive behavior and errors in the systemd journal when starting the mariadb@.service ()
updated to
Adding (with ALTER TABLE) a UNIQUE constraint that is USING HASH to a table with foreign keys could've caused the table to become corrupted. ()
Server crashes in do_mark_index_columns instead of ER_DUP_ENTRY on partitioned table ()
CREATE OR REPLACE with self-referencing CHECK hangs forever, cannot be killed ()
Segfault on INTERSECT ALL with UNION in Oracle mode ()
This commit fixes a bug where Aria tables are used in (master->slave1->slave2) and a backup is taken on slave2. In this case it is possible that the replication position in the backup, stored in mysql.gtid_slave_pos, will be wrong. This will lead to replication errors if one is trying to use the backup as a new slave. ()
Maria-backup would crash during the 'maria_recovery' part. This could happen if server was doing repair or creating indexes while the backup was running. ()
MariaDB server crash when a query includes a derived table containing unnamed column. ()
Incorrect handling of UTF-8 characters (and other character sets requiring more than a single byte representation) in the minimum/maximum positions of a table during the execution of ANALYZE TABLE tbl PERSISTENT FOR ALL resulted in an endless loop consuming more memory and prevented the server from terminating. ()
Fatal InnoDB error: Unknown error Temp file write failure ()
ASAN errors in Binary_string::alloced_length / reset_stmt_params ()
semi sync makes the master unresponsive when a replica is stopped ()
json_extract crashes in Item_func_json_extract::read_json ()
MariaDB 10.11.9 Signal 11 crash on second Stored Procedure call ()
When innodb_buffer_pool_size is being shrunk while there are no data pages cached, InnoDB could hang or crash. ()
A replica would crash while replicating UPDATE and DELETE DML statements that target a table which previously had a partition that was converted to a separate table via ALTER TABLE .. CONVERT PARTITION .. TO TABLE. For example, if the command looked like ALTER TABLE t1 CONVERT PARTITION p1 TO TABLE t_new; the replica would crash when trying to update/deleterows in table t1 after running the command. ()
Crash in add_keyuses_for_splitting() when joining with a derived table ()
Inconsistency detected - create sequence ()
MariaDB Enterprise Backup failed after upgrade ()
Possible crash on server start when CREATE SERVER has been used before ()
Replica stops with "Found invalid event in binary log" ()
After a successful shrinking of innodb_buffer_pool_size, there will be no message about it in the server error log. After a failed shrinking of innodb_buffer_pool_size, the adaptive hash index will not be re-enabled if innodb_adaptive_hash_index was ON when SET GLOBAL innodb_buffer_pool_size=... started to execute. ()
ALTER TABLE require ALTER privilege on sequence from DEFAULT value expression ()
Deadlock does not rollback transaction fully ()
parallel slave ALTER-SEQUNCE attempted to binlog out-of-order ()
In certain cases privileges on sequences were too restrictive, for example, SELECT on a table might've erroneously required INSERT privilege on a sequences ()
AUTO_INCREMENT leads to non-serializable on results ()
UNIQUE constraint that was USING HASH and UNIQUE constrant WITHOUT OVERLAPS could be violated under heavy load in READ COMMITTED transaction isolation mode. ()
Fresh MariaDB 11.4 installation gives errors when configuring utf8 ()
Split Materialized code: last_refills is never set in 11.0+ ()
UNIQUE KEY USING HASH accepting duplicate records ()
Crash recovery after bulk load data reports corruption ()
Remove the error codes added by the MDEV-36032 patch ()
Seconds_Behind_Master Spike at Log Rotation on Parallel Replica ()
Assertion 'vers_conditions.delete_history' failed upon PREPARE ()
DML committed within XA transaction block after deadlock error and implicit rollback ()
Don't generate index_merge plans, if a column is present in both Secondary Key and Primary Key indexes and either of the indexes include it with DESC order (as the scan itself is not a ROR scan). ()
Incorrect handling of null values on join conditions. ()
DROP DEFAULT makes SHOW CREATE non-idempotent ()
Possible wrong results when split materialized optimization is used with nullable join conditions. ()
Performance regression with encrypted InnoDB log ()
For the complete list of changes in this release, see the .
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 11.4.5-3 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
AlmaLinux 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Oracle Linux 8 (x86_64, ARM64)
Oracle Linux 9 (x86_64, ARM64)
Oracle Linux 10 (x86_64, ARM64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
Red Hat Enterprise Linux 10 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
Rocky Linux 10 (x86_64, ARM64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Ubuntu 24.04 (x86_64, ARM64)
Microsoft Windows (x86_64) (Without MariaDB Enterprise Cluster (Galera) support)
Red Hat UBI 8 (x86_64, ARM64)
Red Hat UBI 8 is part of the Enterprise Server Docker Image. It does not support MariaDB Enterprise Cluster (Galera) or MariaDB ColumnStore.
Some components of MariaDB Enterprise Server are supported on a subset of platforms. See for details.
MariaDB Enterprise Server 11.6.22-18 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2025-06-11
MariaDB Enterprise Server 10.6.22-18 is a maintenance release of 10.6. This release includes a variety of fixes.
MariaDB Enterprise Server 10.6.22-18 was released on 11 Jun 2025.
This release incorporates MariaDB ColumnStore engine version .
New user variable, analyze_max_length, default value 4G. Any field that is bigger than this value in bytes will be ignored by ANALYZE TABLE PERSISTENT to not collect statistics for long char/varchars unless it is specified in FOR COLUMNS(). (MENT-2301)
SBOM now includes 'license' and 'copyright' information, improving security compliance and dependency tracking. (MENT-2311)
MariaDB effectively running as root CAP_DAC_OVERRIDE ()
my_getopt compares option names case sensitively ()
updated to
Support has been added for Oracle Linux 8 and 9
Assertion InnoDB searching row in wrong partition for multiple system versioned DELETE with same timestamp and same multistatement transaction ()
Incorrect error handling on DDL with FULLTEXT INDEX ()
ALTER TABLE…SEQUENCE does not work correctly with InnoDB ()
Race conditions between ALTER TABLE or OPTIMIZE TABLE and the purge of transaction history were fixed. ()
Server aborts while deleting the record in spatial index ()
The server could crash when an UPDATE is about to commit concurrently with a CREATE INDEX that includes VIRTUAL columns ()
Upgrades fail on Windows ()
ASAN errors in dict_sys_t::load_table / get_foreign_key_info after failing to load a table ()
ALTER TABLE…DROP COLUMN after a failed ALTER TABLE…DROP COLUMN could lead to a server crash ()
Field pointer may be uninitialized in fill_record ()
A primary server could crash when a semi-sync connection is stopped, if the primary previously disabled semi-sync replication while the connection was already up (and `rpl_semi_sync_master_wait_no_slave=0`). ()
Incorrect undo logging for indexes on virtual columns whose index ID does not fit in 32 bits ()
With wsrep_ignore_apply_errors = 0, the node crashes due to assertion thd->is_error() failed in Sql_cmd_dml::prepare(), shown in the logs ()
In some cases, if there are MDL locks (for example, when LOCK TABLE is executed), a node could get stuck in the system thread due to incorrect handling of metadata locks (MDL) in server code when a transaction was BF aborted. ()
Regression after the fix for - sometimes the server crashes with an assertion in wsrep::transaction::before_rollback(), for example when using OPTIMIZE TABLE on an ARIA table with wsrep_osu_method=RSU. ()
SST failure occurs when gtid_strict_mode is enabled under high load, such as OLTP load is active on the primary node. A typical symptom of this error is the presence of the diagnostic "[ERROR] mariadbd: Error writing file 'binlog'", in the debug version it is also possible to crash on assertion in the wsrep::transaction::before_rollback() function with the message "Assertion `state() == s_executing || state() == s_preparing || state() == s_prepared || state() == s_must_abort || state() == s_aborting || state() == s_cert_failed || state() == s_must_replay' failed". ()
In Galera, creating sequence with a small cache leads to signal 6 error: [ERROR] WSREP: FSM: no such a transition REPLICATING -> COMMITTED. ()
Under high load wsrep internal thread may terminate due to memory pressure conditions, but this is not a crash, however in debug version user may encounter assertion in wsrep_to_isolation_begin() function with following message: "int wsrep_to_isolation_begin(THD*, const char*, const char*, const TABLE_LIST*, const Alter_info*, const key_array*, const HA_CREATE_INFO*): Assertion `(0)' failed." ()
Assertion `commit_trx' failed in innobase_commit() (ha_innodb.cc). An INSERT with sql_log_bin=0 is still replicated in Galera (per ), despite binary logging being disabled. This results in a partial binlog bypass, requiring a two-phase commit (2PC). During 2PC, the INSERT is first prepared (entering the PREPARED state in InnoDB), and on commit, the new assertion from fails, causing a crash with "Assertion 'commit_trx' failed" in logs. ()
When a sequence is used and inserts run in parallel on multiple Galera nodes, a transaction may be aborted after passing certification. If it then attempts to roll back, the binlog statement cache—which includes reserved sequence values—may be written prematurely. This causes a crash with the diagnostic "WSREP: FSM: no such a transition REPLICATING -> COMMITTED" in the logs, as the transaction is supposed to replay and only write to the binlog during the final commit. ()
A Galera node may hang due to improper mutex handling: a thread held lock_sys.wait_mutex while triggering a streaming replication rollback, which also tried to acquire THD::LOCK_thd_kill, leading to incorrect mutex usage. In debug versions, this leads to diagnostics like "safe_mutex: Found wrong usage of mutex 'wait_mutex' and 'LOCK_thd_data'", but in both debug and release versions, there is some probability that the node may hang. ()
corruption when query cache cannot allocate block ()
Stack looping and SIGSEGV in Item_args::walk_args on UPDATE ()
Server crash in find_field_in_tables, Assertion `name' failed in find_field_in_table_ref ()
Long server_audit_file_path causes buffer overflow ()
Server crash when inserting from derived table containing insert target table ()
CREATE INDEX fails to heal a FOREIGN KEY constraint ()
Doublewrite recovery of innodb_checksum_algorithm=full_crc32 page_compressed pages does not work ()
Segfault on concurrent ALTER and SELECT for partitioned table ()
ST_PointFromWKB ignores SRID argument and always creates the POINT with 0 for it's SRID ()
mariadb-dump used wrong quoting character ()
After a corrupted table on one node triggers the cluster to vote to evict a node that failed a transaction, the current master can’t commit any more and hangs. (, MENT-2081)
intended to fix spider wrapper so that it is case insensitive, among other things. However that fix was incomplete, as the udf spider_direct_sql may still require case sensitivity. fixes this. ()
Creating partitioned tables is disallowed when wsrep_osu_method=TOI and wsrep_strict_ddl=ON, preventing alteration or deletion of partitioned tables. ()
Attempting to create a CONNECT engine table results in "non-InnoDB sequences in Galera cluster" error message in logs due to an incorrect engine check. ()
innodb_snapshot_isolation=1 gives error for not committed row changes ()
Aria engine: log initialization failed (MENT-2235)
MariaDB Backup returns with an error like "Error on file ./test/t1#P#p513.MYD open during `test`.`t1` table copy for partitioned MyISAM tables when running out of file handles (MENT-2089)
User without any privileges to a sequence can read from it and modify it via column default ()
User has unauthorized access to a sequence through a view with security invoker ()
The untested ha_spider::index_first_internal constructs broken queries ()
Wrong results from tables with a single record and an aggregate ()
Unexpected error 1264 'Out of Range Value for Column' when inserting into ... select ... from a spider table ()
group by handler missing constant fields when selecting from a view ()
Tests calling the udf spider_copy_tables fail with --view-protocol ()
dict_stats_fetch_from_ps() unnecessarily holds exclusive dict_sys.latch ()
Stall and crash when page cleaner fails to generate free pages during Async flush ()
For the complete list of changes in this release, see the .
In alignment to the , MariaDB Enterprise Server 10.6.22-18 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Oracle Linux 8 (x86_64, ARM64)
Oracle Linux 9 (x86_64, ARM64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Ubuntu 24.04 (x86_64, ARM64)
Red Hat UBI 8 (x86_64, ARM64)
Red Hat UBI 8 is part of the Enterprise Server Docker Image. It does not support MariaDB Enterprise Cluster (Galera) or MariaDB ColumnStore.
Some components of MariaDB Enterprise Server are supported on a subset of platforms. See for details.
MariaDB Enterprise Server 11.6.18-14 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2024-06-11
MariaDB Enterprise Server 10.6.18-14 is a maintenance release of 10.6.
MariaDB Enterprise Server 10.6.18-14 was released on 2024-06-11.
Galera has been updated to 26.4.18
The GCS protocol version has been changed, preventing a downgrade of individual nodes of a MariaDB Enterprise Cluster
Changes to the use of the variable optimizer_adjust_secondary_index_costs ()
The default of the variable optimizer_adjust_secondary_index_costs changed from "0" to "" and is now of type ENUM
The variable can now be set to a combination of the following values separated by a ',':
adjust_secondary_key_cost: Update secondary key costs for ranges to be at least 5x of clustered primary key costs.
disable_max_seek: Disable 'max_seek optimization' for secondary keys and slight adjustment of filter cost.
disable_forced_index_in_group_by: Disable automatic forced index in GROUP BY and make GROUP BY cost based instead of rule based. ALL Sets all of the above values.
Without changes in configuration or using the old integer values 0, 1, 2 for optimizer_adjust_secondary_key_costs this system variable works as before. This is to ensure that we do not break any existing applications.
This release originally incorporated MariaDB ColumnStore engine version 23.10.1.
This release now incorporates MariaDB ColumnStore engine version 23.10.2.
With --gtid-ignore-duplicate set a transaction can be double-applied from another replication source if at applying the transaction from the initial source required retrying in parallel execution. ()
Backups of server with innodb_encrypt_tables=1 can become corrupted in mariadb-backup --prepare ()
With multiple GTID domains, optimistic parallel slave conflicts involving XA-PREPARE event group could not be resolved correctly which might cause unnecessary stop of the slave serve. ()
The TIMESTAMP value of '1970-01-01 00:00:00' can be inserted via a INSERT ...FROM ... SELECT in strict mode although it should result in an error ()
Galera-replicated events can in some cases contain the wrong time when versioning is used ()
wrong row targeted with insert ... on duplicate and replace, leading to data corruption ()
Using current MariaDB Enterprise Backup against an older server can result in a crash, as the system variable @@aria_log_dir_path does not exist ()
When using a non-default setting for innodb_change_buffering, the server can crash ()
When a fulltext search query with more than 4G inserted or updated rows is executed, the server can crash ()
InnoDB is holding shared dict_sys.latch while waiting for FOREIGN KEY child table lock on DDL ()
InnoDB may hang when temporarily running out of buffer pool ()
For encrypted table spaces an ALTER operation can hang when an encryption thread works on the same tablespace ()
EXPLAIN statement that uses a subquery which has a query plan that A) will examine less than @@expensive_subquery_limit rows and B) will use join buffer could cause a crash. ()
For a SPIDER table, when deleting partitions from a table, the server can crash ()
After an unsuccessful ALTER TABLE on an ARIA table due to a full temp space, any subsequent query results in the following error if it involves using temp: ()
When replaying a binary log with mariadb-binlog, the tool can crash if the binary log includes statements related to sequences, like SELECT NEXTVAL(s) ()
MariaDB Enterprise Backup fails with the following error message if the prepare step of the backup encounters a data directory which happens to store wsrep xid position in TRX SYS page: ()
Assertion failure when a client disconnected during transaction that is in the XA PREPARE state or when incomplete transaction was recovered from undo logs on server startup and not yet rolled back ()
Failure with the following error message when streaming transaction in idle state is BF aborted: ()
Assertion when user commits an empty transaction for DDL that was killed during certification: ()
MDL lock conflict can occur if the transactions acquire explicit MDL locks from the InnoDB level when persistent statistics is re-read for a table and such a transaction is subject to BF-abort ()
Graceful node shutdown can crash garbd and MariaDB Enterprise Cluster can go non-primary when SSL is used ()
Wrong result sets are returned by the second execution of prepared statements from selects using mergeable derived tables pushed into external engine ()
IMPORT TABLESPACE fails with column count or index count mismatch: ()
A query that uses a derived table that employs constructs with side-effects, like (SELECT @var:=... ) as derived_tbl, could produce wrong results ()
ORDER BY COLLATE improperly applied to non-character columns which is resulting in an unordered result set ()
Inconsistent behaviors of UPDATE under Read Uncommitted & Read Committed isolation level ()
When two transactions modify the data at the same time with isolation level REPEATABLE-READ, the latter transaction does take the change from the first transaction into account ()
Spider/ODBC passed double quotes for names, in ANSI style (MENT-958)
Default charset doesn't work with PHP MySQLi extension ()
Bad SEPARATOR value in GROUP_CONCAT on character set conversion can lead to a wrong result ()
Spider returns parsing failure on valid left join select by translating the on expression to () ()
When creating a temporary InnoDB table with CREATE TEMPORARY TABLE ... AS SELECT ... from an InnoDB table as a non SUPER / READ ONLY ADMIN user, the following error is shown instead of creating the table: ()
CREATE TEMPORARY TABLE (without SELECT), INSERT ... SELECT, and CREATE ... LIKE are not affected by this bug
Phantom rows caused by UPDATE of PRIMARY KEY ()
Mariadb-dump trusts the server and does not validate the data. A modified dump file can include system commands used by the mariadb-client. Dumps are now loaded in the sandbox mode by default, a system call will result in an error ()
Updating a case insensitive large unique key with an insensitive change of the value can result in a duplicate key error ()
When setting binlog_annotate_row_events=1, an event of binlog file can be truncated ()
Wrong result with semi-join and split-table derived table from queries with an IN subquery predicate in the WHERE clause and a derived table in the FROM clause to which split materialized optimization could be applied. ()
With galera, correct transactions could not be committed with the following error when accessing system tables for read, and write to innodb tables in the same transaction: ()
A wrong result on 2-nd execution of a prepared statement is possible when selecting from a view using a merged derived table ()
Original IP not shown in network related error messages when proxy_protocol is in use ()
Incorrect DEFAULT expression evaluated in UPDATE ()
group by optimization incorrectly removing subquery where subject buried in a function ()
Replication with XA events can show decreased performance. Adapt parallel slave's round-robin scheduling to XA events ()
Row locks for non-modified rows are not released at XA PREPARE ()
Optimizer is sometimes choosing an index for queries with GROUP BY when it shouldn't, resulting in decreased performance. To protect compatibility to the current behavior @@optimizer_adjust_secondary_key_costs="disable_forced_index_in_group_by" has to be set to enable the fix ()
Table is getting rebuild with ALTER TABLE ADD COLUMN although it should be an instant operation not requiring a rebuild ()
Semi-sync Wait Point AFTER_COMMIT Slow on Workloads with Heavy Concurrency ()
Aggregation functions fail to leverage uniqueness property ()
Generally, computing aggregate function with DISTINCT argument: aggregate_func(DISTINCT col1, col2, ...) requires producing a de-duplicated set of its arguments, which can be CPU-intensive
When we select from one table the argument list includes the table's PRIMARY (or UNIQUE) key:
then the arguments are guaranteed not to have duplicates. Such cases are now detected allowing the optimizer to skip de-duplication.
For the complete list of changes in this release, see the .
In alignment to the , MariaDB Enterprise Server 10.6.18-14 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
CentOS 7 (x86_64)
Debian 10 (x86_64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
MariaDB Enterprise Server 11.6.12-7 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2023-03-13
MariaDB Enterprise Server 10.6.12-7 is a maintenance release of 10.6. This release includes a variety of fixes.
MariaDB Enterprise Server 10.6.12-7 was released on 2023-03-13.
Users of MariaDB Enterprise Server 10.6.12-7 are encouraged to upgrade to 10.6.12-8. Please see the that must be used.
MariaDB Enterprise Server enables a predictable development and operations experience through an . These new features have been backported after reaching maturity in MariaDB Community Server.
In previous releases, the number of undo logs was configurable before InnoDB was initialized. With this release, the number of undo logs can also be configured after install.
The number of undo logs is configured by the InnoDB system variable --innodb-undo-tablespaces.
Splitting undo logs over multiple tablespaces can reduce the size of a single tablespace, especially the InnoDB system tablespace.
In previous releases, the number of undo logs had to be configured before InnoDB was initialized, so changing the number of undo logs would require setting up a new server instance. With this backport from MariaDB Community Server 10.11, the number of undo logs can be changed so it will take effect with the next server start. (MENT-1650)
Output for the function has been optimized to reduce the number of lines needed. ()
For compatibility, has been added as an alias to JSON_DETAILED(). ()
This release incorporates Galera library version 26.4.14.
The names used by information_schema.INNODB_TABLESPACES_ENCRYPTION.NAME for undo tablespaces have been changed. ()
Starting with this release, names for the undo tablespaces use the format undo001.
In previous releases, names for the undo tablespaces used NULL.
For MariaDB Enterprise Cluster SST with MariaDB Enterprise Backup backup execution (namely the block DDL phase) has been changed. In previous releases, the node was paused from the cluster, generating the following log file entry: ()
Starting with this release, the mariadb-backup execution can be aborted if DDL statements happen during backup execution. This abortable backup execution is the optional feature which can be enabled/disabled by wsrep_mode: BF_ABORT_mariadb-backup
When executing a DELETE or UPDATE with a subselect, the server can crash. ()
When performing an incremental backup, MariaDB Enterprise Backup does not reflect databases that have been dropped and created. ()
During recovery, MariaDB Server can crash with an error when a DDL operation was executed before the server was stopped: InnoDB: Trying to write ... bytes at ... outside the bounds of the file ... ()
innodb_undo_log_truncate=ON is not crash safe. This also can have effects for MariaDB Enterprise Backup for backup and restore. (, , )
When innodb_undo_log_truncate=ON a backup for MariaDB Enterprise Server can return the error message:
When DELETE HISTORY is executed for a system versioned table with full text index, the server can crash. ()
When an ALTER TABLE statement causes InnoDB to rebuild a table with a spatial index, the server can crash. ()
When using SPIDER with SPIDER_DIRECT_SQL and spider_udf_ds_use_real_table=1, the server can crash. ()
When executing REPLACE INTO ... PARTITION(...), the server can crash. ()
Galera SST doesn't properly handle undo* files from InnoDB. As a result, SST may terminate incorrectly when --innodb-undo-tablespaces is set to 3 or more. ()
With a query containing nested WINDOW clauses, the server can crash. ()
When executing a SELECT from complex a view with WHERE clause and with the setting derived_merge=on, the server can crash. ()
Infinite sequence of recursive calls when processing embedded CTE, when such a reference has the same table name as the name of the CTE. ()
With a cluster wide conflict, MariaDB Enterprise Cluster can hang if a binlog purging is running (such as in the case that, binlog expiration is configured). ()
mariadbd hangs when running with --wsrep-recover and --plugin-load-add=ha_spider.so options. ()
After a second execution via a stored routine or a prepared statement of a LEAD ... OVER query, the server can crash. ()
When innodb_undo_log_truncate=ON is set, the server can hang. ()
After recovery, the server can crash with an error if innodb_buffer_pool_size is not large enough to recover in a single batch: InnoDB: Tried to read ... bytes at offset ()
Race condition in foreign key locking during truncate. ()
Possible hangs in some B-tree operations. (, )
MariaDB Enterprise Backup can hang when using the parameters --backup --incremental --throttle=... ()
While executing an ALTER TABLE for a compressed InnoDB table, the server can crash. ()
InnoDB fails to remove a newly created table or index from data dictionary and table cache and then crashes, if the ALTER to add a FULLTEXT index fails in the commit phase. ()
When the query cache is enabled and a DROP DATABASE is called, the DROP DATABASE can hang and 100 percent CPU load can be seen. ()
The execution of FLUSH TABLES...FOR EXPORT can result in a server crash. ()
When querying a Spider table from a stored procedure inside a WHILE clause, the server can crash. The stored procedure needs to use two WHILE clauses which both query the Spider table. ()
Deadlock on Replica during BACKUP STAGE BLOCK_COMMIT on XA transactions. ()
MariaDB Server can crash during recovery if an ALTER TABLE .. ROW_FORMAT=COMPRESSED has been executed before. ()
log_query_not_using_indexes=OFF is ignored when log_slow_filter is an empty string. ()
MariaDB Enterprise Backup returns with an error when the option --galera-info is used for creating a backup of a MariaDB Server instance, which is not a MariaDB Enterprise Cluster node. Failed to get master wsrep state from SHOW STATUS ()
When querying a table with virtual generated columns using full text search, these columns are not generated and are always NULL in the result set. ()
Identifiers are not quoted for the output of SHOW GRANTS. Using the result to execute the grant statement results in a syntax error, if reserved keywords are used. ()
Spider table with CHARSET utf32/utf16/ucs2 tries to set client CHARSET to unsupported value. ()
Incorrect results are returned when using STDDEV_SAMP() with a view. ()
A spurious error can be generated: ERROR 1292 (22007) at the line 15: Truncated incorrect DECIMAL value:
When running mariadb-binlog using the option --verbose, cannot read row events with compressed columns: Error: Don't know how to handle column type:... ()
Incorrect results are returned with outer join, merged derived table, and view. ()
Some DDL, such as ANALYZE, can be completed out of order on parallel replicas. ()
seconds_behind_master is incorrect for delayed parallel replicas. ()
Unlimited SELECT .. ORDER BY .. LIMIT can be slow as it is always using temporary. ()
Calling DETERMINISTIC package functions from other SQL/PL stored routines can be slow. ()
An upgrade to MariaDB Server 10.5 and incorrectly reports that a recovery is needed. ()
Warning message when encryption is not available on recovery: InnoDB: We do not continue the crash recovery, because the table may become corrupt ()
With MariaDB Enterprise Backup on Windows, an incremental prepare fails when innodb_undo_tablespaces > 0 is set. ()
Changing the value of wsrep_gtid_domain_id for MariaDB Enterprise Cluster with full cluster restart can fail on nodes, which do not sync from the node where wsrep_gtid_domain_id was changed. ()
This release originally incorporated MariaDB ColumnStore storage engine version 23.02.1.
This release later incorporated MariaDB ColumnStore storage engine version 23.02.2.
This release now incorporates MariaDB ColumnStore storage engine version 23.02.3.
Error code 5016 added.
system variable default value changed from ON to OFF
function added.
In alignment to the , MariaDB Enterprise Server 10.6.12-7 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 18.04 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
MariaDB Enterprise Server 10.5.28-22 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2025-03-19
MariaDB Enterprise Server 10.5.28-22 is a maintenance release of 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.28-22 was released on 19 Mar 2025.
This release incorporates MariaDB ColumnStore engine version 5.6.9.
Galera protocol versions are now shown by show status - change available with installation of galera library 26.4.21+ ()
updated to
NOTE: Includes increasing the GCS protocol version, which prevents downgrades of individual nodes in the cluster as soon as all nodes have been updated
Fix incorrect writing of timestamp into binary log, causing discrepancy upon binlog replaying ()
Fix trigger created with "CREATE TRIGGER table1_after_insert AFTER INSERT" which is adding rows to another table using "FOR EACH ROW insert into table2(id, name) values (NEW.id, NEW.name);" that did not work correctly when if bulk inserts are used by the application. Only the first row of the bulk insert would be added to the table ()
History is now stored on the same partitions on different Galera nodes when system versioning is enabled ()
Fix assertion falilure and possible index corruption with unique key and nopad collation without DESC or HASH keys ()
Fix client crash the command after client sets character set to utf32 ()
Fix possible crash where server could not construct a geomery object from the input ()
Fix possible Spider thread hang in 'Update' state on 2nd INSERT ()
After changing the table definition for the system table 'mysql.servers', a following execution of CREATE SERVER would previously lead to a server crash. ()
NOTE: System tables should never be modified by a user anyhow
Fix sporadic failure of async replication on Galera async replica nodes with parallel replication enabled ()
Fix possible failure of wsrep_sst_rsync SST script if user specified aria_log_dir_path different from default data directory ()
Fix connection hang after query on a partitioned table with UNION and LIMIT ROWS EXAMINED ()
Fix server crash in get_sort_by_table/make_join_statistics after INSERT into a view with ORDER BY ()
Fix possible memory leak on SHUTDOWN ()
Fix possible memory leak while shutting down server after installing the auth_gssapi plugin ()
Fix possible crash on DELETE from a HEAP table ()
Fix possible server crash when using INSERT DELAYED on tables with virtual columns. ()
Fix possible crash during index traversal using tree_search_next. ()
Fix possible hang or crash during InnoDB purge with HASH indexes during ALTER TABLE ()
Fix possible Spider crash or hang when the first byte of a connection key is changed ()
Fix possible runtime error caused by XA RECOVER applying a zero offset to a null pointer ()
Fix assertion failure on cascading foreign key update of table with vcol index in parent ()
Fix assertion failure where CURRENT_USER was not correctly copied during condition pushdown ()
Fix cluster node hang during shutdown if threadpool is used ()
Calling a stored routine that executes a join on three or more tables and referencing not-existent column name in the USING clause could previously result in a crash on its second invocation. ()
Fix possible assertion failure when Galera cluster is in 'split-brain' state due to loss of communication between nodes (fix requires Galera library 26.4.21+) (MENT-2175)
In rare cases, an ALTER TABLE or other operation could previously hang when using NBO mode on a cluster with very low network latencies (for example, when both nodes are running on the same physical machine) (MENT-2215)
MariaDB Cluster and ALTER INPLACE running in Total Order Isolation (wsrep_OSU_method=TOI) now correctly abort a DML INSERT operation in InnoDB ()
Fix possible crash in wsrep_check_sequence ()
Fix sporadic reporting of success when a deadlock error occurs under --ps-protocol BF aborted transaction ()
Fix rare cases where binlog entries could receive incorrect timestamps on secondary nodes of a Galera cluster, potentially impacting replication accuracy ()
For an authentication with the ed25519 authentication plugin the password of the CREATE USER statement is now masked in the audit log ()
MariaDB Audit now detects all DCLs forms for masking a password ()
sql_mode='NO_UNSIGNED_SUBTRACTION' now works for multiple unsigned integers ()
mariadb-binlog can now correctly process more than one logfile when --stop-datetime is specified ()
Rows in table mysql.gtid_slave_pos are now correctly deleted on Galera nodes when wsrep_gtid_mode = 1 is used, which previously lead to wrong information about replica delays ()
EXCHANGE PARTITION now works for tables with unique blobs ()
Fix issue where functions in default values in tables with certain character sets could break SHOW CREATE and mariadb-dump ()
Setting pseudo_thread_id to a value exceeding 4 bytes previously resulted in truncation when written to the binary log ()
A BEFORE INSERT Trigger previously returned with error "Field 'xxx' doesn't have a default value", if a NULL value was added for a column defined NOT NULL without explicit value and no DEFAULT specified ()
Undefined behavior could occur when attempting to perform INSERT DELAYED on a Galera cluster node. ()
Fix issue where ON UPDATE SET NULL could not be specified on a NOT NULL column ()
algorithm = instant can now correctly be used if a table has partitions and one tries to change a column with an index which is not the partitions key. This previously gave error "ERROR 1846 (0A000): ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY" ()
Fix issue where DROP TABLE on child and UPDATE of parent table can cause a metadata lock BF-BF conflict when applied concurrently. ()
Can now correctly add a foreign key on a table with a long UNIQUE multi-column index that contains a foreign key as a prefix ()
Fix possibly wrong result using a degenerated subquery (SELECT <expr>) with window function ()
The "Failed to write to mysql.slow_log" error no longer shown without a detailed reason for the error ()
Fix debian-start script failure when using non-standard socket path ()
wsrep_sst_mariadb-backup.sh no longer uses --use-memory default (100MB) resulting in prepare stage which could take hours ()
For a SPIDER engine based table a SELECT from the spider table and INSERT into a local table fails with 'Out of Range Value for Column XX_YY' Causes ERROR 1264 (22003) (MENT-2204)
Conditions with SP local variables are now pushed into derived table. Previous behaviour caused slow performance and table scans instead of using the pushed down condition ()
NULL-aware materialization with IN predicate and single column no longer skips building sorted Ordered_key structures ()
During an online table rebuild of an InnoDB statistics table, opt_search_plan_for_table() no longer sometimes degrades to full table scan ()
For the complete list of changes in this release, see the .
In alignment to the , MariaDB Enterprise Server 10.5.28-22 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Red Hat UBI 8 (x86_64, ARM64)
Red Hat UBI 8 is part of the Enterprise Server Docker Image. It does not support MariaDB Enterprise Cluster (Galera) or MariaDB ColumnStore.
Some components of MariaDB Enterprise Server are supported on a subset of platforms. See for details.
MariaDB Enterprise Server 10.5.23-17 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2023-12-12
MariaDB Enterprise Server 10.5.23-17 is a maintenance release of 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.23-17 was released on 2023-12-12.
This release incorporates MariaDB Enterprise ColumnStore 5.6.8-2.
CHACHA20-POLY1305 support when WolfSSL is used ()
The semi-synchronous replication magic number error "[ERROR] Read semi-sync reply magic number error" has been improved to show the semi-sync acknowledgment reported with printing the hex dump of the failing network packet ()
Disable TLS v1.0 and 1.1 for MariaDB. TLSv1.1 removed from the default tls_version system variable. ()
A warning is shown if TLSv1.0 or TLSv1.1 are selected.
With binary log enabled transactions that are filtered out of binlogging by any of binlog_{do,ignore}_db option may be lost in the engine. ()
Race condition between page write completion and log checkpoint on crash recovery. This may break crash recovery in case of an operating system crash or abrupt loss of power or storage connectivity. ()
Assertion fails in MDL_context::acquire_lock upon parallel replication of CREATE SEQUENCE ()
A hang or crash could be observed in parallel replication of STATEMENT binlog format transactions modifying temporary tables. E.g. witnessed in rpl.rpl_parallel_temptable failure. ()
A failure that occurs due to unnecessary replication of CACHE INDEX and LOAD INDEX INTO CACHE although this is a local operation. ()
Rowid filter does not process a storage engine error correctly. A query that's executing a locking read and is using the Rowid Filter could cause a server crash if it has encountered a Lock Wait Timeout or Deadlock or a similar error when building the Rowid Filter. ()
Crash when HAVING in a correlated subquery references columns in the outer query ()
Due to a flaw in the SST scripts, it was not possible to execute SST when datadir, or some innodb log directory points to a path that is actually a symlink to the actual data directory. ()
Server can crash when a table of type SPIDER starts with a comment string which is not a parameter for SPIDER. ()
Node crashes when trying to execute "CREATE TABLE ... WITH SYSTEM VERSIONING AS SELECT ..." ()
Lock wait timeout with INSERT-SELECT, autoinc, and statement-based replication ()
Too strict assertion which leads to a problem since with BINLOG statements we can execute binlog events on master also (not only in applier). ()
Galera cannot support wsrep_forced_binlog_format=[MIXED|STATEMENT] during CREATE TABLE AS SELECT. But a crash in the form of an assertion is an overreaction. Now a warning is issued instead. ()
When a MariaDB Enterprise Cluster node is a replica of another MariaDB Enterprise Cluster, and optimistic replication is used, a node can hang. * To support optimistic parallel replication, the replication slave abort needs to be skipped if a node remains in the cluster (wsrep_ready==ON), and replication is configured for optimistic or aggressive retry logic. ()
After crash recovery, the server crashes with error "InnoDB: Checksum mismatch in the first page of file" in the server log ()
Possible server crash when setting SPIDER option spider_delete_all_rows to 0 and delete all rows of a spider table ()
InnoDB may hang with a low probability under any write workload. ()
Use of nested row constructs in the left expression of an IN subquery should produce an error. Example: (a,(b,c)) IN (SELECT ...). In some degenerate cases, the error was not detected, and this causes a crash at a further stage in query processing. ()
A table-less subquery with a LIMIT clause with non-zero offset, like ( SELECT two LIMIT 1 OFFSET 1) can produce unexpected results. If used inside ORDER BY, it can cause a crash. ()
Possible crash in the full-text search plugin parser when using FULLTEXT...WITH PARSER. ()
Intermittent crashes when using SEQUENCE in combination with Galera ()
When two clients execute FLUSH TABLES WITH READ LOCK/UNLOCK TABLES on a Galera node, the node would sometimes get stuck in a paused state. This can cause the next requests to fail. ()
Sometimes a node has been dropped from the cluster on startup/shutdown with async replication enabled due to inconsistency issues with the mysql.gtid_slave_pos table (between master and replica nodes), because previously this table was not previously replicated within the cluster. ()
Server crashes in check_sequence_fields upon CREATE TABLE .. SEQUENCE=1 AS SELECT .. ()
Crash when searching for the best split of derived table ()
When a new user is connecting or a user is changing the password while FLUSH PRIVILEGES is executed, the server can crash (MENT-1707)
Prefix keys for CHAR return error "ERROR 1062 (23000): Duplicate entry 'ß' for key 'a'" for MyISAM and Aria when inserting data ()
Possible wrong results of DISTINCT with NOPAD collations when SET big_tables=1; is set ()
Missed kill when the SQL thread goes to wait for parallel slave worker queues to drain. KILL query did not affect a replication thread, which remained alive unexpectedly by the user. ()
InnoDB tries to purge non-delete-marked records of an index on a virtual column prefix. An error like "InnoDB: tried to purge non-delete-marked record in index b of table test.t is shown in the server log ()
lock_row_lock_current_waits counter in information_schema.innodb_metrics may become negative ()
SHOW REPLICA STATUS Last_SQL_Errno race condition on Errored replica restart. A contradictory YES of slave_running_status and an error code in Last_SQL_Errno will be shown ()
Auto-increment no longer works for explicit FTS_DOC_ID ()
In some cases, replaying transactions on other MariaDB Enterprise Cluster nodes results in a wrong "Failed to insert streaming client" warning ()
Wrong bit encoding using COALESCE ()
getting error 'Illegal parameter data types row and bigint for operation '+' ' when using ITERATE in a FOR..DO ()
While checking for altered column in foreign key constraints, InnoDB fails to ignore virtual columns ()
Write-ahead logging is broken for freed pages ()
seconds_behind_master is inaccurate for Delayed replication ()
The wsrep_sst_method variable can be set to an invalid value using the SET statement. ()
Misleading help text for mysqlbinlog (mariadb-binlog) -T/--table option ()
mbstream breaks page compression on XFS ()
MyISAM tables took transactional metadata locks although there were no active transactions. ()
"rpm --setugids" breaks PAM authentication ()
A multi-row Insert into an empty table fails if the table has a unique index using hash. CHECK TABLE returns with "Table 't1' is marked as crashed and should be repaired" ()
wrong table name in InnoDB's "row too big" errors ()
Slow log Rows_examined for the slow_log can be out of range. In this case the server log includes "([ERROR] Unable to write to mysql.slow_log)" ()
An incorrect examined rows number is used in some cases like in the slow query log, with LIMIT ROWS EXAMINED, or with ANALYZE FORMAT=JSON when a query gets executed inside of a function. Each stored function call doubles the current count during processing ()
Optimize is_file_on_ssd() to speedup opening tablespaces on Windows ()
Significant slowdown for query with many outer joins ()
An incorrect examined rows number is used in some cases like in the slow query log, with LIMIT ROWS EXAMINED, or with ANALYZE FORMAT=JSON when an executed query includes a stored function Each stored function call doubles the current count during processing ()
Replication stops when there exists an exclusive lock on an InnoDB supremum record in prepared transactions on the replica. ()
Key not used when IN clause has both signed and unsigned values ()
Parallel replication deadlock victim preference code erroneously removed. As a result, parallel slave could retry transaction execution more times than necessary. ()
mysql_install_db doesn't properly grant proxy privileges to all default root user accounts ()
The second node cannot be started because Galera SST rsync wants to replicate snapshot directory when datadir is on an NetApp storage with NFS access ()
In alignment with the , MariaDB Enterprise Server 10.5.23-17 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
MariaDB Enterprise Server 10.5.5-3 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2020-09-08
This third release of 10.5 is a maintenance release, including a variety of fixes.
MariaDB Enterprise Server 10.5.5-3 was released on 2020-09-08.
With MariaDB Enterprise Server 10.5 "mysql" command names are replaced with "mariadb" command names. Symbolic links are in place to maintain backward compatibility with the old names and prevent disruption. ()
UPDATE privilege for system user mariadb.sys removed for system table mysql.global_priv ()
Deprecated InnoDB configuration parameters: ()
innodb_thread_concurrency
innodb_commit_concurrency
innodb_replication_delay
innodb_concurrency_tickets
innodb_thread_sleep_delay
innodb_adaptive_max_sleep_delay
Spider storage engine now allows parameters driver and filedsn for the ODBC wrapper. System tables spider_link_mon_servers , spider_tables , spider_xa_member , and spider_xa_failed_log updated. (MENT-812)
Setting SHUTDOWN_WAIT_FOR_SLAVES now only requires SHUTDOWN privilege, not the generic privilege. (MENT-731)
doublewrite recovery can corrupt data pages. ()
table can disappear when trying to change primary key after disabling Foreign Key checks and violating a Foreign Key constraint. (MENT-804)
Possible data inconsistency when executing ADD PRIMARY KEY with concurrent DML transactions. ()
table corruption can occur after ()
to extend a column was incorrectly allowed to be instant. ()
deadlock in ()
data file extension is not crash-safe. ()
is not crash safe. ()
Deadlock involving parallel workers, , and ()
Crashes when running a SQL query containing a specific subquery pattern. ()
Possible crash of a node when is executed. ()
Possible crash when executing ()
Server can hang when started with and records in refer to non-existent libraries. ()
Server crashes upon for stored procedures after upgrade from MariaDB Server 10.3. (MENT-819)
Crash with CREATE TEMPORARY TABLE .. ENGINE=SPIDER using wrapper odbc (MENT-807)
Service shutdown fails if OS datetime has been updated backwards. ()
ALTER TABLE .. ANALYZE PARTITION can run for hours for huge tables if engine-independent persistent statistics are enabled, due to reading and locking of all rows in the table instead of for the partition. ()
can fail with privilege error when privilege exists at database level but privilege exists at table level. ()
Latency and throughput regression identified in write-heavy benchmarks for latest releases in MariaDB Server 10.2, 10.3, and 10.4. (MENT-909)
Point in time recovery of binary log fails with syntax error when . ()
Replication aborts with upon CREATE .. SELECT when . ()
Regression in Audit Plugin Performance. (MENT-700)
ROW_FORMAT mismatch in instant . An instant ADD or DROP column or reorder could create a dummy table object with the wrong ROW_FORMAT when innodb_default_row_format was changed between and . ()
Slow shutdown on large instance when using Windows OS. ()
Rounding functions return wrong datatype. (, , , , , , )
PAM v2 plugin produces zombie processes. ()
Performance regression when using . (MENT-870)
Fixes to performance regressions introduced in . (, )
Change in I/O thread count is not reflected in system variables. (MENT-866)
and can't run if the library file doesn't exist. ()
This release includes Enterprise (plugin version 1.5.3.2).
This release includes , including ODBC Wrapper support.
system variable default value changed from 150000 to 0 (now deprecated)
system variable default value changed from 5000 to 0 (now deprecated)
system variable default value changed from 10000 to 0 (now deprecated)
system table schema changed
system table schema changed
system table schema changed
system table schema changed
In alignment with the , MariaDB Enterprise Server 10.5.5-3 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
MariaDB Enterprise Server 10.5 removes support for Red Hat Enterprise Linux (RHEL) 6 and CentOS 6.
MariaDB Enterprise Server 10.4.26-17 is a maintenance release of 10.4. This release includes a variety of fixes.
MariaDB Enterprise Server 10.4.26-17 was released on 2022-09-12.
Galera has been updated to 26.4.13-1
Debian 9 support has been discontinued.
The has been added for with a default value of 0. ()
When is executed with the command-line option, the backup tries to copy the InnoDB buffer pool dump file, which is located at the path defined by the system variable. ()
Starting with this release, only copies the InnoDB buffer pool dump file during State Snapshot Transfers (SSTs) for MariaDB Enterprise Cluster, powered by Galera.
When is executed against an encrypted InnoDB tablespace file, the table can be corrupted. ()
With MariaDB Enterprise Cluster, when is enabled on a node, users without the can still write to the node. ()
With MariaDB Enterprise Cluster, when a value is retrieved from an InnoDB sequence using the , the change is not replicated. ()
Starting with this release, InnoDB sequences are properly replicated when they are defined with NOCACH.
When an InnoDB table's collation is changed using with the INPLACE or NOCOPY algorithms, duplicate entries in unique indexes are not detected. ()
When INSERT .. SELECT .. GROUP BY is executed and the GROUP BY clause contains a derived table, the server can crash. ()
When a query contains an ANY(SELECT .. GROUP BY(SELECT ..)) predicand with a redundant subquery in the GROUP BY clause, the server can crash. ()
When ALTER TABLE .. ADD is used to add a column with the INSTANT algorithm, the server can crash if the ROW_FORMAT in the .frm file does not match the actual row format used by the data file. ()
For tables created prior to MariaDB Server 10.2, the ROW_FORMAT in the .frm file could be inconsistent with the actual row format used by the data file. If the server were upgraded to MariaDB Enterprise Server 10.6, the inconsistency could remain.
When INSERT .. SELECT is executed and the SELECT query calls an aggregate or window function, the server can crash with a segmentation fault. ()
When the is called, the server can crash with a segmentation fault. ()
When a query uses the DISTINCT keyword and calls an aggregate function as an argument for an always-constant function, the server can crash. ()
An always-constant function is a function that always returns a constant value, even if the function's arguments are not constant.
For example, the is an always-constant function.
When is executed with the and options, the backup can hang due to a race condition between threads. ()
When an EXISTS predicate or an IN, ALL, or ANY predicand is used in an eliminated GROUP BY clause, the server can crash. (MENT-1606, )
When an IN subquery is used outside the context of a regular query (such as in a stored procedure), the server can crash. ()
When MariaDB Enterprise Cluster is used and the Galera replication TCP port receives non-Galera network traffic, the server can crash. ()
In previous releases, when the crash occurred, the following messages would appear in the :
When a generated column is added to an InnoDB table with the INSTANT algorithm, the server can crash due to a buffer overflow. ()
When is executed with a view definition that contains an unknown column in an ON condition, the server can crash instead of raising an error with the error code. ()
For multi-table or queries, the optimizer fails to apply partition pruning optimization for the table that is updated or deleted from. ()
When an IN condition contains a mixture of numeric and string values, results can be inconsistent. ()
When a sequence event is written to the binary log with , the value of is not respected. ()
When a transaction can't be fully written to the binary log, but the transaction can be safely rolled back, a LOST_EVENTS incident event is written to the binary log. ()
In previous releases, this problem could cause replica servers to encounter the following error:
Starting with this release, a LOST_EVENTS incident is only written to the binary log
when safe rollback is not possible.
When a replica server replicates an incident event, the details about the failure are not in the primary server's error log, the replica server's error log, or the output of . ()
When a backup is performed with , the backup includes binary logs. ()
When a table is created from a that uses a recursive CTE, the table can use unexpected data types and contain truncated data if the calculated values from the recursive part of the CTE do not fit in the column types that are taken from the non-recursive part of the CTE. ()
Starting with this release, the CTE calculation is aborted when the calculated values do not fit in the column types. When this occurs, a warning or error (depending on is raised with the error code and the following error message:
When uses EditLine instead of readline (such as on Debian and Ubuntu), Unicode characters are not accepted. ()
When the optimizer chooses a semi-join optimization for a subquery, the LooseScan and FirstMatch strategies are not considered for certain queries where they would be appropriate, and they are considered for certain queries where they would be inappropriate. ()
When FULLTEXT search is performed on an InnoDB table, the results are incorrect when the search term contains an apostrophe ('). ()
Starting with this release, when a search term contains an apostrophe ('), InnoDB tokenizes the word at the apostrophe, ignores the first token, and matches against the second token.
After upgrading from old versions of MariaDB Server, some operations fail if ALGORITHM=NOCOPY is specified. ()
In previous releases, the following error could be raised:
mariadb-backup command-line option removed
mysql command-line option added
mysqld command-line option added
mysqldump command-line option added
system variable added
In alignment with the , MariaDB Enterprise Server 10.4.26-17 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64 Red Hat Enterprise Linux 8 packages)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see .
This eighth release of 10.4 is a maintenance release, including a variety of fixes.
MariaDB Enterprise Server 10.4.14-8 was released on 2020-09-08.
Limit innodb_encryption_threads to 255 ()
Minimum value of raised to 8 (previously 4) so fixed size data types like and are not truncated for lower values of . ()
Backport from MariaDB Server 10.5.4 of improvements to for InnoDB. (MENT-636)
privilege for system user mariadb.sys removed for system table ()
doublewrite recovery can corrupt data pages. ()
table can disappear when trying to change primary key after disabling Foreign Key checks and violating a Foreign Key constraint. (MENT-804)
corruption in delete buffering. ()
Rollback of fails when column reorder occurs. ()
Possible data inconsistency when executing ADD PRIMARY KEY with concurrent DML transactions. ()
table corruption after ()
to extend a column was incorrectly allowed to be instant. ()
deadlock in ()
data file extension is not crash-safe. ()
is not crash safe. ()
Deadlock involving parallel workers, , and ()
Crashes when running a SQL query containing a specific subquery pattern. ()
Dropping the adaptive hash index may cause DDL to lock up InnoDB. ()
could result in a crash when the value exceeds the max allowed 2147483647 ()
Crash on WITH RECURSIVE large query ()
Crash with Prepared Statement with a ? parameter inside a re-used CTE. ()
Possible crash after changing the query_cache size. ()
Crash in CREATE TABLE AS SELECT when the precision of returning type = 0 ()
or in a statement which has a 0x00 byte in one of the values could crash the server. ()
recovery can block server startup. (MENT-915)
Possible crash of a node when is executed ()
Possible crash when executing . ()
Server can hang when started with --plugin-load-add=server_audit and records in mysql.plugin refer to non-existent libraries. ()
Server hangs on start up when loading if old plugin is installed (MENT-273)
Service shutdown fails if OS datetime has been updated backwards. ()
ALTER TABLE .. ANALYZE PARTITION can run for hours for huge tables if engine-independent persistent statistics are enabled, due to reading and locking of all rows in the table instead of for the partition. ()
can fail with privilege error when privilege exists at database level but privilege exists at table level. ()
Latency and throughput regression identified in write-heavy benchmarks for latest releases in MariaDB Server 10.2, 10.3, and 10.4. (MENT-909)
When giving a parallel optimistic slave a replication stop position with START SLAVE UNTIL .. file .. pos stops at an earlier position earlier than defined if the transaction that spans over the given stop position has to roll back due to conflicts. ()
does not stop on errors while applying redo log. ()
Point in time recovery of binary log fails with syntax error when . ()
Replication aborts with upon CREATE .. SELECT when . ()
Regression in Audit Plugin Performance. (MENT-700)
ROW_FORMAT mismatch in instant . An instant ADD or DROP column or reorder could create a dummy table object with the wrong ROW_FORMAT when was changed between and . ()
Slow shutdown on large instances when using Windows OS. ()
Rounding functions return wrong datatype. (, , , , , , )
produces zombie processes. ()
Performance regression when using . (MENT-870)
and can't run if the library file doesn't exist. ()
This release includes
--help command-line option added
command-line option added
system variable minimum value changed from 4 to 8
In alignment to the , MariaDB Enterprise Server 10.4.14-8 is provided for:
Red Hat Enterprise Linux 8
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 6
CentOS 8
CentOS 7
CentOS 6
Debian 10
Debian 9
Debian 8
SUSE Linux Enterprise Server 15
SUSE Linux Enterprise Server 12
Ubuntu 20.04
Ubuntu 18.04
Ubuntu 16.04
Microsoft Windows
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
CentOS 6, Debian 8, and Red Hat Enterprise Linux 6 are no longer supported as per the . Older releases are available from the . Instructions for installation are included as a README file within the download.
This page is: Copyright © 2025 MariaDB. All rights reserved.
CVE (with cve.org link)
CVSS base score
5.5
4.9
4.9
CVE (with cve.org link)
CVSS base score
4.9
ERROR 1021 (HY000): Disk full (./org/test1.MAI); waiting for someone to free some space... (errno: 28 "No space left on device")InnoDB: Crash recovery is broken due to insufficient innodb_log_file_sizeWSREP: Failed to apply write set with flags = (rollback | pa_unsafe)!wsrep_has_changes(thd) || (thd->lex->sql_command == SQLCOM_CREATE_TABLE && !thd->is_current_stmt_binlog_format_row()) || thd->wsrep_cs().transaction().state() == wsrep::transaction::s_abortedERROR 1808 (HY000): Schema mismatch (Number of columns don't match, table has x columns but the tablespace meta-data file has y columns)ERROR 1290 (HY000): The MariaDB server is running with the --read-only option so it cannot execute this statementTransactional commit not supported by involved engineSELECT aggregate_func(DISTINCT t1.primary_key, ...) FROM t1;WSREP: Shifting SYNCED -> DONOR/DESYNCEDFATAL ERROR: ... failed to copy datafile.CVE (with cve.org link)
CVSS base score
4.9
CVE (with cve.org link)
CVSS base score
4.9
CVE (with cve.org link)
CVSS base score
4.4
CVE (with cve.org link)
CVSS base score
7.5
7.5
6.5
6.5
6.5
6.5
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::system_error> >'
what(): remote_endpoint: Transport endpoint is not connected
[ERROR] mysqld got signal 6 ;Last_SQL_Errno 1590
Last_SQL_Error The incident LOST_EVENTS occurred on the master. Message: error writing to the binary logOut of range value for column 'COLUMN_NAME' at row ROW_NUMERROR 1845 (0A000): ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACECVE (with cve.org link)
CVSS base score
4.4
MariaDB Enterprise Server 10.5.26-20 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2024-09-09
MariaDB Enterprise Server 10.5.26-20 is a maintenance release of MariaDB Enterprise Server 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.26-20 was released on 2024-09-09.
The JSON functions JSON_ARRAY_INTERSECT, JSON_OBJECT_TO ARRAY, and JSON_FILTER_KEYS have been backported from later MariaDB Community Server Release Series to enhance the JSON function coverage in this MariaDB Enterprise Server release series. (MENT-1897)
The new JSON function JSON_ARRAY_INTERSECT(, ) is used to find the intersection between two JSON arrays
Example:
SET @array1= '[1,2,3]';
SET @array2= '[1,2,4]';
SELECT json_array_intersect(@array1, @array2) AS result;+--------+
| result |
+--------+
| [1, 2] |
+--------+SET @json1= '[[1,2,3],[4,5,6],[1,1,1]]';
SET @json2= '[[1,2,3],[4,5,6],[1,3,2]]';
SELECT json_array_intersect(@json1, @json2) AS result;+------------------------+
| result |
+------------------------+
| [[1, 2, 3], [4, 5, 6]] |
+------------------------+The new JSON function JSON_OBJECT_TO_ARRAY(<json_doc>) is used to convert all JSON objects found in a JSON document to JSON arrays where each item in the outer array represents a single key-value pair from the object. Example:
SET @json1= '{ "a" : [1,2,3] , "b": {"key1": "val1", "key2": {"key3": "val3"}} }';
SELECT JSON_OBJECT_TO_ARRAY(@json1) AS result;+-----------------------------------------------------------------------+
| result |
+-----------------------------------------------------------------------+
| [["a", [1, 2, 3]], ["b", {"key1": "val1", "key2": {"key3": "val3"}}]] |
+-----------------------------------------------------------------------+Resulting arrays can be compared using JSON_ARRAY_INTERSECT():
SET @json1='{"a":[1,2,3],"b":{"key1":"val1","key2":{"key3":"val3"}}}';
SET @json2='{"a":[1,2,3]}';
SELECT JSON_OBJECT_TO_ARRAY(@json1) INTO @array1;
SELECT JSON_OBJECT_TO_ARRAY(@json2) INTO @array2;
SELECT JSON_ARRAY_INTERSECT(@array1,@array2) AS result;+--------------------+
| result |
+--------------------+
| [["a", [1, 2, 3]]] |
+--------------------+The new JSON function JSON_OBJECT_FILTER_KEYS(<json_doc>,<array_keys>) returns key/value pairs from a JSON string for keys defined in <array_keys>. Example:
SET @json1= '{ "a": 1, "b": 2, "c": 3}';
SELECT JSON_OBJECT_FILTER_KEYS (@json1, ' ["b", "c"] ') AS result;+------------------+
| result |
+------------------+
| {"b": 2, "c": 3} |
+------------------+By using JSON_ARRAY_INTERSECT() and JSON_KEY() as arguments for JSON_OBJECT_FILTER_KEYS(), a comparison of two JSON strings is possible where only the same keys are compared, not the key/value pairs. Example (only show key/value pairs of json1 where the key exists in json2):
SET @json1= '{ "a": 1, "b": 2, "c": 3}';
SET @json2= '{"b" : 10, "c": 20, "d": 30}';
SELECT JSON_OBJECT_FILTER_KEYS (@json1, json_array_intersect(json_keys(@json1), json_keys(@json2))) AS result;+------------------+
| result |
+------------------+
| {"b": 2, "c": 3} |
+------------------+The new JSON function JSON_KEY_VALUE(<json_doc>,<json_path>) extracts key/value pairs from a JSON object. The JSON path parameter is used to only return key/value pairs for matching JSON objects. (MENT-1896)
Example:
SELECT JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]');+-----------------------------------------------------------------------------+
| JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]') |
+-----------------------------------------------------------------------------+
| [{"key": "key1", "value": "val1"}, {"key": "key2", "value": "val2"}] |
+-----------------------------------------------------------------------------+The function JSON_KEY_VALUE() can be used as an argument to JSON_TABLE(), which allows adding the key to a result set. Example:
SELECT jt.* FROM JSON_TABLE(
JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]'),'$[*]'
COLUMNS (
k VARCHAR(20) PATH '$.KEY',
v VARCHAR(20) PATH '$.value',
id FOR ORDINALITY )) AS jt;+------+------+------+
| k | v | id |
+------+------+------+
| key1 | val1 | 1 |
| key2 | val2 | 2 |
+------+------+------+A new global variable server_uid can be used to identify a server instance. This Server ID is also logged in the error log file on startup (MDEV-34311)
Galera has been updated to 26.4.19
The GCS protocol version has been changed, preventing a downgrade of individual nodes of a MariaDB Enterprise Cluster
This release incorporates MariaDB ColumnStore engine version 5.6.8.
An ALTER TABLE, OPTIMIZE TABLE, or REPAIR TABLE on an Aria table of ROW_FORMAT=PAGE (default) can fail or possibly corrupt the table, if the data file is bigger than 4GB. (MDEV-34522)
When executing an ALTER TABLE
CHECK PARTITION FOR UPGRADE on a table, which was created by the same server version, and therefore does not need an upgrade, a following ALTER TABLE for the same table will result in a server crash. (MDEV-32155)
Can result in hang or crash
When using SHOW CREATE DATABASE statement crashes the server with a database name containing Unicode characters, the server can crash (MDEV-32376)
For a partitioned table of type SPIDER where the remote connection is configured via CREATE SERVER, the server can crash if the server definition was removed via DROP SERVER (MDEV-31475)
When multiple threads try to load spider and to create a spider table, MariaDB can crash (MDEV-32487)
When enabling the PAGE_COMPRESSED option for an InnoDB table created with INNODB_DEFAULT_ROW_FORMAT=redundant, the server crashes. (MDEV-34222)
A query that plans to use the Rowid Filter optimization could crash the server if some factor causes it to terminate abnormally at a certain specific point in query optimization. Examples of such causes of termination are: (MDEV-30651)
Query being killed with KILL statement
Statement execution exceeding @@max_statement_time limit
When running a query with HAVING NOT column clause where the "column" is also used in the GROUP BY {{ ... SELECT ... GROUP BY column ... HAVING NOT column}}, the server can crash. Other forms of HAVING clause were not affected (MDEV-19520)
An Auto-generated DELETE statement is added to the binary log for MEMORY tables, which can break replication. The DELETE cannot be executed in cases like missing triggers, which results in the replication being stopped. (MDEV-25607)
Replication fails when XA transactions are used where the replica has replicate_do_db set and the client has touched a different database when running DML such as inserts (MDEV-33921)
Replication fails in chain configurations if an XA transaction is replicated which results in an empty transaction on a replica. The XA START through XA PREPARE first phase of the transaction is not binlogged, yet the XA COMMIT is binlogged, which results in errors due to executing standalone XA COMMIT queries on replicas further in the chain. (MDEV-33921)
The server can crash for a query with a HAVING clause such that: (MDEV-32293) (MDEV-32424) (MDEV-32304) (MDEV-29363)
It has several references to the same non-trivial constant (e.g., a subquery),
Condition pushdown optimization would try to move at least one of the references from HAVING clause into WHERE
If a query used a derived table (a CTE or a mergeable VIEW would work as well) and the WHERE clause compared columns of the derived table with the value of CHARSET() or COERCIBILITY() function, the query could produce wrong result, or crash. The cause was incorrect processing of these functions by (MDEV-33010)
Can result in unexpected behavior
Replicas only read the first 41 characters of MASTER_PASSWORD from the master.info file. This leads to an access denied error for a replica on a server restart, if the password is > 41 characters long. (MDEV-23857)
mariadb-backup stores the password into the tool_command setting in the file xtrabackup_info, if the password is provided as command-line option (MDEV-34434)
The semi-sync binlog fail-over recovery process uses rpl_semi_sync_slave_enabled==TRUE as its condition to truncate a primary server's binlog, as it is anticipating the server to re-join a replication topology as a replica. However, for servers configured with both rpl_semi_sync_master_enabled=1, and rpl_semi_sync_slave_enabled=1, if a primary is just re-started (i.e., retaining its role as master), it can truncate its binlog to drop transactions which its replica(s) has already received, and executed. (MENT-2122)
If this happens, when the replica reconnects, its gtid_slave_pos can be ahead of the recovered primary's gtid_binlog_pos, resulting in an error state where the replica's state is ahead of the primary's.
Option --init-rpl-role will be used to define the initial role a server has. Possible options are MASTER and SLAVE, default MASTER . Setting it to SLAVE is now the condition for semi-sync recovery to truncate the binlog, This allows for both rpl_semi_sync_master_enabled, and rpl_semi_sync_slave_enabled to be set for a primary that is restarted, and no transactions will be lost, so long as --init-rpl-role is not set to SLAVE
Command-line option 'defaults-group-suffix=' cannot be used with the script mariadb-secure-installation (MDEV-33265)
Grouping operators referring to column aliases in unions inside derived tables can cause name resolution problems with prepared statements. (MDEV-34506)
Table mysql.gtid_slave_pos is replicated between two MariaDB Enterprise Cluster although wsrep_gtid_mode=OFF is set. (MDEV-34170)
wsrep_sst_mariadb-backup is using /tmp dir during SST instead of an user defined tmpdir (MDEV-32158)
The following misleading error message is shown with MariaDB Enterprise Cluster. Galera can mark user threads as high priority and so they can't be killed: (MDEV-12008)
You are not the owner of the thread ....Now the following error message is shown:
This is a high priority thread/query and cannot be killed without compromising the consistency of the clusterExecuting an INSERT statement in PS mode having positional parameters bound with an array can result in an incorrect number of inserted rows in case there is a BEFORE INSERT trigger that executes yet another INSERT statement to put a copy of the row being inserted into some table. (MDEV-24411)
When using the asynchronous replication between two MariaDB Enterprise Cluster (Galera) environments, the domain id of the GTID can be wrongly set, or changed by Galera (MDEV-32633)
Related to performance
Slower query performance on some Linux systems because of a performance difference of the system call ftruncate'() to truncate data files, as ftruncate() causes a flush. MariaDB used "ftruncate" to periodically empty its temporary tables. Query plans with Split Materialized optimization are affected the most. (MENT-2125)
ALTER TABLE ... IMPORT TABLESPACE can take unnecessarily long if a database uses a large number of tablespaces and the value inndb_open_files is lower than the number of existing table_spaces (MDEV-34670)
Rowid Filter optimization cannot work with backward index scans. An attempt to run such a query plan will make the query perform very slowly. Fixed by disabling use of Rowid Filter if the optimizer decides to use a backward index scan. (MDEV-33875)
Changelog
For the complete list of changes in this release, see the changelog.
Platforms
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 10.5.26-20 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "MariaDB Corporation Engineering Policies".
MariaDB Enterprise Server 11.6.21-17 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2025-03-19
MariaDB Enterprise Server 10.6.21-17 is a maintenance release of 10.4. This release includes a variety of fixes.
MariaDB Enterprise Server 10.6.21-17 was released on 19 Mar 2025.
This release incorporates MariaDB ColumnStore engine version .
Starting with this release we generate a Software Bill of Materials (SBOM) JSON file provided in the downloads archive, which can be reached from the "All Files" link on the MariaDB Enterprise Server downloads page (MENT-2200)
New parameter --skip-freed-pages for Innochecksum. Use this parameter to not get freed undo logs reported as existing undo log pages. ()
Galera protocol versions are now shown by show status - change available with installation of galera library 26.4.21+ ()
MariaDB now supports MySQL 8.0 binlog events, including PARTIAL_UPDATE_ROWS_EVENT, TRANSACTION_PAYLOAD_EVENT, and HEARTBEAT_LOG_EVENT_V2. ()
InnoDB deadlock output query length increased to improve visibility of deadlocked statements. ()
updated to
NOTE: Includes increasing the GCS protocol version, which prevents downgrades of individual nodes in the cluster as soon as all nodes have been updated
Fix incorrect writing of timestamp into binary log, causing discrepancy upon binlog replaying ()
Fix trigger created with "CREATE TRIGGER table1_after_insert AFTER INSERT" which is adding rows to another table using "FOR EACH ROW insert into table2(id, name) values (NEW.id, NEW.name);" that did not work correctly when if bulk inserts are used by the application. Only the first row of the bulk insert would be added to the table ()
History is now stored on the same partitions on different Galera nodes when system versioning is enabled ()
Fix assertion falilure and possible index corruption with unique key and nopad collation without DESC or HASH keys ()
Fix client crash the command after client sets character set to utf32 ()
Fix possible crash where server could not construct a geomery object from the input ()
Fix possible InnoDB hang while running out of buffer pool ()
Fix possible Spider thread hang in 'Update' state on 2nd INSERT ()
After changing the table definition for the system table 'mysql.servers', a following execution of CREATE SERVER would previously lead to a server crash. ()
NOTE: System tables should never be modified by a user anyhow
FIx streaming replication transaction crash with innodb_snapshot_isolation ()
Fix sporadic failure of async replication on Galera async replica nodes with parallel replication enabled ()
Fix failing assertion causing disruption and replication failure ()
Fix possible failure of wsrep_sst_rsync SST script if user specified aria_log_dir_path different from default data directory ()
Fix connection hang after query on a partitioned table with UNION and LIMIT ROWS EXAMINED ()
Fix server crash in get_sort_by_table/make_join_statistics after INSERT into a view with ORDER BY ()
Fix possible hang during CREATE TABLE...SELECT error handling, especially with innodb_snapshot_isolation enabled ()
Fix incorrect locking order of LOCK_log/LOCK_commit_ordered, and LOCK_global_system_variables ()
Fix possible memory leak on SHUTDOWN ()
Fix possible memory leak while shutting down server after installing the auth_gssapi plugin ()
Fix possible crash on DELETE from a HEAP table ()
Fix possible server crash when using INSERT DELAYED on tables with virtual columns. ()
Fix possible crash during index traversal using tree_search_next. ()
Fix possible hang or crash during InnoDB purge with HASH indexes during ALTER TABLE ()
Fix possible hang or crash where zero offset applied to null pointer ()
Fix possible crash on bootup in spider_sys_open_table «ext-issue»«», «ext-issue»«» ()
Fix possible Spider crash or hang when the first byte of a connection key is changed ()
Fix possible runtime error caused by XA RECOVER applying a zero offset to a null pointer ()
Fix assertion failure on cascading foreign key update of table with vcol index in parent ()
Fix assertion failure where CURRENT_USER was not correctly copied during condition pushdown ()
Fix cluster node hang during shutdown if threadpool is used ()
Calling a stored routine that executes a join on three or more tables and referencing not-existent column name in the USING clause could previously result in a crash on its second invocation. ()
Fix possible assertion failure when Galera cluster is in 'split-brain' state due to loss of communication between nodes (fix requires Galera library 26.4.21+) (MENT-2175)
Fix assertion failure when executing XA PREPARE (and possibly other XA statements) on Galera cluster nodes (MENT-2212)
Fix assertion failure when executing XA statements on Galera cluster nodes (MENT-2214)
In rare cases, an ALTER TABLE or other operation could previously hang when using NBO mode on a cluster with very low network latencies (for example, when both nodes are running on the same physical machine) (MENT-2215)
MariaDB Cluster and ALTER INPLACE running in Total Order Isolation (wsrep_OSU_method=TOI) now correctly abort a DML INSERT operation in InnoDB ()
Fix possible crash in wsrep_check_sequence ()
Fix sporadic reporting of success when a deadlock error occurs under --ps-protocol BF aborted transaction ()
Fix rare cases where binlog entries could receive incorrect timestamps on secondary nodes of a Galera cluster, potentially impacting replication accuracy ()
For an authentication with the ed25519 authentication plugin the password of the CREATE USER statement is now masked in the audit log ()
MariaDB Audit now detects all DCLs forms for masking a password ()
Fix potential issue in secondary Index with ROW_FORMAT=COMPRESSED and Change buffering enabled ()
sql_mode='NO_UNSIGNED_SUBTRACTION' now works for multiple unsigned integers ()
Fix doublewrite recovery of innodb_checksum_algorithm=full_crc32 encrypted pages ()
START TRANSACTION, when triggering an implicit commit as a COMMIT or ROLLBACK has not been executed before, now resets optional characteristics added to the last START TRANSACTION command ()
mariadb-binlog can now correctly process more than one logfile when --stop-datetime is specified ()
Rows in table mysql.gtid_slave_pos are now correctly deleted on Galera nodes when wsrep_gtid_mode = 1 is used, which previously lead to wrong information about replica delays ()
EXCHANGE PARTITION now works for tables with unique blobs ()
Fix issue where functions in default values in tables with certain character sets could break SHOW CREATE and mariadb-dump ()
Setting pseudo_thread_id to a value exceeding 4 bytes previously resulted in truncation when written to the binary log ()
A BEFORE INSERT Trigger previously returned with error "Field 'xxx' doesn't have a default value", if a NULL value was added for a column defined NOT NULL without explicit value and no DEFAULT specified ()
Undefined behavior could occur when attempting to perform INSERT DELAYED on a Galera cluster node. ()
Fix issue where ON UPDATE SET NULL could not be specified on a NOT NULL column ()
algorithm = instant can now correctly be used if a table has partitions and one tries to change a column with an index which is not the partitions key. This previously gave error "ERROR 1846 (0A000): ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY" ()
Fix issue where DROP TABLE on child and UPDATE of parent table can cause a metadata lock BF-BF conflict when applied concurrently. ()
Can now correctly add a foreign key on a table with a long UNIQUE multi-column index that contains a foreign key as a prefix ()
Fix possibly wrong result using a degenerated subquery (SELECT <expr>) with window function ()
The "Failed to write to mysql.slow_log" error no longer shown without a detailed reason for the error ()
Fix debian-start script failure when using non-standard socket path ()
wsrep_sst_mariadb-backup.sh no longer uses --use-memory default (100MB) resulting in prepare stage which could take hours ()
Replicate_* fields in Show-Slave-Status may be truncated, impacting replication monitoring. (MENT-2238)
Conditions with SP local variables are now pushed into derived table. Previous behaviour caused slow performance and table scans instead of using the pushed down condition ()
NULL-aware materialization with IN predicate and single column no longer skips building sorted Ordered_key structures ()
Cloning of table statistics while saving the InnoDB table stats is now avoided ()
For the complete list of changes in this release, see the .
In alignment to the , MariaDB Enterprise Server 10.6.21-17 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Ubuntu 24.04 (x86_64, ARM64)
Red Hat UBI 8 (x86_64, ARM64)
Red Hat UBI 8 is part of the Enterprise Server Docker Image. It does not support MariaDB Enterprise Cluster (Galera) or MariaDB ColumnStore.
Some components of MariaDB Enterprise Server are supported on a subset of platforms. See for details.
MariaDB Enterprise Server 11.6.19-15 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2024-09-09
MariaDB Enterprise Server 10.6.19-15 is a maintenance release of 10.6.
MariaDB Enterprise Server 10.6.19-15 was released on 2024-09-09.
Starting with MariaDB Enterprise Server 10.6.19-15, the space occupied by freed pages within the InnoDB system tablespace can be reclaimed by adding an :autoshrink attribute to innodb_data_file_path, like: (MENT-1304)
This allows the system tablespace to be truncated after the last allocated page within it, all the way to the specified minimum size (here: 12MiB).
In older release series InnoDB data files never shrink in size during normal operation. One could shrink .ibd files by rebuilding tables with OPTIMIZE TABLE, or the undo tablespace files by SET GLOBAL innodb_undo_log_truncate=ON
The function CONV() , which converts a number between numeric base systems, now supports conversions up to base 62. This allows conversions to encodings to capital letters A-Z, lower case letters a-z, and numbers 0-9. The old limit was 36, not including lower case letters. (MENT-2031)
Example:
The JSON functions JSON_ARRAY_INTERSECT, JSON_OBJECT_TO ARRAY, and JSON_FILTER_KEYS have been backported from later MariaDB Community Server Release Series to enhance the JSON function coverage in this MariaDB Enterprise Server release series. (MENT-1897)
The new JSON function JSON_ARRAY_INTERSECT(, ) is used to find the intersection between two JSON arrays.
Example:
The new JSON function JSON_OBJECT_TO_ARRAY(<json_doc>) is used to convert all JSON objects found in a JSON document to JSON arrays where each item in the outer array represents a single key-value pair from the object. Example:
Resulting arrays can be compared using JSON_ARRAY_INTERSECT():
The new JSON function JSON_OBJECT_FILTER_KEYS(<json_doc>,<array_keys>) returns key/value pairs from a JSON string for keys defined in <array_keys>. Example:
By using JSON_ARRAY_INTERSECT() and JSON_KEY() as arguments for JSON_OBJECT_FILTER_KEYS(), a comparison of two JSON strings is possible where only the same keys are compared, not the key/value pairs. Example (only show key/value pairs of json1 where the key exists in json2):
The new JSON function JSON_KEY_VALUE(<json_doc>,<json_path>) extracts key/value pairs from a JSON object. The JSON path parameter is used to only return key/value pairs for matching JSON objects. (MENT-1896)
Example:
The function JSON_KEY_VALUE() can be used as an argument to JSON_TABLE(), which allows adding the key to a result set. Example:
It is now possible to unblock an account which reached the --max-password-errors limit by ALTER USER <user> ACCOUNT UNLOCK instead of executing a FLUSH PRIVILEGES command ()
Before this change ALTER USER <user> ACCOUNT UNLOCK only unlocked accounts which have been locked explicitly via ALTER USER <user> ACCOUNT LOCK
FLUSH PRIVILEGES was the only way to reset account limit counters, like accounts blocked by reaching --max-password-errors. Using FLUSH PRIVILEGES causes a full reload of the ACL tables, which can cause heavy disk reads
A new global variable server_uid can be used to identify a server instance. This Server ID is also logged in the error log file on startup ()
A new optimizer_join_limit_pref_ratio optimization had been added which allows to efficiently handle queries using JOIN and ORDER BY ... LIMIT construct. The new system variable optimizer_join_limit_pref_ratio is set to 0 by default for disabling the optimization. Set the value of optimizer_join_limit_pref_ratio to a non-zero value to enable this option (higher values are more conservative, recommended value is 100)
Galera has been updated to 26.4.19
The GCS protocol version has been changed, preventing a downgrade of individual nodes of a MariaDB Enterprise Cluster
This release incorporates MariaDB ColumnStore engine version 23.10.2.
An ALTER TABLE, OPTIMIZE TABLE, or REPAIR TABLE on an Aria table of ROW_FORMAT=PAGE (default) can fail or possibly corrupt the table, if the data file is bigger than 4GB. ()
When executing an ALTER TABLE
CHECK PARTITION FOR UPGRADE on a table, which was created by the same server version, and therefore does not need an upgrade, a following ALTER TABLE for the same table will result in a server crash. ()
When using SHOW CREATE DATABASE statement crashes the server with a database name containing Unicode characters, the server can crash ()
For a partitioned table of type SPIDER where the remote connection is configured via CREATE SERVER, the server can crash if the server definition was removed via DROP SERVER ()
When multiple threads try to load spider and to create a spider table, MariaDB can crash ()
When enabling the PAGE_COMPRESSED option for an InnoDB table created with INNODB_DEFAULT_ROW_FORMAT=redundant, the server crashes. ()
A query that plans to use the Rowid Filter optimization could crash the server if some factor causes it to terminate abnormally at a certain specific point in query optimization. Examples of such causes of termination are: ()
Query being killed with KILL statement
Statement execution exceeding @@max_statement_time limit
When running a query with HAVING NOT column clause where the "column" is also used in the GROUP BY {{ ... SELECT ... GROUP BY column ... HAVING NOT column}}, the server can crash. Other forms of HAVING clause were not affected ()
An Auto-generated DELETE statement is added to the binary log for MEMORY tables, which can break replication. The DELETE cannot be executed in cases like missing triggers, which results in the replication being stopped. ()
Replication fails when XA transactions are used where the replica has replicate_do_db set and the client has touched a different database when running DML such as inserts ()
Replication fails in chain configurations if an XA transaction is replicated which results in an empty transaction on a replica. The XA START through XA PREPARE first phase of the transaction is not binlogged, yet the XA COMMIT is binlogged, which results in errors due to executing standalone XA COMMIT queries on replicas further in the chain. ()
The server can crash for a query with a HAVING clause such that: () () () ()
It has several references to the same non-trivial constant (e.g., a subquery),
Condition pushdown optimization would try to move at least one of the references from HAVING clause into WHERE
If a query used a derived table (a CTE or a mergeable VIEW would work as well) and the WHERE clause compared columns of the derived table with the value of CHARSET() or COERCIBILITY() function, the query could produce wrong result, or crash. The cause was incorrect processing of these functions by ()
With MariaDB Enterprise Custer a node can hang with the error: ()
Replicas only read the first 41 characters of MASTER_PASSWORD from the master.info file. This leads to an access denied error for a replica on a server restart, if the password is > 41 characters long. ()
Adding a partition in a spider table can lead to memory violation ()
MariaDB Server still can allow new connections to be created when the Server got a fatal signal ()
Slow warm-up for InnoDB as long as there are free pages in the buffer pool ()
An InnoDB warm-up is not needed when using innodb_buffer_pool_dump_at_shutdown=ON and innodb_buffer_pool_load_at_startup=ON
A slowdown at run time has not been observed
mariadb-backup stores the password into the tool_command setting in the file xtrabackup_info, if the password is provided as command-line option ()
The semi-sync binlog fail-over recovery process uses rpl_semi_sync_slave_enabled==TRUE as its condition to truncate a primary server's binlog, as it is anticipating the server to re-join a replication topology as a replica. However, for servers configured with both rpl_semi_sync_master_enabled=1, and rpl_semi_sync_slave_enabled=1, if a primary is just re-started (i.e., retaining its role as master), it can truncate its binlog to drop transactions which its replica(s) has already received, and executed. (MENT-2122)
If this happens, when the replica reconnects, its gtid_slave_pos can be ahead of the recovered primary's gtid_binlog_pos, resulting in an error state where the replica's state is ahead of the primary's.
Option --init-rpl-role will be used to define the initial role a server has. Possible options are MASTER and SLAVE, default MASTER . Setting it to SLAVE is now the condition for semi-sync recovery to truncate the binlog, This allows for both rpl_semi_sync_master_enabled, and rpl_semi_sync_slave_enabled to be set for a primary that is restarted, and no transactions will be lost, so long as --init-rpl-role is not set to SLAVE
Grouping operators referring to column aliases in unions inside derived tables can cause name resolution problems with prepared statements. ()
Table mysql.gtid_slave_pos is replicated between two MariaDB Enterprise Cluster although wsrep_gtid_mode=OFF is set. ()
wsrep_sst_mariadb-backup is using /tmp dir during SST instead of an user defined tmpdir ()
The following misleading error message is shown with MariaDB Enterprise Cluster. Galera can mark user threads as high priority and so they can't be killed: ()
Now the following error message is shown:
Executing an INSERT statement in PS mode having positional parameters bound with an array can result in an incorrect number of inserted rows in case there is a BEFORE INSERT trigger that executes yet another INSERT statement to put a copy of the row being inserted into some table. ()
When using the asynchronous replication between two MariaDB Enterprise Cluster (Galera) environments, the domain id of the GTID can be wrongly set, or changed by Galera ()
Performance improvements for queries using a secondary indexes. (MENT-2126)
Slower query performance on some Linux systems because of a performance difference of the system call ftruncate'() to truncate data files, as ftruncate() causes a flush. MariaDB used "ftruncate" to periodically empty its temporary tables. Query plans with Split Materialized optimization are affected the most. (MENT-2125)
Using NAME_CONST(), or executing query from the stored procedure and referring to a local variable, changes the plan, and may make execution slower ()
ALTER TABLE ... IMPORT TABLESPACE can take unnecessarily long if a database uses a large number of tablespaces and the value inndb_open_files is lower than the number of existing table_spaces ()
Rowid Filter optimization cannot work with backward index scans. An attempt to run such a query plan will make the query perform very slowly. Fixed by disabling use of Rowid Filter if the optimizer decides to use a backward index scan. ()
For the complete list of changes in this release, see the .
In alignment to the , MariaDB Enterprise Server 10.6.19-15 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Ubuntu 24.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
MariaDB Enterprise Server 11.6.5-2 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2021-12-13
MariaDB Enterprise Server 10.6.5-2 is a maintenance release of 10.6. This release includes a variety of fixes.
MariaDB Enterprise Server 10.6.5-2 was released on 2021-12-13.
Galera updated to 26.4.10.
Debian 11 support added.
no longer enables pushdown of UDFs and Stored Functions to the Data Node by default: ()
The default value of has changed from -1 to 0
In previous releases, Enterprise Spider pushed UDFs and Stored Functions down to the Data Node by default, which could cause query results to be inconsistent.
Starting with this release, all UDFs and stored functions are evaluated on the Spider Node by default. If desired, pushdown of UDFs and Stored Functions can be explicitly enabled by setting spider_use_pushdown_udf=1. Testing is recommended to confirm that query results are consistent.
provide descriptions of each column in the COMMENT column option. ()
In the Spider ODBC Topology, automatically sets the appropriate transaction isolation level for the ODBC data source. (MENT-1328)
The InnoDB Force Recovery procedure has changed to differentiate between rollback of DDL and DML operations. The changes are: ()
The behavior of is no longer identical when innodb_force_recovery=3 and innodb_force_recovery=4
When innodb_force_recovery=3 is set, InnoDB skips rollback of DML operations, but DDL operations will still be rolled back using the DDL log.
When innodb_force_recovery=4 is set, InnoDB skips rollback of both DML and DDL operations. This behavior is equivalent to setting innodb_force_recovery=3 in versions earlier than MariaDB Enterprise Server 10.6.5.
InnoDB tables with ROW_FORMAT=COMPRESSED could be corrupted. (MENT-1367)
, powered by Galera, can crash on if the table does not have a primary key and if the data for a field exceeds 4096 bytes. ()
When an InnoDB tablespace (.ibd) file is imported using without a corresponding .cfg file, InnoDB causes a server crash. (, )
When (or ) is executed against an InnoDB table with a FULLTEXT index, InnoDB can cause a server crash. (, MENT-1198)
Resolving aggregate functions that are used in a view can cause in a crash. ()
Executing under can cause in a crash. ()
If two InnoDB tables have a and an operation cascades from the parent table to the child table, an index on a virtual generated column in the child table can become corrupt. ()
, powered by Galera, crashes with errors like: [ERROR] WSREP: Trx 236236 tries to abort slave trx 236238 ()
Server crashes when a table uses a sequence as a column default and the table is used concurrently by both a prepared statement and a normal statement. ()
InnoDB causes server crash when a table is converted from utf8mb3 to utf8mb4 ()
When enabling , server crash can occur. (MENT-1307)
occasionally hangs when rotating logs. (MENT-1339)
On 64-bit Microsoft Windows when MyISAM accesses key buffer and is greater than 4 GB, the server crashes. ()
Using to increase innodb_purge_threads, may cause a hang. (MENT-1331)
causes server crash when an operation requires access to a Data Node. ()
InnoDB persistent statistics causes server to hang. ()
On an InnoDB table, when a DDL statement rebuilds the parent table in a relationship, a concurrent INSERT into the child table sometimes causes a crash. ()
On an InnoDB table, when the server crashes or is killed while a or table-rebuilding operation is being executed, InnoDB causes a server crash during crash recovery, which occurs after the server has restarted. (MENT-1368)
InnoDB sometimes causes server crash during when the imported tablespace contains columns that have been instantly reordered or dropped. The MariaDB error log contains the following error message: () Schema mismatch (Index field name newcol doesn't match tablespace metadata field name for field position...
causes server crash when wsrep_on=OFF is set and transactions are in progress. (MENT-1236)
skip_networking does not prevent replication. ()
joiner node incorrectly uses localhost for TLS certificate verification and fails to join cluster when and encrypt=3 are configured. ()
is not able to replay some outputs if 0 is in the data. ()
Memory leak with row-based replication can lead to high memory usage on replica servers. ()
and generate invalid SQL for some complex views. ()
When statement-based or mixed replication is used and a DML statement encounters an error in a transaction that creates or drops a temporary table, non-committed writes to transactional tables can be incorrectly replicated to replica servers. ()
joiner node fails to join cluster when and is configured. ()
Spider does not work correctly for UDF and stored functions if used in a query's WHERE conditions. ()
If an INVISIBLE column has a computed default value, an INSERT statement that doesn't specify a value for the column causes the default value to be ignored. ()
Password validation plugins (including ) cause a user's existing password hash to be removed from the server's in-memory privilege cache when the user tries to change their password to an invalid password. ()
With , a on a table with a Foreign Key Constraint is not replicated to other nodes. ()
InnoDB's adaptive purging can decrease throughput by starving user threads after dict_sys.mutex removal. ()
CONNECTION_ID column is NULL in ()
The server in some cases shows decreasing performance with notes InnoDB: Cannot close file... in the error log. This issue occurs only when open-files-limit is reached and a log-checkpoint is triggered. ()
XA PREPARE sometimes leads to lock wait timeouts on replica servers. ()
Replica server does not invalidate query cache after replicating table updates. (MENT-1360)
, powered by Galera, shows inconsistent values for wsrep_apply_window and wsrep_commit_window when comparing performance_schema.galera_group_members and information_schema.GLOBAL_STATUS (MENT-1333)
incorrectly streams XA transactions when wsrep_trx_fragment_unit=statements is set, which causes errors when the fragment is applied. (MENT-1344)
With , a replica server replicating from a node incorrectly uses the primary server's and values to generate GTIDs for local transactions. ()
MariaDB Enterprise Backup does not write the current GTID to xtrabackup_binlog_info when a node is backed up and wsrep_gtid_mode=ON is set. ()
When a new node is bootstrapped with wsrep_gtid_mode=ON set, the node's configured server_id and values are overridden by the values present in the node's binary logs. ()
With , changes to in my.cnf are ignored on node restart. ()
On CentOS 7, auth_pam_tool has incorrect permissions. ()
Running with no 'root'@'localhost' user may fail with the message The user specified as a definer ('root'@'localhost') does not exist FATAL ERROR: Upgrade failed. ()
This release originally incorporated MariaDB .
This release now incorporates .
In alignment to the , MariaDB Enterprise Server 10.6.5-2 is provided for:
CentOS 7 (x86_64)
Debian 9 (x86_64, ARM64)
Debian 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Microsoft Windows (x86_64)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 18.04 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
MariaDB Enterprise Server 10.5.17-12 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2022-09-12
MariaDB Enterprise Server 10.5.17-12 is a maintenance release of 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.17-12 was released on 2022-09-12.
Galera has been updated to 26.4.13-1
Debian 9 support has been discontinued.
Red Hat Enterprise Linux 9 support has been added.
Rocky Linux 9 support has been added.
The has been added for mariadb-dump with a default value of 0.
Session scope has been added for the system variable]], in addition to global scope.
When is executed with the command-line option, the backup tries to copy the InnoDB buffer pool dump file, which is located at the path defined by the .
Starting with this release, only copies the InnoDB buffer pool dump file during State Snapshot Transfers (SSTs) for MariaDB Enterprise Cluster, powered by Galera.
With MariaDB Enterprise Cluster, when is enabled on a node, users without the can still write to the node.
With MariaDB Enterprise Cluster, when a value is retrieved from an InnoDB sequence using the , the change is not replicated.
Starting with this release, InnoDB sequences are properly replicated when they are defined with NOCACHE.
When an InnoDB table's collation is changed using with the INPLACE or NOCOPY algorithms, duplicate entries in unique indexes are not detected.
When INSERT .. SELECT .. GROUP BY is executed and the GROUP BY clause contains a derived table, the server can crash.
When a query contains an ANY(SELECT .. GROUP BY(SELECT ..)) predicand with a redundant subquery in the GROUP BY clause, the server can crash.
When is used to add a column with the INSTANT algorithm, the server can crash if the ROW_FORMAT in the .frm file does not match the actual row format used by the data file.
For tables created prior to MariaDB Server 10.2, the ROW_FORMAT in the .frm file could be inconsistent with the actual row format used by the data file. If the server were upgraded to MariaDB Enterprise Server 10.6, the inconsistency could remain.
When INSERT .. SELECT is executed and the SELECT query calls an aggregate or window function, the server can crash with a segmentation fault.
When the function is called, the server can crash with a segmentation fault.
When a query uses the DISTINCT keyword and calls an aggregate function as an argument for an always-constant function, the server can crash.
An always-constant function is a function that always returns a constant value, even if the function's arguments are not constant.
For example, the is an always-constant function.
When is executed with the and options, the backup can hang due to a race condition between threads.
When an EXISTS predicate or an IN, ALL, or ANY predicand is used in an eliminated GROUP BY clause, the server can crash.
When an IN subquery is used outside the context of a regular query (such as in a stored procedure), the server can crash.
When MariaDB Enterprise Cluster is used and the Galera replication TCP port receives non-Galera network traffic, the server can crash.
In previous releases, when the crash occurred, the following messages would appear in the :
When a generated column is added to an InnoDB table with the INSTANT algorithm, the server can crash due to a buffer overflow.
When is executed with a view definition that contains an unknown column in an ON condition, the server can crash instead of raising an error with the ER_BAD_FIELD_ERROR error code.
When is executed, the server can hang.
When the is too low, the server can crash if InnoDB accesses too many tables or partitions.
For multi-table or queries, the optimizer fails to apply partition pruning optimization for the table that is updated or deleted from.
When an IN condition contains a mixture of numeric and string values, results can be inconsistent.
When a sequence event is written to the binary log with , the value of is not respected.
When a transaction can't be fully written to the binary log, but the transaction can be safely rolled back, a LOST_EVENTS incident event is written to the binary log.
In previous releases, this problem could cause replica servers to encounter the following error:
Starting with this release, a LOST_EVENTS incident is only written to the binary log when safe rollback is not possible.
When a replica server replicates an incident event, the details about the failure are not in the primary server's error log, the replica server's error log, or the output of SHOW REPLICA STATUS.
When a backup is performed with , the backup includes binary logs.
When a table is created from a that uses a recursive CTE, the table can use unexpected data types and contain truncated data if the calculated values from the recursive part of the CTE do not fit in the column types that are taken from the non-recursive part of the CTE.
Starting with this release, the CTE calculation is aborted when the calculated values do not fit in the column types. When this occurs, a warning or error (depending on sql_mode is raised with the and the following error message:
When uses EditLine instead of readline (such as on Debian and Ubuntu), Unicode characters are not accepted.
When the optimizer chooses a semi-join optimization for a subquery, the LooseScan and FirstMatch strategies are not considered for certain queries where they would be appropriate, and they are considered for certain queries where they would be inappropriate.
When FULLTEXT search is performed on an InnoDB table, the results are incorrect when the search term contains an apostrophe (').
Starting with this release, when a search term contains an apostrophe ('), InnoDB tokenizes the word at the apostrophe, ignores the first token, and matches against the second token.
After upgrading from old versions of MariaDB Server, some operations fail if ALGORITHM=NOCOPY is specified.
In previous releases, the following error could be raised:
When is set, queries that use table elimination can produce incorrect results.
Table elimination is used when the query performs a JOIN and has const tables.
When a replica server is replicating from a primary server that is too old to write to the binary log, the replica server ignores its own value and assumes that the value should be OFF.
Starting with this release, the replica server determines an optimal value for based on the version of the primary server. If the primary server is too old to write its value to the binary log, the replica server uses its own value.
When a UUID or INET6 column is referenced in a WHERE col IN(SELECT ..) subquery of an or statement, the query does not affect the correct number of rows.
When a column is used to store UUIDs and a filters the column with an IN clause, the query can be very slow if the UUIDs are specified in hexadecimal.
This release incorporates MariaDB ColumnStore storage engine version 5.6.7.
system variable dynamic changed from No to Yes
mariadb --enable-cleartext-plugin command-line option added
--sst-max-binlogs command-line option removed
mariadb-dump command-line option added
mariadbd --spider-direct-aggregate command-line option added
system variable added
In alignment with the , MariaDB Enterprise Server 10.5.17-12 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
MariaDB Enterprise Server 10.5.13-9 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2021-12-13
MariaDB Enterprise Server 10.5.13-9 is a maintenance release of 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.13-9 was released on 2021-12-13.
Galera updated to 26.4.10
Debian 11 support added
no longer enables pushdown of UDFs and Stored Functions to the Data Node by default: ()
The default value of has changed from -1 to 0
In previous releases, Enterprise Spider pushed UDFs and Stored Functions down to the Data Node by default, which could cause query results to be inconsistent.
Starting with this release, all UDFs and stored functions are evaluated on the Spider Node by default. If desired, pushdown of UDFs and Stored Functions can be explicitly enabled by setting spider_use_pushdown_udf=1. Testing is recommended to confirm that query results are consistent.
provide descriptions of each column in the COMMENT column option. ()
InnoDB tables with could be corrupted. (MENT-1367)
, powered by Galera, can crash on if the table does not have a primary key and if the data for a field exceeds 4096 bytes. ()
When an InnoDB tablespace (.ibd) file is imported using without a corresponding .cfg file, InnoDB causes a server crash. (, )
When (or ) is executed against an InnoDB table with a FULLTEXT index, InnoDB can cause a server crash. (, MENT-1198)
Resolving aggregate functions that are used in a view can cause in a crash. ()
Executing under can cause in a crash. ()
If two InnoDB tables have a and an operation cascades from the parent table to the child table, an index on a virtual generated column in the child table can become corrupt. ()
, powered by Galera, crashes with errors like: [ERROR] WSREP: Trx 236236 tries to abort slave trx 236238 ()
Server crashes when a table uses a sequence as a column default (DEFAULT NEXT_VALUE(my_seq)) and the table is used concurrently by both a prepared statement and a normal statement. ()
InnoDB causes server crash when a table is converted from utf8mb3 to utf8mb4 ()
When enabling , server crash can occur. (MENT-1307)
occasionally hangs when rotating logs. (MENT-1339)
InnoDB sometimes causes server crash during when the imported tablespace contains columns that have been instantly reordered or dropped. The MariaDB error log contains the following error message: (, )Schema mismatch - (Index field name newcol doesn't match tablespace metadata field name for field position…
hangs while it is executing DELETE FROM mysql.wsrep_cluster, which can be seen in the process list. (, )
Server crashes on 64-bit Windows when MyISAM accesses key buffer and key_buffer_size is greater than 4 GB. ()
Using to increase innodb_purge_threads, may cause a hang. (MENT-1331)
Enterprise Spider causes server crash when an operation requires access to a Data Node. ()
can crash due to an incorrect conflict resolution on multi-master setup. (, , )
On CentOS 7, auth_pam_tool has incorrect permissions. ()
This release originally incorporated MariaDB ColumnStore storage engine version 5.6.3.
This release now incorporates MariaDB ColumnStore storage engine version 5.6.5.
does not prevent replication. ()
joiner node incorrectly uses localhost for TLS certificate verification and fails to join cluster when and encrypt=3 are configured. ()
mariadb --binary-mode is not able to replay some outputs if 0 is in the data. ()
Memory leak with row-based replication can lead to high memory usage on replica servers. ()
and generate invalid SQL for some complex views. ()
When statement-based or mixed replication is used and a DML statement encounters an error in a transaction that creates or drops a temporary table, non-committed writes to transactional tables can be incorrectly replicated to replica servers. ()
joiner node fails to join cluster when and Backward Compatible SST TLS Mode is configured. ()
does not work correctly for UDF and stored functions if used in a query's WHERE conditions. ()
CONNECTION_ID column is NULL in ()
The server in some cases shows decreasing performance with notes InnoDB: Cannot close file... in the error log. This issue occurs only when open-files-limit is reached and a log-checkpoint is triggered. ()
sometimes leads to lock wait timeouts on replica servers. ()
Replica server does not invalidate query cache after replicating table updates. (MENT-1360)
With , a on a table with a Foreign Key Constraint is not replicated to other nodes. ()
Password validation plugins (including ) cause a user's existing password hash to be removed from the server's in-memory privilege cache when the user tries to change their password to an invalid password. ()
If an INVISIBLE column has a computed default value, an statement that doesn't specify a value for the column causes the default value to be ignored. ()
In packets sent from the server, a column's "Original Name" field can contain the column's alias instead of original name of the column. This metadata mismatch can cause MariaDB Connectors to raise an exception. ()
With , a replica server replicating from a node incorrectly uses the primary server's and values to generate GTIDs for local transactions. ()
MariaDB Enterprise Backup does not write the current GTID to xtrabackup_binlog_info when a node is backed up and is set. ()
With , changes to in my.cnf are ignored on node restart. ()
When a new node is bootstrapped with wsrep_gtid_mode=ON set, the node's configured server_id and values are overridden by the values present in the node's binary logs. ()
In alignment with the , MariaDB Enterprise Server 10.5.13-9 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
This eleventh release of 10.4 is a maintenance release. This release includes security fixes.
MariaDB Enterprise Server 10.4.18-11 was released on 2021-03-15.
1: MariaDB CVEs are assigned a word rating instead of a CVSS base score. See the for details.
The new --system={all, users, plugins, udfs, servers, stats, timezones}command-line option allows dumping system information in logical form. ([MDEV-23630](https://jira.mariadb.org/browse/MDEV-23630))
Added primary host and port info to replica stop messages. ()
Parameter has no effect and is defined as deprecated. ()
New to continue the backup process when corruption is encountered. Corrupted pages are logged in backup_corrupted file in the backup destination directory. ()
adds completed with Error! to the end of the log file if the backup is started with parameter and completed with corrupted tables. The new log entry canceled with Error! will be used when the backup could not be completed. (MENT-1059)
and system variables are read-only. ()
Galera wsrep library updated to 26.4.7 in .
Encryption Plugin for added. (MENT-852)
and allow either order for ACCOUNT LOCK and PASSWORD EXPIRE ()
In a very unlikely event, corruption of system tablespace or last recovered page can occur on recovery or a . (MENT-1124, )
Crash on recovery after server kill during instant ADD COLUMN ()
Possible segfault on with explicit FTS_DOC_ID_INDEX using multiple fields. ()
Server crashes upon attempt to update view through second execution of a stored procedure. ()
containing clause can crash. ()
Possible crash for a query using recursive CTE without having a default schema defined. ()
Server crash on WITH RECURSIVE UNION ALL (CTE) query. ()
Server hang due to lock conflict resolution. ()
Possible crash in replication when applying a transaction that contains cascading foreign key delete for a table and that has an indexed virtual column. ()
Possible lock conflicts between two wsrep high priority threads in on tables having unique secondary keys. ()
Server crash when uses a subselect. ()
Possible crash of the server when audit logging is active. (MENT-1098)
crash after execution of XA START ()
is missing the WITH GRANT privilege for roles. ()
mysqld_safe log messages are missing in the error log file. ()
CHECK_CLAUSE field in truncates check constraints expressions. ()
Unexpected error message when selecting from view that uses mergeable derived table. ()
Permission denied error message is returned on users with permissions for nested CTEs. ()
Regression: SELECT .. UNION .. with inconsistent column names fails. ()
Race condition between and transaction commit with . ()
Plugin system variables and activation options can break mariadbd for . ()
SELECT INTO OUTFILE used permission 666 where 644 should be used to limit the privileges to change the file. ()
Syntax error on correct syntax for CREATE VIEW that includes X is null = 0 ()
Altered connection limits for user have no effect. ()
Syntax error when using COLLATE for creating virtual columns. ()
Auto purge of relaylogs stops when relay-log-file is slave-relay-log.999999 and is enabled. ()
ORDER BY in view definition leads to wrong result with GROUP BY on query using view. ()
column from a derived table returns invalid values. ()
doesn't respect filters for events. ()
plugin doesn't consider proxy users in and [server_audit-system-variables/#server_audit_incl_users|server_audit_incl_users] ()
With ALTER USER .. IDENTIFIED BY command, password isn't replaced by asterisks in audit log. (MENT-1128)
does not insert history row for or application period based tables if the row has not changed. ()
Wrong duplicate primary key error between the history row generated on referential action and the history row on evaluating foreign referential action for self-reference in a table (, )
Wrong number of decimal digits in certain UNION or subquery constellations, like union of unsigned and NULL type. ()
CREATE TABLE .. SELECT FROM does not create table if is not using a scalar value. ()
may report incorrect binlog position information after RESET MASTER ()
Sequences which are used as default by a table are not dumped in right order by mariadb-dump ()
generates invalid SQL for user where password expiry and account lock set. ()
Garbd of can't initiate SST ()
Misleading error message from might be interpreted as a point in time recovery is not possible. ()
High memory usage in the optimizer when a query is using SELECT … FROM tbl … WHERE unique_key not in (long-list) AND .. unique_key not in (long-list) AND .. ()
ALTER TABLE for tables with CHECK CONSTRAINTS returns with Out of Memory error. ()
fails with error messages ALGORITHM=INSTANT is not supported for this operation ()
performance schema table schema changed
information schema table schema changed
performance schema table schema changed
performance schema table schema changed
performance schema table schema changed
performance schema table schema changed
performance schema table schema changed
performance schema table schema changed
system variable maximum value changed from 18446744073709551615 to 4294967295
command-line option added
command-line option added
--include-unsupported command-line option added
--skip-check-installed command-line option added
--version command-line option added
--version command-line option added
system variable minimum value changed from 8 to 64
performance schema table schema changed
performance schema table schema changed
performance schema table schema changed
In alignment with the , MariaDB Enterprise Server 10.4.18-11 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64 Red Hat Enterprise Linux 8 packages)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
In alignment with the , this release does not include CentOS 6.x and RHEL 6.x packages.
CVE (with cve.org link)
CVSS base score
4.9
[mariadb]
...
innodb_data_file_path=ibdata1:12M;ibdata2:50M:autoextend:autoshrinkSELECT CONV(61,10,36);+----------------+
| CONV(61,10,36) |
+----------------+
| 1P |
+----------------+
SELECT CONV(61,10,62);
+----------------+
| CONV(61,10,62) |
+----------------+
| z |
+----------------+SET @array1= '[1,2,3]';
SET @array2= '[1,2,4]';
SELECT json_array_intersect(@array1, @array2) AS result;+--------+
| result |
+--------+
| [1, 2] |
+--------+SET @json1= '[[1,2,3],[4,5,6],[1,1,1]]';
SET @json2= '[[1,2,3],[4,5,6],[1,3,2]]';
SELECT json_array_intersect(@json1, @json2) AS result;+------------------------+
| result |
+------------------------+
| [[1, 2, 3], [4, 5, 6]] |
+------------------------+SET @json1= '{ "a" : [1,2,3] , "b": {"key1": "val1", "key2": {"key3": "val3"}} }';
SELECT JSON_OBJECT_TO_ARRAY(@json1) AS result;+-----------------------------------------------------------------------+
| result |
+-----------------------------------------------------------------------+
| [["a", [1, 2, 3]], ["b", {"key1": "val1", "key2": {"key3": "val3"}}]] |
+-----------------------------------------------------------------------+SET @json1='{"a":[1,2,3],"b":{"key1":"val1","key2":{"key3":"val3"}}}';
SET @json2='{"a":[1,2,3]}';
SELECT JSON_OBJECT_TO_ARRAY(@json1) INTO @array1;
SELECT JSON_OBJECT_TO_ARRAY(@json2) INTO @array2;
SELECT JSON_ARRAY_INTERSECT(@array1,@array2) AS result;+--------------------+
| result |
+--------------------+
| [["a", [1, 2, 3]]] |
+--------------------+SET @json1= '{ "a": 1, "b": 2, "c": 3}';
SELECT JSON_OBJECT_FILTER_KEYS (@json1, ' ["b", "c"] ') AS result;+------------------+
| result |
+------------------+
| {"b": 2, "c": 3} |
+------------------+SET @json1= '{ "a": 1, "b": 2, "c": 3}';
SET @json2= '{"b" : 10, "c": 20, "d": 30}';
SELECT JSON_OBJECT_FILTER_KEYS (@json1, json_array_intersect(json_keys(@json1), json_keys(@json2))) AS result;+------------------+
| result |
+------------------+
| {"b": 2, "c": 3} |
+------------------+SELECT JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]');+-----------------------------------------------------------------------------+
| JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]') |
+-----------------------------------------------------------------------------+
| [{"key": "key1", "value": "val1"}, {"key": "key2", "value": "val2"}] |
+-----------------------------------------------------------------------------+SELECT jt.* FROM JSON_TABLE(
JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]'),'$[*]'
COLUMNS (
k VARCHAR(20) PATH '$.KEY',
v VARCHAR(20) PATH '$.value',
id FOR ORDINALITY )) AS jt;+------+------+------+
| k | v | id |
+------+------+------+
| key1 | val1 | 1 |
| key2 | val2 | 2 |
+------+------+------+"Deadlock found when trying to get lock; try restarting transaction, Error_code: 1213; handler error HA_ERR_LOCK_DEADLOCK; the event's master log FIRST, end_log_pos 1583, Internal MariaDB error code: 1213"You are not the owner of the thread ....This is a high priority thread/query and cannot be killed without compromising the consistency of the clusterCVE (with cve.org link)
CVSS base score
7.5
7.5
6.5
5.5
7.5
7.5
6.5
6.5
6.5
6.5
6.5
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::system_error> >'
what(): remote_endpoint: Transport endpoint is not connected
[ERROR] mysqld got signal 6 ;Last_SQL_Errno 1590
Last_SQL_Error The incident LOST_EVENTS occurred on the master. Message: error writing to the binary logOut of range value for column 'COLUMN_NAME' at row ROW_NUMERROR 1845 (0A000): ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACECVE (with cve.org link)
CVSS base score
7.5
7.5
6.5
5.5
5.5
CVE (with cve.org link)
CVSS base score
N/A (Critical)#1
MariaDB Enterprise Server 11.8.3-1 is the first Stable (GA) maintenance release of MariaDB Enterprise Server 11.8, released on 2025-10-22
Release date: 22 Oct 2025
MariaDB Enterprise Server 11.8.3-1 is the first GA release of MariaDB Enterprise Server 11.8.
This release incorporates MariaDB ColumnStore engine version 25.10.0.
MariaDB Enterprise Server 11.8 continues to expand its native vector search capabilities, positioning MariaDB for AI-powered applications such as semantic search and recommendation systems. Already available in the MariaDB Enterprise Server 11.4 are:
New Data Type: VECTOR(N) to store multi-dimensional embeddings.
Vector Indexing: Efficient similarity search with VECTOR INDEX.
Distance Functions:
VEC_DISTANCE_EUCLIDEAN() for L2 distance.
VEC_DISTANCE_COSINE() for angular similarity.
Conversion Functions:
Vec_FromText(json_array) and Vec_ToText(vector_column) transform between the text and binary vector formats.
for Index Tuning:
mhnsw_max_cache_size, mhnsw_default_distance, mhnsw_default_m, mhnsw_ef_search.
Distance Functions:
VEC_DISTANCE() auto-selects the best distance function based on the index configuration.
Optimization that makes vector search 30-50% (depending on the data) faster for the same recall. Enabled automatically for applicable vectors. Vectors are applicable if they can be gradually truncated to trade some recall for speed. For example matryoshka embeddings as produced by OpenAI are applicable.
Namespace support was added to HashiCorp Vault in MariaDB. See the Hashicorp namespaces documentation for details.
are possible now.
UUID Generation: New functions UUID_v4() and UUID_v7() for modern and time-ordered UUIDs.
Multi-Table DELETE Enhancements: Support for ORDER BY and LIMIT.
Single-Table DELETE Enhancements: Now it allows index hints.
NEW SHOW CREATE SERVER: Recreate server objects similar to .
DBMS_OUTPUT: Messages submitted by DBMS_OUTPUT.PUT_LINE() are not sent to the client until the sending subprogram or trigger completes.
Optimization that makes vector search 30-50% faster (more details in the Vector Search section)
Segmented key cache for
system variable
Add option to not collect statistics for long char/varchars, see for more information
UTF-8 by Default: utf8mb4 replaces latin1 and legacy utf8, ensuring full Unicode support, including emojis.
Default Collation: utf8mb4_uca1400_ai_ci is now the standard for Unicode character sets.
Extended TIMESTAMP Range: Increased upper bound to 2106 on 64-bit systems.
ROW Type Enhancements:
ROW types are now usable as stored function return values.
The support for %ROWTYPE, TYPE OF, and RECORD(...) declarations for Oracle-like compatibility:
DECLARE
TYPE DeptRecTyp IS RECORD (
dept_id NUMBER(4),
dept_name VARCHAR2(30),
mgr_id NUMBER(6),
loc_id NUMBER(4)
);Triggers:
BEFORE UPDATE OF col1, col2 limits trigger execution to specific column updates:
CREATE TRIGGER mytrigger BEFORE UPDATE OF col1, col2 ON t1 FOR EACH ROW …Use of SIGNAL SQLSTATE '02TRG' allows skipping a row operation.
Stored Procedures: Now support default parameter values:
CREATE OR REPLACE PROCEDURE p1(param1 INT, param2 INT DEFAULT 1)Associative arrays: DECLARE TYPE .. TABLE OF .. INDEX BY
Added caching_sha2_password plugin, see for more information
System Versioned Tables is a powerful feature for auditing changes to data. Enabling System Versioned Tables is as easy as creating a table by using
CREATE TABLE contracts (...) WITH SYSTEM VERSIONING;Or enabling the feature for an existing table by using
ALTER TABLE contracts ADD SYSTEM VERSIONING;In both cases, invisible fields will be created in the table to track the timestamps and period for which the data is valid. A DBA/DevOps might want these fields to be visible. It is now possible to change such implicit fields to explicit ones by the following types of statements:
SET @@system_versioning_alter_history= keep;
ALTER TABLE contracts ADD COLUMN rs TIMESTAMP(6) AS ROW START, ADD COLUMN re TIMESTAMP(6) AS ROW END, ADD PERIOD FOR SYSTEM_TIME (rs,re);New :
Based on elliptic curve cryptography.
Mitigates the replay and man-in-the-middle attacks. Example on how to create a user using the new :
CREATE USER 'MariaDBUser'@'%' IDENTIFIED VIA PARSEC USING PASSWORD('MyPassword123!');This will result in:
SHOW GRANTS FOR MariaDBUser@'%';Grants for MariaDBUser@%
GRANT USAGE ON *.* TO `MariaDBUser`@`%` IDENTIFIED VIA parsec USING 'P0:lhXyNv1cIxpB8EnTxR7ON7S7:1l3rWRW1/jw45yrvYXB8eh02wzk7lcJcz4CMc
Ww2b+8'\
Unix Socket Enhancements:
Now supports explicit OS user mapping via IDENTIFIED VIA UNIX_SOCKET AS 'user'.
It is also possible to specify more than one OS user with the usual OR syntax:
CREATE USER dba IDENTIFIED VIA UNIX_SOCKET AS 'jack' OR IDENTIFIED VIA UNIX_SOCKET AS 'jill';Improved Replication Lag Monitoring:
now includes:\
Master_last_event_time
Slave_last_event_time
Master_Slave_time_difffor :\
MariaDB [test]> SELECT Master_last_event_time,Slave_last_event_time,Master_Slave_time_diff FROM information_schema.slave_status\G
*************************** 1. row ***************************
Master_last_event_time: 2024-08-13 07:32:38
Slave_last_event_time: 2024-08-13 07:32:37
Master_Slave_time_diff: 1New Option – --slave-abort-blocking-timeout: Kills blocking non-replication queries after a timeout.
Galera SST Automation: SST user is now auto-created and managed internally.
Backported MDEV-35304 : Add {{Connects_Tried}} & {{Master_Retry_Count}} from CS-12.0
Enhancement: The file_key_management plugin can now read keys from a Unix socket, not just from files.
File Key Management Encryption Plugin: Added key rotation capability; see for details. In addition, a new Information Schema table was added, .
Temporary File Disk Space Limits:
max_tmp_session_space_usage and max_tmp_total_space_usage prevent runaway disk usage.
New Status Variables: tmp_space_used, max_tmp_space_used.
New Views:
SLAVE_STATUS to view replication lag via SQL.
for password state and expiration monitoring.
to introspect auto-generated sequences:\
SELECT * FROM INFORMATION_SCHEMA.SEQUENCES\G
*************************** 1. row ***************************
SEQUENCE_CATALOG: def
SEQUENCE_SCHEMA: test
SEQUENCE_NAME: s_name
DATA_TYPE: tinyint
NUMERIC_PRECISION: 8
NUMERIC_PRECISION_RADIX: 2
NUMERIC_SCALE: 0
START_VALUE: 100
MINIMUM_VALUE: -127
MAXIMUM_VALUE: 126
INCREMENT: 10
CYCLE_OPTION: 0Enhanced ANALYZE FORMAT=JSON:
Includes r_index_rows, r_icp_filtered.
Thread Naming for Diagnostics: Thread names are now more descriptive.
Galera Information Schema: New Information Schema table.
Galera Information Schema: New and Information Schema tables.
Galera Information Schema: New Information Schema table .
Galera Information Schema: New Information Schema and tables.
Support for Oracle-stype INDEX BY tables (associative arrays) was backported from MariaDB 12.1 in stored routines and anonymous blocks, with this declaration syntax:
TYPE type_name TABLE OF rec_type_name INDEX BY idx_type_name;Where:
type_name supports explicit and anchored data types (e.g t1.col1%TYPE).
The INDEX BY clause supports integer and string data types.
rec_type_name supports scalar and record data types.
The implementation supports the following associative array methods:
FIRST
LAST
NEXT
PRIOR
COUNT
EXISTS
DELETE
mariadb-dump:
The --dir=<path> dumps each database to its subdirectory.
Supports parallel dumps and restores.
New --update-history converts row_end TIMESTAMPs during export.
mariadb-import:
--dir=<path> restores from the dumped directory structure.
Supports --database, --table, --ignore-database, --ignore-table for selective restore.
--innodb-optimize-keys: defers index creation to speed up data loads.
mariadb-test (mtr):
mtr can be started with the --enable_serveroutput option to enable DBMS_OUTPUT messages. See for details.
mariadb (command-line client)
New --enable_serveroutput option to enable DBMS_OUTPUT messages at start time. See for details.
New serveroutput and noserveroutput command to enable and disable those messages at runtime. See for details.
Improved Insights:
Index usage via QUERIES in INDEX_STATISTICS.
Query operation counts: ROWS_INSERTED, ROWS_UPDATED, KEY_READ_HITS, etc.
New stats in CLIENT_STATISTICS and USER_STATISTICS.
Table I/O metrics: PAGES_ACCESSED, PAGES_READ_FROM_DISK.
For the complete list of changes in this release, see the changelog.
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 11.8.3-1 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
AlmaLinux 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Debian 13 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Oracle Linux 8 (x86_64, ARM64)
Oracle Linux 9 (x86_64, ARM64)
Oracle Linux 10 (x86_64, ARM64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
Red Hat Enterprise Linux 10 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
Rocky Linux 10 (x86_64, ARM64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Ubuntu 24.04 (x86_64, ARM64)
Microsoft Windows (x86_64) (Without MariaDB Enterprise Cluster (Galera) support)
Red Hat UBI 8 (x86_64, ARM64)
Red Hat UBI 8 is part of the Enterprise Server Docker Image. It does not support MariaDB Enterprise Cluster (Galera) or MariaDB ColumnStore.
Some components of MariaDB Enterprise Server are supported on a subset of platforms. See MariaDB Engineering Policies for details.
MariaDB Enterprise Server 10.5.24-18 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2024-03-11
MariaDB Enterprise Server 10.5.24-18 is a maintenance release of MariaDB Enterprise Server 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.24-18 was released on 2024-03-11.
This release incorporates MariaDB ColumnStore engine version 5.6.8-2.
Galera has been updated to 26.4.17
AlmaLinux 8 and 9 are now officially supported. RHEL 8 and 9 packages are used for AlmaLinux
BLOB corruption on UPDATE of PRIMARY KEY with FOREIGN KEY (MDEV-31441)
Corrupted table after instant ADD COLUMN failed due to attempting to exceed the maximum record length (MDEV-18322)
ALTER command, before entering TOI, tries to collect foreign keys of a table. For this it opens the main table with SHARED_HIGH_PRIO MDL lock which disregards any waiting queued lock requests. If there is a DML operation running on the same table, and a real TOI operation as well, this TOI operation tries to BF-abort DML operation. At the same time, because ALTER is not yet TOI, and it runs with HIGH_PRIO MDL lock, it disregards waiting TOI operation, and gets the lock and immediately gets BF-aborted either by TOI directly or by aborted DML operation. Since there is no wsrep transaction for ALTER, it gets BF-aborted by setting killed state for the tread. But before entering TOI, ALTER doesn't check killed state, so it replicates, and applies on the other nodes successfully, but then it rolls back on the local node, causing inconsistency (MDEV-32938)
If Galera is enabled with binlog emulation, attempting to set a SAVEPOINT when one of the involved storage engines does not support savepoints, can result in cluster wide inconsistency. A part of a transaction could be replicated to other notes, but a local statement rollback could be triggered. (MDEV-32549)
InnoDB after issuing ALTER TABLE...IMPORT TABLESPACE may not be crash safe anymore (MDEV-32269)
When a table is created with a virtual column while using sql_mode=ORACLE, the server can crash when the table is changed while using a different setting for sql_mode (MDEV-27744)
The virtual column must have been created using:
DECODE()
LTRIM()
RTRIM()
LPAD()
RPAD()
REPLACE()
SUBSTR()
A shutdown of the server with innodb_fast_shutdown=0 can hang after the server failed to start up (MDEV-32798)
Crash while trying to complain "unsupported meta-data version" on ALTER TABLE...IMPORT TABLESPACE with MySQL 8.0 files (MDEV-29972)
Wrong table attribute PAGE_COMPRESSED=1 shown for tables in the InnoDB system tablespace (MDEV-31000)
MariaDB crashes with foreign_key_checks=0 when changing a column and adding a foreign key at the same time (MDEV-32638)
Sometimes node has been dropped from the cluster on startup Shutdown with async replica with diagnostics like: (MDEV-31413)
[ERROR] Slave SQL: Error 'WSREP has not yet prepared node for application use' on queryand
[ERROR] Slave SQL: Node has dropped from cluster, Gtid 1-1-1, Internal MariaDB error code: 1047" in the server logGTIDs may diverge in Galera cluster after CREATE TABLE AS (MDEV-27806)
This can subsequently lead to diagnostics like:
[ERROR] mariadbd: Error writing file '/opt/maria10.1/binlog/BINLOG' (errno: 1950 "Unknown error 1950")"and node crash:
wsrep::transaction::before_rollback(): Assertion state() == s_executing || state() == s_preparing || state() == s_prepared || state() == s_must_abort || state() == s_aborting || state() == s_cert_failed || state() == s_must_replay` failedSHOW SLAVE STATUS can deadlock an errored replica when a parallel replica worker gets killed at about when SHOW is issued (MDEV-10653)
When executing SELECT BINLOG_GTID_POS(@binlog_file...) with the user variable being NULL, the server can crash (MDEV-33045)
A Query that uses a specific SQL construct can cause a server crash. The construct is an equality comparison of table-less row subquery and a subquery that has a UNION operation at the top level: (SELECT 'foo', 'bar') = (SELECT col1, col2 FROM t1 ... UNION ...) (MDEV-29070)
A DELETE with ORDER BY and semijoin optimization can cause a crash (MDEV-32212)
Possible crash when lateral derived in a query is guaranteed to return no rows (MDEV-31279)
When using EXCHANGE PARTITION to replace a partition with a table, the server can crash if the to be exchanged table is using a virtual column which is not matching the partitioning key (MDEV-28127)
When using INSERT DELAYED with a table using virtual columns, the server can crash (MDEV-29932)
When using SELECT from a derived table with using AS OF, the server can crash (MDEV-32082)
When using JSON_CONTAINS_PATH in a comparison in a prepared statement, the server can crash on execution of the statement (MDEV-32867)
Binlog Checksum of replication user variable events is zeroed by Zlib if part of event data is empty. The bug is a regression of other fixes on a server build with the zlib library. It can show up as a checksum verification error of a user variable event at its reading from binlog, (MDEV-33283)
Server hangs on DROP DATABASE after a failing LOCK TABLES on Spider table (MDEV-29667)
When using two temporary tables in OPTIMIZE TABLE, executed as a prepared statement, the server can crash (MDEV-31523)
When calling SP invoking another SP with a parameter requiring a type conversion, the server can crash (MDEV-33270)
Possible hang when changing the InnoDB log file size using SET GLOBAL innodb_log_file_size (MENT-1271)
If a query's WHERE clause has conditions over more than 128 columns of the same table, optimizer_use_condition_selectivity is 3, or higher, use_stats_tables is not set to NEVER, and statistics for the columns have been collected via ANALYZE TABLE, the server could crash (MENT-2036)
SHOW WARNINGS can show wrong foreign key related warnings/errors from an earlier transaction for InnoDB (MDEV-32833)
LeakSanitizer errors in mem_heap_create_block_func upon query from I_S.INNODB_SYS_TABLES with LIMIT ROWS EXAMINED (MDEV-32890)
Query from I_S.INNODB_SYS_INDEXES exceeding LIMIT ROWS EXAMINED causes ER_UNKNOWN_ERROR and LeakSanitizer errors in rec_copy_prefix_to_buf_old (MDEV-28613)
Unexpected ER_ERROR_ON_RENAME upon DROP non-existing FOREIGN KEY with ALGORITHM=COPY (MDEV-22230)
FOREIGN_KEY_CHECKS does not prevent non-copy alter from creating invalid FK structure (MDEV-29092)
Secondary indexes on VARCHAR columns may be corrupted when the VARCHAR is extended so much that a column prefix index must be used (MDEV-21245)
Spider: Valid LEFT JOIN results in ERROR 1064 (MDEV-26247)
Syntax error upon query with subquery from Spider table (MDEV-30392)
Spider doesn't recognize SEMI-JOIN (MDEV-31645)
wsrep_provider_options can be truncated on deep and long directory paths with diagnostics like: "Warning 1265 Data truncated for column 'VARIABLE_VALUE' at row 1" in the server log (MDEV-32634)
Mariadb-dump option --delete-master-logs is ignored (MDEV-32953)
multi source replication filters breaking GTID semantic (MDEV-26632)
If wsrep_gtid_mode=ON is used and wsrep_gtid_domain_id is non-zero, after SST using mariadb-backup GTIDs will become inconsistent both at the domain level, and at the seq_no level (MDEV-31905)
wsrep_gtid_domain_id is ignored on any node other than bootstrapped node when the wsrep_gtid_mode is set to ON (MDEV-32740)
LONG UNIQUE ... USING HASH can result in an error when used with REPLACE (MDEV-32839)
JSON_ARRAYAGG() doesn't evaluate correct charset which can lead to an unexpected result (MDEV-24784)
A connection can control RAND() in following connection if used in conjunction with set rand_seed1, rand_seed2 (MDEV-33148)
An UPDATE of a column of a FEDERATED table fails with "ERROR 1296 (HY000): Got error 10000 'Error on remote system: 1143: UPDATE command denied to user 'xxx'@'x.x.x.x' for column 'id' in table 'x'' from FEDERATED"
if the table includes an AUTO_INCREMENT column (MDEV-32984)
CHECK TABLE shows a MyISAM/Aria table as corrupted, as a unique hash key on column prefix is computed incorrectly (MDEV-29954)
mysql.slow_log reports time when the query finished, not the start time (MDEV-11628)
mariadb-upgrade does not remove mysql.plugin entries for plugins that became bundled. Error message "[ERROR] mariadbd: Plugin 'unix_socket' is already installed." is shown when upgrading (MDEV-32043)
If storage engine Spider is loaded upon server startup, Spider related system, and status variables are not available (MENT-2043)
Regular expressions cannot be used in queries on tables of type SPIDER (MDEV-32986)
Memory leak when purging history of indexed virtual columns (MDEV-28682)
MariaDB Enterprise Backup sometimes shows the error Can't open shared library '/file_key_management.so' (errno: 2, cannot open shared object file: No such file, or directory) when the option --target-dir is not used with --prepare (MDEV-29110)
The database part is not case sensitive in Stored Procedure names. This can lead to using the wrong stored procedure, if the same database name is used as lower, and uppercase (MDEV-33019)
CREATE UNIQUE INDEX can fail with an incorrect "ERROR 1286 (42000): Unknown storage engine 'partition'" (MDEV-21618)
After successful connection, server sets SERVER_STATUS_AUTOCOMMIT in server_status in the OK packet although the global variable autocommit=0 is set (MDEV-32875)
In some cases it is possible to create a Spider table which is referencing to a table on the same instance although spider_same_server_link=0 is set (MDEV-29718)
Spider fails to auto-discover a table structure with ERROR 12500 (HY000): unknown (MDEV-33008)
REGEXP_REPLACE treats empty strings different than REPLACE in ORACLE mode (MDEV-29095)
REPLACE is supposed to remove all conflicting rows of a table. For UNIQUE HASH, REPLACE only removes the first conflicting row, not all conflicting rows (MDEV-32837)
mariadb-upgrade does not remove mysql.plugin entries for plugins that became bundled. Error message "[ERROR] mariadbd: Plugin 'unix_socket' is already installed." is shown when upgrading (MDEV-32043)
INSERT...SELECT Does not produce an optimizer trace although set optimizer_trace=1 is used (MDEV-29298)
The Enterprise Audit Plugin does not always report the user name (MENT-2035)
An ALTER using ALGORITHM=INPLACE or adding new indexes can increase the table space file size (MDEV-26740)
Operations that involve extending InnoDB files can be extremely slow when the data directory resides on an NFS server that uses a smaller block size than 4096 bytes (MDEV-32268)
innodb_undo_log_truncate=ON prevents fast shutdown (MDEV-33062)
Adaptive flush recommendation ignores dirty ratio and checkpoint age (MDEV-31939)
In alignment with the enterprise lifecycle, MariaDB Enterprise Server 10.5.24-18 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "MariaDB Corporation Engineering Policies".
This seventh release of is a maintenance release, including a variety of fixes.
MariaDB Enterprise Server 10.4.13-7 was released on 2020-06-08.
CVE (with link)
CVSS base score
5.5
5.3
4.9
4.9
N/A (Medium)
#1:
MariaDB CVEs are assigned a word rating instead of a CVSS base score. See the MariaDB Engineering Policy for details.
MariaDB ColumnStore 1.4.4 is included in this release. Specific details on this component may be found in the ColumnStore 1.4.4 release notes.
now displays a warning when upgrading a replica from MySQL Server to MariaDB Enterprise Server if data was present in the mysql.slave_master_info and mysql.slave_relay_log_info tables. A warning is needed as this information will be ignored. (MDEV-10047)
has a new --ignore-table-data=<table> option. When used, the dump will include the table definition for the listed tables, but not the statements for the data in the table. (MDEV-22037)
has a new --rollback-xa option. By default, will not commit or rollback uncommitted XA transactions, and when the backup is restored, any uncommitted XA transactions must be manually committed using XA COMMIT or be manually rolled-back using XA ROLLBACK. The --rollback-xa option can be used to rollback uncommitted XA transactions while performing a --prepare operation, eliminating the need for manual commit or rollback when the backup is restored. (MDEV-21168)
is now limited to 255. (MDEV-22258)
system variable added, to control that a primary server only completes the shutdown after the last binary log has been sent to all connected slaves. This behavior is not active by default. Before the addition of this system variable, this was achieved using mariadb-admin shutdown --wait_for_all_slaves for a master. (MENT-202)
aria_pack tool now provides the options --datadir, --ignore-control-file, --require-control-file for tables with auto-recovery enabled (TRANSACTION=1). (MENT-657)
system variable added to control whether an instant ADD or DROP column or reorder can change an format. The default is add_drop_reorder to allow a format change for all types of . Option never should be used if a tablespace import to older versions of MariaDB Server should be possible. add_last should be used if a tablespace import into MariaDB Enterprise Server 10.3 or 10.4 should be possible. Instant resulting in reordering of columns will not be possible, but an instant ADD column as the last column can be done (behavior of MariaDB Enterprise Server 10.3). (MDEV-20590)
system variable added, to enforce TLS secure connections. (MENT-66)
Index length limit for the and S3 storage engines has been increased from 1000 to 2000 bytes. (MENT-401)
IF EXISTS clause can now be used with and (MENT-725)
) system variable implicitly applies IF EXISTS clause to several DDL statements, including , , , , , , DROP PACKAGE, and . (MENT-725)
now provides support for replication. A new system parameter was added to define whether S3 replication is the same S3 storage for primary and replica. A new system parameter controls whether all rows should be added to the binary log when a S3 table is altered to a local table. (MENT-725)
now supports partitioning, with the limitation that REBUILD PARTITION, TRUNCATE PARTITION, and REORGANIZE PARTITION cannot be used. (MENT-725)
System user mariadb.sys has been added. (MDEV-19650)
Possible crash with data loss when executing an update of PRIMARY KEY columns on an table with a column. (MDEV-22384)
ignored the timeout setting when an explicit LOCK TABLES ... WRITE was active in another session. As a result, MariaDB Enterprise Server waited for the release of the lock even if the timeout was reached. (MDEV-20230)
When additional open_table_caches_instances have been created, a crash could occur due to exceeding the limit of open file descriptors. (MDEV-18027)
Clean shutdown of MariaDB Enterprise Cluster was not possible due to a deadlock situation between Galera Nodes. (MENT-432)
Adding a column to the discarded tablespace was possible, resulting in a crash. (MDEV-22446)
on an table could crash when an index field has been converted from utf8mb3 to utf8mb4 character set. (MDEV-20726)
A MariaDB Enterprise Cluster Node (Galera) could hang on rejoining the cluster during IST. (MDEV-21002)
Replication could be aborted when the replication data includes nested version-based conditional comments.
and mariadbd-safe processes showed as running after a server shutdown. (MDEV-21563)
ignored the configuration from the server configuration file. (MDEV-19347)
A duplicate key error showed the duplicate key value truncated to 64 characters without indicating the truncation. (MDEV-20604)
Using SET GLOBAL for the InnoDB variables , , , and could lead to corrupted strings for the settings. (MDEV-22393)
Changing the Server-Id could lead to events being disabled for replicas, even if a single node configuration without a replica was used. (MDEV-21758)
incorrectly shows the privilege Delete versioning rows instead of . (MDEV-20382)
Wrong query results have been returned with (MDEV-21614)
does not quote role names properly for a user granted to this role. (MDEV-20076)
Partitioning could choose the wrong partition for the RANGE partitioning by the column. (MDEV-21195)
A performance regression when optimizer flag rowid_filter is activated. (MDEV-21794)
An defining the authentication plugin did not remove any other authentication plugin from mysql.global_priv for this user. (MDEV-21928)
An online ADD PRIMARY KEY could fail after an instant DROP or reorder was executed for fields of the same table. (MDEV-21658)
Dropping an indexed column could occur as an instant operation, although is not instantaneous. (MDEV-22465)
A query with many JOIN and UNION ALL clauses could result in ERROR 9 (HY000) Unexpected end-of-file (MENT-750)
The plugin pam_user_map.so was not provided with binary tarball packages. (MDEV-21913)
Upgrade to MariaDB Enterprise Server 10.4 could result in the inability to access the system table, if the root user was renamed before the upgrade. In MariaDB Enterprise Server 10.4, became a view owned by the root user. This view is now owned by the mariadb.sys system internal user. (MDEV-19650)
Upgrade from an older MariaDB Server or MySQL Server version to MariaDB Enterprise Server could lead to an empty system table if the existing system table includes an auth_string field. This field was renamed to authentication_string with MariaDB Server 5.5. (MDEV-21244)
error code added
system variable maximum value changed from 4294967295 to 255
system variable added
command-line option added
command-line option added
command-line option added
command-line option added
command-line option added
--ignore-table-data command-line option added
system variable added
system variable added
In alignment with the enterprise lifecycle, MariaDB Enterprise Server 10.4.13-7 is provided for:
Red Hat Enterprise Linux 8
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 6
CentOS 8
CentOS 7
CentOS 6
Ubuntu 20.04
Ubuntu 18.04
Ubuntu 16.04
Debian 10
Debian 9
Debian 8
SUSE Linux Enterprise Server 15
SUSE Linux Enterprise Server 12
Microsoft Windows
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see MariaDB Corporation Engineering Policies.
CentOS 6, Debian 8, and Red Hat Enterprise Linux 6 are no longer supported as per the MariaDB Engineering Policy. Older releases are available from the MariaDB Downloads page. Instructions for installation are included as a README file within the download.
This page is: Copyright © 2025 MariaDB. All rights reserved.
An overview of changes, improvements, and what's new in MariaDB Enterprise Server 11.8
MariaDB Enterprise Server 11.8 introduces a wide range of enhancements spanning developer productivity, security, compatibility, observability, and support for modern workloads like vector search. The MariaDB Enterprise Server 11.8.2-0 Technical Preview adds the innovations from the MariaDB Community Server releases 11.5 to 11.8 to MariaDB Enterprise Server 11.4.
MariaDB Enterprise Server 11.8 continues to expand its native vector search capabilities, positioning MariaDB for AI-powered applications such as semantic search and recommendation systems. Already available in the MariaDB Enterprise Server 11.4 are:
New Data Type: VECTOR(N) to store multi-dimensional embeddings.
Vector Indexing: Efficient similarity search with VECTOR INDEX.
Distance Functions:
VEC_DISTANCE_EUCLIDEAN() for L2 distance.
VEC_DISTANCE_COSINE() for angular similarity.
Conversion Functions:
Vec_FromText(json_array) and Vec_ToText(vector_column) transform between the text and binary vector formats.
for Index Tuning:
mhnsw_max_cache_size, mhnsw_default_distance, mhnsw_default_m, mhnsw_ef_search.
Distance Functions:
VEC_DISTANCE() auto-selects the best distance function based on the index configuration.
Optimization that makes vector search 30-50% (depending on the data) faster for the same recall. Enabled automatically for applicable vectors. Vectors are applicable if they can be gradually truncated to trade some recall for speed. For example matryoshka embeddings as produced by OpenAI are applicable.
Namespace support was added to HashiCorp Vault in MariaDB. See the for details.
are possible now.
UUID Generation: New functions UUID_v4() and UUID_v7() for modern and time-ordered UUIDs.
Multi-Table DELETE Enhancements: Support for ORDER BY and LIMIT.
Single-Table DELETE Enhancements: Now it allows index hints.
NEW SHOW CREATE SERVER: Recreate server objects similar to .
DBMS_OUTPUT: Messages submitted by DBMS_OUTPUT.PUT_LINE() are not sent to the client until the sending subprogram or trigger completes.
Optimization that makes vector search 30-50% faster (more details in the section)
Segmented key cache for
system variable
Add option to not collect statistics for long char/varchars, see for more information
UTF-8 by Default: utf8mb4 replaces latin1 and legacy utf8, ensuring full Unicode support, including emojis.
Default Collation: utf8mb4_uca1400_ai_ci is now the standard for Unicode character sets.
Extended TIMESTAMP Range: Increased upper bound to 2106 on 64-bit systems.
ROW Type Enhancements:
ROW types are now usable as stored function return values.
The support for %ROWTYPE, TYPE OF, and RECORD(...) declarations for Oracle-like compatibility:
Triggers:
BEFORE UPDATE OF col1, col2 limits trigger execution to specific column updates:
Use of SIGNAL SQLSTATE '02TRG' allows skipping a row operation.
Stored Procedures: Now support default parameter values:
Associative arrays: DECLARE TYPE .. TABLE OF .. INDEX BY
Added caching_sha2_password plugin, see for more information
System Versioned Tables is a powerful feature for auditing changes to data. Enabling System Versioned Tables is as easy as creating a table by using
Or enabling the feature for an existing table by using
In both cases, invisible fields will be created in the table to track the timestamps and period for which the data is valid. A DBA/DevOps might want these fields to be visible. It is now possible to change such implicit fields to explicit ones by the following types of statements:
New :
Based on elliptic curve cryptography.
Mitigates the replay and man-in-the-middle attacks. Example on how to create a user using the new :
This will result in:
\
Unix Socket Enhancements:
Now supports explicit OS user mapping via IDENTIFIED VIA UNIX_SOCKET AS 'user'.
It is also possible to specify more than one OS user with the usual OR syntax:
Improved Replication Lag Monitoring:
now includes:\
for :\
New Option – --slave-abort-blocking-timeout: Kills blocking non-replication queries after a timeout.
Galera SST Automation: SST user is now auto-created and managed internally.
Backported : Add {{Connects_Tried}} & {{Master_Retry_Count}} from
Enhancement: The file_key_management plugin can now read keys from a Unix socket, not just from files.
File Key Management Encryption Plugin: Added key rotation capability; see for details. In addition, a new Information Schema table was added, .
Temporary File Disk Space Limits:
max_tmp_session_space_usage and max_tmp_total_space_usage prevent runaway disk usage.
New Status Variables: tmp_space_used, max_tmp_space_used.
New Views:
SLAVE_STATUS to view replication lag via SQL.
for password state and expiration monitoring.
to introspect auto-generated sequences:\
Enhanced ANALYZE FORMAT=JSON:
Includes r_index_rows, r_icp_filtered.
Thread Naming for Diagnostics: Thread names are now more descriptive.
Galera Information Schema: New Information Schema table.
Galera Information Schema: New and Information Schema tables.
Galera Information Schema: New Information Schema table .
Galera Information Schema: New Information Schema and tables.
Support for Oracle-stype INDEX BY tables (associative arrays) was backported from in stored routines and anonymous blocks, with this declaration syntax:
Where:
type_name supports explicit and anchored data types (e.g t1.col1%TYPE).
The INDEX BY clause supports integer and string data types.
rec_type_name supports scalar and record data types.
The implementation supports the following associative array methods:
FIRST
LAST
NEXT
PRIOR
COUNT
EXISTS
DELETE
mariadb-dump:
The --dir=<path> dumps each database to its subdirectory.
Supports parallel dumps and restores.
New --update-history converts row_end TIMESTAMPs during export.
mariadb-import:
--dir=<path> restores from the dumped directory structure.
Supports --database, --table, --ignore-database, --ignore-table for selective restore.
--innodb-optimize-keys: defers index creation to speed up data loads.
mariadb-test (mtr):
mtr can be started with the --enable_serveroutput option to enable DBMS_OUTPUT messages. See for details.
mariadb (command-line client)
New --enable_serveroutput option to enable DBMS_OUTPUT messages at start time. See for details.
New serveroutput and noserveroutput command to enable and disable those messages at runtime. See for details.
Improved Insights:
Index usage via QUERIES in INDEX_STATISTICS.
Query operation counts: ROWS_INSERTED, ROWS_UPDATED, KEY_READ_HITS, etc.
New stats in CLIENT_STATISTICS and USER_STATISTICS.
Table I/O metrics: PAGES_ACCESSED, PAGES_READ_FROM_DISK.
MariaDB Enterprise Server 11.8.2-0 Tech Preview
See also:
MariaDB Enterprise Server 10.4.30-20 is a maintenance release of MariaDB Enterprise Server 10.4. This release includes a variety of fixes.
MariaDB Enterprise Server 10.4.30-20 was released on 2023-06-13.
#1:
MariaDB CVEs are assigned a word rating instead of a CVSS base score. See the MariaDB Engineering Policy for details.
InnoDB's internal performance has been improved. ()
The aria_log_dir_path system variable is added as read-only. ()
The --aria-log-dir-path command-line option is added to mariadb-backup.
The default value for the core_file system variable has been changed from None to OFF. ()
The innodb_buffer_pool_filename system variable can no longer be changed dynamically. ()
In previous releases, when innodb_buffer_pool_dump_at_shutdown was enabled, users with the SUPER privilege were able to dynamically change the value of the innodb_buffer_pool_filename system variable: SET GLOBAL innodb_buffer_pool_filename='SOME_FILE_PATH';
Starting with this release, the innodb_buffer_pool_filename system variable must be configured in a configuration file prior to starting up the server:
When a backup is created with mariadb-backup and aria_log_dir_path is configured, the Aria logs are not copied to the backup. ()
When system versioning is enabled for a table without a primary key, changes to the table are not properly replicated. ()
When a partitioned table contains a prefix index on a column that uses a NOPAD collation, queries with ORDER BY can return rows in the wrong order. ()
For some collations, when a unique constraint is defined with UNIQUE(..) USING HASH, duplicate values are accepted. ()
When an InnoDB table with ROW_FORMAT=REDUNDANT is being rebuilt due to a DDL statement, the server can crash while trying to apply cached DML operations to the rebuilt table. ()
Long uniques don't work correctly with Unicode collations. Equal strings (in terms of the collation) are compared as unequal if the length of the strings are different. (, )
When innodb_buffer_pool_filename is set to the empty string, the server tries to delete the datadir during shutdown. ()
Starting with this release, the innodb_buffer_pool_filename system variable is read-only and can't be changed dynamically.
When slave_parallel_mode is optimistic and slave_parallel_threads is greater than 0, ALTER SEQUENCE can fail with an out-of-order binlog error if the sequence uses InnoDB. ()
In previous releases, the following error can be raised:Last_Error: Error 'An attempt was made to binlog GTID 0-1-100 which would create an out-of-order sequence number with existing GTID 0-1-100 and gtid stric mode is enabled' on query. Default database: 'test'. Query: 'alter sequence s1 restart with 1' will be shown.
When an UPDATE or DELETE is rolled back from an InnoDB table with ROW_FORMAT=COMPRESSED, the server can crash. ()
When the LEFT() function is called on a string that has no character set defined, the server can crash. ()
With Galera, when wsrep_sst_method=mariadb-backup is set and encrypt=4 is enabled for State Snapshot Transfers (SSTs), SSTs can fail if the version of socat installed on the donor node is 1.7.4.0 or later. ()
In previous releases, SSTs could fail with the following error in the donor node's MariaDB error log if the version of socat installed is 1.7.4.0 or later:E Failed to set SNI host ""
Starting with this release, when the SST script starts the socat listener on the donor node, the error is prevented by setting no-sni=1 if the version of socat installed is 1.7.4.0 or later.
When optimizer trace is enabled, if a view is part of a multi-table update, the server can crash. ()
When a view definition contains a UNION and the view is queried using server-side prepared statements, if the optimizer pushes down a condition into the execution of the view, the server can crash during character set conversions. ()
When a replica server connects to a primary server with MASTER_USE_GTID=slave_pos, if the primary server has encrypted binary logs that it can no longer decrypt, the primary server crashes due to a segmentation fault. ()
In previous releases, the primary node would iterate over all of its binary logs to look for the requested GTID. When one of the binary logs could not be decrypted, the server would crash.
Starting with this release, when the primary node fails to decrypt a binary log in this scenario, it stops iterating over the binary logs and raises an error with the ER_MASTER_FATAL_ERROR_READING_BINLOG error code with the following error message:Got fatal error 1236 from master when reading data from binary log: 'Could not set up decryption for binlog.'
With Galera, when streaming replicating is enabled by setting the wsrep_trx_fragment_size system variable, the server can crash when certain fragment sizes are specified. ()
When EXPLAIN EXTENDED is executed for a single-table DELETE that contains an IN(..) predicand, the server can crash. ()
When parallel replication is enabled by setting slave_parallel_threads greater than 0, the replica's parallel replication worker threads could hang after hitting an error. ()
In previous releases, when the server was hung in this scenario, the output of SHOW SLAVE STATUS would show that an error occurred, but the output would indicate that both the I/O and SQL threads were running.SHOW SLAVE STATUS\G
In this scenario, this issue causes one of the parallel replication worker threads to hang in the closing tables state, so the output of SHOW PROCESSLIST would show one worker thread in that state indefinitely:SHOW PROCESSLIST;<<code>> +------+--------------+--------------------+------+--------------+-------+-----------------------------------------------+------------------+----------+
+------+--------------+--------------------+------+--------------+-------+-----------------------------------------------+------------------+----------+ ..
.. +------+--------------+--------------------+------+--------------+-------+-----------------------------------------------+------------------+----------+ <>
When the optimizer chooses how to split a semi-join, the server can crash. ()
With Galera, when CREATE TEMPORARY SEQUENCE is executed on a cluster node and binary logging is enabled, the server crashes. ()
With Galera, when a write set fails certification and binary logging is enabled, the WSREP sequence numbers (cluster-wide transaction IDs) used by a WSREP applier thread can become out of sync with the node's XIDs (internal transaction IDs) due to a race condition, which can cause the node to crash. ()
In previous releases, when a write set failed certification and binary logging was enabled, a WSREP applier thread could sync the WSREP sequence number out-of-order, because the commit order could be released too early.
With Galera, when streaming replicating is enabled by setting the wsrep_trx_fragment_size system variable and CREATE TABLE .. SELECT is executed, the server can crash. The following assertion is written to the MariaDB error log during the crash: ()
Assertion mode_ == m_high_priority' failed in void wsrep::client_state::after_applying()`
Starting with this release, the server prohibits CREATE TABLE .. SELECT in this scenario and raises the ER_NOT_ALLOWED_COMMAND error code with the following error message:ERROR 42000: CREATE TABLE AS SELECT is not supported with streaming replication
With Galera, when a connection uses the handler interface to start a transaction on a table, the server can crash when the client disconnects. () In previous releases, when the client disconnected, the server would rollback the transaction and release all locks, including the locks that the handler interface expected to survive after the transaction ended, which would cause the server to crash.
In previous releases, the following assertion is written to the MariaDB error log during the crash:
With Galera, when an SST donor changes to the non-primary state, the SST is not terminated properly, and the donor node crashes. (MENT-1708)
In previous releases, the following error message and assertion is written to the MariaDB error log during the crash:
When a query is executed that uses DISTINCT and an aggregate function on a group, the server can crash. ()
When a server-side prepared statement is used to execute a query that references views and contains a HAVING clause, the server can crash upon second execution of the query. ()
When the InnoDB purge thread tries to use the change buffer for an uncommitted index, the server aborts with an assertion. ()
When the rowid_filtering optimization is used with a partitioned table, the server aborts with an assertion. ()
With Galera, a hang can occur in "starting" commit state due a deadlock between a KILL command and an abort issued by an applier. (MENT-1855)
Starting with this release, Total Order Isolation (TOI) is not used for the KILL command.
When binlog_row_image=FULL is set and slave_parallel_threads is greater than 0, replica servers can hang if data is inserted into tables with a sequence. ()
InnoDB aborts when fulltext background thread does a sync commit operation. ()
When EXPLAIN EXTENDED is executed for a multi-table UPDATE that uses the system join type, the output can be incorrect. ()
When a query specifies DISTINCT and contains expressions using the SUM() function, the wrong results are returned. ()
When a view's definition contains a HAVING clause, selecting from the view can fail with an error. ()
In previous releases, queries could raise an error with the ER_VIEW_INVALID error code and the following error message:View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
When a view's definition contains an aggregate function, selecting from the view can fail with an error. ()
In previous releases, queries could raise an error with the ER_INVALID_GROUP_FUNC_USE error code and the following error message:
ERROR 1111 (HY000): Invalid use of group function
When a view's definition contains a table-value constructor (TVC) as a single-value subquery, selecting from the view can fail with an error. ()
In previous releases, queries could raise an error with the ER_VIEW_INVALID error code and the following error message:View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
When a view's definition contains an aggregate function in an uncorrelated subquery, the wrong result is returned. ()
When a DELETE statement contains a subquery with a HAVING clause or an aggregate function in the WHERE clause, the statement can fail with an error. ()
In previous releases, queries could raise an error with the ER_INVALID_GROUP_FUNC_USE error code and the following error message:ERROR 1111 (HY000): Invalid use of group function
When an InnoDB tablespace has been discarded, selecting from information_schema.INNODB_SYS_INDEXES fails with an error. ()
In previous releases, an error with the ER_UNKNOWN_ERROR error code is raised:ERROR 1105 (HY000): Unknown error
Starting with this release, no error is returned, and the results contain NULL for the PAGE_NO and SPACE columns for discarded tablespaces.
When innodb_undo_directory is set to a relative path, the path is not properly used by mariadb-backup --copy-back. ()
In previous releases, the undo logs would be copied to the relative path compared to the current working directory.
Starting with this release, the undo logs are copied to the relative path compared to the datadir.
When UNIX_TIMESTAMP(CURRENT_TIME()) is executed, the incorrect value is returned. ()
In previous releases, NULL is returned.
With Galera, when wsrep_sst_method='mariadb-backup' is set, systemd raises an error about a mismatched PID. ()
In previous releases, systemd could raise the following error, where BACKUP_PID is the PID of MariaDB Enterprise Backup and SERVER_PID is the PID of MariaDB Enterprise Server:Got notification message from PID BACKUP_PID, but reception only permitted for main PID SERVER_PID
When an UPDATE contains a WHERE clause that contains a range condition over a non-indexed VARCHAR column, an error is raised. ()
In previous releases, an error with the ER_DATA_TOO_LONG error code is raised with the following error message:
ERROR 1406 (22001): Data too long for column 'COLUMN_NAME' at row 1
When slave_parallel_threads is greater than 0 and SHOW SLAVE STATUS is executed, the connection can try to acquire an uninitialized mutex. ()
In previous releases, a race condition could cause the mutexes of parallel replication worker threads to be acquired before they are initialized.
The ucs2_general_mysql500_ci collation, which is intended for compatibility with older versions of MySQL, incorrectly sorts 'ß' after 's'. ()
When EXPLAIN EXTENDED is executed with an INSERT, UPDATE, DELETE, or REPLACE, a warning containing the query text is not printed. ()
The rowid_filtering optimization is applied incorrectly in some cases. ()
When preparing a partial backup, MariaDB Enterprise Backup raises error messages about missing InnoDB tablespace files that are expected to be missing, because they were excluded from the backup. ()
For certain data distributions, the optimizer histogram code can produce wrong selectivity, which can lead to performance degradation. ()
aria_log_dir_path system variable added.
core_file system variable default value changed from None to OFF
innodb_buffer_pool_filename system variable dynamic changed from Yes to No
mariadb-backup --aria-log-dir-path command-line option added.
In alignment with the , MariaDB Enterprise Server 10.4.30-20 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64 Red Hat Enterprise Linux 8 packages)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see .
DECLARE
TYPE DeptRecTyp IS RECORD (
dept_id NUMBER(4),
dept_name VARCHAR2(30),
mgr_id NUMBER(6),
loc_id NUMBER(4)
);CREATE TRIGGER mytrigger BEFORE UPDATE OF col1, col2 ON t1 FOR EACH ROW …CREATE OR REPLACE PROCEDURE p1(param1 INT, param2 INT DEFAULT 1)CREATE TABLE contracts (...) WITH SYSTEM VERSIONING;ALTER TABLE contracts ADD SYSTEM VERSIONING;SET @@system_versioning_alter_history= keep;
ALTER TABLE contracts ADD COLUMN rs TIMESTAMP(6) AS ROW START, ADD COLUMN re TIMESTAMP(6) AS ROW END, ADD PERIOD FOR SYSTEM_TIME (rs,re);CREATE USER 'MariaDBUser'@'%' IDENTIFIED VIA PARSEC USING PASSWORD('MyPassword123!');SHOW GRANTS FOR MariaDBUser@'%';Grants for MariaDBUser@%
GRANT USAGE ON *.* TO `MariaDBUser`@`%` IDENTIFIED VIA parsec USING 'P0:lhXyNv1cIxpB8EnTxR7ON7S7:1l3rWRW1/jw45yrvYXB8eh02wzk7lcJcz4CMc
Ww2b+8'CREATE USER dba IDENTIFIED VIA UNIX_SOCKET AS 'jack' OR IDENTIFIED VIA UNIX_SOCKET AS 'jill';Master_last_event_time
Slave_last_event_time
Master_Slave_time_diffMariaDB [test]> SELECT Master_last_event_time,Slave_last_event_time,Master_Slave_time_diff FROM information_schema.slave_status\G
*************************** 1. row ***************************
Master_last_event_time: 2024-08-13 07:32:38
Slave_last_event_time: 2024-08-13 07:32:37
Master_Slave_time_diff: 1SELECT * FROM INFORMATION_SCHEMA.SEQUENCES\G
*************************** 1. row ***************************
SEQUENCE_CATALOG: def
SEQUENCE_SCHEMA: test
SEQUENCE_NAME: s_name
DATA_TYPE: tinyint
NUMERIC_PRECISION: 8
NUMERIC_PRECISION_RADIX: 2
NUMERIC_SCALE: 0
START_VALUE: 100
MINIMUM_VALUE: -127
MAXIMUM_VALUE: 126
INCREMENT: 10
CYCLE_OPTION: 0TYPE type_name TABLE OF rec_type_name INDEX BY idx_type_name;CVE (with cve.org link)
CVSS base score
N/A (Medium)#1
[mariadb]
innodb_buffer_pool_filename=SOME_FILE_PATH*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
..
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
..
Last_Errno: 1062
Last_Error: Could not execute Write_rows_v1 event on table TABLE_NAME; Duplicate entry 'VALUE' for key 'KEY_NAME', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log LOG_FILE, end_log_pos END_LOG_POS
..Id
User
Host
db
Command
Time
State
Info
Progress
2394
system user
NULL
Slave_worker
50852
closing tables
NULL
0.000
void close_thread_table(THD*, TABLE**): Assertion `thd->mdl_context.is_lock_owner(MDL_key::TABLE, table->s->db.str, table->s->table_name.str, MDL_SHARED)' failed.[Warning] WSREP: server: NODE_NAME unallowed state transition: connected -> joined
void wsrep::server_state::state(wsrep::unique_lock<wsrep::mutex>&, wsrep::server_state::state): Assertion `0' failed.MariaDB Enterprise Server 11.6.16-11 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2023-12-12
MariaDB Enterprise Server 10.6.16-11 is a maintenance release of 10.6. This release includes a variety of fixes.
MariaDB Enterprise Server 10.6.16-11 was released on 2023-12-12.
4.9
This release incorporates MariaDB ColumnStore engine version 23.10.0.
A new view sys.privileges_by_table_by_level in the sys schema, to show privileges granted to a table on a global, schema, or table level. (MENT-2007)
Option s3_debug can now be changed without the need to restart the server (MENT-2001)
New Time Zone Options %Z and %z for DATE_FORMAT (MENT-1902)
Server Audit Log with Milliseconds Precision Timestamps (MENT-1744)
Beginning with this release MariaDB Enterprise Server does not use Transparent Huge Pages (THP) anymore (MENT-2015)
Many new platforms have enabled THP by default for new release series. THP interferes with how memory is allocated and freed. THP does not work well with databases or other services that has a long uptime and constantly allocates and frees memory. THP causes excessive usage of memory which can lead to out-of-memory (OOM) crashes. To check if the OS has enabled THP use
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never'[always]' means that THP is enabled.
Raise notes if indexes cannot be used (MDEV-32203)
In case of data type or collation mismatch (different error messages).
In case if a table field was replaced with something else (e.g., Item_func_conv_charset) during a condition rewrite.
Added options to write warnings and notes to the slow query log for slow queries. New variables added/changed:
note_verbosity, which is a set of the options:
basic - All old notes
unusable_keys - Print warnings about keys that cannot be used for select, delete, or update.
explain - Print unusable_keys warnings for EXPLAIN queries.
The default is 'basic,explain'.
For old installations the notable new behavior is that one will get notes about unusable keys when one does an EXPLAIN for a query.
Set either note_verbosity to an empty string or setting sql_notes=0 do disable notes.
log_slow_verbosity has a new option 'warnings'. If this is set then warnings and notes generated are printed in the slow query log up to log_slow_max_warnings times per statement.
log_slow_max_warnings - Max number of warnings written to slow query log.
One can now use =ALL for any 'set' variable to set all options at once. (MDEV-32203)
[mariadb]
note_verbosity=ALLSET @@note_verbosity=ALLCHACHA20-POLY1305 support when WolfSSL is used (MDEV-31653)
The semi-synchronous replication magic number error "[ERROR] Read semi-sync reply magic number error" has been improved to show the semi-sync acknowledgment reported with printing the hex dump of the failing network packet (MDEV-32365)
Disable TLS v1.0 and 1.1 for MariaDB. TLSv1.1 removed from the default tls_version system variable. (MDEV-31369)
A warning is shown if TLSv1.0 or TLSv1.1 are selected.
With binary log enabled transactions that are filtered out of binlogging by any of binlog_{do,ignore}_db option may be lost in the engine. (MDEV-29989)
Assertion failures in log_sort_flush_list upon crash recovery. It is possible that if the server is killed and restarted right after recovery, the second recovery could fail. (MDEV-32029)
Race condition between page write completion and log checkpoint on crash recovery. This may break crash recovery in case of an operating system crash or abrupt loss of power or storage connectivity. (MDEV-32511)
Assertion fails in MDL_context::acquire_lock upon parallel replication of CREATE SEQUENCE (MDEV-31792)
A hang or crash could be observed in parallel replication of STATEMENT binlog format transactions modifying temporary tables e.g., witnessed in rpl.rpl_parallel_temptable failure. (MDEV-10356)
A failure that occurs due to unnecessary replication of CACHE INDEX and LOAD INDEX INTO CACHE although this is a local operation. (MDEV-24912)
Rowid filter does not process a storage engine error correctly. A query that's executing a locking read and is using the Rowid Filter could cause a server crash if it has encountered a Lock Wait Timeout or Deadlock or a similar error when building the Rowid Filter. (MDEV-25163)
Possible server crash when executing OPTIMIZE TABLE. InnoDB fails to check the overflow buffer while applying the operation to the table that was rebuilt (MDEV-28122)
Crash when HAVING in a correlated subquery references columns in the outer query (MDEV-29731)
Due to a flaw in the SST scripts, it was not possible to execute SST when datadir, or some innodb log directory points to a path that is actually a symlink to the actual data directory. (MDEV-29893)
A cluster node crashes, which sometimes occurs in situations where brute force (BF) thread conflicting requested lock, and was trying to kill the victim transaction, but this victim transaction was also handled by brute force thread. (MDEV-30217)
Possible race condition between InnoDB purge and rollback of alter operation. Alter rollback marks the index as corrupted while the purge is working on the same index (MDEV-30802)
Server can crash when a table of type SPIDER starts with a comment string which is not a parameter for SPIDER. (MDEV-31117)
Node crashes when trying to execute "CREATE TABLE ... WITH SYSTEM VERSIONING AS SELECT ..." (MDEV-31285)
Lock wait timeout with INSERT-SELECT, autoinc, and statement-based replication (MDEV-31482)
Too strict assertion which leads to a problem since with the BINLOG statement we can execute binlog events on master also (not only in applier). (MDEV-31651)
Galera cannot support wsrep_forced_binlog_format=[MIXED|STATEMENT] during CREATE TABLE AS SELECT. But a crash in the form of an assertion is an overreaction. Now a warning is issued instead. (MDEV-31660)
The MariaDB Enterprise Cluster node does not return from donor/desynced state to synced state with wsrep_mode=BF_ABORT_mariadb-backup (MDEV-31737)
When a MariaDB Enterprise Cluster node is a replica of another MariaDB Enterprise Cluster and optimistic replication is used, a node can hang. To support optimistic parallel replication the replication slave abort needs to be skipped if a node remains in the cluster (wsrep_ready==ON) and replication is configured for optimistic or aggressive retry logic. (MDEV-31833)
After crash recovery, the server crashes with error "InnoDB: Checksum mismatch in the first page of file" in the server log (MDEV-31851)
Possible server crash when setting SPIDER option spider_delete_all_rows to 0 and delete all rows of a spider table (MDEV-31996)
InnoDB may hang with a low probability under any write workload. (MDEV-32049)
InnoDB may hang when using a small innodb_buffer_pool_size (MDEV-32134)
Use of nested row constructs in the left expression of an IN subquery should produce an error. Example: (a,(b,c)) IN (SELECT ...). In some degenerate cases, the error was not detected, and this causes a crash at a further stage in query processing. (MDEV-32320)
A table-less subquery with a LIMIT clause with non-zero offset, like ( SELECT two LIMIT 1 OFFSET 1) can produce unexpected results. If used inside ORDER BY, it can cause a crash. (MDEV-32324)
InnoDB may hang when running out of buffer pool (MDEV-32588)
Possible crash in the full-text search plugin parser when using FULLTEXT...WITH PARSER. (MDEV-32578)
Intermittent crashes when using SEQUENCE in combination with Galera (MDEV-32024)
When two clients execute FLUSH TABLES WITH READ LOCK/UNLOCK TABLES on a Galera node, the node would sometimes get stuck in a paused state. This can cause the next requests to fail. (MDEV-32282)
Sometimes a node has been dropped from the cluster on startup/shutdown with async replication enabled due to inconsistency issues with the mysql.gtid_slave_pos table (between master and replica nodes), because previously this table was not previously replicated within the cluster. (MDEV-31413)
Server crashes in JOIN::cleanup after erroneous query with view (MDEV-32164)
Possible server crashes in some create table-like scenarios where some generated indexes were automatically dropped. (MDEV-32449)
Server crashes in check_sequence_fields upon CREATE TABLE .. SEQUENCE=1 AS SELECT .. (MDEV-29771)
Crash when searching for the best split of derived table (MDEV-32064)
InnoDB: Failing assertion purge_sys.tail.trx_no <= purge_sys.rseg->last_trx_no() could cause a crash some time after a recovered incomplete transaction was rolled back after crash recovery. This may cause a crash loop. (MDEV-30100)
When a new user is connecting or a user is changing the password while FLUSH PRIVILEGES is executed, the server can crash (MENT-1707)
When ssl-mode=CA_VERIFY is used and mariadb-backup is selected as the SST method an incremental state transfer(IST) may be rejected (MENT-2016)
The following error will be shown in the server log
WSREP_SST: [ERROR] Donor does not know my secret! (20231003 15:29:10.448)An SST will be triggered instead, which usually takes longer to complete.
Prefix keys for CHAR return error "ERROR 1062 (23000): Duplicate entry 'ß' for key 'a' " for MyISAM and Aria when inserting data (MDEV-30048)
Possible wrong results of DISTINCT with NOPAD collations when SET big_tables=1; is set (MDEV-30050)
When executing a statement with "WHERE inet6_column IN ('','::1')", an empty string would also return values of "::", also they are not equal. (MDEV-31719)
Missed kill when the SQL thread goes to wait for parallel slave worker queues to drain. KILL query did not affect a replication thread which remained alive, unexpectedly by the user. (MDEV-29974)
InnoDB tries to purge non-delete-marked records of an index on a virtual column prefix. An error like "InnoDB: tried to purge non-delete-marked record in index b of table test.t is shown in the server log (MDEV-30024)
Corrupt index(es) on busy table when using FOREIGN KEY. Error "InnoDB: Flagged corruption of INDEX_NAME in table DBNAME.TBLNAME in purge" in the server log. (MDEV-30531)
lock_row_lock_current_waits counter in information_schema.innodb_metrics may become negative (MDEV-30658)
InnoDB Recovery doesn't display encryption message when no encryption configuration passed (MDEV-31098)
SHOW REPLICA STATUS Last_SQL_Errno race condition on Errored replica restart. A contradictory YES of slave_running_status and an error code in Last_SQL_Errno will be shown (MDEV-31177)
Wrong information about innodb_checksum_algorithm in the information_schema.SYSTEM_VARIABLES. NONE or STRICT_NONE, or STRICT_INNODB should not be shown anymore (MDEV-31473)
Auto-increment no longer works for explicit FTS_DOC_ID (MDEV-32017)
In some cases, replaying transactions on other MariaDB Enterprise Cluster nodes results in an wrong "Failed to insert streaming client" warning (MDEV-32051)
Wrong bit encoding using COALESCE (MDEV-32244)
getting error 'Illegal parameter data types row and bigint for operation '+' ' when using ITERATE in a FOR..DO (MDEV-32275)
While checking for altered column in foreign key constraints, InnoDB fails to ignore virtual columns (MDEV-32337)
Write-ahead logging is broken for freed pages (MDEV-32552)
seconds_behind_master is inaccurate for Delayed replication (MDEV-32265)
InnoDB may fail to recover after being killed in fil_delete_tablespace() with note "InnoDB: Multi-batch recovery needed at LSN 78671708" in the server log. Setting innodb_force_recovery=1 can be used as a workaround. (MDEV-31826)
The wsrep_sst_method variable can be set to an invalid value using the SET statement. (MDEV-31470)
A query over FEDERATED table that uses a Common Table Expression and is executed by pushing it down to a Federated backend could fail with "Unknown error 10000" error. (MENT-1668)
Misleading help text for mysqlbinlog (mariadb-binlog) -T/--table option (MDEV-25369)
mbstream breaks page compression on XFS (MDEV-25734)
MyISAM tables took transactional metadata locks although there where no active transaction. (MDEV-28820)
"rpm --setugids" breaks PAM authentication (MDEV-30904)
A multi-row Insert into an empty table fails if the table has a unique index using hash. CHECK TABLE returns with "Table 't1' is marked as crashed and should be repaired" (MDEV-32015)
wrong table name in InnoDB's "row too big" errors (MDEV-32128)
A prepared statement can return a wrong result with a missing row, if IS NULL is used in the query (MDEV-9938)
Slow log Rows_examined for the slow_log can be out of range. In this case, the server log includes "([ERROR] Unable to write to mysql.slow_log)" (MDEV-30820)
An incorrect examined rows number is used in some cases like in the slow query log, with LIMIT ROWS EXAMINED, or with ANALYZE FORMAT=JSON when a query gets executed inside of a function. Each stored function call doubles the current count during processing (MDEV-31742)
CONVERT TABLE TO PARTITION returns with "ER_TABLEACCESS_DENIED_ERROR (1142)" although the user has sufficient privileges to execute the statement (MENT-1993)
Create separate tpool thread for async aio (MDEV-31095)
Optimize is_file_on_ssd() to speedup opening tablespaces on Windows (MDEV-32228)
Significant slowdown for query with many outer joins (MDEV-32351)
An incorrect examined rows number is used in some cases like in the slow query log, with LIMIT ROWS EXAMINED, or with ANALYZE FORMAT=JSON when an executed query includes a stored function Each stored function call doubles the current count during processing (MDEV-32475)
UNDO logs still growing for write-intensive workloads (MDEV-32050)
Replication stops when there exists an exclusive lock on an InnoDB supremum record in prepared transactions on the replica. (MDEV-30165)
Key not used when IN clause has both signed and unsigned values (MDEV-31303)
Parallel replication deadlock victim preference code erroneously removed. As a result, parallel slave could retry transaction execution more times than necessary. (MDEV-31655)
Executing a KILL QUERY or KILL CONNECTION or an enabled parallel replication can lead to performance degradation as conflicts wait for the time of --innodb-lock-wait-timeout. This can be seen with SHOW PROCESSLIST if one worker thread is in the "killed" state and some other worker thread is stuck in a query (MDEV-32096)
Disable read-ahead for temporary tablespace (MDEV-32145)
mysql_install_db doesn't properly grant proxy privileges to all default root user accounts (MDEV-21194)
The second node cannot be started because Galera SST rsync wants to replicate snapshot directory when datadir is on an NetApp storage with NFS access (MDEV-31332)
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 10.6.16-11 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see MariaDB Corporation Engineering Policies".
MariaDB Enterprise Server 10.5.18-13 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2022-12-21
MariaDB Enterprise Server 10.5.18-13 is a maintenance release of MariaDB Enterprise Server 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.18-13 was released on 2022-12-21.
MariaDB Enterprise Server enables a predictable development and operations experience through an enterprise lifecycle. These new features have been backported after reaching maturity in MariaDB Community Server:
The new is available to set the maximum execution time for queries on replica nodes. (MENT-1566, MDEV-27161)
When a query takes more than slave_max_statement_time seconds to run on the replica (slave) node, the query is aborted, and replication stops with an error.
The system variable can be set to a decimal value, where the decimal component has microsecond precision.
When set to 0, there is no timeout.
The default value is 0.
The view shows details about the InnoDB temporary tablespace, which is the tablespace where InnoDB temporary tables are stored. (MDEV-29479)
Starting with this release, the details about the InnoDB temporary tablespace can be shown by querying for the name innodb_temporary:
SELECT * FROM information_schema.INNODB_SYS_TABLESPACES
WHERE name LIKE 'innodb_temporary';When a table's default collation is set to the default collation for the table's character set, shows the COLLATE clause. (MDEV-29446)
In previous releases, MariaDB Enterprise Server reduced the size of SHOW CREATE TABLE output by excluding the COLLATE clause if the table's default collation was set to the default collation for the table's character set.
When a column is renamed in a partitioned table with using the NOCOPY algorithm, the table can be corrupted. (MDEV-28576)
When the InnoDB storage engine performs change buffer operations, the InnoDB Redo Log can overflow, which can cause table corruption. (MENT-1661, MDEV-29905)
When a query contains an IN/ALL/ANY predicand and the subquery contains a GROUP BY clause with an IN/ALL/ANY predicand with a single-value subquery as the left operand, the server can crash. (MDEV-29350)
If an InnoDB table contains a foreign key constraint and the child table's DATABASE_NAME/TABLE_NAME.ibd is longer than 330 characters, when the parent table is renamed, the server can crash. (MDEV-29409)
When a DDL statement is executed using the INPLACE algorithm and innodb_adaptive_hash_index=ON is set, the server can hang. (MDEV-27700, MDEV-29384)
When renaming a table to a long name, the server can crash. (MDEV-29258)
When an causes InnoDB to rebuild a table with a spatial index, the server can crash. (MDEV-29520)
When an InnoDB temporary table contains a spatial index, the server can crash if the temporary table is dropped due to DROP TEMPORARY TABLE or client disconnect. (MDEV-29507)
When querying a partitioned table using the PARTITION syntax, if the WHERE clause results in an index merge, the server can crash. (MDEV-21134)
When detecting CTE dependencies of nested CTEs that includes one or more recursive CTEs, infinite recursion can occur until the server crashes. (MDEV-29361)
When the wsrep_notify_cmd system variable is configured to use the bundled wsrep_notify.sh script, the server can hang during startup. (MDEV-27682)
When selecting from InnoDB's (such as , , and ), if connections with open XA transactions are disconnected or killed at the same time, the server can crash. (MDEV-29575)
For some queries that involve tables with different but convertible character sets for columns taking part in the query, a repeatable execution of such queries in the prepared statement mode or as part of a stored routine can crash the server. (MDEV-16128)
When executing a SELECT .. UNION .. SELECT or EXPLAIN EXTENDED statement, the server can crash. (MDEV-23160)
When is set and a view that includes a subquery is queried, the server crashes. (MDEV-16549)
When an application-time period with an empty name is added to a table using , the server can crash. (MDEV-18873)
In previous releases, statements like the following could cause the server to crash:
ALTER TABLE t
ADD PERIOD IF NOT EXISTS FOR `` (s,e);When the Spider storage engine's ODBC foreign data wrapper is used with MariaDB Connector/ODBC 3.1.10 and later, the server can crash. (MENT-1415)
If the InnoDB change buffer is corrupted, the server can hang during shutdown. (MENT-1673, MDEV-30009)
When an InnoDB tablespace is in the non-canonical format from a previous operation that used the INSTANT algorithm, InnoDB can fail to apply changes to the table during crash recovery and while preparing a backup with MariaDB Enterprise Backup. (MDEV-29438)
When InnoDB tries to apply a INSERT_HEAP_DYNAMICrecord to a secondary index in a table with ROW_FORMAT=DYNAMIC during crash recovery, the operation can fail with an error. (MDEV-29559)
In previous releases, the could have errors like the following:
[ERROR] InnoDB: Not applying INSERT_HEAP_DYNAMIC due to corruption on [page id: space=5, page number=4]When a prepared statement is used to execute an containing a subquery, the server can crash: (MDEV-28740)
In the presence of replication filters, revoking privileges from a non-existing user on a primary (master) breaks replication on the replica (slave). (MDEV-28530)
When is set on a replica node, the replica node does not skip replicated statements. (MDEV-28294)
When a Spider table has a prefix index, query results can be incorrect. (MDEV-27172)
InnoDB can extend tablespace files when additional capacity is not required. (MDEV-13013)
When an InnoDB table is being rebuilt and a is updated during the online rebuild, a memory leak can occur. (MDEV-29600)
When a view is queried using a prepared statement, the query fails with the ER_NEED_REPREPARE error code. (MDEV-17124)
In previous releases, the following error would occur:
ERROR 1615 (HY000): Prepared statement needs to be re-preparedWhen an InnoDB table contains virtual generated columns that are indexed, InnoDB fails to purge secondary index records. (MDEV-29666)
When using the InnoDB adaptive hash index, non-locking reads can return wrong results due to a potential ACID violation. (MDEV-28709, MDEV-29635, MDEV-27927)
When is used on a temporary table, an empty result set is returned. (MDEV-28455)
When a sequence is used as the default value in a table, rows inserted by an INSERT ... SELECT statement can be assigned the wrong values. (MDEV-29540)
When a column has both a and a , full-text search using MATCH(..) AGAINST(..) does not work properly. (MDEV-29778)
If the server is started with the enabled, but the TLS certificates and keys are not configured, the server will advertise the TLS support in the handshake, but will not actually be able to use it. (MDEV-29811)
With MariaDB Enterprise Cluster, when wsrep_sst_method='mariadb-backup' is configured, the joiner node ignores custom values for the innodb_buffer_pool_filename system variable, and the SST copies the buffer pool file to the default location instead. (MDEV-28968)
When a is filtered in a subquery inside the , the results can be incorrect. (MDEV-27101)
When the wsrep_node_incoming_address system variable does not contain a port number, the wsrep_incoming_addresses status variable shows 0 as the port number. (MDEV-28868)
When is enabled, performance is impacted if the rowid filter contains no elements. (MDEV-28846)
When a column is filtered in a subquery inside the , the results can be incorrect. (MDEV-27099)
When XA COMMIT is executed without an open XA transaction, the operation is still logged to the binary log. (MDEV-25616)
In previous releases, when a replica node tried to apply the event, it would fail with the ER_XAER_NOTA error code:
Last_SQL_Errno 1397
Last_SQL_Error Error 'XAER_NOTA: Unknown XID' on query. Default database: 'DATABASE_NAME'. Query: 'XA COMMIT ..'When a tablespace file was originally built with MariaDB Enterprise Server 10.4 and earlier, InnoDB would refuse to add a column to the table using the INSTANT algorithm. (MDEV-28822)
In previous releases, the operation would fail with the following error message:
ERROR 1845 (0A000): ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=INPLACEWhen mariadb-upgrade is executed, spurious errors about table rebuilds are logged. (MDEV-29481)
In previous releases, the following messages would be logged, even though the tool already mitigated the issues itself:
error: Table rebuild required. Please do "ALTER TABLE `TABLE_NAME` FORCE" or dump/reload to fix it!"This release incorporates MariaDB ColumnStore storage engine version 5.6.8.
ER_BINLOG_UNSAFE_SKIP_LOCKED error code added
ER_CM_OPTION_MISSING_REQUIREMENT error code added
ER_INCONSISTENT_SLAVE_TEMP_TABLE error code added
ER_JSON_HISTOGRAM_PARSE_FAILED error code added
ER_JSON_TABLE_ALIAS_REQUIRED error code added
ER_JSON_TABLE_ERROR_ON_FIELD error code added
ER_JSON_TABLE_MULTIPLE_MATCHES error code added
ER_JSON_TABLE_SCALAR_EXPECTED error code added
ER_PARTITION_CONVERT_SUBPARTITIONED error code added
ER_PK_INDEX_CANT_BE_IGNORED error code added
ER_PROVIDER_NOT_LOADED error code added
ER_REMOVED_ORPHAN_TRIGGER error code added
ER_SF_OUT_INOUT_ARG_NOT_ALLOWED error code added
ER_SLAVE_STATEMENT_TIMEOUT error code added
ER_STORAGE_ENGINE_DISABLED error code added
ER_VERS_HIST_PART_FAILED error code added
ER_WITH_TIES_NEEDS_ORDER error code added
--slave-max-statement-time command-line option added
system variable added
WARN_OPTION_CHANGING error code added
WARN_SFORMAT_ERROR error code added
In alignment with the enterprise lifecycle, MariaDB Enterprise Server 10.5.18-13 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "MariaDB Corporation Engineering Policies".
MariaDB Enterprise Server 11.4.5-3 is a Stable (GA) maintenance release of MariaDB Enterprise Server 11.4, released on 2025-03-19
MariaDB Enterprise Server 11.4.5-3 is a maintenance release of 11.4. This release includes a variety of fixes.
MariaDB Enterprise Server 11.4.5-3 was released on 19 Mar 2025.
This release incorporates MariaDB ColumnStore engine version .
The vector search capability has now been added to the MariaDB Enterprise Server 11.4 release. The linked explains the idea of the new vector search feature in detail. (MENT-2233)
Vector embeddings are numerical representations [0.2, -0.5, 0.8, 0.1, ...] that capture semantic meaning or features of data in a multi-dimensional space. The embedding transforms simple to complex data such as text, images, audio, or video into a series of numbers (a vector) where similar items are positioned together in the multi-dimensional vector space.
For example, a word embedding of the word "dog" would be close in a vector embedding space to the word "puppy", whereas "dog" would not be close to the word "airplane". The embedding representation can be used in similarity search, recommendation systems, or more generally in traditional AI/ML systems and GenAI systems.
With the RC release a new data type VECTOR(N) has been added to represent the vector column, where N is the number of dimensions.
Example:
VEC_FromText() converts a text representation of the vector (a json array of numbers) to a vector (little-endian IEEE float sequence of bytes, 4 bytes per float).
Example:
VEC_ToText() converts a binary vector into a json array of numbers (floats).
Example:
Comparing vectors, calculating how close they are, is the key functionality needed by an application working with vector search. Two functions exist for calculating the distance between vectors. Which one to use depends on the application and on how the vectors were generated.
VEC_DISTANCE_EUCLIDEAN() takes two vectors and computes the straight line (L2) Euclidean distance between two multi-dimensional points in the vector space
Example:
VEC_DISTANCE_COSINE() measures the cosine distance between two vectors in a multi-dimensional vector space
Example:
The vector search feature requires some for controlling the general behavior. Four new system variables have been added:
mhnsw_max_cache_size - Upper limit for one MHNSW vector index cache
mhnsw_default_distance - Default value for the DISTANCE vector index option
mhnsw_default_m - Default value for the M vector index option
mhnsw_ef_search - Minimal number of result candidates to look for in the vector index for ORDER BY ... LIMIT N queries.
Starting with this release we generate a Software Bill of Materials (SBOM) JSON file provided in the downloads archive, which can be reached from the "All Files" link on the MariaDB Enterprise Server downloads page (MENT-2234)
New parameter --skip-freed-pages for Innochecksum. Use this parameter to not get freed undo logs reported as existing undo log pages. ()
Galera protocol versions are now shown by show status - change available with installation of galera library 26.4.21+ ()
MariaDB now supports MySQL 8.0 binlog events, including PARTIAL_UPDATE_ROWS_EVENT, TRANSACTION_PAYLOAD_EVENT, and HEARTBEAT_LOG_EVENT_V2. ()
InnoDB deadlock output query length increased to improve visibility of deadlocked statements. ()
updated to
NOTE: Includes increasing the GCS protocol version, which prevents downgrades of individual nodes in the cluster as soon as all nodes have been updated
Fix incorrect writing of timestamp into binary log, causing discrepancy upon binlog replaying ()
Fix trigger created with "CREATE TRIGGER table1_after_insert AFTER INSERT" which is adding rows to another table using "FOR EACH ROW insert into table2(id, name) values (NEW.id, NEW.name);" that did not work correctly when if bulk inserts are used by the application. Only the first row of the bulk insert would be added to the table ()
History is now stored on the same partitions on different Galera nodes when system versioning is enabled ()
Fix assertion falilure and possible index corruption with unique key and nopad collation without DESC or HASH keys ()
Fix client crash the command after client sets character set to utf32 ()
Fix possible crash where server could not construct a geomery object from the input ()
Fix possible InnoDB hang while running out of buffer pool ()
Fix possible Spider thread hang in 'Update' state on 2nd INSERT ()
After changing the table definition for the system table 'mysql.servers', a following execution of CREATE SERVER would previously lead to a server crash.
NOTE: System tables should never be modified by a user anyhow ()
FIx streaming replication transaction crash with innodb_snapshot_isolation ()
Fix sporadic failure of async replication on Galera async replica nodes with parallel replication enabled ()
Fix failing assertion causing disruption and replication failure ()
Fix possible failure of wsrep_sst_rsync SST script if user specified aria_log_dir_path different from default data directory ()
Fix connection hang after query on a partitioned table with UNION and LIMIT ROWS EXAMINED ()
Fix server crash in get_sort_by_table/make_join_statistics after INSERT into a view with ORDER BY ()
Fix possible hang during CREATE TABLE...SELECT error handling, especially with innodb_snapshot_isolation enabled ()
Fix incorrect locking order of LOCK_log/LOCK_commit_ordered, and LOCK_global_system_variables ()
Fix possible memory leak on SHUTDOWN ()
Fix possible memory leak while shutting down server after installing the auth_gssapi plugin ()
Fix possible crash on DELETE from a HEAP table ()
Fix possible server crash when using INSERT DELAYED on tables with virtual columns. ()
Fix possible crash during index traversal using tree_search_next. ()
Fix possible hang or crash during InnoDB purge with HASH indexes during ALTER TABLE ()
Fix possible hang or crash where zero offset applied to null pointer ()
Fix possible crash on bootup in spider_sys_open_table (, , )
Fix possible Spider crash or hang when the first byte of a connection key is changed ()
Fix possible runtime error caused by XA RECOVER applying a zero offset to a null pointer ()
Fix assertion failure on cascading foreign key update of table with vcol index in parent ()
FIx assertion failure where CURRENT_USER was not correctly copied during condition pushdown ()
Fix cluster node hang during shutdown if threadpool is used ()
Calling a stored routine that executes a join on three or more tables and referencing not-existent column name in the USING clause could previously result in a crash on its second invocation. ()
Fix possible assertion failure when Galera cluster is in 'split-brain' state due to loss of communication between nodes (fix requires Galera library 26.4.21+) (MENT-2175)
Fix assertion failure when executing XA PREPARE (and possibly other XA statements) on Galera cluster nodes (MENT-2212)
Fix assertion failure when executing XA statements on Galera cluster nodes (MENT-2214)
In rare cases, an ALTER TABLE or other operation could previously hang when using NBO mode on a cluster with very low network latencies (for example, when both nodes are running on the same physical machine) (MENT-2215)
MariaDB Cluster and ALTER INPLACE running in Total Order Isolation (wsrep_OSU_method=TOI) now correctly abort a DML INSERT operation in InnoDB ()
Fix possible crash in wsrep_check_sequence ()
Fix sporadic reporting of success when a deadlock error occurs under --ps-protocol BF aborted transaction ()
Fix rare cases where binlog entries could receive incorrect timestamps on secondary nodes of a Galera cluster, potentially impacting replication accuracy ()
For an authentication with the ed25519 authentication plugin the password of the CREATE USER statement is now masked in the audit log ()
MariaDB Audit now detects all DCLs forms for masking a password ()
Fix potential issue in secondary Index with ROW_FORMAT=COMPRESSED and Change buffering enabled ()
sql_mode='NO_UNSIGNED_SUBTRACTION' now works for multiple unsigned integers ()
Fix doublewrite recovery of innodb_checksum_algorithm=full_crc32 encrypted pages ()
START TRANSACTION, when triggering an implicit commit as a COMMIT or ROLLBACK has not been executed before, now resets optional characteristics added to the last START TRANSACTION command ()
mariadb-binlog can now correctly process more than one logfile when --stop-datetime is specified ()
Rows in table mysql.gtid_slave_pos are now correctly deleted on Galera nodes when wsrep_gtid_mode = 1 is used, which previously lead to wrong information about replica delays ()
EXCHANGE PARTITION now works for tables with unique blobs ()
Fix issue where functions in default values in tables with certain character sets could break SHOW CREATE and mariadb-dump ()
Setting pseudo_thread_id to a value exceeding 4 bytes previously resulted in truncation when written to the binary log ()
A BEFORE INSERT Trigger previously returned with error "Field 'xxx' doesn't have a default value", if a NULL value was added for a column defined NOT NULL without explicit value and no DEFAULT specified ()
Undefined behavior could occur when attempting to perform INSERT DELAYED on a Galera cluster node. ()
Fix issue where ON UPDATE SET NULL could not be specified on a NOT NULL column ()
algorithm = instant can now correctly be used if a table has partitions and one tries to change a column with an index which is not the partitions key. This previously gave error "ERROR 1846 (0A000): ALGORITHM=INSTANT is not supported. Reason: ADD INDEX. Try ALGORITHM=NOCOPY" ()
Fix issue where DROP TABLE on child and UPDATE of parent table can cause a metadata lock BF-BF conflict when applied concurrently. ()
Can now correctly add a foreign key on a table with a long UNIQUE multi-column index that contains a foreign key as a prefix ()
Fix possibly wrong result using a degenerated subquery (SELECT <expr>) with window function ()
The "Failed to write to mysql.slow_log" error no longer shown without a detailed reason for the error ()
Fix debian-start script failure when using non-standard socket path ()
wsrep_sst_mariadb-backup.sh no longer uses --use-memory default (100MB) resulting in prepare stage which could take hours ()
Replicate_* fields in Show-Slave-Status may be truncated, impacting replication monitoring. (MENT-2238)
Conditions with SP local variables are now pushed into derived table. Previous behaviour caused slow performance and table scans instead of using the pushed down condition ()
NULL-aware materialization with IN predicate and single column no longer skips building sorted Ordered_key structures ()
Cloning of table statistics while saving the InnoDB table stats is now avoided ()
For the complete list of changes in this release, see the .
In alignment with , MariaDB Enterprise Server 11.4.5-3 is provided for:
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Ubuntu 24.04 (x86_64, ARM64)
Microsoft Windows (x86_64) (Without MariaDB Enterprise Cluster (Galera) support)
Red Hat UBI 8 (x86_64, ARM64)
Red Hat UBI 8 is part of the Enterprise Server Docker Image. It does not support MariaDB Enterprise Cluster (Galera) or MariaDB ColumnStore.
Some components of MariaDB Enterprise Server are supported on a subset of platforms. See for details.
MariaDB Enterprise Server 11.6.17-12 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2024-03-11
MariaDB Enterprise Server 10.6.17-12 is a maintenance release of 10.6. This release includes a variety of fixes.
MariaDB Enterprise Server 10.6.17-12 was released on 2024-03-11.
MariaDB Enterprise Server 10.6.17-12 introduced a regression which can result in a server crash. Users are encouraged to update to MariaDB Enterprise Server 10.6.17-13. If an update not possible we recommend to increase your current setting for --thread_stack by 100k.
Please see the Release Notes for for details.
This release incorporates MariaDB ColumnStore engine version 23.10.1.
Galera has been updated to 26.4.17
AlmaLinux 8 and 9 are now officially supported. RHEL 8 and 9 packages are used for AlmaLinux
Deprecation of secure_auth=0 with this release ()
New variable optimizer_adjust_secondary_key_costs ()
This variable changes the optimizer behavior in the case where the optimizer wrongly uses a secondary key instead of a clustered primary key for InnoDB.
The different values for the new variable:
optimizer_adjust_secondary_key_costs=0 (default)
No changes to current model
optimizer_adjust_secondary_key_costs=1
Ensures that the cost of secondary indexes has a cost of at least 5x times the cost of a primary key
optimizer_adjust_secondary_key_costs=2
Disable worst_seek optimization and slightly adjust filter cost (add cost of 1 if filter is used)
Users with ALL PRIVILEGES on a db will now also see all routine bodies in that db (MENT-1983)
More detailed logging for network related errors has been added. Use --log-warnings=4 or higher to enable it. (MENT-2054)
Thread ID and database are now added to the log of the SQL error plugin, if sql_error_log_with_db_and_thread_info=ON is set : ()
BLOB corruption on UPDATE of PRIMARY KEY with FOREIGN KEY ()
Corrupted table after instant ADD COLUMN failed due to attempting to exceed the maximum record length ()
If tables are frequently created, renamed, dropped, a backup cannot be restored. mariadb-backup --prepare might fail or finish OK, but some data files of recently created tables would be corrupted ()
ALTER command, before entering TOI, tries to collect foreign keys of a table. For this it opens the main table with SHARED_HIGH_PRIO MDL lock which disregards any waiting queued lock requests. If there is a DML operation running on the same table, and a real TOI operation as well, this TOI operation tries to BF-abort DML operation. At the same time, because ALTER is not yet TOI, and it runs with HIGH_PRIO MDL lock, it disregards waiting TOI operation, and gets the lock and immediately gets BF-aborted either by TOI directly or by aborted DML operation. Since there is no wsrep transaction for ALTER, it gets BF-aborted by setting killed state for the tread. But before entering TOI, ALTER doesn't check killed state, so it replicates, and applies on the other nodes successfully, but then it rolls back on the local node, causing inconsistency ()
If Galera is enabled with binlog emulation, attempting to set a SAVEPOINT when one of the involved storage engines does not support savepoints, can result in cluster wide inconsistency. A part of a transaction could be replicated to other notes, but a local statement rollback could be triggered. ()
InnoDB after issuing ALTER TABLE...IMPORT TABLESPACE may not be crash safe anymore ()
When a table is created with a virtual column while using sql_mode=ORACLE, the server can crash when the table is changed while using a different setting for sql_mode ()
The virtual column must have been created using:
DECODE()
LTRIM()
RTRIM()
LPAD()
RPAD()
REPLACE()
SUBSTR()
Possible deadlock when accessing BLOBs in a corrupted InnoDB table with ROW_FORMAT=COMPRESSED ()
An INSERT .. FROM SELECT with an empty result set crashes with innodb_force_recovery=6 or innodb_read_only=ON ()
A shutdown of the server with innodb_fast_shutdown=0 can hang after the server failed to start up ()
Crash while trying to complain "unsupported meta-data version" on ALTER TABLE...IMPORT TABLESPACE with MySQL 8.0 files ()
Wrong table attribute PAGE_COMPRESSED=1 shown for tables in the InnoDB system tablespace ()
MariaDB crashes with foreign_key_checks=0 when changing a column and adding a foreign key at the same time ()
Sometimes node has been dropped from the cluster on startup Shutdown with async replica () with diagnostics like:
and
GTIDs may diverge in Galera cluster after CREATE TABLE AS ()
This can subsequently lead to diagnostics like:
and node crash:
SHOW SLAVE STATUS can deadlock an errored replica when a parallel replica worker gets killed at about when SHOW is issued ()
When executing SELECT BINLOG_GTID_POS(@binlog_file...) with the user variable being NULL, the server can crash ()
A Query that uses a specific SQL construct can cause a server crash. The construct is an equality comparison of table-less row subquery and a subquery that has a UNION operation at the top level: (SELECT 'foo', 'bar') = (SELECT col1, col2 FROM t1 ... UNION ...) ()
A DELETE with ORDER BY and semijoin optimization can cause a crash ()
Possible crash when lateral derived in a query is guaranteed to return no rows ()
When using EXCHANGE PARTITION to replace a partition with a table, the server can crash if the to be exchanged table is using a virtual column which is not matching the partitioning key ()
When using INSERT DELAYED with a table using virtual columns, the server can crash ()
When using SELECT from a derived table with using AS OF, the server can crash ()
When using JSON_CONTAINS_PATH in a comparison in a prepared statement, the server can crash on execution of the statement ()
mariadbd --bootstrap / mariadb_install_db hangs when Spider is installed ()
Binlog Checksum of replication user variable events is zeroed by Zlib if part of event data is empty. The bug is a regression of other fixes on a server build with the zlib library. It can show up as a checksum verification error of a user variable event at its reading from binlog, ()
When adding a second semi-sync replica to a primary, it can hang at connect time without receiving any events, until the primary receives an ACK from the first existing replica. This can be indefinite if no new transactions occur on the primary ()
Server hangs on DROP DATABASE after a failing LOCK TABLES on Spider table ()
When a prepared statement with subqueries and window function is executed with sql_mode = ONLY_FULL_GROUP_BY, the server can crash ()
When using two temporary tables in OPTIMIZE TABLE, executed as a prepared statement, the server can crash ()
When calling SP invoking another SP with a parameter requiring a type conversion, the server can crash ()
Possible hang when changing the InnoDB log file size using SET GLOBAL innodb_log_file_size (MENT-1271)
If a query's WHERE clause has conditions over more than 128 columns of the same table, optimizer_use_condition_selectivity is 3, or higher, use_stats_tables is not set to NEVER, and statistics for the columns have been collected via ANALYZE TABLE, the server could crash (MENT-2036)
SHOW WARNINGS can show wrong foreign key related warnings/errors from an earlier transaction for InnoDB ()
LeakSanitizer errors in mem_heap_create_block_func upon query from I_S.INNODB_SYS_TABLES with LIMIT ROWS EXAMINED ()
Query from I_S.INNODB_SYS_INDEXES exceeding LIMIT ROWS EXAMINED causes ER_UNKNOWN_ERROR and LeakSanitizer errors in rec_copy_prefix_to_buf_old ()
Unexpected ER_ERROR_ON_RENAME upon DROP non-existing FOREIGN KEY with ALGORITHM=COPY ()
FOREIGN_KEY_CHECKS does not prevent non-copy alter from creating invalid FK structure ()
Secondary indexes on VARCHAR columns may be corrupted when the VARCHAR is extended so much that a column prefix index must be used ()
Spider: Valid LEFT JOIN results in ERROR 1064 ()
Syntax error upon query with subquery from Spider table ()
Spider doesn't recognize SEMI-JOIN ()
wsrep_provider_options can be truncated on deep and long directory paths with diagnostics like: "Warning 1265 Data truncated for column 'VARIABLE_VALUE' at row 1" in the server log ()
Mariadb-dump option --delete-master-logs is ignored ()
multi source replication filters breaking GTID semantic ()
If wsrep_gtid_mode=ON is used and wsrep_gtid_domain_id is non-zero, after SST using mariadb-backup GTIDs will become inconsistent both at the domain level, and at the seq_no level ()
wsrep_gtid_domain_id is ignored on any node other than bootstrapped node when the wsrep_gtid_mode is set to ON ()
LONG UNIQUE ... USING HASH can result in an error when used with REPLACE ()
JSON_ARRAYAGG() doesn't evaluate correct charset which can lead to an unexpected result ()
Performance_schema.status_by_thread is missing SSL related entries, which also leads to an empty result set for select * from sys.session_ssl_status; ()
A connection can control RAND() in following connection if used in conjunction with set rand_seed1, rand_seed2 ()
REGEXP_REPLACE converts utf8mb4 supplementary characters to '?' ()
An UPDATE of a column of a FEDERATED table fails with "ERROR 1296 (HY000): Got error 10000 'Error on remote system: 1143: UPDATE command denied to user 'xxx'@'x.x.x.x' for column 'id' in table 'x'' from FEDERATED"
if the table includes an AUTO_INCREMENT column ()
"Read semi-sync reply magic number error" warnings are shown on the primary, if, first, the replica disables semi-synchronous mode (i.e., sets the variable rpl_semi_sync_slave_enabled=OFF) while an existing semi-sync connection is active, and then, the replica IO Thread stops (e.g., due to STOP SLAVE, or an error occurring) ()
CHECK TABLE shows a MyISAM/Aria table as corrupted, as a unique hash key on column prefix is computed incorrectly ()
mysql.slow_log reports time when the query finished, not the start time ()
mariadb-upgrade does not remove mysql.plugin entries for plugins that became bundled. Error message "[ERROR] mariadbd: Plugin 'unix_socket' is already installed." is shown when upgrading ()
If storage engine Spider is loaded upon server startup, Spider related system, and status variables are not available (MENT-2043)
Regular expressions cannot be used in queries on tables of type SPIDER ()
Memory leak when purging history of indexed virtual columns : ()
MariaDB Enterprise Backup sometimes shows the error Can't open shared library '/file_key_management.so' (errno: 2, cannot open shared object file: No such file, or directory) when the option --target-dir is not used with --prepare ()
The database part is not case sensitive in Stored Procedure names. This can lead to using the wrong stored procedure, if the same database name is used as lower, and uppercase ()
CREATE UNIQUE INDEX can fail with an incorrect "ERROR 1286 (42000): Unknown storage engine 'partition'" ()
After successful connection, server sets SERVER_STATUS_AUTOCOMMIT in server_status in the OK packet although the global variable autocommit=0 is set ()
In some cases it is possible to create a Spider table which is referencing to a table on the same instance although spider_same_server_link=0 is set ()
Spider fails to auto-discover a table structure with ERROR 12500 (HY000): unknown ()
On Windows the error "InnoDB: Cannot open 'C:\xampp\mysql\data/ib_buffer_pool' for reading: No such file or directory" could be shown ()
REGEXP_REPLACE treats empty strings different than REPLACE in ORACLE mode ()
REPLACE is supposed to remove all conflicting rows of a table. For UNIQUE HASH, REPLACE only removes the first conflicting row, not all conflicting rows ()
The SQL error plugin prints (null) as database if the mariadb client is not using any database to execute the SQL ()
The Enterprise Audit Plugin does not always report the user name (MENT-2035)
An ALTER using ALGORITHM=INPLACE or adding new indexes can increase the table space file size ()
History list is not shrunk unless there is a pause in the workload ()
Operations that involve extending InnoDB files can be extremely slow when the data directory resides on an NFS server that uses a smaller block size than 4096 bytes ()
When the size of the working set exceeds innodb_buffer_pool_size, the server can stall for short periods of time ()
Unnecessary writes of not modified undo log pages ()
innodb_undo_log_truncate=ON is blocking page writes ()
innodb_undo_log_truncate=ON prevents fast shutdown ()
Some calls to buf_read_ahead_linear() seem to be useless ()
Opening all .ibd files on InnoDB startup can be slow ()
Adaptive flush recommendation ignores dirty ratio and checkpoint age ()
Possible slowdown when running nested statement with many partitions (MENT-2047)
Performance regression due to frequent scan of full buf_pool.flush_list (MENT-2051)
In alignment to the , MariaDB Enterprise Server 10.6.17-12 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
MariaDB Enterprise Server 11.6.11-6 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2022-12-21
MariaDB Enterprise Server 10.6.11-6 is a maintenance release of 10.6. This release includes a variety of fixes.
MariaDB Enterprise Server 10.6.11-6 was released on 2022-12-21.
MariaDB Enterprise Server enables a predictable development and operations experience through an . These new features have been backported after reaching maturity in MariaDB Community Server:
The new is available to set the maximum execution time for queries on replica nodes. (MENT-1566, )
When a query takes more than slave_max_statement_time seconds to run on the replica (slave) node, the query is aborted, and replication stops with an error.
The system variable can be set to a decimal value, where the decimal component has microsecond precision.
When set to 0, there is no timeout.
The default value is 0.
To simplify maintenance, the statement supports new clauses to convert tables to partitions and partitions to tables. (MENT-1454)
To convert a partition to a table, use the CONVERT PARTITION .. TO TABLE .. clause:
To convert a table to a partition, use the CONVERT TABLE .. TO PARTITION .. clause:
The new CONVERT PARTITION and CONVERT TABLE clauses are crash-safe operations.
The EXCHANGE PARTITION clause can still be used, but it is not a crash-safe operation.
The view shows details about the InnoDB temporary tablespace, which is the tablespace where InnoDB temporary tables are stored. ()
Starting with this release, the details about the InnoDB temporary tablespace can be shown by querying for the name innodb_temporary:
When a table's default collation is set to the default collation for the table's character set, shows the COLLATE clause. ()
In previous releases, MariaDB Enterprise Server reduced the size of SHOW CREATE TABLE output by excluding the COLLATE clause if the table's default collation was set to the default collation for the table's character set.
Implemented for InnoDB. ()
When CHECK TABLE .. EXTENDED is executed, InnoDB confirms that no index contains orphan records.
InnoDB performs the check by counting all index records according to the current read view, and ensuring that any delete-marked records in the clustered index are waiting for the purge of history, and that all secondary index records point to a version of the clustered index record that is waiting for the purge of history. Normal MVCC reads and CHECK TABLE without EXTENDED would ignore these orphans.
When a column is renamed in a partitioned table with using the , the table can be corrupted. ()
When the InnoDB storage engine performs change buffer operations, the InnoDB Redo Log can overflow, which can cause table corruption. (MENT-1661, )
When a query contains an IN/ALL/ANY predicand and the subquery contains a GROUP BY clause with an IN/ALL/ANY predicand with a single-value subquery as the left operand, the server can crash. ()
If an InnoDB table contains a foreign key constraint and the child table's DATABASE_NAME/TABLE_NAME.ibd is longer than 330 characters, when the parent table is renamed, the server can crash. ()
When a DDL statement is executed using the and is set, the server can hang. (, )
When renaming a table to a long name, the server can crash. ()
When an causes InnoDB to rebuild a table with a spatial index, the server can crash. ()
When an InnoDB temporary table contains a spatial index, the server can crash if the temporary table is dropped due to DROP TEMPORARY TABLE or client disconnect. ()
When querying a partitioned table using the PARTITION syntax, if the WHERE clause results in an index merge, the server can crash. ()
When detecting CTE dependencies of nested CTEs that includes one or more recursive CTEs, infinite recursion can occur until the server crashes. ()
When the is configured to use the bundled wsrep_notify.sh script, the server can hang during startup. ()
When selecting from InnoDB's (such as , , and ), if connections with open XA transactions are disconnected or killed at the same time, the server can crash. ()
For some queries that involve tables with different but convertible character sets for columns taking part in the query, a repeatable execution of such queries in the prepared statement mode or as part of a stored routine can crash the server. ()
When executing a SELECT .. UNION .. SELECT or statement, the server can crash. ()
When is set and a view that includes a subquery is queried, the server crashes. ()
When an application-time period with an empty name is added to a table using , the server can crash. ()
In previous releases, statements like the following could cause the server to crash:
When the Spider storage engine's ODBC foreign data wrapper is used with MariaDB Connector/ODBC 3.1.10 and later, the server can crash. (MENT-1415)
If the InnoDB change buffer is corrupted, the server can hang during shutdown. (MENT-1673, )
When an InnoDB tablespace is in the non-canonical format from a previous operation that used the , InnoDB can fail to apply changes to the table during crash recovery and while preparing a backup with . ()
When InnoDB tries to apply a INSERT_HEAP_DYNAMIC record to a secondary index in a table with during crash recovery, the operation can fail with an error. ()
In previous releases, the could have errors like the following:
When an InnoDB thread updates InnoDB persistent statistics and another InnoDB thread inserts a concurrently, the server can hang due to a deadlock. ()
If multiple threads request the same page that is not present in the , the server can hang due to a race condition. ()
In the presence of replication filters, revoking privileges from a non-existing user on a primary (master) breaks replication on the replica (slave). ()
When is set on a replica node, the replica node does not skip replicated . ()
When a Spider table has a prefix index, query results can be incorrect. ()
InnoDB can extend tablespace files when additional capacity is not required. ()
When an InnoDB table is being rebuilt and a is updated during the online rebuild, a memory leak can occur. ()
When a view is queried using a prepared statement, the query fails with the . ()
In previous releases, the following error would occur:
When an InnoDB table contains virtual generated columns that are indexed, InnoDB fails to purge secondary index records. ()
When using the InnoDB adaptive hash index, non-locking reads can return wrong results due to a potential ACID violation. (, , )
When is used on a temporary table, an empty result set is returned. ()
When a sequence is used as the default value in a table, rows inserted by an INSERT ... SELECT statement can be assigned the wrong values. ()
When a column has both a UNIQUE index and a , full-text search using MATCH(..) AGAINST(..) does not work properly. ()
If the server is started with the enabled, but the TLS certificates and keys are not configured, the server will advertise the TLS support in the handshake, but will not actually be able to use it. ()
With MariaDB Enterprise Cluster, when is configured, the joiner node ignores custom values for the , and the SST copies the buffer pool file to the default location instead. ()
When a is filtered in a subquery inside the , the results can be incorrect. ()
When the does not contain a port number, the status variable shows 0 as the port number. ()
When is enabled, performance is impacted if the rowid filter contains no elements. ()
When a is filtered in a subquery inside the , the results can be incorrect. ()
When XA COMMIT is executed without an open XA transaction, the operation is still logged to the binary log. ()
In previous releases, when a replica node tried to apply the event, it would fail with the :
When a tablespace file was originally built with MariaDB Enterprise Server 10.4 and earlier, InnoDB would refuse to add a column to the table using the . ()
In previous releases, the operation would fail with the following error message:
When InnoDB performs crash recovery of an operation that used the , the is READ COMMITTED instead of READ UNCOMMITTED ()
InnoDB Temporary Tablespace (ibtmp1) grows continuously. ()
When the TZ environment variable is set on Windows, the system variable is incorrect. ()
When a bulk insert into an InnoDB table is performed, InnoDB does not update the table's persistent statistics. ()
When the same values are used with an and with an , the optimizer chooses a different execution plan. (MENT-1630, )
When is executed, spurious errors about table rebuilds are logged. ()
In previous releases, the following messages would be logged, even though the tool already mitigated the issues itself:
This release originally incorporated
This release now incorporates
error code added
error code replaced with
error code added
error code added
error code replaced with
error code added
error code added
error code added
error code added
error code added
mariadbd --slave-max-statement-time command-line option added
system variable added
error code added
error code added
In alignment to the , MariaDB Enterprise Server 10.6.11-6 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 18.04 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
MariaDB Enterprise Server 11.6.9-5 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2022-09-12
MariaDB Enterprise Server 10.6.9-5 is a maintenance release of 10.6. This release includes a variety of fixes.
MariaDB Enterprise Server 10.6.9-5 was released on 2022-09-12.
MariaDB Enterprise Server enables a predictable development and operations experience through an . These new features have been backported after reaching maturity in MariaDB Community Server:
The UUID data type has been backported from MariaDB Community Server 10.7 for more efficient storage of UUID values. (MENT-1459)
Galera has been updated to 26.4.13-1
Debian 9 support has been discontinued.
Red Hat Enterprise Linux 9 support has been added.
Rocky Linux 9 support has been added.
The command-line option has been added for with a default value of 0. ()
Session scope has been added for the , in addition to global scope. ()
OpenSSL 3.0 support has been added for MariaDB Enterprise Cluster (powered by Galera) ()
When is executed with the --rsync command-line option, the backup tries to copy the InnoDB buffer pool dump file, which is located at the path defined by the . ()
Starting with this release, only copies the InnoDB buffer pool dump file during State Snapshot Transfers (SSTs) for MariaDB Enterprise Cluster, powered by Galera.
With MariaDB Enterprise Cluster, when is enabled on a node, users without the can still write to the node. ()
With MariaDB Enterprise Cluster, when a value is retrieved from an InnoDB sequence using the , the change is not replicated. ()
Starting with this release, InnoDB sequences are properly replicated when they are defined with NOCACHE.
When an InnoDB table's collation is changed using with the INPLACE or NOCOPY algorithms, duplicate entries in unique indexes are not detected. ()
When InnoDB performs crash recovery on startup, recovery can fail when the redo log contains DDL statements. (, , , )
When INSERT .. SELECT .. GROUP BY is executed and the GROUP BY clause contains a derived table, the server can crash. ()
When a query contains an ANY(SELECT .. GROUP BY(SELECT ..)) predicand with a redundant subquery in the GROUP BY clause, the server can crash. ()
When is used to add a column with the INSTANT algorithm, the server can crash if the ROW_FORMAT in the .frm file does not match the actual row format used by the data file. ()
For tables created prior to MariaDB Server 10.2, the ROW_FORMAT in the .frm file could be inconsistent with the actual row format used by the data file. If the server were upgraded to MariaDB Enterprise Server 10.6, the inconsistency could remain.
When INSERT .. SELECT is executed and the SELECT query calls an aggregate or window function, the server can crash with a segmentation fault. ()
When the is called, the server can crash with a segmentation fault. ()
When a query uses the DISTINCT keyword and calls an aggregate function as an argument for an always-constant function, the server can crash. ()
An always-constant function is a function that always returns a constant value, even if the function's arguments are not constant.
For example, the is an always-constant function.
When is executed with the and options, the backup can hang due to a race condition between threads. ()
When an EXISTS predicate or an IN, ALL, or ANY predicand is used in an eliminated GROUP BY clause, the server can crash. (MENT-1606, )
When an IN subquery is used outside the context of a regular query (such as in a stored procedure), the server can crash. ()
When MariaDB Enterprise Cluster is used and the Galera replication TCP port receives non-Galera network traffic, the server can crash. ()
In previous releases, when the crash occurred, the following messages would appear in the :
When a generated column is added to an InnoDB table with the INSTANT algorithm, the server can crash due to a buffer overflow. ()
When is executed with a view definition that contains an unknown column in an ON condition, the server can crash instead of raising an error with the . ()
When is executed, the server can hang. ()
When the is too low, the server can crash if InnoDB accesses too many tables or partitions. ()
When InnoDB detects a corrupt data page, the server can crash. (, , , , , )
When InnoDB performs crash recovery on startup, the server can crash when the redo log contains a performed against a table located in the system tablespace. ()
For multi-table or queries, the optimizer fails to apply partition pruning optimization for the table that is updated or deleted from. ()
When an IN condition contains a mixture of numeric and string values, results can be inconsistent. ()
When a sequence event is written to the binary log with , the value of is not respected. ()
When a transaction can't be fully written to the binary log, but the transaction can be safely rolled back, a LOST_EVENTS incident event is written to the binary log. ()
In previous releases, this problem could cause replica servers to encounter the following error:
Starting with this release, a LOST_EVENTS incident is only written to the binary log when safe rollback is not possible.
When a replica server replicates an incident event, the details about the failure are not in the primary server's error log, the replica server's error log, or the output of . ()
When a backup is performed with , the backup includes binary logs. ()
When a table is created from a that uses a recursive CTE, the table can use unexpected data types and contain truncated data if the calculated values from the recursive part of the CTE do not fit in the column types that are taken from the non-recursive part of the CTE. ()
Starting with this release, the CTE calculation is aborted when the calculated values do not fit in the column types. When this occurs, a warning or error (depending on sql_mode is raised with the and the following error message:
When uses EditLine instead of readline (such as on Debian and Ubuntu), Unicode characters are not accepted. ()
When the optimizer chooses a semi-join optimization for a subquery, the LooseScan and FirstMatch strategies are not considered for certain queries where they would be appropriate, and they are considered for certain queries where they would be inappropriate. ()
When FULLTEXT search is performed on an InnoDB table, the results are incorrect when the search term contains an apostrophe ('). ()
Starting with this release, when a search term contains an apostrophe ('), InnoDB tokenizes the word at the apostrophe, ignores the first token, and matches against the second token.
After upgrading from old versions of MariaDB Server, some operations fail if ALGORITHM=NOCOPY is specified. ()
In previous releases, the following error could be raised:
When is set, queries that use table elimination can produce incorrect results. ()
Table elimination is used when the query performs a JOIN and has const tables.
When a replica server is replicating from a primary server that is too old to write to the binary log, the replica server ignores its own value and assumes that the value should be OFF. ()
Starting with this release, the replica server determines an optimal value for based on the version of the primary server. If the primary server is too old to write its value to the binary log, the replica server uses its own value.
When a UUID or INET6 column is referenced in a WHERE col IN(SELECT ..) subquery of an or statement, the query does not affect the correct number of rows. ()
When a column is used to store UUIDs and a statement filters the column with an IN clause, the query can be very slow if the UUIDs are specified in hexadecimal. ()
is case-insensitive. ()
When is used to prepare a backup, the operation can fail if the backup contains DDL. ()
In previous releases, when the backup failed, the output could contain messages like the following:
When is used to perform a backup while DDL is being executed, the output can contain excessive messages about DDL tracking. ()
In previous releases, the output could contain many messages like the following:
When the or functions are called with a column, the result is truncated. ()
This release originally incorporated .
This release previously incorporated .
This release previously incorporated .
This release now incorporates .
system variable added
system variable added
system variable added
system variable added
system variable added
system variable added
system variable added
system variable dynamic changed from No to Yes
mariadb --enable-cleartext-plugin command-line option added
mariadb-backup --sst-max-binlogs command-line option removed
mariadb-dump command-line option added
mariadbd --spider-direct-aggregate command-line option added
system variable added
sys_guid FUNCTION plugin added
uuid DATA TYPE plugin added
uuid FUNCTION plugin added
In alignment to the , MariaDB Enterprise Server 10.6.9-5 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Microsoft Windows (x86_64)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 18.04 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
MariaDB Enterprise Server 10.5.9-6 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2021-03-15
This sixth release of 10.5 is a maintenance release. This release includes security fixes.
MariaDB Enterprise Server 10.5.9-6 was released on 2021-03-15.
#1:
MariaDB CVEs are assigned a word rating instead of a CVSS base score. See the MariaDB Engineering Policy for details.
The new mariadb-dump --system={all, users, plugins, udfs, servers, stats, timezones} command-line option allows dumping system information in logical form. ()
Added primary host and port info to replica stop messages. ()
Parameter has no effect and is defined as deprecated. ()
New option --log-innodb-page-corruption to continue the backup process when corruption is encountered. Corrupted pages are logged in backup_corrupted file in the backup destination directory. ()
adds completed with Error! to the end of the log file if the backup is started with parameter --log-innodb-page-corruption and completed with corrupted tables. The new log entry canceled with Error! will be used when the backup could not be completed. (MENT-1059)
and system variables are read-only. ()
Galera wsrep library updated to 26.4.7 in .
and allow either order for ACCOUNT LOCK and PASSWORD EXPIRE ()
Crash on recovery after server kill during instant ADD COLUMN ()
Possible segfault on with explicit FTS_DOC_ID_INDEX using multiple fields. ()
Server crashes upon attempt to update view through second execution of a stored procedure. ()
containing clause can crash. ()
Possible crash for a query using recursive CTE without having a default schema defined. ()
Server crash on WITH RECURSIVE UNION ALL (CTE) query. ()
Server hang due to lock conflict resolution. ()
Possible crash in replication when applying a transaction that contains cascading foreign key delete for a table and that has an indexed virtual column. ()
Possible lock conflicts between two wsrep high priority threads in on tables having unique secondary keys. ()
Server crash when uses a subselect. ()
Possible crash of the server when audit logging is active. (MENT-1098)
crash after execution of XA START ()
Hang with and ()
Encryption is modifying a freed page for InnoDB, which results in a crash. ()
A query on a table with composite key and range condition on multiple attributes can result in a crash. (MENT-1126)
is missing the WITH GRANT privilege for roles. ()
mysqld_safe log messages are missing in the error log file. ()
CHECK_CLAUSE field in truncates check constraints expressions. ()
Unexpected error message when selecting from view that uses mergeable derived table. ()
Permission denied error message is returned on users with permissions for nested CTEs. ()
Regression: SELECT .. UNION .. with inconsistent column names fails. ()
Race condition between and transaction commit with . ()
Plugin system variables and activation options can break for . ()
SELECT INTO OUTFILE used permission 666 where 644 should be used to limit the privileges to change the file. ()
Syntax error on correct syntax for that includes X is null = 0 ()
Altered connection limits for user have no effect. ()
Syntax error when using COLLATE for creating virtual columns. ()
Auto purge of relaylogs stops when relay-log-file is slave-relay-log.999999 and is enabled. ()
ORDER BY in view definition leads to wrong result with GROUP BY on query using view. ()
column from a derived table returns invalid values. ()
doesn't respect filters for PROXY_CONNECT events. ()
plugin doesn't consider proxy users in and ()
With ALTER USER .. IDENTIFIED BY command, password isn't replaced by asterisks in audit log. (MENT-1128)
does not insert history row for or application period based tables if the row has not changed. ()
Wrong duplicate primary key error between the history row generated on referential action and the history row on evaluating foreign referential action for self-reference in a table. (, )
Wrong number of decimal digits in certain UNION or subquery constellations, like union of unsigned and NULL type. ()
[CREATE TABLE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements-and-structure/sql-statements/data-definition/create/create-table) .. SELECT FROM does not create table if is not using a scalar value. ()
InnoDB may report incorrect binlog position information after ()
Sequences which are used as default by a table are not dumped in right order by ()
generates invalid SQL for user where password expiry and account lock set. ()
Garbd of can't initiate SST ()
Misleading error message from might be interpreted as a point in time recovery is not possible. ()
High memory usage in the optimizer when a query is using SELECT .. FROM tbl .. WHERE unique_key not in (long-list) AND .. unique_key not in (long-list) AND .. ()
for tables with CHECK CONSTRAINTS returns with Out of Memory error. ()
Alter rename table does not remove table from when using algorithm=copy ()
Persistent statistics are lost for table after ()
The default setting of has effects on with results in a performance regression. ()
Accessing may break innodb_open_files logic. ()
reports garbage. ()
S3, same-backend replication: Dropping a table on primary causes error on replica. ()
privilege is missing from ()
Flushing starts only when 90% (srv_max_buf_pool_modified_pct) pages are modified. ()
Quick memory exhaustion with extended_keys=on on queries having multiple or using InnoDB. ()
fails with error messages ALGORITHM=INSTANT is not supported for this operation ()
hangs when executing on the system table, if the table is not empty ()
Enterprise upgrade from 10.4 to 10.5 fails with option disable-s3 in the 10.4 configuration file. (MENT-1068)
This release incorporates MariaDB ColumnStore storage engine version 5.5.2.
system variable maximum value changed from 18446744073709551615 to 9223372036854775807
information schema table schema changed
system variable maximum value changed from 18446744073709551615 to 4294967295
system variable removed
system variable minimum value changed from 1 to 2
mariadb-backup --log-innodb-page-corruption command-line option added
mariadb-dump --system command-line option added
mariadb_es_repo_setup --include-unsupported command-line option added
mariadb_es_repo_setup --skip-check-installed command-line option added
mariadb_es_repo_setup --version command-line option added
mariadb_repo_setup --version command-line option added
mariadbd --innodb-idle-flush-pct command-line option removed
mariadbd --optimizer-max-sel-arg-weight command-line option added
system variable minimum value changed from 8 to 64
system variable added
performance schema table schema changed
information schema table schema changed
In alignment with the , MariaDB Enterprise Server 10.5.9-6 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
CVE (with cve.org link)
CVSS base score
4.9
CREATE TABLE myVectorSearch (
id INT PRIMARY KEY,
v VECTOR(5) NOT NULL,
VECTOR INDEX (v)
);SELECT hex(vec_fromtext('[1,2,3]'));+------------------------------+
| hex(vec_fromtext('[1,2,3]')) |
+------------------------------+
| 0000803F0000004000004040 |
+------------------------------+SELECT VEC_ToText(x'e360d63ebe554f3fcdbc523f4522193f5236083d');+---------------------------------------------------------+
| VEC_ToText(x'e360d63ebe554f3fcdbc523f4522193f5236083d') |
+---------------------------------------------------------+
| [0.418708,0.809902,0.823193,0.598179,0.033255] |
+---------------------------------------------------------+INSERT INTO v VALUES
(1, x'e360d63ebe554f3fcdbc523f4522193f5236083d'),
(2, x'f511303f72224a3fdd05fe3eb22a133ffae86a3f'),
(3,x'f09baa3ea172763f123def3e0c7fe53e288bf33e'),
(4,x'b97a523f2a193e3eb4f62e3f2d23583e9dd60d3f'),
(5,x'f7c5df3e984b2b3e65e59d3d7376db3eac63773e'),
(6,x'de01453ffa486d3f10aa4d3fdd66813c71cb163f'),
(7,x'76edfc3e4b57243f10f8423fb158713f020bda3e'),
(8,x'56926c3fdf098d3e2c8c5e3d1ad4953daa9d0b3e'),
(9,x'7b713f3e5258323f80d1113d673b2b3f66e3583f'),
(10,x'6ca1d43e9df91b3fe580da3e1c247d3f147cf33e');SELECT id FROM v
ORDER BY VEC_DISTANCE_EUCLIDEAN(v, x'6ca1d43e9df91b3fe580da3e1c247d3f147cf33e');+----+
| id |
+----+
| 10 |
| 7 |
| 3 |
| 9 |
| 2 |
| 1 |
| 5 |
| 4 |
| 6 |
| 8 |
+----+SELECT VEC_DISTANCE_COSINE(VEC_FROMTEXT('[1,2,3]'), VEC_FROMTEXT('[3,5,7]'));+-----------------------------------------------------------------------+
| VEC_DISTANCE_COSINE(VEC_FROMTEXT('[1,2,3]'), VEC_FROMTEXT('[3,5,7]')) |
+-----------------------------------------------------------------------+
| 0.00258509695694209 |
+-----------------------------------------------------------------------+Progress reporting is only supported for MariaDB[ERROR] Slave SQL: Error 'WSREP has not yet prepared node for application use' on query[ERROR] Slave SQL: Node has dropped from cluster, Gtid 1-1-1, Internal MariaDB error code: 1047" in the server log[ERROR] mariadbd: Error writing file '/opt/maria10.1/binlog/BINLOG' (errno: 1950 "Unknown error 1950")"wsrep::transaction::before_rollback(): Assertion state() == s_executing || state() == s_preparing || state() == s_prepared || state() == s_must_abort || state() == s_aborting || state() == s_cert_failed || state() == s_must_replay` failedALTER TABLE partitioned_table
CONVERT PARTITION part1
TO TABLE normal_table;ALTER TABLE partitioned_table
CONVERT TABLE normal_table
TO PARTITION part1 VALUES LESS THAN (12345);SELECT * FROM information_schema.INNODB_SYS_TABLESPACES
WHERE name LIKE 'innodb_temporary';ALTER TABLE t
ADD PERIOD IF NOT EXISTS FOR `` (s,e);[ERROR] InnoDB: Not applying INSERT_HEAP_DYNAMIC due to corruption on [page id: space=5, page number=4]ERROR 1615 (HY000): Prepared statement needs to be re-preparedLast_SQL_Errno 1397
Last_SQL_Error Error 'XAER_NOTA: Unknown XID' on query. Default database: 'DATABASE_NAME'. Query: 'XA COMMIT ..'ERROR 1845 (0A000): ALGORITHM=INSTANT is not supported for this operation. Try ALGORITHM=INPLACEerror: Table rebuild required. Please do "ALTER TABLE `TABLE_NAME` FORCE" or dump/reload to fix it!"CVE (with cve.org link)
CVSS base score
7.5
7.5
6.5
6.5
6.5
6.5
6.5
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<std::system_error> >'
what(): remote_endpoint: Transport endpoint is not connected
[ERROR] mysqld got signal 6 ;Last_SQL_Errno 1590
Last_SQL_Error The incident LOST_EVENTS occurred on the master. Message: error writing to the binary logOut of range value for column 'COLUMN_NAME' at row ROW_NUMERROR 1845 (0A000): ALGORITHM=NOCOPY is not supported for this operation. Try ALGORITHM=INPLACE[ERROR] InnoDB: Attempted to open a previously opened tablespace. Previous tablespace:./DATABASE_NAME/TABLE_NAME.ibd uses space ID: SPACE_ID. Cannot open filepath: DATABASE_NAME/TABLE_NAME.ibd which uses the same space ID.
[Warning] InnoDB: We do not continue the crash recovery, because the table may become corrupt if we cannot apply the log records in the InnoDB log to it. To fix the problem and start mariadbd:
[Note] InnoDB: 1) If there is a permission problem in the file and mysqld cannot open the file, you should modify the permissions.
[Note] InnoDB: 2) If the tablespace is not needed, or you can restore an older version from a backup, then you can remove the .ibd file, and use --innodb_force_recovery=1 to force startup without this file.
[Note] InnoDB: 3) If the file system or the disk is broken, and you cannot remove the .ibd file, you can set --innodb_force_recovery.
##mariadb-backup##: srv_start() returned 11 (Generic error).DDL tracking : modify SPACE_ID "./DATABASE_NAME/TABLE_NAME.ibd"CVE (with cve.org link)
CVSS base score
N/A (Critical)#1
MariaDB Enterprise Server 11.4.7-4 is a Stable (GA) maintenance release of MariaDB Enterprise Server 11.4, released on 2025-06-11
MariaDB Enterprise Server 11.4.7-4 is a maintenance release of MariaDB Enterprise Server 11.4. This release includes a variety of fixes.
MariaDB Enterprise Server 11.4.7-4 was released on 11 Jun 2025.
CVE (with link)
CVSS base score
5.5
4.9
4.9
4.9
This release incorporates MariaDB ColumnStore engine version 23.10.6
New user variable, analyze_max_length, default value 4G. Any field that is bigger than this value in bytes will be ignored by ANALYZE TABLE PERSISTENT to not collect statistics for long char/varchars unless it is specified in FOR COLUMNS(). (MENT-2301)
SBOM now includes 'license' and 'copyright' information, improving security compliance and dependency tracking. (MENT-2311)
Get option group suffix from $MARIADB_GROUP_SUFFIX in addition to $MYSQL_GROUP_SUFFIX (MDEV-21375)
MariaDB effectively running as root CAP_DAC_OVERRIDE (MDEV-36229)
my_getopt compares option names case sensitively (MDEV-27126)
Systemd: Restart on OOM (MDEV-36009)
Support has been added for Oracle Linux 8 and 9
A multi-table UPDATE ... ORDER BY ... LIMIT statement could update the wrong rows when the ORDER BY clause was resolved by using temporary and filesort. (MDEV-35955)
Assertion InnoDB searching row in wrong partition for multiple system versioned DELETE with same timestamp and same multistatement transaction (MDEV-36115)
A query using a subquery in form:
WHERE col IN (SELECT ... LEFT JOIN tbl ON tbl.column=reference_outside_subquery)
could cause a crash in the optimizer. The essential part is that ON expression has only two kinds of references: 1.to inner side of the outer join and 2. to outside the subquery. (MDEV-32084)
Incorrect error handling on DDL with FULLTEXT INDEX (MDEV-36061)
ALTER TABLE…SEQUENCE does not work correctly with InnoDB (MDEV-36038)
Race condition between log_t::resize_start() and log_t::resize_abort() (MDEV-36082)
mariadb-backup --backup crash during innodb_undo_log_truncate=ON, innodb_encrypt_log=ON (MDEV-36152)
Race conditions between ALTER TABLE or OPTIMIZE TABLE and the purge of transaction history were fixed. (MDEV-36122)
Server crashes when resizing default innodb buffer pool after setting innodb-buffer-pool-chunk-size to 1M (MDEV-34677)
Server aborts while deleting the record in spatial index (MDEV-35420)
The server could crash when an UPDATE is about to commit concurrently with a CREATE INDEX that includes VIRTUAL columns (MDEV-36281)
Upgrades fail on Windows (MDEV-36128)
ASAN errors in dict_sys_t::load_table / get_foreign_key_info after failing to load a table (MDEV-33167)
ALTER TABLE…DROP COLUMN after a failed ALTER TABLE…DROP COLUMN could lead to a server crash (MDEV-36236)
Server crashes when creating a table using function with a return type sys_refcursor (MDEV-36409)
Assertion `thd->lex == sp_instr_lex' failed in LEX *sp_lex_instr::parse_expr(THD *, sp_head *, LEX *) (MDEV-36377)
Crash on `DECLARE spvar1 ROW TYPE OF cursor1` after a table recreation (MDEV-36462)
Field pointer may be uninitialized in fill_record (MDEV-36181)
Protocol_text allocates memory without error checking, potentially leading to server crashes. (MDEV-35640)
A primary server could crash when a semi-sync connection is stopped, if the primary previously disabled semi-sync replication while the connection was already up (and `rpl_semi_sync_master_wait_no_slave=0`). (MDEV-36359)
Incorrect undo logging for indexes on virtual columns whose index ID does not fit in 32 bits (MDEV-36613)
Memory leak after failed CREATE TABLE…SELECT; crash on CREATE TABLE…SELECT that reads from multiple tables (MDEV-36504)
Assertion `src != ((void *)0)' failed in my_casedn_8bit (MDEV-36565)
With wsrep_ignore_apply_errors = 0, the node crashes due to assertion thd->is_error() failed in Sql_cmd_dml::prepare(), shown in the logs (MDEV-35946)
In some cases, if there are MDL locks (for example, when LOCK TABLE is executed), a node could get stuck in the system thread due to incorrect handling of metadata locks (MDL) in server code when a transaction was BF aborted. (MDEV-35941)
Regression after the fix for MDEV-31413 - sometimes the server crashes with an assertion in wsrep::transaction::before_rollback(), for example when using OPTIMIZE TABLE on an ARIA table with wsrep_osu_method=RSU. (MDEV-32631)
SST failure occurs when gtid_strict_mode is enabled under high load, such as OLTP load is active on the primary node. A typical symptom of this error is the presence of the diagnostic "[ERROR] mariadbd: Error writing file 'binlog'", in the debug version it is also possible to crash on assertion in the wsrep::transaction::before_rollback() function with the message "Assertion `state() == s_executing || state() == s_preparing || state() == s_prepared || state() == s_must_abort || state() == s_aborting || state() == s_cert_failed || state() == s_must_replay' failed". (MDEV-34891)
In Galera, creating sequence with a small cache leads to signal 6 error: [ERROR] WSREP: FSM: no such a transition REPLICATING -> COMMITTED. (MDEV-33850)
Under high load wsrep internal thread may terminate due to memory pressure conditions, but this is not a crash, however in debug version user may encounter assertion in wsrep_to_isolation_begin() function with following message: "int wsrep_to_isolation_begin(THD*, const char*, const char*, const TABLE_LIST*, const Alter_info*, const key_array*, const HA_CREATE_INFO*): Assertion `(0)' failed." (MDEV-36116)
Assertion `commit_trx' failed in innobase_commit() (ha_innodb.cc). An INSERT with sql_log_bin=0 is still replicated in Galera (per MDEV-7205), despite binary logging being disabled. This results in a partial binlog bypass, requiring a two-phase commit (2PC). During 2PC, the INSERT is first prepared (entering the PREPARED state in InnoDB), and on commit, the new assertion from MDEV-24035 fails, causing a crash with "Assertion 'commit_trx' failed" in logs. (MDEV-35658)
A Galera node might hang if foreign key (FK) and unique key (UK) checks are disabled on multiple appliers executing INSERTs into the same table, because InnoDB might treat these operations as bulk inserts, leading one applier to acquire a table-level lock. If another applier with a lower sequence number then waits for this lock, a deadlock can occur within Galera. Specifically, the lock holder waits for the earlier applier to commit, while the earlier applier is blocked by the lock. (MDEV-36360)
When a sequence is used and inserts run in parallel on multiple Galera nodes, a transaction may be aborted after passing certification. If it then attempts to roll back, the binlog statement cache—which includes reserved sequence values—may be written prematurely. This causes a crash with the diagnostic "WSREP: FSM: no such a transition REPLICATING -> COMMITTED" in the logs, as the transaction is supposed to replay and only write to the binlog during the final commit. (MDEV-33589)
A Galera node may hang due to improper mutex handling: a thread held lock_sys.wait_mutex while triggering a streaming replication rollback, which also tried to acquire THD::LOCK_thd_kill, leading to incorrect mutex usage. In debug versions, this leads to diagnostics like "safe_mutex: Found wrong usage of mutex 'wait_mutex' and 'LOCK_thd_data'", but in both debug and release versions, there is some probability that the node may hang. (MDEV-36509)
Assertion `!level_and_file.second->being_compacted' failed in LevelCompactionBuilder::SetupInitialFiles (MDEV-16523)
Assertion `ikey_.type == kTypeValue' failed in rocksdb::CompactionIterator::NextFromInput (MDEV-15164)
corruption when query cache cannot allocate block (MDEV-34075)
Stack looping and SIGSEGV in Item_args::walk_args on UPDATE (MDEV-31647)
Server crash in find_field_in_tables, Assertion `name' failed in find_field_in_table_ref (MDEV-25012)
Semi-sync Replica Can't Kill Dump Thread When Using SSL (MDEV-36663)
Long server_audit_file_path causes buffer overflow (MDEV-36245)
Server crash when inserting from derived table containing insert target table (MDEV-32086)
Check when doing ALTER TABLE table_name sequence=1 that table can be a sequence (MDEV-36032)
InnoDB system tables cannot be optimized or defragmented (MDEV-35689)
mysqldump does not preserve case of table names in generated sql (MDEV-14432)
The collation utf8mb4_0900_bin is defined as an alias for utf8mb4_bin while it should be an alias of utf8mb4_nopad_bin, causing wrong comparison results. (MDEV-36361)
CREATE INDEX fails to heal a FOREIGN KEY constraint (MDEV-35962)
Bad value for the variable "Buffer pool size" (MDEV-21203)
Doublewrite recovery of innodb_checksum_algorithm=full_crc32 page_compressed pages does not work (MDEV-36180)
In sql_mode=ORACLE, package body variables are not allowed as FETCH targets (MDEV-36047)
Segfault on concurrent ALTER and SELECT for partitioned table (MDEV-31122)
ST_PointFromWKB ignores SRID argument and always creates the POINT with 0 for it's SRID (MDEV-32619)
When executing SELECT MIN using loose index scan, if at least one of the WHERE condition is "f IS NULL", a memory violation may happen resulting in unexpected behaviour (MDEV-36220)
Error while installing MariaDB on Windows Server 2022 due to antivirus interference. (MDEV-35983)
mariadb-dump used wrong quoting character (MDEV-36268)
After a corrupted table on one node triggers the cluster to vote to evict a node that failed a transaction, the current master can’t commit any more and hangs. (MDEV-34998, MENT-2081)
JSON_UNQUOTE doesn't work with emojis (MDEV-35614)
TO_CHAR FM format not recognized in SQL_MODE=Oracle (MDEV-36216)
decreasing innodb_buffer_pool_size at runtime does not release memory (MDEV-32339)
CREATE-or-REPLACE-SELECT with ROW binlog format may not log DROP TABLE events, potentially causing replication issues. (MDEV-35499)
MDEV-32157 intended to fix spider wrapper so that it is case insensitive, among other things. However that fix was incomplete, as the udf spider_direct_sql may still require case sensitivity. MDEV-35807 fixes this. (MDEV-35807)
MariaDB service manager reports “WSREP state transfer ongoing...” via the system log although the transfer is complete. The script defined in `wsrep_notify_cmd` is not called after the state transfer, preventing the service manager from updating its status. (MDEV-35969)
Creating partitioned tables is disallowed when wsrep_osu_method=TOI and wsrep_strict_ddl=ON, preventing alteration or deletion of partitioned tables. (MDEV-27861)
Mysqlbinlog --stop-position does not warn if EOF not reached with --read-from-remote-server (MDEV-35694)
Attempting to create a CONNECT engine table results in "non-InnoDB sequences in Galera cluster" error message in logs due to an incorrect engine check. (MDEV-35748)
Incorrect result for BETWEEN over unique blob prefix (MDEV-36235)
find_order_in_list mismatch when order item needs fixing() (MDEV-36607)
innodb_snapshot_isolation=1 gives error for not committed row changes (MDEV-36639)
MariaDB Backup returns with an error like "Error on file ./test/t1#P#p513.MYD open during `test`.`t1` table copy for partitioned MyISAM tables when running out of file handles (MDEV-36437)
User without any privileges to a sequence can read from it and modify it via column default (MDEV-36413)
User has unauthorized access to a sequence through a view with security invoker (MDEV-36380)
mysql_stmt_errno() returns 0 after an error in mysql_stmt_execute() (MDEV-35953)
The untested ha_spider::index_first_internal constructs broken queries (MDEV-36324)
Incorrect query result for comparisons of binary_column NOT LIKE binary_column (MDEV-36211)
USER_STATISTICS.BUSY_TIME is in microseconds (MDEV-36586)
When a CREATE TABLE .. SELECT errors while inserting data, a user would expect that all changes are rolled back and the table would not exist after executing the query; however, the error was accidentally ignored in the code, and the table would still exist. (MDEV-35207)
For transactions committing in one-phase using rollback-capable engines, if binlogging fails during commit, the overall transaction would still commit, when it should roll-back. (MDEV-35506)
Wrong results from tables with a single record and an aggregate (MDEV-35238)
Unexpected error 1264 'Out of Range Value for Column' when inserting into ... select ... from a spider table (MDEV-35874)
Wrong result in loose index scan (MDEV-36118)
group by handler missing constant fields when selecting from a view (MDEV-36307)
Tests calling the udf spider_copy_tables fail with --view-protocol (MDEV-36335)
Wrong cardinality estimation for the derived table leads to slow plan with LATERAL DERIVED (MDEV-30877)
If the join_condition is specified via USING (column_list), the query plan depends on the sequence of tables in the query (MDEV-36592)
Cost estimates for materialized derived tables are poor (MDEV-35958)
Doubled memory usage (11.4.4 <-> 11.4.5) (MDEV-36213)
LSN allocation is a bottleneck (MDEV-21923)
make mariadb-backup to force an innodb checkpoint (MDEV-30000)
reorganise innodb buffer pool (and remove buffer pool chunks) (MDEV-29445)
dict_stats_fetch_from_ps() unnecessarily holds exclusive dict_sys.latch (MDEV-35436)
FLUSH TABLES will no longer cause InnoDB persistent statistics to be reloaded. RENAME TABLE will. This change of logic improves the performance in general, and avoids a case where statistics for relatively rarely modified tables are never updated. (MDEV-35000)
The Linux memory pressure interface, which could previously not be disabled and could cause performance anomalies, was rewritten and is disabled by default. (MDEV-34863)
Stall and crash when page cleaner fails to generate free pages during Async flush (MDEV-36226)
Large N-way OR causes a lot of index_merge variants to be created and discarded (MDEV-34620)
For the complete list of changes in this release, see the changelog.
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 11.4.5-3 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Oracle Linux 8 (x86_64, ARM64)
Oracle Linux 9 (x86_64, ARM64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Ubuntu 24.04 (x86_64, ARM64)
Microsoft Windows (x86_64) (Without MariaDB Enterprise Cluster (Galera) support)
Red Hat UBI 8 (x86_64, ARM64)
Red Hat UBI 8 is part of the Enterprise Server Docker Image. It does not support MariaDB Enterprise Cluster (Galera) or MariaDB ColumnStore.
Some components of MariaDB Enterprise Server are supported on a subset of platforms. See MariaDB Engineering Policies for details.
MariaDB Enterprise Server 10.5.4-2 is the first Stable (GA) release of MariaDB Enterprise Server 10.5, released on 2020-07-16
This release of MariaDB Enterprise Server 10.5 is the first GA (Generally Available) release. It Includes a variety of new features.
MariaDB Enterprise Server 10.5.4-2 was released on 2020-07-16.
With MariaDB Enterprise Server 10.5 "mysql" command names are replaced with "mariadb" command names. Symbolic links are in place to maintain backward compatibility with the old names and prevent disruption. (MDEV-21303)
MariaDB Enterprise ColumnStore is a columnar storage engine for analytical workloads. MariaDB Enterprise ColumnStore 1.5.3 is included in this release. Specific details on this component may be found in the Enterprise ColumnStore 1.5.3 release notes.
New in storage engine ColumnStore:
This release includes Enterprise ColumnStore 1.5.3 release notes.
Comprehensive rewrite of installation, cluster management, and failover logic
Support for standard MariaDB Server collations and character sets
New in storage engine InnoDB:
Online resizing of the redo log
Buffer Pool optimizations (MDEV-15058)
Number of purge threads can be changed at runtime
New thread pool implementation for background tasks (MDEV-16264)
Information Schema tables , , and added for insights into internals of the new Thread Pool (MDEV-19313)
Status variables added for storage engine parameters previously exposed only in SHOW ENGINE INNODB STATUS (MDEV-18582)
Improvements to Group Commit performance for Redo Log (MDEV-21534)
file format constraints to ALTER TABLE statements allow compatibility with older versions (MDEV-20590)
Improvements to for (MDEV-8069, MDEV-11412, MDEV-22456)
performance improvements (MDEV-15053, MDEV-22593, MDEV-22697, MDEV-22871, MDEV-22841)
New in storage engine S3:
Enhancements to partition support
Replication support using shared or separate S3 storage backend for Primary and Secondary Node
New in storage engine Spider:
This release includes Enterprise Spider 3.4, which adds support for an .
For ODBC Spider Tables, uses the ODBC foreign data wrapper to read from and write to an ODBC Data Source.
The ODBC foreign data wrapper has beta maturity.
table added to provide information about supported foreign data wrappers
MariaDB SQL statements support REPLICA a synonym for SLAVE (MDEV-20601)
RETURNING clause can be used for INSERT and REPLACE statements to return a result set of the inserted rows or another specified SQL statement (MDEV-10014)
INTERSECT and EXCEPT statements support ALL, so result sets can now include duplicate rows (MDEV-18844)
Comments can be added for a database in the statement, formerly limited to field level (MDEV-307)
JSON function can be used to create a JSON array from the values of a column (MDEV-16620)
JSON function can be used to build an JSON object from the result set of a query (MDEV-16620)
Support added for creating custom Data Types using the new Data Type API (MDEV-274)
INET data type plugin added for storing IPv4 and IPv6 addresses
RENAME INDEX and RENAME KEY can be used with (MDEV-7318)
RENAME COLUMN can now be used with (MDEV-16290)
Support added for recursive CTE cycle detection using the CYCLE clause (MDEV-20632)
IF EXIST keywords are now supported in and statements
Support added for WITHOUT OVERLAPS for Application-Time Period temporal tables (MDEV-16978)
Replica aware server shutdown (MENT-731)
Primary only shuts down when replication transactions have been processed
Added the system variable to control default behavior
MariaDB Enterprise Cluster based on Galera 4.1
New non-blocking DDL mode: set wsrep_osu_method system variable to NBO to allow DDL to not block the whole cluster for ALTER TABLE statements, which use a lock mode SHARED or EXCLUSIVE
Galera Black Box as debug message storage for troubleshooting
A new inconsistency voting protocol in MariaDB Cluster can be used avoiding a full cluster shutdown while ensuring hardening the cluster against potential threats for data consistency (MDEV-17048)
Support added for Galera Global Transaction ID in MariaDB Cluster, which replicates MariaDB Global Transaction ID to other nodes in the cluster (MDEV-20720)
Support added for Non Blocking Operations method in wsrep_osu_method system variable (MDEV-20051)
Key Management plugin for HashiCorp Vault System
System variable for rejecting connections attempted using insecure transport (MDEV-13662)
privilege split into several smaller privileges, allowing for more fine grained tuning of what each user can do: , , , , , , , and (MDEV-21743)
For filesort, the mode addon_fields, addon_fields, or packed_addon_fields used for sorting will be shown in ANALYZE FORMAT=JSON (MDEV-21838)
Through enhancement to Query Optimizer, ANALYZE now shows the time spent for checking WHERE clauses and performing other auxiliary operations (MDEV-20854)
Enhancement for the sort buffer to allow packed values of non-sorted fields in the sort buffer (MDEV-21263)
Optimizer can now use packed sort keys in the sort buffer (MDEV-21580)
aria_pack supports transactional tables
aria_pack now supports --datadir, --ignore-control-file, and --require-control-file options
now supports --ignore-table-data option (MDEV-22037)
privilege renamed to , the old syntax still understood for compatibility (MDEV-21743)
Several statements changed required privileges and may require a number of statements to be issued after upgrade:
now requires BINLOG MONITOR privilege, instead of
now requires or privileges, instead of or
now requires or privileges, instead of or
now requires privilege, instead of
Increased gcache.size option default in wsrep_provider_options system variable to 1 GB via the MariaDB Enterprise Server config file
Changed system variable default to OFF (MDEV-20487)
Changed system variable default to full_crc32 (MDEV-19534)
Changed system variable default to 1 (MDEV-20907)
Default for the system variable changed to optimistic (MDEV-18648)
Upgraded Performance Schema instrumentation and tables (MDEV-6114)
Support added for ENFORCE option with slave_run_triggers_for_rbr system variable (MDEV-21833)
Support added for sql_if_exists session system variable, which provides an implicit IF EXISTS to SQL statements altering, renaming, or dropping tables, views, functions, and packages (MDEV-19964)
Column added to Information Schema SYSTEM_VARIABLES table showing the configuration file from which it received its value (MDEV-12684)
Columns that indicate InnoDB Buffer Pool instance now return a value of 0 on the Information Schema INNODB_BUFFER_PAGE, INNODB_BUFFER_PAGE_LRU, INNODB_BUFFER_POOL_STATS, INNODB_CMPMEM, and INNODB_CMPMEM_RESET (MDEV-15058)
SHOW MASTER STATUS statement renamed to SHOW BINLOG STATUS, the old syntax still understood for compatibility (MDEV-21743)
now capped at 255 (MDEV-22258)
Minimum value of max_sort_length raised to 8 (previously 4), so fixed size data types like DOUBLE and BIGINT are not truncated for lower values of max_sort_length (MDEV-22715)
Deprecated/Removed System Variables
system variable removed (MDEV-19534)
system variable deprecated (MDEV-19543)
system variable removed (MDEV-19544)
system variable removed (MDEV-19551)
system variable deprecated (MDEV-19570)
system variable removed (MDEV-19570)
system variable deprecated and ignored
system variable deprecated and ignored
system variable deprecated and ignored (MDEV-19747)
system variable deprecated and removed (MDEV-18650)
system variable deprecated and removed (MDEV-18650)
system variable deprecated and removed (MDEV-18650)
system variable deprecated and ignored (MDEV-21870)
system variable deprecated and ignored (MDEV-21870)
system variable deprecated and ignored (MDEV-15528)
system variable deprecated and ignored (MDEV-15528)
system variable deprecated and ignored (MDEV-15528)
system variable deprecated and ignored (MDEV-15528)
system variable deprecated and ignored (MDEV-14425)
Information Schema table removed (MDEV-15528)
Maximum key length for storage engine increased from 1000 to 2000 bytes
In alignment with the enterprise lifecycle, MariaDB Enterprise Server 10.5.4-2 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "MariaDB Corporation Engineering Policies".
MariaDB Enterprise Server 10.5 removes support for Red Hat Enterprise Linux (RHEL) 6 and CentOS 6.
This thirteenth release of is a maintenance release. This release includes a variety of fixes.
MariaDB Enterprise Server 10.4.21-13 was released on 2021-09-14.
This release of MariaDB Enterprise Server includes features backported from MariaDB Enterprise Server 10.6.
allows database-specific and table-specific filters. (MENT-65) For example:
can be configured not to start the server if Audit Filters are invalid. (MENT-1243)
Added the new system variable.
To configure server startup to fail if Audit Filters are invalid, set to OFF and set server-audit to FORCE or FORCE_PLUS_PERMANENT.
The default value of is ON, so the default behavior is the same as in prior releases.
Enhanced consistency for Semi-Sync Replication
When , consistency is guaranteed for a Primary server in an HA (Primary/Replica) topology when using semi-synchronous replication. ()
Prior to this release, when using semi-synchronous replication, if a Primary crashed before sending a transaction to the Replica, on restart, the Primary could recover incomplete InnoDB transactions when rejoining as a Replica.
With this release, when using semi-synchronous replication and with rpl_semi_sync_slave_enabled=ON, incomplete transactions will be rolled-back on the Replica, ensuring the new Primary (former Replica) and new Replica (former Primary) remain in sync.
This release of MariaDB Enterprise Server includes features backported from MariaDB Enterprise Server 10.5.
Support added for Galera Global Transaction ID in MariaDB Enterprise Cluster (Galera), which replicates MariaDB Global Transaction ID to other nodes in the cluster (MENT-932)
Galera updated to 26.4.9
ARM64 is now supported for several .
The script wsrep_sst_mariadb-backup checks all server-related configuration groups when processing a configuration file. ()
Prior to this release, only the [mysqld] configuration group was checked when processing a configuration file.
MariaDB Enterprise Backup expects to stream a backup using the included mbstream utility. ()
Prior to this release, MariaDB Enterprise Backup expected , even though the xbstream utility had been renamed to mbstream.
InnoDB no longer acquires advisory file locks by default. ()
The table has been added and can be used to view details about SQL keywords. ()
The table has been added and can be used to view details about built-in functions. ()
When using data-at-rest encryption with the encryption plugin, InnoDB will automatically disable key rotation checks. ()
The encryption plugin does not support key rotation, so key rotation checks are not required.
In previous releases, unnecessary key rotation checks with the encryption plugin could reduce performance, unless they were explicitly disabled by setting .
Removed SSL ciphers RC4-MD5 and RC4-SHA for binaries compiled with WolfSSL. ()
When an statement is executed with ALGORITHM=INSTANT, a warning is not raised when the operation causes the default value of a DATE column to be truncated. ()
Possible server crash when pushing a WHERE condition over a mergeable derived table / view / CTE DT into a grouping view / derived table / CTE V whose item list contained set functions with constant arguments. ()
Server crashes on the second execution of a stored procedure or a prepared statement when the corresponding query executes a window function on a view, CTE, or derived table. ()
Server crashes are possible when executing a prepared statement with a hanging recursive CTE. ()
Server crashes while executing a query with a CTE in a prepared statement or stored procedure. ()
Server crashes while executing a query with a recursive CTE that is indirectly used twice. ()
Server crashes due to infinite recursion while processing an embedded recursive CTE with missing RECURSIVE. ()
Server crashes in InnoDB deadlock checker under high load. ()
Server crashes when a virtual generated column has a prefix index. ()
Server crashes are possible when using virtual generated columns. (, )
Server crashes while executing when a column is truncated. ()
Server crashes while executing when a hostname cannot be resolved. ()
Server crashes when a subquery references an outer column in an ORDER BY clause. ()
Server crashes due to a stack overrun in the query optimizer while executing a query with more than 32 equality conditions that compare columns of different tables (such as tableX.colX=tableY.colY). ()
Server crashes when a window function is the left expression of an IN(SELECT ..) subquery. ()
Possible deadlock on a Replica server using GTID Replication when and , , or is executed. ()
Server crashes when fails on an InnoDB table. ()
Server crashes while executing on an InnoDB table with a Full-Text Index. ()
Server crashes while executing on an InnoDB table with virtual generated columns that are indexed. ()
Server crashes while executing when innodb_read_only is enabled. ()
Server crashes when a connection is killed while executing after previously locking the table with . ()
Server crashes when the global value of the system_versioning_asof system variable is set using a stored function that reads the value of another global system variable. ()
Server crashes when is active and usernames longer than 256 characters are used. (MENT-1019)
Server crashes when is active, and audit log file rotation is triggered. (MENT-1207)
Server crashes while executing a query with a CTE that is used at least twice and that references an embedded recursive CTE. ()
Possible crash with transactions having changes for tables with no primary key to apply in parallel, when using MariaDB Enterprise Cluster. ()
Server crashes when executing to create a table with a COMMENT value that does not contain embedded double quotes. ()
Server crashes when a client connects during shutdown. ()
When fails after dropping the table, the DROP TABLE operation is not written into the binary log. ()
The statement does not quote role names properly for the DEFAULT ROLE. ()
The utility reports errors for freed pages. ()
When an unknown column is referenced in the WHERE clause of a recursive CTE, the query sometimes succeeds instead of failing with an . ()
Reusing CTE inside a function fails with the error code. ()
Several fixes for MariaDB Enterprise Cluster (Galera) SST scripts. (, , , , , , , MENT-1170, , )
With MariaDB Enterprise Cluster, when , MariaDB Enterprise Backup does not inherit server options set by the Environment systemd configuration parameter. ()
With MariaDB Enterprise Cluster, when is set and log-bin and/or log-bin-index are set to custom paths, the rsync SST does not copy the binary log index. ()
As a result of this issue, a Joiner node writes the following error to the :
With MariaDB Enterprise Cluster, when is set, rsync for a new SST process may be killed rather than the rsync for the old SST process. ()
With MariaDB Enterprise Cluster, the WSREP threads could write warnings about foreign keys to the when is not enabled. ()
In prior releases, the following warning could be written to the log:
Starting with this release, the WSREP threads will only write warnings about foreign keys to the when is enabled.
The statement may check the wrong maximum column length. ()
The storage engine handles ">=" as ">" in some cases, where multi-column indexes are used. ()
The system variable does not work correctly with the authentication plugin. ()
The "Condition pushdown into derived table" optimization cannot be applied if the expression being pushed refers to a derived table column, which is computed from an expression that has a stored function call, @session variable reference, or other similar construct. ()
A query that uses ORDER BY .. LIMIT clause and "Range checked for each record" optimization could produce incorrect results. ()
An aborted statement is logged in the binary log and replicated to the Replica server. ()
shows an execution plan different from actually executed ()
For system-versioned tables, the statement displays the system-invisible row_end column as part of the primary key. ()
For system-versioned tables partitioned by SYSTEM_TIME, overflowing the partitions leads to incorrect results from . result ()
For tables, statements that use CASE WHEN .. THEN can result in a syntax error. ()
For tables, statements that use the JSON_EXTRACT() function in the WHERE clause can result in a syntax error. ()
For tables, statements that call native functions using remove_str (such as ) fail with the error code. ()
For tables, server-sided prepared statements (created by and executed by ) incorrectly turn unsigned integer literals into signed integers. ()
For tables, statements that use the function fail with the error code. ()
With , the and statements are not logged to the audit log. (MENT-1169)
With MariaDB Enterprise Backup, the position written to the xtrabackup_binlog_info file during the backup is incorrect for replication. ()
With MariaDB Enterprise Cluster, when , a typo in the SST script causes SST failure on the Donor node. ()
For tables, statements that use DISTINCT do not work properly in some cases. ()
When is compiled with WolfSSL, the server fails to accept connections using TLS 1.3 and AES-GCM cipher. ()
information schema table added
mysqld --server-audit-load-on-error command-line option added
system variable added
information schema table added
system variable default value changed from DEFAULT to "" (empty)
In alignment with the , MariaDB Enterprise Server 10.4.21-13 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64 Red Hat Enterprise Linux 8 packages)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
5.9
5.5
5.5
5.5
4.4
{
"connect_event" : "ALL",
"table_event" : ["READ","WRITE",{"ignore_tables" : "mysql.*"}],
"query_event" : ["DDL",{"tables" : "test.t2"}]
}tail: cannot open 'mysql-bin.index' for reading: No such file or directoryInnoDB: WSREP: referenced FK check fail: Lock wait index `PRIMARY` table `schema`.`child_table`MariaDB Enterprise Server 10.4.24-15 is a maintenance release of MariaDB Enterprise Server 10.4. This release includes a variety of fixes.
MariaDB Enterprise Server 10.4.24-15 was released on 2022-03-14.
CVE (with link)
CVSS base score
5.5
5.5
5.5
5.5
5.5
5.5
4.4
Galera updated to 26.4.11
The maximum values for and have been changed from 80000000 to 1099511627776 (1 TB). (MENT-1428)
On Windows, is enabled by default. (MDEV-18439)
New system variables have been added for the HashiCorp Key Management Plugin: (MENT-864)
hashicorp_key_management_cache_timeout defines the time (in milliseconds) after which the value of the key stored in the cache becomes invalid, and an attempt to read this data causes a new request to be sent to the vault server. If the value is 0, then the keys will always be considered invalid, but they are still used if the vault server is unavailable and hashicorp_key_management_use_cache_on_timeout is enabled. By default, the value is 60000 (1 minute).
hashicorp_key_management_cache_version_timeout defines the time (in milliseconds) after which the information about latest version number of the key (which is stored in the cache) becomes invalid and an attempt to read this information causes a new request to be sent to the vault server. If the value is 0, then information about latest key version numbers always considered invalid, but they are still used if the vault server is unavailable and hashicorp_key_management_use_cache_on_timeout is enabled. By default, the value is 0.
For maximum flexibility, both of the new system variables can be configured with the loose prefix:
[mariadb]
loose_hashicorp_key_management_cache_timeout=120000
loose_hashicorp_key_management_cache_version_timeout=120000Columns in some INFORMATION_SCHEMA tables are erroneously declared with DEFAULT clauses, which is not compliant with the SQL standard. (MDEV-18918)
Consequently, when sql_mode=EMPTY_STRING_IS_NULL is set, queries like CREATE TABLE .. SELECT .. FROM INFORMATION_SCHEMA... could encounter replication errors like the following:
Error 'Invalid default value for 'TABLE_NAME'' on query. Default database: 'test'. Query: 'CREATE TABLE `t1` (`TABLE_NAME` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT ''When an statement changes the order of indexes in a MyISAM or Aria table using the INPLACE algorithm, the table can become corrupt. (MDEV-25803)
When is written to the binary log, the statement is not flagged as DDL, which causes the replica servers to execute the statement in an unsafe way if parallel replication is enabled. (MDEV-27365)
After upgrading from MariaDB 10.3 or earlier, the names of some triggers can appear empty, and the trigger can't be dropped. (MDEV-25659)
When a FULLTEXT index is added to an InnoDB table with ALGORITHM=INPLACE and the indexed column uses the tis620 character set, the server can crash with a segmentation fault (signal 11). (MDEV-24901)
When MariaDB Server is used on the ARM architecture, which uses a weak memory model, an internal hash table implementation can cause the server to crash with a segmentation fault (signal 11). (MDEV-27088)
When wsrep_sst_method=mariadb-backup and are set with MariaDB Enterprise Cluster, powered by Galera, the joiner node fails to perform an SST. (MDEV-26064)
The SST log contains the following message related to the failure:
mariadb-backup: The option "innodb_force_recovery" should only be used with "--prepare".
mariadb-backup: innodb_init_param(): Error occurred.When --stream=xbstream is set, MariaDB Enterprise Backup can hang on lock acquisitions due to a deadlock. (MDEV-26558)
When a stored procedure is defined with a query that contains a set function, and the set function's only argument is an outer reference to a column of a mergeable view, a derived table, or a CTE, the second execution of the stored procedure can cause the server to crash. (MDEV-25086)
When a derived table is created for certain queries that use subqueries over Views or CTEs, the server can crash with a segmentation fault (signal 11). (MDEV-25631)
When a stored procedure uses a cursor to run a query that requires an internal temporary table (such as queries containing an ORDER BY clause), the server can crash due to a segmentation fault (signal 11). (MDEV-24827)
Server can crash if a CTE or derived table is not used by the query. (MDEV-25766)
When is set and a query is executed that references a derived table, the server can crash while writing the query's execution plan to the slow query log. (MDEV-26249)
When a stored procedure or a prepared statement is used to execute a query that performs a join which compares a GEOMETRY column with a different data type, executing the stored procedure or prepared statement twice can cause the server to crash. (MDEV-20770)
When a system versioned table is created with and , the server can crash. (MDEV-27195)
When a system-versioned table is partitioned by SYSTEM_TIME, executing causes the server to crash. (MDEV-27217)
When the following conditions are met, executing a prepared statement twice can cause the server to crash: (MDEV-23182)
The system variable must be set to some value n.
The query must contain an IN(...) clause with more than n string literals.
The query must require character set conversions.
After completing a successful SST with MariaDB Enterprise Cluster, wsrep_local_state_comment on the donor node still says 'Donor/Desynced'. (MDEV-27459)
With MariaDB Enterprise Cluster, * when is executed on a view that references , the server can crash. (MDEV-25538)
When is used to instantly add columns in the middle of an InnoDB table, and then the tablespace is exported with , and then the tablespace is re-imported with , the server can crash. (MDEV-27272)
When is set, the server can crash if an index on an InnoDB table is used to check a condition that can evaluate to NULL. (MDEV-22846)
When a table uses a column, the server can crash with an assertion failure. (MDEV-27184)
In the MariaDB error log, the following error message could be written about the assertion failure:
Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.With MariaDB Enterprise Cluster, * when a statement that defines a Foreign Key constraint is replicated to other cluster nodes, the nodes could apply the statement in parallel with other DML statements that affect the Foreign Key constraint, which causes the node to fail with an assertion failure. (MDEV-27276)
With MariaDB Enterprise Cluster, * when two transactions delete a row from two separate InnoDB tables in parallel and a foreign key causes a delete to cascade for both transactions to the same row in a third table, the server can crash with an assertion failure. (MDEV-26803, MDEV-26298)
In previous releases, this issue could be avoided by setting wsrep_slave_threads=1.
In the MariaDB error log, the following error message about the assertion failure could be written:
int wsrep::client_state::bf_abort(wsrep::seqno): Assertion `mode_ == m_local || transaction_.is_streaming()' failed.
[ERROR] mysqld got signal 6 ;With MariaDB Enterprise Cluster, * when a node tries to write to the and wsrep_trx_fragment_size is greater than 0, the server can crash with an assertion failure. (MDEV-27338)
In the MariaDB error log, the following error message about the assertion failure could be written:
int wsrep::client_state::after_row(): Assertion `state_ == s_exec' failed.
[ERROR] mysqld got signal 6 ;When a multi-byte character set is used, the last character of a column can be truncated, which makes it appear as a question mark ('?). (MDEV-24335)
Subquery using the ALL keyword on columns produces a wrong result. (MDEV-27098)
Subquery using the ALL keyword on columns produces a wrong result. (MDEV-27072)
When float literals are defined using scientific notation and the token also contains certain special characters, the parser incorrectly parses the float value and completely drops it from the request. (MDEV-27066)
When a double-encapsulated CTE query calls a function which reads a table that has been aliased in the CTE query, the server incorrectly raises an error with the ER_NO_SUCH_TABLE error code. (MDEV-26825)
When a CTE is used in a subquery of a statement, the server incorrectly raises an error with the ER_NO_DB_ERROR error code. (MDEV-26470)
When MariaDB Enterprise Cluster performs an SST, the SST scripts incorrectly try to read as a path to a directory of TLS CA certificates instead of using for that purpose. (MDEV-27181)
When MariaDB Enterprise Cluster performs an SST, the SST scripts do not always interpret correctly. (MDEV-26915)
When an index is used for an ORDER BY .. LIMIT query, the optimizer does not disable the Range Checked for Each Record optimization. (MDEV-27270)
When is set, the optimizer can incorrectly choose to merge an index that does not help, because the query conditions require the full index to be scanned. (MDEV-27262)
When the system variable is set, MariaDB Connector/C and the mariadb client do not interpret MariaDB Server's extended metadata properly, which can cause results from some to be right-aligned. (MDEV-27304)
When an INSERT .. SELECT statement selects from and inserts into the same table, rows are counted twice, which can cause row numbers to be reported incorrectly in error messages. (MDEV-26698)
When a replica server's relay log is rotated, Seconds_Behind_Master in can temporarily show an incorrect value that is very high. (MDEV-16091)
The collation column in the table is incorrectly read as NULL. (MDEV-4621)
When a join performs a comparison between an expression that uses a case-insensitive collation and an ENUM column that uses a binary collation, the comparison uses the wrong collation, which can cause results to be incorrect. (MDEV-26129)
When # is changed dynamically with , InnoDB does not enforce the minimum value that is enforced on startup, which can result in an impossibly small buffer pool with some values of . (MDEV-27467)
When the function is used in some queries (such as queries using UNION ALL), database names can be truncated to 34 characters, even though database names can have up to 64 characters. (MDEV-27544)
When the option is disabled, such as * when or is set, InnoDB still allows symbolic links and .isl files to be created if tables have the DATA DIRECTORY option. (MDEV-26870)
When CREATE TABLE t1 LIKE t2 is executed and the t2 table is a partitioned table that uses the MyISAM or Aria storage engines and has the DATA DIRECTORY option defined for partitions, the operation fails with a file system error. (MDEV-25917)
When is set, some window functions incorrectly raise an error with the ER_MIX_OF_GROUP_FUNC_AND_FIELDS error code. (MDEV-17785)
When the function is called with values from a subquery, the output is not always returned as the JSON data type. (MDEV-18284)
When a system-versioned table is partitioned by can incorrectly return an error. (MDEV-25552)
The lateral derived optimization is not disabled for queries that use WITH ROLLUP, which causes queries that use GROUP BY to return incorrect results. (MDEV-26337)
When is set, queries that use the split optimization can return the wrong results. (MDEV-27510, MDEV-27132)
When a row is deleted from an InnoDB table, and then a new row with the same key is inserted into the table by a different transaction, InnoDB's MVCC code can incorrectly hide the new row from transactions that should see the changes: (MENT-1414)
Consequently, queries can try to insert another new row with the same key, which results in an error with the ER_DUP_ENTRY error code.
When a replica server has set to 'optimistic' or 'aggressive', this can result in the following error in :
Last_Errno: 1062
Last_Error: Error 'Duplicate entry 'VALUE' for key 'KEY_NAME'' on query. Default database: 'DATABASE_NAME'. Query: 'INSERT INTO ..'With MariaDB Enterprise Audit, prepared statements can't be used to enable audit logging. (MENT-379)
In previous releases, using a prepared statement to set the server_audit_logging system variable would fail with the following error message:
ERROR 1 (HY000): Logging cannot be enabled.When a proxy user is used for authentication, the server checks the proxy user account for the following security controls: (MDEV-26339)
SSL/TLS requirements
Account locking
Password expiration
Starting with this release, the server checks the original user account for the security controls mentioned above.
When wsrep_osu_method='TOI' is set with MariaDB Enterprise Cluster, is not replicated to other nodes as DDL. (MDEV-19353)
With MariaDB Enterprise Cluster, a race condition in group commit logic could cause cluster nodes to apply transactions in the wrong order, which could cause the server to fail with an assertion. (MDEV-27348)
In the MariaDB Error Log, the message about the assertion failure could look similar to the following:
void trx_rseg_update_wsrep_checkpoint(trx_rsegf_t*, const XID*, mtr_t*): Assertion `xid_seqno > wsrep_seqno' failed.
[ERROR] mysqld got signal 6 ;With the default , the optimizer could sometimes produce worse execution plans than with , except when is set. (MDEV-25830)
When wsrep_sst_method=mariadb-backup is set, SSTs for MariaDB Enterprise Cluster could fail after upgrading to MariaDB Enterprise Server 10.4 if MariaDB Enterprise Backup is not manually upgraded. (MDEV-19815)
When the mysql.AddGeometryColumn and mysql.DropGeometryColumn stored procedures use the old default DEFINER = 'root@localhost', [mariadb-upgrade##](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/clients-and-utilities/mariadb-upgrade) does not alter them to use the new defaultDEFINER = 'mariadb.sys@localhost'. ([MDEV-27124](https://jira.mariadb.org/browse/MDEV-27124))
This release discontinues support for MariaDB Enterprise ColumnStore 1.4 in MariaDB Enterprise Server 10.4. (MENT-1433)
MariaDB recommends using MariaDB Enterprise ColumnStore 6 in MariaDB Enterprise Server 10.6 or MariaDB Enterprise ColumnStore 5 in MariaDB Enterprise Server 10.5.
ER_VERS_NOT_ALLOWED error code added
system variable minimum value changed from 5242880 to 2097152
system variable dynamic changed from No to Yes
system variable maximum value changed from 80000000 to 1099511627776``
system variable dynamic changed from No to Yes##
system variable maximum value changed from 1600000000 to 1099511627776
mysql_upgrade command-line option added
mysqld command-line option added
mysqld command-line option added
mysqld --rocksdb-ignore-datadic-errors command-line option added
system variable added
In alignment with the enterprise lifecycle, MariaDB Enterprise Server 10.4.24-15 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64 Red Hat Enterprise Linux 8 packages)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see MariaDB Corporation Engineering Policies"..
MariaDB Enterprise Server 10.5.21-15 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2023-06-13
MariaDB Enterprise Server 10.5.21-15 is a maintenance release of MariaDB Enterprise Server 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.21-15 was released on 2023-06-13.
N/A (Medium)
#1:
MariaDB CVEs are assigned a word rating instead of a CVSS base score. See the MariaDB Engineering Policy for details.
For compatibility, has been added as an alias to JSON_DETAILED(). (MDEV-19160)
InnoDB's internal performance has been improved. (MDEV-30567)
The aria_log_dir_path system variable is added as read-only. (MDEV-30971)
The default value for the has been changed from None to OFF. (MDEV-11356)
Starting with this release, the innodb_buffer_pool_filename system variable is read-only and can't be changed dynamically. (MDEV-30453)
In previous releases, when innodb_buffer_pool_dump_at_shutdown was enabled, users with the SUPER privilege were able to dynamically change the value of the innodb_buffer_pool_filename system variable:
SET GLOBAL innodb_buffer_pool_filename='SOME_FILE_PATH';Starting with this release, the innodb_buffer_pool_filename system variable must be configured in a configuration file prior to starting up the server:
[mariadb]
innodb_buffer_pool_filename=SOME_FILE_PATHThe aria_log_dir_path system variable is added as read-only. (MDEV-26153)
The --aria-log-dir-path command-line option is added to mariadb-backup.
By default, mariadb-backup no longer prints messages about log scanning. (MDEV-25765)
In previous releases, messages like the following could be printed excessively:
log scanned up to (LSN)Starting with this release, the messages about log scanning are only printed when --verbose is enabled.
When a backup is created with mariadb-backup and aria_log_dir_path is configured, the Aria logs are not copied to the backup. (MDEV-30968)
When system versioning is enabled for a table without a primary key, changes to the table are not properly replicated. (MDEV-30430)
When a partitioned table contains a prefix index on a column that uses a NOPAD collation, queries with ORDER BY can return rows in the wrong order. (MDEV-30072)
For some collations, when a unique constraint is defined with UNIQUE(..) USING HASH, duplicate values are accepted. (MDEV-30034)
When an InnoDB table with ROW_FORMAT=REDUNDANT is being rebuilt due to a DDL statement, the server can crash while trying to apply cached DML operations to the rebuilt table. (MDEV-26198)
Long uniques don't work correctly with Unicode collations. Equal strings (in terms of the collation) are compared as unequal if the length of the strings are different. (MDEV-27653, MDEV-28190)
When innodb_buffer_pool_filename is set to the empty string, the server tries to delete the during shutdown. (MDEV-30453)
Starting with this release, the innodb_buffer_pool_filename system variable is read-only and can't be changed dynamically.
When is optimistic and is greater than 0, can fail with an out-of-order binlog error if the sequence uses InnoDB. (MDEV-31077)
In previous releases, the following error can be raised:
Last_Error: Error 'An attempt was made to binlog GTID 0-1-100 which would create an out-of-order sequence number with existing GTID 0-1-100 and gtid stric mode is enabled' on query. Default database: 'test'. Query: 'alter sequence s1 restart with 1' will be shown.When a UNIQUE index includes a PERIOD in its definition, a duplicate key error can be incorrectly raised when the table uses the . (MDEV-30415)
When an UPDATE or DELETE is rolled back from an InnoDB table with ROW_FORMAT=COMPRESSED, the server can crash. (MDEV-30882)
When the function is called on a string that has no character set defined, the server can crash. (MDEV-30351)
With Galera, when wsrep_sst_method=mariadb-backup is set and encrypt=4 is enabled for State Snapshot Transfers (SSTs), SSTs can fail if the version of socat installed on the donor node is 1.7.4.0 or later. (MDEV-30402)
In previous releases, SSTs could fail with the following error in the donor node's MariaDB error log if the version of socat installed is 1.7.4.0 or later:
E Failed to set SNI host ""Starting with this release, when the SST script starts the socat listener on the donor node, the error is prevented by setting no-sni=1 if the version of socat installed is 1.7.4.0 or later.
When optimizer trace is enabled, if a view is part of a multi-table update, the server can crash. (MDEV-31085)
When a view definition contains a UNION and the view is queried using server-side prepared statements, if the optimizer pushes down a condition into the execution of the view, the server can crash during character set conversions. (MDEV-31102)
When a replica server connects to a primary server with MASTER_USE_GTID=slave_pos, if the primary server has encrypted binary logs that it can no longer decrypt, the primary server crashes due to a segmentation fault. (MDEV-28798)
In previous releases, the primary node would iterate over all of its binary logs to look for the requested GTID. When one of the binary logs could not be decrypted, the server would crash.
Starting with this release, when the primary node fails to decrypt a binary log in this scenario, it stops iterating over the binary logs and raises an error with the ER_MASTER_FATAL_ERROR_READING_BINLOG error code with the following error message:
Got fatal error 1236 from master when reading data from binary log: 'Could not set up decryption for binlog.'With Galera, when streaming replicating is enabled by setting the wsrep_trx_fragment_size system variable, the server can crash when certain fragment sizes are specified. (MDEV-30838)
When EXPLAIN EXTENDED is executed for a single-table DELETE that contains an IN(..) predicand, the server can crash. (MDEV-31181)
When parallel replication is enabled by setting greater than 0, the replica's parallel replication worker threads could hang after hitting an error. (MDEV-30780)
In previous releases, when the server was hung in this scenario, the output of SHOW SLAVE STATUS would show that an error occurred, but the output would indicate that both the I/O and SQL threads were running.
SHOW SLAVE STATUS\G*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
..
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
..
Last_Errno: 1062
Last_Error: Could not execute Write_rows_v1 event on table TABLE_NAME; Duplicate entry 'VALUE' for key 'KEY_NAME', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log LOG_FILE, end_log_pos END_LOG_POS
..In this scenario, this issue causes one of the parallel replication worker threads to hang in the closing tables state, so the output of SHOW PROCESSLIST would show one worker thread in that state indefinitely:
SHOW PROCESSLIST;+------+--------------+--------------------+------+--------------+-------+-----------------------------------------------+------------------+----------+
| Id | User | Host | db | Command | Time | State | Info | Progress |
+------+--------------+--------------------+------+--------------+-------+-----------------------------------------------+------------------+----------+
..
| 2394 | system user | | NULL | Slave_worker | 50852 | closing tables | NULL | 0.000 |
..
+------+--------------+--------------------+------+--------------+-------+-----------------------------------------------+------------------+----------+When the optimizer chooses how to split a semi-join, the server can crash. (MDEV-31403)
With Galera, when CREATE TEMPORARY SEQUENCE is executed on a cluster node and binary logging is enabled, the server crashes. (MDEV-25045)
With Galera, when a write set fails certification and binary logging is enabled, the WSREP sequence numbers (cluster-wide transaction IDs) used by a WSREP applier thread can become out of sync with the node's XIDs (internal transaction IDs) due to a race condition, which can cause the node to crash. (MDEV-27317)
In previous releases, when a write set failed certification and binary logging was enabled, a WSREP applier thread could sync the WSREP sequence number out-of-order, because the commit order could be released too early.
With Galera, when streaming replicating is enabled by setting the wsrep_trx_fragment_size system variable and CREATE TABLE .. SELECT is executed, the server can crash. The following assertion is written to the MariaDB error log during the crash: (MDEV-30862)
Assertion `mode_ == m_high_priority' failed in void wsrep::client_state::after_applying()Starting with this release, the server prohibits CREATE TABLE .. SELECT in this scenario and raises the ER_NOT_ALLOWED_COMMAND error code with the following error message:
ERROR 42000: CREATE TABLE AS SELECT is not supported with streaming replicationWith Galera, when a connection uses the handler interface to start a transaction on a table, the server can crash when the client disconnects. (MDEV-30955) In previous releases, when the client disconnected, the server would rollback the transaction and release all locks, including the locks that the handler interface expected to survive after the transaction ended, which would cause the server to crash.
In previous releases, the following assertion is written to the MariaDB error log during the crash:
void close_thread_table(THD*, TABLE**): Assertion `thd->mdl_context.is_lock_owner(MDL_key::TABLE, table->s->db.str, table->s->table_name.str, MDL_SHARED)' failed.With Galera, when an SST donor changes to the non-primary state, the SST is not terminated properly, and the donor node crashes. (MENT-1708)
In previous releases, the following error message and assertion is written to the MariaDB error log during the crash:
[Warning] WSREP: server: NODE_NAME unallowed state transition: connected -> joined
void wsrep::server_state::state(wsrep::unique_lock<wsrep::mutex>&, wsrep::server_state::state): Assertion `0' failed.When a query is executed that uses DISTINCT and an aggregate function on a group, the server can crash. (MDEV-31113)
When a server-side prepared statement is used to execute a query that references views and contains a HAVING clause, the server can crash upon second execution of the query. (MDEV-31189)
When the InnoDB purge thread tries to use the change buffer for an uncommitted index, the server aborts with an assertion. (MDEV-30076)
When the rowid_filtering optimization is used with a partitioned table, the server aborts with an assertion. (MDEV-30596)
With Galera, a hang can occur in "starting" commit state due a deadlock between a KILL command and an abort issued by an applier. (MENT-1855)
Starting with this release, Total Order Isolation (TOI) is not used for the KILL command.
When is set and is greater than 0, replica servers can hang if data is inserted into tables with a sequence. (MDEV-29621)
When a backup is prepared with mariadb-backup, the utility can hang due to a race condition between the thread flushing the buffer pool and the thread deleting the redo log file. (MDEV-30860)
With Galera, when a transaction changes multiple tables that use different storage engines, some of which support the server's internal 2-phase commit protocol and some of which don't support it, the node crashes with an assertion failure. (MDEV-30804)
In previous releases, the following assertion failure is written to the MariaDB error log during the crash in this scenario:
int wsrep::transaction::ordered_commit(): Assertion `state() == s_committing' failed.Starting with this release, when Galera is enabled, mixed transactions are rejected in with the following error message:
ERROR HY000: Transactional commit not supported by involved engine(s)When InnoDB uses a lot of memory during crash recovery, the server can hang due to a race condition between the thread flushing the buffer pool and the thread performing the recovery. (MDEV-30551)
With Galera, when streaming replicating is enabled by setting the wsrep_trx_fragment_size system variable, the server can crash when backup locks or user-level locks are released. (MDEV-25037)
With Galera, when one session is terminated using the and another session's transaction is aborted by the WSREP applier threads due to a conflict, the two operations use a conflicting mutex locking order, which can cause the node to hang. (MDEV-28460)
With Galera, when many sessions are aborted by a WSREP applier thread due to conflicts, the sessions can hang due to a deadlock. (MENT-1693)
In previous releases, the output of could show sessions hang in the acquiring total order isolation state with queries like KILL QUERY n:
12345678 myuser 127.0.0.1:45071 mydb Query 1058 acquiring total order isolation KILL QUERY 20254887 0.000When EXPLAIN EXTENDED is executed for a multi-table UPDATE that uses the system join type, the output can be incorrect. (MDEV-31224)
When a query specifies DISTINCT and contains expressions using the SUM() function, the wrong results are returned. (MDEV-20057)
When a view's definition contains a HAVING clause, selecting from the view can fail with an error. (MDEV-28570)
In previous releases, queries could raise an error with the ER_VIEW_INVALID error code and the following error message:
View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use themWhen a view's definition contains an aggregate function, selecting from the view can fail with an error. (MDEV-28571)
In previous releases, queries could raise an error with the ER_INVALID_GROUP_FUNC_USE error code and the following error message:
ERROR 1111 (HY000): Invalid use of group functionWhen a view's definition contains a table-value constructor (TVC) as a single-value subquery, selecting from the view can fail with an error. (MDEV-28603)
In previous releases, queries could raise an error with the ER_VIEW_INVALID error code and the following error message:
View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use themWhen a view's definition contains an aggregate function in an uncorrelated subquery, the wrong result is returned. (MDEV-29224)
When a DELETE statement contains a subquery with a HAVING clause or an aggregate function in the WHERE clause, the statement can fail with an error. (MDEV-30586)
In previous releases, queries could raise an error with the ER_INVALID_GROUP_FUNC_USE error code and the following error message:
ERROR 1111 (HY000): Invalid use of group functionWhen an InnoDB tablespace has been discarded, selecting from fails with an error. (MDEV-30615)
In previous releases, an error with the ER_UNKNOWN_ERROR error code is raised:
ERROR 1105 (HY000): Unknown errorStarting with this release, no error is returned, and the results contain NULL for the PAGE_NO and SPACE columns for discarded tablespaces.
When innodb_undo_directory is set to a relative path, the path is not properly used by mariadb-backup --copy-back. (MDEV-28187)
In previous releases, the undo logs would be copied to the relative path compared to the current working directory.
Starting with this release, the undo logs are copied to the relative path compared to the .
When UNIX_TIMESTAMP(CURRENT_TIME()) is executed, the incorrect value is returned. (MDEV-26765)
In previous releases, NULL is returned.
With Galera, when wsrep_sst_method='mariadb-backup' is set, systemd raises an error about a mismatched PID. (MDEV-25887)
In previous releases, systemd could raise the following error, where BACKUP_PID is the PID of MariaDB Enterprise Backup and SERVER_PID is the PID of MariaDB Enterprise Server:
Got notification message from PID BACKUP_PID, but reception only permitted for main PID SERVER_PIDWhen an UPDATE contains a WHERE clause that contains a range condition over a non-indexed VARCHAR column, an error is raised. (MDEV-20773)
In previous releases, an error with the ER_DATA_TOO_LONG error code is raised with the following error message:
ERROR 1406 (22001): Data too long for column 'COLUMN_NAME' at row 1When slave_parallel_threads is greater than 0 and SHOW SLAVE STATUS is executed, the connection can try to acquire an uninitialized mutex. (MDEV-30620)
In previous releases, a race condition could cause the mutexes of parallel replication worker threads to be acquired before they are initialized.
The ucs2_general_mysql500_ci collation, which is intended for compatibility with older versions of MySQL, incorrectly sorts 'ß' after 's'. (MDEV-30746)
When EXPLAIN EXTENDED is executed with an INSERT, UPDATE, DELETE, or REPLACE, a warning containing the query text is not printed. (MDEV-30539)
The rowid_filtering optimization is applied incorrectly in some cases. (MDEV-30218)
When preparing a partial backup, MariaDB Enterprise Backup raises error messages about missing InnoDB tablespace files that are expected to be missing, because they were excluded from the backup. (MDEV-29050)
For certain data distributions, the optimizer histogram code can produce wrong selectivity, which can lead to performance degradation. (MDEV-31067)
When InnoDB writes data from the doublewrite buffer to the redo log file, the is not properly incremented. (MDEV-31124)
Parallel replication breaks if XA PREPARE fails updating replica GTID State (MDEV-31038)
When InnoDB has opened more data files than innodb_open_files, opening additional data files takes longer than expected due to a performance regression. (MDEV-30775)
When the is called with a key value that includes a double quote, the double quote character is not escaped. (MDEV-30412)
With optimizer_switch='not_null_range_scan=on', when a LEFT JOIN is executed on an empty table, the results can be incorrect. (MDEV-30333)
When a query contains a GROUP BY clause and the query calls an aggregate function on a table's primary key, the results can be incorrect if the GROUP BY clause is evaluated using an index. (MDEV-30605)
With Galera, when a cluster node has the query cache enabled and the node has regular MariaDB replication configured, query cache entries are not properly invalidated when tables are changed due to replication. (MDEV-28641)
When a backup is created with mariadb-backup, the utility opens the aria_log_control file in read/write mode instead of in read-only mode. (MENT-1794)
This release incorporates MariaDB ColumnStore engine version 5.6.8-2.
aria_log_dir_path system variable added.
system variable default value changed from None to OFF
innodb_buffer_pool_filename system variable dynamic changed from Yes to No
For compatibility, has been added as an alias to JSON_DETAILED().
mariadb-backup --aria-log-dir-path command-line option added.
In alignment with the enterprise lifecycle, MariaDB Enterprise Server 10.5.21-15 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "MariaDB Corporation Engineering Policies".
This tenth release of 10.4 is a maintenance release. This release includes security fixes.
MariaDB Enterprise Server 10.4.17-10 was released on 2020-12-14.
#1:
MariaDB CVEs are assigned a word rating instead of a CVSS base score. See the for details.
Galera wsrep library updated to 26.4.6 in .
In alignment with the , this release does not include CentOS 6.x and RHEL 6.x packages.
The audit plugin (not ) did not log proxy users. The new plugin version 2.0.3 introduces an event sub-type PROXY_CONNECT for event type CONNECT. ()
On connect, if a proxy user is used, an extra line will be logged: TIME,HOSTNAME,user,localhost,ID,0,PROXY_CONNECT,test,plug_dest@%,0
Better MariaDB GTID support for the option. ()
New global variable ()
The new parameter --include-unsupported for the script mariadb_es_repo_setup can be used to enable a repository of unsupported packages in the repository configuration. The repository currently includes the CONNECT Storage Engine. The storage engine can be installed by yum install MariaDB-connect-engine or apt-get install mariadb-plugin-connect-engine (MENT-1003)
Back port of a MariaDB Server 10.5 feature to not acquire record locks when covering table locks exist. (MENT-403)
Change by default. ()
did not log proxy users. The new plugin version 2.0.3 introduces an event sub-type PROXY_CONNECT for event type . (MENT-977)
On connect, if a proxy user is used, an extra line will be logged: TIME,HOSTNAME,user,localhost,ID,0,PROXY_CONNECT,test,plug_dest@%,0
The event type can also be used in filters "connect_event": ["CONNECT","DISCONNECT","PROXY_CONNECT"]
Performance improvements for comparisons of temporal data types with temporal literals. ()
Performance improvements for comparisons of temporal data types. ()
Data corruption possible for encrypted tables if the non-default option is used. (MENT-910)
Temporary tables created by the user or the system can overwrite existing files on creation. ()
Table can disappear after command if is used before altering a child table to remove a primary key. ()
Server crashes on an instant ALTER TABLE .. MODIFY of a column from "not null" to "null". A virtual column must exist in the table. ()
One instant including multiple RENAME for indexes can corrupt the index cache. ()
A rolling upgrade for from 10.3 to 10.4 can result in data loss. ()
DELETE .. FOR PORTION OF statement accepts non-constant FROM .. TO clause. This contradicts the documentation and is inconsistent with the behavior of the statement. ()
persistent stats analyze forces full scan which results in a lock crash. (MENT-1024)
hang on with error message Semaphore wait has lasted > 300 seconds. (MENT-1007)
Server crash can happen on filesort with a setting for to a value lower than the default of 64 ()
Potential stack overflow in fulltext search with a complex MATCH .. AGAINST string. ()
mariadb-backup can hang if the server goes idle after a particular kind of redo log write. ()
A server crash can occur when encryption is enabled for temporary tables () and queries use window functions. ()
A crash of MariaDB Server is possible when binary logging is activated, caused by improper raising of an error or replication checksum. ()
assertion on after ALTER-TABLE|ALTER TABLE .. DISCARD TABLESPACE ()
Server crashes after failed attempt to create unique key on virtual column. ()
Possible server crash when using an index on a spatial data type with InnoDB. ()
Possible server crash when a string function is used for a column of type and the string function is used in a subquery which is returning a row. ()
node can crash on high , , or load from many connections executed on the same table with foreign keys. ()
Server crashes if a query is executed on an table with a foreign key where the foreign key was removed while using . This case should result in an SQL error. ()
Recursive procedure call ends with a crash instead of SQL error. ()
fails to open the table during removal of VIRTUAL column DDL while using , due to lack of referenced index. ()
Server crash when altering a table after its tablespace has been discarded already. ()
caused a variety of non-determinism failures if the given position did not exist. ()
SET GLOBAL ``replicate_do_db = DEFAULT causes a crash. ()
JSON_MERGE_PATCH(json_doc, json_doc [, json_doc] ...) can crash if the first parameter is set to NULL and the second is not valid JSON. ()
Server crashes after with ON DELETE SET NULL for foreign key and a virtual column in index. ()
Server can crash on a prepared statement executed via . ()
Crash on on a table that contains indexed virtual columns. ()
Possible server crash for queries using the window function ()
Server crash can occur when is used. ()
Possible crash when using Spider Tables and partitions. ()
crashes. (MENT-1011)
node crash with Galera message Assertion server_state_.rollback_mode() == wsrep::server_state::rm_async' failed`. in the error log. (MENT-937)
Galera node crashes or hangs during IST if the connection between donor and joiner is unstable or if cluster configuration changes take place at the same time. (MENT-514)
crash if bulk updates are executed on Galera. ()
Possible server crash with executed on a system versioned table, if variable system_versioning_asof was set to a value of type instead of . ()
Server crash when SELECT WSREP_LAST_SEEN_GTID() while Galera replication is not enabled (wsrep-on=OFF). ()
Server crash if function FORMAT(num, decimal_position[, locale]) is used with a decimal_position > 30. ([MDEV-23415](https://jira.mariadb.org/browse/MDEV-23415))
Multiple calls to a Stored Procedure from another Stored Procedure crashes server. ()
Server crash when an invalid is set. ()
Server hang if TABLE LOCK is used after BACKUP LOCK was used. ()
Server crash on table updates using FOR PORTION OF ()
Assertion on executing with a prepared statement using when is on and is TOI ()
Server crash if a transaction is started with SET SESSION wsrep_on=1, but the global is 0 ()
crash when used with sharding and XA, and (default). ()
node can crash with an error message WSREP: MDL BF-BF conflict in the error log. The error is related to tables with foreign keys and running or on them. ()
Defining a view with SQL syntax ISNULL(ID)=0 incorrectly returns a syntax error. (MENT-1015)
reports an error that it cannot find an Aria log file './aria_log.00000000' (MENT-907)
failure for incremental backups. ()
Aborting a query on an table with does not show an SQL error message, if the query could not be aborted. ()
Optimizer has chosen an inefficient plan, if a multi-component index, a second index, and a WHERE or ON clause with conditions over these indexes are used. ()
Some rounding has been done in an unexpected way for decimal numbers. ()
Server crashes after changing at runtime via a statement. ()
Creating a view removes parentheses on expressions from the , which results in wrong results. ()
mysql_tzinfo_to_sql under is slow. ()
UDF cannot be uninstalled if the UDF library file doesn't exist. ()
with type can return an unexpected result, if the given value for "expr" includes many leading zeros. ()
replication broken if only one timezone is loaded. ()
SST donation fails, FLUSH TABLES WITH READ LOCK times out. ()
Memory leaks possible after with FOREIGN KEY ()
SST fails for if data-directory has lost+found directory. ()
caused a variety of non-determinism failures if the given position did not exist. ()
Linux AIO returned OS error 22 if parameters set to innodb_flush_method O_DIRECT and (default). ()
CREATE OR REPLACE TRIGGER in not replicating, if a trigger with the same name already exists. ()
mysqld_multi no longer works with different server binaries. ()
Possible error for incremental backup for encrypted tablespaces. ()
Possible slow server start and stop if full text indexes are used. ()
The parentheses in a VIEW can be defined incorrectly for a combination of = and BETWEEN ()
ER_BASE64_DECODE_ERROR upon replaying binary log. ()
Several IPv6 issues with powered by Galera. (, , , , )
Subquery on fails with error message. (MENT-1016)
A AUTO_INCREMENT does not increment with compound primary key on partitioned table. (MENT-997)
CREATE TEMPORARY TABLE .. LIKE () returns error if unique index is defined in the table. ()
CREATE .. SELECT can result in empty result on join versioned table. ()
ErrorERROR 4142 (HY000): SYSTEM_TIME partitions in table t1 does not support historical query upon querying a view, when that view is selecting from the versioned table with partitions. It only happens if the view itself was created using FOR SYSTEM_TIME ALL ()
Disk space not reused for Blob in data file. ()
will not dump sequence definition details on --no-data dump. ()
fails to validate corruption on a table that was corrupted by a bug related to instant ADD or DROP (fixed in MariaDB Enterprise Server 10.3.17, 10.4.7). ()
Subquery execution not terminated after LIMIT ROWS EXAMINED is exceeded. ()
Deadlock between BACKUP STAGE BLOCK_COMMIT and parallel replication. ()
Possible memory leak in galera library. ()
Wrong result of MIN(time_expr) and MAX(time_expr) with GROUP BY ()
Syntax error results in misleading message on about missing system table mysql.proc ()
FORMAT(num, decimal_position [, locale]) where decimal position is 0 or 38 and num is DECIMAL(38,38) returns incorrect results. ()
A query result includes a data row twice depending on the WHERE clause used, if partitioning is used. ()
Assertion after ROLLBACK AND CHAIN ()
mariadb_es_repo_setup curl failed on Ubuntu Focal if ca-certificates is not installed. Now it will prompt an error about missing ca-certificates (MENT-971)
system variable default value changed from ON to OFF
system variable added
command-line option added
system variable maximum value changed from 200 to 1048576 to 1048576
In alignment with the , MariaDB Enterprise Server 10.4.17-10 is provided for:
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 8
CentOS 7
CentOS 8
Debian 9
Debian 10
SUSE Linux Enterprise Server 12
SUSE Linux Enterprise Server 15
Ubuntu 16.04
Ubuntu 18.04
Ubuntu 20.04
Microsoft Windows
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
In alignment with the , this release does not include CentOS 6.x and RHEL 6.x packages.
CVE (with cve.org link)
CVSS base score
6.5
4.9
4.9
4.9
N/A (Critical)#1
MariaDB Enterprise Server 10.5.12-8 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2021-09-14
This eighth release of MariaDB Enterprise Server 10.5 is a maintenance release. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.12-8 was released on 2021-09-14.
CVE (with link)
CVSS base score
5.9
5.5
5.5
5.5
4.4
This release of MariaDB Enterprise Server includes features backported from MariaDB Enterprise Server 10.6.
allows database-specific and table-specific filters. (MENT-65) For example:
{
"connect_event" : "ALL",
"table_event" : ["READ","WRITE",{"ignore_tables" : "mysql.*"}],
"query_event" : ["DDL",{"tables" : "test.t2"}]
}can be configured to not start the server if Audit Filters are invalid. (MENT-1243)
Added the new system variable.
To configure server startup to fail if Audit Filters are invalid, set to OFF and set to FORCE or FORCE_PLUS_PERMANENT.
The default value of is ON, so the default behavior is the same as in prior releases.
Enhanced consistency for Semi-Sync Replication
When , consistency is guaranteed for a Primary server in an HA (Primary/Replica) topology when using semi-synchronous replication. (MDEV-21117)
Prior to this release, when using semi-synchronous replication, if a Primary crashed before sending a transaction to the Replica, on restart the Primary could recover incomplete InnoDB transactions when rejoining as a Replica.
With this release, when using semi-synchronous replication and with rpl_semi_sync_slave_enabled=ON, incomplete transactions will be rolled-back on the Replica, ensuring the new Primary (former Replica) and new Replica (former Primary) remain in sync.
Enhanced compatibility with Sybase SQL Anywhere through : (MENT-1062)
With sql_mode=EXTENDED_ALIASES, alias resolution and use of column aliases in the SQL list and WHERE clause.
With sql_mode=EXTENDED_ALIASES, support use of an alias in the SELECT list before the alias is defined.
With sql_mode=EXTENDED_ALIASES, if the same label is used for an alias and a column, the alias is used.
Galera updated to 26.4.9
ARM64 is now supported for several #platforms.
The script wsrep_sst_mariadb-backup checks all server-related configuration groups when processing a configuration file. (MDEV-25669)
Prior to this release, only the [mysqld] configuration group was checked when processing a configuration file.
MariaDB Enterprise Backup expects --stream=mbstream to stream a backup using the included mbstream utility. (MDEV-15730)
Prior to this release, MariaDB Enterprise Backup expected --stream=xbstream, even though the xbstream utility had been renamed to mbstream.
InnoDB no longer acquires advisory file locks by default. (MDEV-24393)
The table has been added and can be used to view details about SQL keywords. (MDEV-25129)
The table has been added and can be used to view details about built-in functions. (MDEV-25129)
When using data-at-rest encryption with the encryption plugin, InnoDB will automatically disable key rotation checks. (MDEV-14180)
The encryption plugin does not support key rotation, so key rotation checks are not required.
In previous releases, unnecessary key rotation checks with the encryption plugin could reduce performance, unless they were explicitly disabled by setting .
Removed SSL ciphers RC4-MD5 and RC4-SHA for binaries compiled with WolfSSL. (MDEV-26092)
The type_mysql_json plugin is not supported, so it has been relocated to the appropriate location. (MENT-1277)
For binary tarballs, the plugin was moved to the not_supported directory.
For Linux packages, the plugin was moved to the not-supported repositories.
For , specifying the option with no value would prevent the statements from being written to the output. (MDEV-25222)
Starting with this release, the option requires a value, and the always value has been removed.
The black box tool for MariaDB Enterprise Cluster has been renamed from bbtool to mariadb-bbtool. The install directory has been changed from sbin to bin. (MENT-1291)
Improved InnoDB page flushing performance. (MDEV-25954, MDEV-25948, MDEV-25801, MDEV-26004, MDEV-25113)
The plugin has been upgraded to the "stable" maturity. (MDEV-26226)
The plugin has been upgraded to the "stable" maturity. (MDEV-26226)
When an statement is executed with ALGORITHM=INSTANT, a warning is not raised when the operation causes the default value of a DATE column to be truncated. (MDEV-25971)
Possible server crash when pushing a WHERE condition over a mergeable derived table / view / CTE DT into a grouping view / derived table / CTE V whose item list contained set functions with constant arguments. (MDEV-25635)
Server crashes on second execution of a stored procedure or a prepared statement when the corresponding query executes a window function on a view, CTE, or derived table. (MDEV-25565)
Server crashes possible when executing a prepared statement with a hanging recursive CTE. (MDEV-26135)
Server crashes while executing query with a CTE in a prepared statement or stored procedure. (MDEV-26025)
Server crashes while executing query with a recursive CTE that is indirectly used twice. (MDEV-26202)
Server crashes due to infinite recursion while processing an embedded recursive CTE with missing RECURSIVE. (MDEV-26095)
Server crashes in InnoDB deadlock checker under high load. (MDEV-25594)
Server crashes when a virtual generated column has a prefix index. (MDEV-26220)
Server crashes possible when using virtual generated columns. (MDEV-18166, MDEV-18249)
Server crashes while executing when a column is truncated. (MDEV-17890)
Server crashes while executing when a hostname cannot be resolved. (MDEV-26081)
Server crashes when a subquery references an outer column in an ORDER BY clause. (MDEV-25629)
Server crashes due to a stack overrun in the query optimizer while executing query with more than 32 equality conditions that compare columns of different tables (such as tableX.colX=tableY.colY). (MDEV-17783)
Server crashes when a window function is the left expression of an IN(SELECT ..) subquery. (MDEV-25630)
Possible deadlock on a Replica server using GTID Replication when and , , or is executed. (MDEV-17515)
Server crashes when fails on an InnoDB table. (MDEV-25721)
Server crashes while executing on an InnoDB table with a Full-Text Index. (MDEV-25663)
Server crashes while executing on an InnoDB table with virtual generated columns that are indexed. (MDEV-25872)
Server crashes while executing when is enabled. (MDEV-25886)
Server crashes when a connection is killed while executing after previously locking the table with LOCK TABLE. (MDEV-17749)
Server crashes when the global value of the system variable is set using a stored function that reads the value of another global system variable. (MDEV-16481)
Server crashes when is active and usernames longer than 256 characters are used. (MENT-1019)
Server crashes when is active and audit log file rotation is triggered. (MENT-1207)
Server crashes while executing query with a CTE that is used at least twice and that references an embedded recursive CTE. (MDEV-26108)
Possible crash with transactions having changes for tables with no primary key to apply in parallel, when using MariaDB Enterprise Cluster. (MDEV-25551)
Server crashes when executing to create a table with a COMMENT value that does not contain embedded double quotes. (MDEV-26139)
Server crashes when a client connects during shutdown. (MDEV-18353)
Server crashes while concurrently executing . (MDEV-25651)
Server hangs on Windows when is executed and then the server is stopped. (MENT-1300)
Server crashes while executing to set multiple variables at once. (MDEV-25601)
Server crashes while calling without creating the required temporary table. (MENT-1318)
MariaDB Enterprise Backup crashes when executed with the --backup and --databases-exclude options. (MDEV-25815)
When fails after dropping the table, the DROP TABLE operation is not written into the binary log. (MDEV-25595)
The statement does not quote role names properly for DEFAULT ROLE. (MDEV-26080)
The utility reports errors for freed pages. (MDEV-25361)
When an unknown column is referenced in the WHERE clause of a recursive CTE, the query sometimes succeeds instead of failing with an ER_BAD_FIELD_ERROR. (MDEV-26189)
Reusing CTE inside a function fails with the ER_NO_SUCH_TABLE error code. (MDEV-23886)
Several fixes for MariaDB Enterprise Cluster (Galera) SST scripts. (MDEV-20580, MDEV-25818, MDEV-25759, MDEV-25719, MDEV-15639, MDEV-15371, MDEV-18797, MENT-1170, MDEV-24979, MDEV-21192)
With MariaDB Enterprise Cluster, when =mariadb-backup, MariaDB Enterprise Backup does not inherit server options set by the Environment systemd configuration parameter. (MDEV-24962)
With MariaDB Enterprise Cluster, when =rsync is set and log-bin and/or log-bin-index are set to custom paths, the rsync SST does not copy the binary log index. (MDEV-25978)
As a result of this issue, a Joiner node writes the following error to the :
tail: cannot open 'mysql-bin.index' for reading: No such file or directoryWith MariaDB Enterprise Cluster, when =rsync is set, rsync for a new SST process may be killed rather than the rsync for the old SST process. (MDEV-25880)
With MariaDB Enterprise Cluster, the WSREP threads could write warnings about foreign keys to the when wsrep_debug is not enabled. (MDEV-26062)
In prior releases, the following warning could be written to the log:
InnoDB: WSREP: referenced FK check fail: Lock wait index `PRIMARY` table `schema`.`child_table`Starting with this release, the WSREP threads will only write warnings about foreign keys to the when wsrep_debug is enabled.
The statement may check the wrong maximum column length. (MDEV-26203)
The storage engine handles ">=" as ">" in some cases, where multi-column indexes are used. (MDEV-25985)
The system variable does not work correctly with the ed25519 authentication plugin. (MDEV-25641)
The "Condition pushdown into derived table" optimization cannot be applied if the expression being pushed refers to a derived table column which is computed from an expression that has a stored function call, @session variable reference, or other similar construct. (MDEV-25969)
A query that uses ORDER BY .. LIMIT clause and "Range checked for each record" optimization could produce incorrect results. (MDEV-25858)
An aborted statement is logged in the binary log and replicates to the Replica server. (MDEV-22530)
For system-versioned tables, the statement displays the system-invisible row_end column as part of the primary key. (MDEV-16857)
For system-versioned tables partitioned by SYSTEM_TIME, overflowing the partitions leads to incorrect results from . result (MDEV-22247)
For tables, statements that use CASE WHEN .. THEN can result in syntax error. (MDEV-24760)
For tables, statements that use the function in the WHERE clause can result in a syntax error. (MDEV-24517)
For tables, statements that call native functions using remove_str (such as ) fail with the ER_WRONG_PARAMCOUNT_TO_NATIVE_FCT error code. (MDEV-24020)
For tables, server-sided prepared statements (created by PREPARE and executed by EXECUTE) incorrectly turn unsigned integer literals into signed integers. (MDEV-25808)
For Spider tables, statements that use the JSON_REPLACE() function fail with the ER_SP_DOES_NOT_EXIST error code. (MDEV-24523)
With , the and statements are not logged to the audit log. (MENT-1169)
With MariaDB Enterprise Backup, the position written to the xtrabackup_binlog_info file during the backup is incorrect for replication. (MDEV-23080)
With MariaDB Enterprise Cluster, when =mariadb-backup, a typo in the SST script causes SST failure on the Donor node. (MDEV-26117)
For tables, statements that use DISTINCT do not work properly in some cases. (MDEV-26013)
When is compiled with WolfSSL, the server fails to accept connections using TLS 1.3 and AES-GCM cipher. (MDEV-22221)
Concurrent statements can be written to the in the wrong order and break replication. (MDEV-25606)
When an statement is executed in batch mode (such as when the connector sets the COM_STMT_BULK_EXECUTE option), the wrong values can be inserted. (MDEV-21916)
For INSERT .. RETURNING statements, a qualified asterisk (such as table_name.*) is not supported in the RETURNING clause. (MDEV-23178)
If a locking-read statement (UPDATE or SELECT... FOR UPDATE) contains an outer join with a constant inner table, warnings are written to the . (MDEV-26106)
Example warning:
[ERROR] InnoDB: Unlock row could not find a 3 mode lock on the record.This release incorporates MariaDB ColumnStore storage engine version 5.6.2.
ER_BLACKBOX_ERROR error code error number changed from 4174 to 6000
information schema table added
mariadbd --server-audit-load-on-error command-line option added
system variable added
information schema table added
system variable default value changed from DEFAULT to "" (empty)
In alignment with the enterprise lifecycle, MariaDB Enterprise Server 10.5.12-8 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "MariaDB Corporation Engineering Policies".
MariaDB Enterprise Server 10.5.15-10 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2022-03-14
MariaDB Enterprise Server 10.5.15-10 is a maintenance release of 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.15-10 was released on 2022-03-14.
Galera updated to 26.4.11
The maximum values for and have been changed from 80000000 to 1099511627776 (1 TB). (MENT-1428)
On Windows, core_file is enabled by default. ()
New system variables have been added for the HashiCorp Key Management Plugin: (MENT-864)
hashicorp_key_management_cache_timeout defines the time (in milliseconds) after which the value of the key stored in the cache becomes invalid, and an attempt to read this data causes a new request to be sent to the vault server. If the value is 0, then the keys will always be considered invalid, but they are still used if the vault server is unavailable and hashicorp_key_management_use_cache_on_timeout is enabled. By default, the value is 60000 (1 minute).
hashicorp_key_management_cache_version_timeout defines the time (in milliseconds) after which the information about latest version number of the key (which is stored in the cache) becomes invalid and an attempt to read this information causes a new request to be sent to the vault server. If the value is 0, then information about latest key version numbers always considered invalid, but they are still used if the vault server is unavailable and hashicorp_key_management_use_cache_on_timeout is enabled. By default, the value is 0.
For maximum flexibility, both of the new system variables can be configured with the loose prefix:
Crash recovery improvements for InnoDB (, , , )
The default value of has been changed to none. ()
Columns in some INFORMATION_SCHEMA tables are erroneously declared with DEFAULT clauses, which is not compliant with the SQL standard. ()
Consequently, when sql_mode=EMPTY_STRING_IS_NULL is set, queries like CREATE TABLE .. SELECT .. FROM INFORMATION_SCHEMA... could encounter replication errors like the following:
When an statement changes the order of indexes in a MyISAM or Aria table using the INPLACE algorithm, the table can become corrupt. ()
When is written to the binary log, the statement is not flagged as DDL, which causes the replica servers to execute the statement in an unsafe way if parallel replication is enabled. ()
After upgrading from or earlier, the names of some triggers can appear empty, and the trigger can't be dropped. ()
When a FULLTEXT index is added to an InnoDB table with ALGORITHM=INPLACE and the indexed column uses the tis620 character set, the server can crash with a segmentation fault (signal 11). ()
When MariaDB Server is used on the ARM architecture, which uses a weak memory model, an internal hash table implementation can cause the server to crash with a segmentation fault (signal 11). ()
When and are set with MariaDB Enterprise Cluster, powered by Galera, the joiner node fails to perform an SST. ()
The SST log contains the following message related to the failure:
When is set, MariaDB Enterprise Backup can hang on lock acquisitions due to a deadlock. ()
When a stored procedure is defined with a query that contains a set function, and the set function's only argument is an outer reference to a column of a mergeable view, a derived table, or a CTE, the second execution of the stored procedure can cause the server to crash. ()
When a derived table is created for certain queries that use subqueries over Views or CTEs, the server can crash with a segmentation fault (signal 11). ()
When a stored procedure uses a cursor to run a query that requires an internal temporary table (such as queries containing an ORDER BY clause), the server can crash due to a segmentation fault (signal 11). ()
Server can crash if a CTE or derived table is not used by the query. ()
When is set and a query is executed that references a derived table, the server can crash while writing the query's execution plan to the slow query log. ()
When a stored procedure or a prepared statement is used to execute a query that performs a join which compares a GEOMETRY column with a different data type, executing the stored procedure or prepared statement twice can cause the server to crash. ()
When a is created with and , the server can crash. ()
When a is partitioned by SYSTEM_TIME, executing DELETE FROM .. PARTITION(..) causes the server to crash. ()
When the following conditions are met, executing a prepared statement twice can cause the server to crash: ()
The system variable must be set to some value n.
The query must contain an IN(...) clause with more than n string literals.
The query must require character set conversions.
After completing a successful SST with MariaDB Enterprise Cluster, on the donor node still says 'Donor/Desynced'. ()
With MariaDB Enterprise Cluster, when is executed on a view that references , the server can crash. ()
When is used to instantly add columns in the middle of an InnoDB table, and then the tablespace is exported with , and then the tablespace is re-imported with , the server can crash. ()
When is set, the server can crash if an index on an InnoDB table is used to check a condition that can evaluate to NULL. ()
When a table uses a [[|FLOAT|##FLOAT##]] column, the server can crash with an assertion failure. ()
In the MariaDB error log, the following error message could be written about the assertion failure:
With MariaDB Enterprise Cluster, when a statement that defines a Foreign Key constraint is replicated to other cluster nodes, the nodes could apply the statement in parallel with other DML statements that affect the Foreign Key constraint, which causes the node to fail with an assertion failure. ()
With MariaDB Enterprise Cluster, when two transactions delete a row from two separate InnoDB tables in parallel and a foreign key causes a delete to cascade for both transactions to the same row in a third table, the server can crash with an assertion failure. (, )
In previous releases, this issue could be avoided by setting .
In the MariaDB error log, the following error message about the assertion failure could be written:
When and are set, the server could crash with an assertion failure. ()
In the MariaDB error log, the following message about the assertion failure could be written:
When InnoDB does not use RAM disk for storage, the server can occasionally hang during a log checkpoint. ()
When using , the server can crash due to memory corruption. ()
When is executed, the server could try to lock the Aria control file. ()
In the MariaDB error log, the following error messages could be written about this:
When an index is dropped and re-adding to a table in a different position using the INPLACE algorithm and the table uses the MEMORY storage engine, the server can crash. ()
Can result in unexpected behaviorWhen a multi-byte character set is used, the last character of a column can be truncated, which makes it appear as a question mark ('?). ()
Subquery using the ALL keyword on columns produces a wrong result. ()
Subquery using the ALL keyword on columns produces a wrong result. ()
When float literals are defined using scientific notation and the token also contains certain special characters, the parser incorrectly parses the float value and completely drops it from the request. ()
When a double-encapsulated CTE query calls a function which reads a table that has been aliased in the CTE query, the server incorrectly raises an error with the ER_NO_SUCH_TABLE error code. ()
When a CTE is used in a subquery of a DELETE statement, the server incorrectly raises an error with the . ()
When MariaDB Enterprise Cluster performs an SST, the SST scripts incorrectly try to read as a path to a directory of TLS CA certificates instead of using for that purpose. ()
When MariaDB Enterprise Cluster performs an SST, the SST scripts do not always interpret correctly. ()
When an index is used for an ORDER BY .. LIMIT query, the optimizer does not disable the Range Checked for Each Record optimization. ()
When is set, the optimizer can incorrectly choose to merge an index that does not help, because the query conditions require the full index to be scanned. ()
When the system variable is set, MariaDB Connector/C and the do not interpret MariaDB Server's extended metadata properly, which can cause results from some SHOW .. to be right-aligned. ()
When an INSERT .. SELECT statement selects from and inserts into the same table, rows are counted twice, which can cause row numbers to be reported incorrectly in error messages. ()
When a replica server's relay log is rotated, Seconds_Behind_Master in can temporarily show an incorrect value that is very high. ()
The collation column in the table is incorrectly read as NULL. ()
When a join performs a comparison between an expression that uses a case-insensitive collation and an column that uses a binary collation, the comparison uses the wrong collation, which can cause results to be incorrect. ()
When is changed dynamically with , InnoDB does not enforce the minimum value that is enforced on startup, which can result in an impossibly small buffer pool with some values of . ()
When the function is used in some queries (such as queries using UNION ALL), database names can be truncated to 34 characters, even though database names can have up to 64 characters. ()
When the option is disabled, such as when --skip-symbolic-links or --disable-symbolic-links is set, InnoDB still allows symbolic links and .isl files to be created if tables have the DATA DIRECTORY option. ()
When CREATE TABLE t1 LIKE t2 is executed and the t2 table is a partitioned table that uses the MyISAM or Aria storage engines and has the DATA DIRECTORY option defined for partitions, the operation fails with a file system error. ()
When is set, some window functions incorrectly raise an error with the error code. ()
When a system-versioned table is partitioned by SYSTEM_TIME with a LIMIT clause, CHECK TABLE can incorrectly return an error. ()
The lateral derived optimization is not disabled for queries that use WITH ROLLUP, which causes queries that use GROUP BY to return incorrect results. ()
When is set, queries that use the split optimization can return the wrong results. (, )
When a row is deleted from an InnoDB table, and then a new row with the same key is inserted into the table by a different transaction, InnoDB's MVCC code can incorrectly hide the new row from transactions that should see the changes: (MENT-1414)
Consequently, queries can try to insert another new row with the same key, which results in an error with the error code.
When a replica server has set to 'optimistic' or 'aggressive', this can result in the following error in SHOW REPLICA STATUS:
With MariaDB Enterprise Audit, prepared statements can't be used to enable audit logging. (MENT-379)
In previous releases, using a prepared statement to set the system variable would fail with the following error message:
When a proxy user is used for authentication, the server checks the proxy user account for the following security controls: ()
SSL/TLS requirements
Account locking
Password expiration
Starting with this release, the server checks the original user account for the security controls mentioned above.
When is set with MariaDB Enterprise Cluster, is not replicated to other nodes as DDL. ()
With MariaDB Enterprise Cluster, a race condition in group commit logic could cause cluster nodes to apply transactions in the wrong order, which could cause the server to fail with an assertion. ()
In the MariaDB Error Log, the message about the assertion failure could look similar to the following: void trx_rseg_update_wsrep_checkpoint(trx_rsegf_t*, const XID*, mtr_t*): Assertion `xid_seqno > wsrep_seqno' failed. [ERROR] mysqld got signal 6 ;
When the query cache is enabled and older clients or connectors that don't support the CLIENT_EXTENDED_METADATA capability flag are used, queries could fail with an unknown error. ()
As part of the fix, the CLIENT_EXTENDED_METADATA column has been added to the table.
When is used with single row sub-selects or hybrid functions (such as IF() and COALESCE()), the results could be considered normal strings instead of JSON. ()
A performance regression exists for updates to InnoDB tables that do not use an index. ()
With MariaDB Enterprise Cluster, when is set and the value of is changed to a new value, transactions still use the old server_id value in GTIDs. ()
When OFFSET is combined with SELECT DISTINCT, a JOIN, and IN(..), OFFSET is ignored. ()
When a numeric argument is provided to COLLATE, the server always uses a collation of the latin1 character set instead of a collation of . ()
When a COLLATE clause specifies a collation of , the query could fail with the following error message:
When the mysql.AddGeometryColumn and mysql.DropGeometryColumn stored procedures use the old default DEFINER = 'root@localhost', does not alter them to use the new default DEFINER = 'mariadb.sys@localhost'. ()
When MariaDB Server is upgraded from 10.2, 10.3, or 10.4, InnoDB upgrades the redo log format in a manner that is not crash-safe. ()
This release incorporates MariaDB ColumnStore storage engine version 5.6.5.
Interface Changeserror code added
system variable minimum value changed from 5242880 to 2097152
system variable dynamic changed from No to Yes
system variable maximum value changed from 80000000 to 1099511627776
system variable dynamic changed from No to Yes
system variable maximum value changed from 1600000000 to 1099511627776
mariadb-upgrade --check-if-upgrade-is-needed command-line option added
mariadbd --hashicorp-key-management-cache-timeout command-line option added
mariadbd --hashicorp-key-management-cache-version-timeout command-line option added
mariadbd --rocksdb-ignore-datadic-errors command-line option added
system variable added
In alignment with the , MariaDB Enterprise Server 10.5.15-10 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
CVE (with cve.org link)
CVSS base score
5.5
5.5
5.5
5.5
5.5
5.5
4.4
[mariadb]
loose_hashicorp_key_management_cache_timeout=120000
loose_hashicorp_key_management_cache_version_timeout=120000Error 'Invalid default value for 'TABLE_NAME'' on query. Default database: 'test'. Query: 'CREATE TABLE `t1` (`TABLE_NAME` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT ''mariadb-backup: The option "innodb_force_recovery" should only be used with "--prepare".
mariadb-backup: innodb_init_param(): Error occurred.Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.int wsrep::client_state::bf_abort(wsrep::seqno): Assertion `mode_ == m_local || transaction_.is_streaming()' failed.
[ERROR] mysqld got signal 6 ;InnoDB: Failing assertion: lsn >= log_sys.get_flushed_lsn()[ERROR] mysqld: Can't lock aria control file '/var/lib/mysql/aria_log_control' for exclusive use, error: 11. Will retry for 0 seconds
[ERROR] Plugin 'Aria' init function returned error.
[ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.Last_Errno: 1062
Last_Error: Error 'Duplicate entry 'VALUE' for key 'KEY_NAME'' on query. Default database: 'DATABASE_NAME'. Query: 'INSERT INTO ..'ERROR 1 (HY000): Logging cannot be enabled.ERROR 1253 (42000): COLLATION ' …' is not valid for CHARACTER SET 'latin1'MariaDB Enterprise Server 11.6.7-3 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2022-03-14
MariaDB Enterprise Server 10.6.7-3 is a maintenance release of MariaDB Enterprise Server 10.6. This release includes a variety of fixes.
MariaDB Enterprise Server 10.6.7-3 was released on 2022-03-14.
CVE (with link)
CVSS base score
5.5
5.5
5.5
5.5
5.5
5.5
4.4
Galera updated to 26.4.11
The maximum values for and have been changed from 80000000 to 1099511627776 (1 TB). (MENT-1428)
On Windows, is enabled by default. (MDEV-18439)
New system variables have been added for the HashiCorp Key Management Plugin: (MENT-864)
hashicorp_key_management_cache_timeout defines the time (in milliseconds) after which the value of the key stored in the cache becomes invalid, and an attempt to read this data causes a new request to be sent to the vault server. If the value is 0, then the keys will always be considered invalid, but they are still used if the vault server is unavailable and hashicorp_key_management_use_cache_on_timeout is enabled. By default, the value is 60000 (1 minute).
hashicorp_key_management_cache_version_timeout defines the time (in milliseconds) after which the information about latest version number of the key (which is stored in the cache) becomes invalid and an attempt to read this information causes a new request to be sent to the vault server. If the value is 0, then information about latest key version numbers always considered invalid, but they are still used if the vault server is unavailable and hashicorp_key_management_use_cache_on_timeout is enabled. By default, the value is 0.
For maximum flexibility, both of the new system variables can be configured with the loose prefix:
[mariadb]
loose_hashicorp_key_management_cache_timeout=120000
loose_hashicorp_key_management_cache_version_timeout=120000Crash recovery improvements for InnoDB (MDEV-26784, MDEV-27022, MDEV-27183, MDEV-27610)
The default value of has been changed to none. (MDEV-27734)
Columns in some INFORMATION_SCHEMA tables are erroneously declared with DEFAULT clauses, which is not compliant with the SQL standard. (MDEV-18918)
Consequently, when sql_mode=EMPTY_STRING_IS_NULL is set, queries like CREATE TABLE .. SELECT .. FROM INFORMATION_SCHEMA... could encounter replication errors like the following:
Error 'Invalid default value for 'TABLE_NAME'' on query. Default database: 'test'. Query: 'CREATE TABLE `t1` (`TABLE_NAME` varchar(64) CHARACTER SET utf8 NOT NULL DEFAULT ''When is written to the binary log, the statement is not flagged as DDL, which causes the replica servers to execute the statement in an unsafe way if parallel replication is enabled. (MDEV-27365)
After upgrading from MariaDB 10.3 or earlier, the names of some triggers can appear empty, and the trigger can't be dropped. (MDEV-25659)
When a FULLTEXT index is added to an InnoDB table with ALGORITHM=INPLACE and the indexed column uses the tis620 character set, the server can crash with a segmentation fault (signal 11). (MDEV-24901)
When MariaDB Server is used on the ARM architecture, which uses a weak memory model, an internal hash table implementation can cause the server to crash with a segmentation fault (signal 11). (MDEV-27088)
When wsrep_sst_method=mariadb-backup and are set with MariaDB Enterprise Cluster, powered by Galera, the joiner node fails to perform an SST. (MDEV-26064)
The SST log contains the following message related to the failure:
mariadb-backup: The option "innodb_force_recovery" should only be used with "--prepare".
mariadb-backup: innodb_init_param(): Error occurred.When --stream=xbstream is set, MariaDB Enterprise Backup can hang on lock acquisitions due to a deadlock. (MDEV-26558)
When a stored procedure is defined with a query that contains a set function, and the set function's only argument is an outer reference to a column of a mergeable view, a derived table, or a CTE, the second execution of the stored procedure can cause the server to crash. (MDEV-25086)
When a derived table is created for certain queries that use subqueries over Views or CTEs, the server can crash with a segmentation fault (signal 11). (MDEV-25631)
When a stored procedure uses a cursor to run a query that requires an internal temporary table (such as queries containing an ORDER BY clause), the server can crash due to a segmentation fault (signal 11). (MDEV-24827)
Server can crash if a CTE or derived table is not used by the query. (MDEV-25766)
When is set and a query is executed that references a derived table, the server can crash while writing the query's execution plan to the slow query log. (MDEV-26249)
When a stored procedure or a prepared statement is used to execute a query that performs a join which compares a GEOMETRY column with a different data type, executing the stored procedure or prepared statement twice can cause the server to crash. (MDEV-20770)
When a is created with and , the server can crash. (MDEV-27195)
When a is partitioned by SYSTEM_TIME, executing causes the server to crash. (MDEV-27217)
When the following conditions are met, executing a prepared statement twice can cause the server to crash: (MDEV-23182)
The system variable must be set to some value n.
The query must contain an IN(...) clause with more than n string literals.
The query must require character set conversions.
After completing a successful SST with MariaDB Enterprise Cluster, wsrep_local_state_comment on the donor node still says 'Donor/Desynced'. (MDEV-27459)
With MariaDB Enterprise Cluster, when is executed on a view that references , the server can crash. (MDEV-25538)
When is used to instantly add columns in the middle of an InnoDB table, and then the tablespace is exported with , and then the tablespace is re-imported with , the server can crash. (MDEV-27272)
When is set, the server can crash if an index on an InnoDB table is used to check a condition that can evaluate to NULL. (MDEV-22846)
When a table uses a column, the server can crash with an assertion failure. (MDEV-27184)
In the MariaDB error log, the following error message could be written about the assertion failure:
Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.With MariaDB Enterprise Cluster, when a statement that defines a Foreign Key constraint is replicated to other cluster nodes, the nodes could apply the statement in parallel with other DML statements that affect the Foreign Key constraint, which causes the node to fail with an assertion failure. (MDEV-27276)
With MariaDB Enterprise Cluster, when two transactions delete a row from two separate InnoDB tables in parallel and a foreign key causes a delete to cascade for both transactions to the same row in a third table, the server can crash with an assertion failure. (MDEV-26803, MDEV-26298)
In previous releases, this issue could be avoided by setting wsrep_slave_threads=1.
In the MariaDB error log, the following error message about the assertion failure could be written:
int wsrep::client_state::bf_abort(wsrep::seqno): Assertion `mode_ == m_local || transaction_.is_streaming()' failed.
[ERROR] mysqld got signal 6 ;When and are set, the server could crash with an assertion failure. (MDEV-27754)
In the MariaDB error log, the following message about the assertion failure could be written:
InnoDB: Failing assertion: lsn >= log_sys.get_flushed_lsn()When InnoDB does not use RAM disk for storage, the server can occasionally hang during a log checkpoint. (MDEV-27416)
When using , the server can crash due to memory corruption. (MDEV-27240)
When is executed, the server could try to lock the Aria control file. (MDEV-24788)
In the MariaDB error log, the following error messages could be written about this:
[ERROR] mysqld: Can't lock aria control file '/var/lib/mysql/aria_log_control' for exclusive use, error: 11. Will retry for 0 seconds
[ERROR] Plugin 'Aria' init function returned error.
[ERROR] Plugin 'Aria' registration as a STORAGE ENGINE failed.When an index is dropped and re-adding to a table in a different position using the INPLACE algorithm and the table uses the MEMORY storage engine, the server can crash. (MDEV-25555)
When a DDL statement involves an InnoDB FULLTEXT index, an internal race condition could cause the server to hang. (MDEV-27017)
When is set, the server can hang. (MDEV-27414)
When is executed, the server can crash due to an out-of-bounds result from InnoDB's SUBSTR() function. (MDEV-27336)
When a multi-byte character set is used, the last character of a column can be truncated, which makes it appear as a question mark ('?). (MDEV-24335)
Subquery using the ALL keyword on columns produces a wrong result. (MDEV-27098)
Subquery using the ALL keyword on columns produces a wrong result. (MDEV-27072)
When float literals are defined using scientific notation and the token also contains certain special characters, the parser incorrectly parses the float value and completely drops it from the request. (MDEV-27066)
When a double-encapsulated CTE query calls a function which reads a table that has been aliased in the CTE query, the server incorrectly raises an error with the ER_NO_SUCH_TABLE error code. (MDEV-26825)
When a CTE is used in a subquery of a DELETE statement, the server incorrectly raises an error with the ER_NO_DB_ERROR error code. (MDEV-26470)
When MariaDB Enterprise Cluster performs an SST, the SST scripts incorrectly try to read as a path to a directory of TLS CA certificates instead of using for that purpose. (MDEV-27181)
When MariaDB Enterprise Cluster performs an SST, the SST scripts do not always interpret log_bin_index correctly. (MDEV-26915)
When an index is used for an ORDER BY .. LIMIT query, the optimizer does not disable the Range Checked for Each Record optimization. (MDEV-27270)
When is set, the optimizer can incorrectly choose to merge an index that does not help, because the query conditions require the full index to be scanned. (MDEV-27262)
When the system variable is set, MariaDB Connector/C and the mariadb client do not interpret MariaDB Server's extended metadata properly, which can cause results from some SHOW .. to be right-aligned. (MDEV-27304)
When an INSERT .. SELECT statement selects from and inserts into the same table, rows are counted twice, which can cause row numbers to be reported incorrectly in error messages. (MDEV-26698)
When a replica server's relay log is rotated, Seconds_Behind_Master in SHOW REPLICA STATUS can temporarily show an incorrect value that is very high. (MDEV-16091)
The collation column in the table is incorrectly read as NULL. (MDEV-4621)
When a join performs a comparison between an expression that uses a case-insensitive collation and an column that uses a binary collation, the comparison uses the wrong collation, which can cause results to be incorrect. (MDEV-26129)
When is changed dynamically with , InnoDB does not enforce the minimum value that is enforced on startup, which can result in an impossibly small buffer pool with some values of . (MDEV-27467)
When the function is used in some queries (such as queries using UNION ALL), database names can be truncated to 34 characters, even though database names can have up to 64 characters. (MDEV-27544)
When the option is disabled, such as when --skip-symbolic-links or --disable-symbolic-links is set, InnoDB still allows symbolic links and .isl files to be created if tables have the DATA DIRECTORY option. (MDEV-26870)
When CREATE TABLE t1 LIKE t2 is executed and the t2 table is a partitioned table that uses the MyISAM or Aria storage engines and has the DATA DIRECTORY option defined for partitions, the operation fails with a file system error. (MDEV-25917)
When is set, some window functions incorrectly raise an error with the ER_MIX_OF_GROUP_FUNC_AND_FIELDS error code. (MDEV-17785)
When a [ is partitioned by can incorrectly return an error. (MDEV-25552)
The lateral derived optimization is not disabled for queries that use WITH ROLLUP, which causes queries that use GROUP BY to return incorrect results. (MDEV-26337)
When is set, queries that use the split optimization can return the wrong results. (MDEV-27510, MDEV-27132)
When a row is deleted from an InnoDB table, and then a new row with the same key is inserted into the table by a different transaction, InnoDB's MVCC code can incorrectly hide the new row from transactions that should see the changes: (MENT-1414)
Consequently, queries can try to insert another new row with the same key, which results in an error with the ER_DUP_ENTRY error code.
When a replica server has set to 'optimistic' or 'aggressive', this can result in the following error in :
Last_Errno: 1062
Last_Error: Error 'Duplicate entry 'VALUE' for key 'KEY_NAME'' on query. Default database: 'DATABASE_NAME'. Query: 'INSERT INTO ..'With MariaDB Enterprise Audit, prepared statements can't be used to enable audit logging. (MENT-379)
In previous releases, using a prepared statement to set the system variable would fail with the following error message:
ERROR 1 (HY000): Logging cannot be enabled.When a proxy user is used for authentication, the server checks the proxy user account for the following security controls: (MDEV-26339)
SSL/TLS requirements
Account locking
Password expiration
Starting with this release, the server checks the original user account for the security controls mentioned above.
When wsrep_osu_method='TOI' is set with MariaDB Enterprise Cluster, is not replicated to other nodes as DDL. (MDEV-19353)
With MariaDB Enterprise Cluster, a race condition in group commit logic could cause cluster nodes to apply transactions in the wrong order, which could cause the server to fail with an assertion. (MDEV-27348)
In the MariaDB Error Log, the message about the assertion failure could look similar to the following:
void trx_rseg_update_wsrep_checkpoint(trx_rsegf_t*, const XID*, mtr_t*): Assertion `xid_seqno > wsrep_seqno' failed.
[ERROR] mysqld got signal 6 ;When the query cache is enabled and older clients or connectors that don't support the CLIENT_EXTENDED_METADATA capability flag are used, queries could fail with an unknown error. (MDEV-24487)
As part of the fix, the CLIENT_EXTENDED_METADATA column has been added to the table.
When is used with single row sub-selects or hybrid functions (such as IF() and COALESCE()), the results could be considered normal strings instead of JSON. (MDEV-27018)
A performance regression exists for updates to InnoDB tables that do not use an index. (MDEV-27499)
With MariaDB Enterprise Cluster, when wsrep_gtid_mode=ON is set and the value of server_id is changed to a new value, transactions still use the old server_id value in GTIDs. (MDEV-26223)
When OFFSET is combined with SELECT DISTINCT, a JOIN, and IN(..), OFFSET is ignored. (MDEV-27382)
When a numeric argument is provided to COLLATE, the server always uses a collation of the latin1 character set instead of a collation of . (MDEV-24584)
When a COLLATE clause specifies a collation of , the query could fail with the following error message:
ERROR 1253 (42000): COLLATION ' …' is not valid for CHARACTER SET 'latin1'Queries that use JSON functions can't be killed with KILL QUERY and don't respect the limit specified by . (MDEV-24909)
The Windows installer does not check if the selected directory is empty, which could cause MariaDB Enterprise Server to be installed in the same directory as a different version. (MDEV-27546)
The Windows Service for MariaDB Enterprise Server does not start if MariaDB Enterprise Server is installed in a restricted directory. (MDEV-27535)
The default value of has been changed from ON to OFF. (MDEV-27736)
For users using the , this change allows smooth upgrades to MariaDB Enterprise Server 10.6 and later without requiring users to update any configuration file.
When the mysql.AddGeometryColumn and mysql.DropGeometryColumn stored procedures use the old default DEFINER = 'root@localhost', does not alter them to use the new default DEFINER = 'mariadb.sys@localhost'. (MDEV-27124)
When MariaDB Server is upgraded from 10.2, 10.3, or 10.4, InnoDB upgrades the redo log format in a manner that is not crash-safe. (MDEV-27190)
When the 'root'@'localhost' user account does not exist, can fail. (MDEV-26925)
The output could show the following error messages:
ERROR 1449 (HY000) at line 832: The user specified as a definer ('root'@'localhost') does not exist
FATAL ERROR: Upgrade failedThis release incorporates MariaDB ColumnStore storage engine version 6.2.3.
ER_VERS_NOT_ALLOWED error code added
system variable minimum value changed from 5242880 to 2097152
system variable default value changed from all to none
system variable removed
system variable dynamic changed from No to Yes
system variable maximum value changed from 80000000 to 1099511627776
system variable dynamic changed from No to Yes
system variable maximum value changed from 1600000000 to 1099511627776
system variable default value changed from ON to OFF
mariadb-upgrade --check-if-upgrade-is-needed command-line option added
mariadbd --hashicorp-key-management-cache-timeout command-line option added
mariadbd --hashicorp-key-management-cache-version-timeout command-line option added
mariadbd --innodb-force-load-corrupted command-line option removed
mariadbd --rocksdb-ignore-datadic-errors command-line option added
rocksdb_ignore_datadic_errors system variable added
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 10.6.7-3 is provided for:
CentOS 7 (x86_64)
Debian 9 (x86_64, ARM64)
Debian 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Microsoft Windows (x86_64)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 18.04 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see MariaDB Corporation Engineering Policies".
MariaDB Enterprise Server 10.4.31-21 is a maintenance release of MariaDB Enterprise Server 10.4. This release includes a variety of fixes.
MariaDB Enterprise Server 10.4.31-21 was released on 2023-09-11.
has been backported. (MENT-1853)
The JSON_OVERLAPS() function can be used to compare two JSON documents to determine if they have any key-value pairs or array elements in common.
SELECT JSON_OVERLAPS('{"A": 1, "B": {"C":2}}', '{"A": 2, "B": {"C":2}}') AS is_overlap;+---------------------+
| is_overlap |
+---------------------+
| 1 |
+---------------------+has been backported. (MENT-1796)
The JSON_SCHEMA_VALID() function can be used to validate a JSON document against a JSON schema, as documented by the JSON Schema Draft 2020.
This function can also be used in a CHECK constraint to verify that JSON documents are only stored in the database if they include required items and that the values are within a given range and length.
The package for the cracklib_password_check plugin includes an SELinux policy, allowing the plugin to work with SELinux. (MDEV-18374)
With Optimizer Trace, a sel_arg_alloc_limit_hit record is written when MAX_SEL_ARGS is reached. (MDEV-30964)
MAX_SEL_ARGS is one of the limits in the optimizer that triggers short-cut of time-intensive or memory-intensive analysis for complex WHERE clauses.
For example:
SELECT
JSON_DETAILED(JSON_EXTRACT(trace, '$**.setup_range_conditions'))
FROM information_schema.OPTIMIZER_TRACE;[
[
{
"sel_arg_alloc_limit_hit":
{
"alloced_sel_args": 16001
}
}
]
]ANALYZE FORMAT=JSON output includes InnoDB statistics. (MDEV-31577)
For example:
table": {
"table_name": "t1",
...
"r_engine_stats": {
"pages_accessed": integer,
"pages_updated" : integer,
"pages_read_count" : integer,
"pages_read_time_ms" : double_val,
"old_rows_read" : integer,
},Slow query log output includes InnoDB engine information. (MDEV-31558)
InnoDB engine information output is enabled with --log-slow-verbosity=innodb
Sample output:
# Pages_accessed: 184 Pages_read: 95 Pages_updated: 0 Undo_rows_read: 1\\
# Pages_read_time: 17.0204 Engine_time: 248.1297
Engine_time is the time in milliseconds spent inside engine calls.
Page_* variables are supported for the InnoDB storage engine.
For the Spider storage engine, the default values and behavior of some system variables has changed: (MDEV-31524)
Prior to this release:
These variables used a value of -1 (the default) to indicate that Spider would use the default table value, and this value was not user visible.
Spider table parameters could set values, but these values would be overridden with the system variable value if the system variable was set to a value other than -1.
Starting with this release:
The default value for these system variables has been updated to reflect the actual default table value, rather than -1.
Where a value is set by a table parameter, this value overrides the system default and the value set by Spider system variable.
If a table parameter is not set, the Spider system variable's value is used. This behavior is unchanged.
See "Interface Changes" for a full list of updated default values.
With parallel replication, in some rare cases when the sequence of FLUSH TABLE WITH READ LOCKS, UNLOCK TABLES, and STOP REPLICA is executed, data can be lost on the replica. (MDEV-31509)
With Aria storage engine, when Aria encryption is enabled and used but an encryption plugin is not loaded, the server can crash. (MDEV-26258)
With Galera Cluster, when wsrep_sst_donor and wsrep_cluster_address are set to NULL rather than an empty string, the server can crash. (MDEV-28433)
When optimizer_switch='optimize_join_buffer_size=off' is set, the server can crash. (MDEV-31348)
When executing a SELECT query using an index for GROUP BY and filesort, the server can crash. (MDEV-30143)
With MariaDB Connector/C, when the mysql_list_fields() function is called against a view, the server can crash. (MDEV-30159)
With Aria storage engine, changing aria_sort_buffer_size settings to huge numbers and executing INSERT/UPDATE can result in a crash. (MDEV-28054)
With parallel replication, when a replica thread gets killed, the replica node can crash. (MDEV-31448)
With InnoDB storage engine, when slave_parallel_mode is optimistic and slave_parallel_threads is greater than 0, an ALTER SEQUENCE can fail with an out-of-order binlog error if the SEQUENCE uses InnoDB. (MDEV-31503)
Prior to this release, the following error can be raised:
Last_Error: Error 'An attempt was made to binlog GTID 0-1-100 which would create an out-of-order sequence number with existing GTID 0-1-100 and gtid stric mode is enabled' on query. Default database: 'test'. Query: 'alter sequence s1 restart with 1' will be shown.``
With replication, when gtid_seq_no is set to DEFAULT in a session, the server can crash. (MDEV-31723)
With InnoDB storage engine, when a BINARY(0) or VARBINARY(0) column in an InnoDB table is indexed, the server can crash. (MDEV-19216)
Setting session_track_system_variables globally to an invalid value can cause the server to crash. (MDEV-25237)
Replication from an older MariaDB Server version to a newer MariaDB Server version can break, and the server may crash. (MENT-1935)
A mismatch in hash values was caused by use of different hash functions, causing rows in tables having explicit or implicit unique hash indexes to be treated as different rows between different versions of MariaDB Server even though the data in the rows was the same.
For a System Versioned table with non-versioned columns, if the initial INSERT includes a versioned column, an "on duplicate key update" for the non-versioned column generates a history record. (MDEV-23100)
With Spider storage engine, setting a system variable overrides the value set as a table parameter. (MDEV-31524)
The "pam_user_map" module does not correctly handle usernames or group names containing the "@" character. (MDEV-31336)
With some Unicode collations, JSON functions can return incorrect results. (MDEV-23187)
Stored routines with ROW variables set by subselects can produce incorrect results. (MDEV-31250)
Integer multiplication, DIV, MOD, or ROUND/TRUNCATE could return unexpected results when an argument is evaluated as -9223372036854775808 (MDEV-30932)
With Galera Cluster, creating a TEMPORARY SEQUENCE can cause inconsistency. (MDEV-31335)
With Galera Cluster, the state of the cluster can only be retrieved from the primary component. (MDEV-21479)
information_schema.PARAMETERS can include outdated data when a stored routine is changed in one session while the stored routine is being used in a second session. (MDEV-31064)
Queries that use multiple RANK window functions can produce the wrong result. (MDEV-20010)
Queries that use the < "less than" operator to compare a string with a prefixed BLOB key produce the wrong result. (MDEV-31800)
Recursive CTE execution is interrupted without errors or warnings when max_recursive_iterations is reached. (MDEV-31214)
Starting with this release, a warning occurs when max_recursive_iterations is reached:Warning 1931 Query execution was interrupted. The query exceeded max_recursive_iterations = 1000. The query result may be incomplete.
On Microsoft Windows, when lower_case_table_names=2, SHOW TABLES does not work properly. (MDEV-30765)
When the system is busy, STOP REPLICA can take a long time. (MDEV-13915)
With parallel replication, Seconds_Behind_Master can show a wrong value. (MDEV-30619)
With replication for System Versioned tables, having a parent table and a child table WITH SYSTEM VERSIONING where child table has a Foreign Key CASCADE generates orphan rows on replica. (MDEV-31313)
mariadb-dump --force can stop with the error Couldn't execute 'SHOW CREATE FUNCTION object': even though --force should cause the error to be ignored. (MDEV-31092)
With the ColumnStore storage engine and Federated storage engine, ANALYZE can return the incorrect value 0 for r_rows (MDEV-29284)
ALTER TABLE .. MODIFY COLUMN can break foreign key constraints and lead to unrestorable dumps. (MDEV-31086)
With InnoDB storage engine, three concurrent DELETE by a UNIQUE key can cause an unexpected deadlock. (MDEV-10962)
With InnoDB storage engine, innochecksum fails with Floating point exception error. (MDEV-31641)
With HashiCorp key management plugin, possible memory leaks. (MENT-1874)
Using functions MAX() or MIN() with functions ROUND(time), CEILING(time), or FLOOR(time) as an argument can return wrong results. (MDEV-23838)
For transaction precise System Versioned tables, UPDATE can return an unexpected error: ERROR 1761 (23000): Foreign key constraint for table 'xxx', record 'yyy' would lead to a duplicate entry in table 'xxx', key 'PRIMARY' (MDEV-25644)
Assertion const_item_cache == true failed in Item_func::fix_fields when a flow control statement (such as IF()) was used in a generated column. (MDEV-31319)
Creating a table with a foreign key (with a cascade action) defined on a base column of a virtual column is not rejected. (MDEV-18114, MDEV-31322)
Starting with this release, it is no longer possible to create STORED generated columns and CHECK constraints when values of the affected columns can be changed by foreign key constraint actions, such as SET NULL or ON UPDATE CASCADE.
Starting with this release, this results in an error like: ERROR 1901 (HY000): Function or expression 'f_id' cannot be used in the GENERATED ALWAYS AS clause of 'v_id'
Starting with this release, for existing tables with STORED generated columns, SET NULL and ON UPDATE CASCADE are ignored.
With partitioning, possible slow down of queries. (MDEV-24712)
aria_sort_buffer_size system variable maximum value changed from 18446744073709551615 to 1152921504606846975 (MDEV-28054)
aria_sort_buffer_size system variable minimum value changed from 4096 to 16376 (MDEV-28054)
ER_JSON_INVALID_VALUE_FOR_KEYWORD error code added (MENT-1796)
ER_JSON_SCHEMA_KEYWORD_UNSUPPORTED error code added (MENT-1796)
ER_QUERY_EXCEEDED_ROWS_EXAMINED_LIMIT error code removed (MDEV-31214)
ER_QUERY_RESULT_INCOMPLETE error code added (MDEV-31214)
ER_QUERY_TIMEOUT error code removed
ER_UNUSED_1 error code added
function added (MENT-1853)
function added (MENT-1796)
myisam_sort_buffer_size system variable maximum value changed from 18446744073709551615 to 1152921504606846975 (MDEV-28054)
spider_auto_increment_mode system variable default value changed from -1 to 0 (MDEV-31524)
spider_bgs_first_read system variable default value changed from -1 to 2 (MDEV-31524)
spider_bgs_mode system variable default value changed from -1 to 0 (MDEV-31524)
spider_bgs_second_read system variable default value changed from -1 to 100 (MDEV-31524)
spider_bka_mode system variable default value changed from -1 to 1 (MDEV-31524)
spider_bka_table_name_type system variable default value changed from -1 to 0 (MDEV-31524)
spider_buffer_size system variable default value changed from -1 to 16000 (MDEV-31524)
spider_bulk_size system variable default value changed from -1 to 16000 (MDEV-31524)
spider_bulk_update_mode system variable default value changed from -1 to 0 (MDEV-31524)
spider_bulk_update_size system variable default value changed from -1 to 16000 (MDEV-31524)
spider_casual_read system variable default value changed from -1 to 0 (MDEV-31524)
spider_connect_timeout system variable default value changed from -1 to 6 (MDEV-31524)
spider_crd_bg_mode system variable default value changed from -1 to 2 (MDEV-31524)
spider_crd_interval system variable default value changed from -1 to 51 (MDEV-31524)
spider_crd_mode system variable default value changed from -1 to 1 (MDEV-31524)
spider_crd_sync system variable default value changed from -1 to 0 (MDEV-31524)
spider_crd_type system variable default value changed from -1 to 2 (MDEV-31524)
spider_crd_weight system variable default value changed from -1 to 2 (MDEV-31524)
spider_delete_all_rows_type system variable default value changed from -1 to 1 (MDEV-31524)
spider_direct_dup_insert system variable default value changed from -1 to 0 (MDEV-31524)
spider_direct_order_limit System Variable system variable default value changed from -1 to 9223372036854775807 (MDEV-31524)
spider_error_read_mode system variable default value changed from -1 to 0 (MDEV-31524)
spider_error_write_mode system variable default value changed from -1 to 0 (MDEV-31524)
spider_first_read system variable default value changed from -1 to 0 (MDEV-31524)
spider_init_sql_alloc_size system variable default value changed from -1 to 1024 (MDEV-31524)
spider_internal_limit system variable default value changed from -1 to 9223372036854775807 (MDEV-31524)
spider_internal_offset system variable default value changed from -1 to 0 (MDEV-31524)
spider_internal_optimize system variable default value changed from -1 to 0 (MDEV-31524)
spider_internal_optimize_local system variable default value changed from -1 to 0 (MDEV-31524)
spider_load_crd_at_startup system variable default value changed from -1 to 1 (MDEV-31524)
spider_load_sts_at_startup system variable default value changed from -1 to 1 (MDEV-31524)
spider_low_mem_read system variable default value changed from -1 to 1 (MDEV-31524)
spider_max_order system variable default value changed from -1 to 32767 (MDEV-31524)
spider_multi_split_read system variable default value changed from -1 to 100 (MDEV-31524)
spider_net_read_timeout system variable default value changed from -1 to 600 (MDEV-31524)
spider_net_write_timeout system variable default value changed from -1 to 600 (MDEV-31524)
spider_quick_mode system variable default value changed from -1 to 3 (MDEV-31524)
spider_quick_page_byte system variable default value changed from -1 to 10485760(MDEV-31524)
spider_quick_page_size system variable default value changed from -1 to 1024 (MDEV-31524)
spider_read_only_mode system variable default value changed from -1 to 0 (MDEV-31524)
spider_reset_sql_alloc system variable default value changed from -1 to 1``([MDEV-31524](https://jira.mariadb.org/browse/MDEV-31524))
spider_second_read system variable default value changed from -1 to 0 (MDEV-31524)
spider_select_column_mode system variable default value changed from -1 to 1 (MDEV-31524)
spider_selupd_lock_mode system variable default value changed from -1 to 1 (MDEV-31524)
spider_semi_split_read system variable default value changed from -1 to 2 (MDEV-31524)
spider_semi_split_read_limit system variable default value changed from -1 to 9223372036854775807 (MDEV-31524)
spider_semi_table_lock system variable default value changed from 1 to 0 (MDEV-31524)
spider_semi_table_lock_connection system variable default value changed from -1 to 1 (MDEV-31524)
spider_skip_default_condition system variable default value changed from -1 to 0 (MDEV-31524)
spider_skip_parallel_search system variable default value changed from -1 to 0 (MDEV-31524)
spider_split_read system variable default value changed from -1 to 9223372036854775807 (MDEV-31524)
spider_store_last_crd system variable default value changed from -1 to 1 (MDEV-31524)
spider_store_last_sts system variable default value changed from -1 to 1 (MDEV-31524)
spider_sts_bg_mode system variable default value changed from -1 to 2 (MDEV-31524)
spider_sts_interval system variable default value changed from -1 to 10 (MDEV-31524)
spider_sts_mode system variable default value changed from -1 to 1 (MDEV-31524)
spider_sts_sync system variable default value changed from -1 to 0 (MDEV-31524)
spider_udf_ct_bulk_insert_interval system variable default value changed from -1 to 10 (MDEV-31524)
spider_udf_ct_bulk_insert_rows system variable default value changed from -1 to 100 (MDEV-31524)
spider_udf_ds_bulk_insert_rows system variable default value changed from -1 to 3000 (MDEV-31524)
spider_udf_ds_table_loop_mode system variable default value changed from -1 to 0 (MDEV-31524)
spider_udf_ds_use_real_table system variable default value changed from -1 to 0 (MDEV-31524)
spider_use_handler system variable default value changed from -1 to 0 (MDEV-31524)
spider_use_table_charset system variable default value changed from -1 to 1 (MDEV-31524)
In alignment with the enterprise lifecycle, MariaDB Enterprise Server 10.4.31-21 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64 Red Hat Enterprise Linux 8 packages)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see MariaDB Corporation Engineering Policies"..
MariaDB Enterprise Server 10.5.16-11 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2022-06-13
MariaDB Enterprise Server 10.5.16-11 is a maintenance release of 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.16-11 was released on 2022-06-13.
MariaDB Enterprise Server enables a predictable development and operations experience through an . These new features have been backported after reaching maturity in MariaDB Community Server:
reads data as of specific timestamp from system-versioned tables. (MENT-1457)
Added to check JSON equality. (MENT-1452)
Added to normalize JSON values. (MENT-1456)
Added . (MENT-1451)
Galera updated to 26.4.12
Enterprise ColumnStore updated to 5.6.5
Spider storage engine refuses attempts to create a temporary table since the engine cannot itself store data and cannot create temporary tables on a remote server. ()
Status variables Innodb_encryption_key_rotation_list_length, Innodb_num_index_pages_written and Innodb_num_non_index_pages_written were unused and have been removed. (, )
Starting with this release, when is set to rsync or mariadb-backup, the sst_max_binlogs SST option can be specified in the [sst] option group in configuration files. This parameter specifies the number of binary log files to be sent to the joiner node during SST. ()
The default value is 0:
If a binlog exists, it will be transferred.
If a binlog does not exist, no binlog will be transferred.
Server error messages are available in Chinese. ()
Xpand storage engine support is discontinued for MariaDB Enterprise Server 10.5. (MENT-1499)
When the parser converts a string from the binary character set to a multi-byte character set (such as utf32), an invalid string could be produced. ()
When rows are inserted into an intermediate temporary table via the LOAD DATA INFILE statement ,and then the rows are copied from the temporary table to a persistent table, the rows are not written to binary log if binlog_format=MIXED is set, which prevents the operation from properly replicating to replica servers. ()
When is set, can hang. ()
Starting with this release, the has been removed.
When a replica server's I/O thread receives an incomplete event group from the primary server, the replica server continues writing events to the relay log and does not raise an error. ()
Semisync-replica server recovery fails to rollback a prepared transaction. (MENT-1534)
If a primary is shutdown during an active semi-sync connection during the period when the primary is awaiting an ACK, the primary hard kills the active communication thread and does not ensure the transaction was received by a replica. This can lead to an inconsistent replication state. ()
InnoDB page corruption on btrfs filesystem with innodb_use_native_aio=1 ()
With MariaDB Enterprise Cluster, powered by Galera, when is set to rsync or mariadb-backup, the donor node does not transfer the correct binary logs to the joiner node with some configurations. ()
When a window function is used in the global ORDER BY clause of a with a UNION, the statement should be rejected, but the server executes the statement and crashes with a segmentation fault. ()
When a stored procedure queries a view and uses a for loop, the server can crash with a segmentation fault when the stored procedure is called twice in the same session. ()
When is executed on an encrypted tablespace file using the --page-type-summary or -S option, innochecksum crashes with a segmentation fault unless the --page-type-dump or -D option is also specified. ()
When an invalid statement is used inside of a or statement, the server can crash while parsing the statement. ()
When a table contains a virtual generated column that is defined using the and functions, inserting a row into the table can cause the server to crash with a segmentation fault. ()
When a non-updateable view is defined with ALGORITHM=TEMPTABLE, selecting data from the view can cause the server to crash with a segmentation fault. ()
When a UNION of decimal types is performed in an ORDER BY clause, the server can crash with a segmentation fault. ()
When a stored procedure executes a query that results in a mergeable derived table, the server can crash with a segmentation fault when the stored procedure is called twice in the same session. ()
Querying views can result in mergeable derived tables.
Using subqueries with outer references can result mergeable derived tables.
When is executed with a query that contains a subquery, the server can crash. ()
When a query using a window function with an OVER (PARTITION BY ..) or VER (ORDER BY ..) clause is executed, the server can crash with a segmentation fault. ()
If the query also uses WITH ROLLUP, this crash is more likely.
If the query's OVER (PARTITION BY ..) or OVER (ORDER BY ..) clause uses an aggregate function, this crash is more likely.
When a query contains an outer join expression and a non-correlated subquery that the optimizer determines is low cost, executing the query can cause the server to crash if the optimizer also determines that the inner join expression can be eliminated. ()
With MariaDB Enterprise Cluster, a joiner node's binary logs could be deleted during an Incremental State Transfer (IST), which causes the node to fail to start, because it can not read the binary logs. ()
This issue is confirmed to happen with set to rsync, but it might also occur with other SST/IST methods.
Online DDL fails while checking for instant alter condition. ()
With MariaDB Enterprise Cluster (Galera), parallel async replication hangs on a Galera node when slave-parallel-threads greater than 1 is used. ()
With MariaDB Enterprise Cluster (Galera), possible crash after a conflict of the applier thread with a stored procedure call triggered by the event scheduler. ()
Server crashes when executing a shutdown statement after starting an XA transaction. ()
Possible server crash during mariadbd initialization if the number of GTIDs added since the last purge of the mysql.gtid_slave_pos tables is greater than or equal to the --gtid-cleanup-batch-size value. ()
Possible server crash if an INSERT .. SELECT or REPLACE .. SELECT statement contains an ON expression in the top-level select and this expression used a subquery with a column reference. ()
When is executed on a sequence, the server raises an warning, even if binlog_format is set to ROW or MIXED. ()
The warning can appear in the MariaDB Error Log as the following:
When an or statement uses an OR clause, the server raises an error. ()
The error can appear on the client as the following:
When an uses a subquery inside an , the optimizer could incorrectly choose to perform a full table scan (with type: ALL) when a range scan (with type: range) would be more efficient. ()
When a table contains multiple ENUM columns with identical values, the values could become corrupt if multi-byte character sets are used. ()
When columns are read from , the server could incorrectly raise an . ()
The warning can appear on the client as the following after executing :
With , the parser allows functions to be called using PACKAGE_NAME.FUNCTION_NAME(), but the parser raises a if the function is called using DATABASE_NAME.PACKAGE_NAME.FUNCTION_NAME(). ()
When a view is used to update multiple rows of a in a single , the server incorrectly raises a warning. ()
The warning can appear on the client as the following after executing :
When using with and , events from the primary server's currently active log file are not written to their respective log file specified by . ()
When a prepared statement is used to execute , a different query plan can be returned on the second execution. ()
When is enabled with semi-synchronous replication, the numbering on packet headers can become out of sync between the primary and replica servers, but the inconsistency does not have any negative impact with release builds of MariaDB Enterprise Server. ()
The server and can raise unnecessary warnings about tablespace IDs in some scenarios. ()
The warning can appear as the following:
This warning can be written to standard output (stdout) when preparing a backup with .
This warning can be written to the when InnoDB performs crash recovery at startup.
With MariaDB Enterprise Cluster, the joiner node fails to complete an SST when specifies a directory different than . ()
When a non-partitioned table using the DATA DIRECTORY clause is converted to a partitioned table, the DATA DIRECTORY clause is silently ignored, and the partitioned table is moved to the default directory. ()
Starting with this release, the server will raise the .
When a table contains an invisible column, does not produce the correct in the backup file. ()
When a Spider table is queried using IF(COUNT() ..), the server can raise an . ()
With MariaDB Enterprise Cluster, State Snapshot Transfers (SSTs) can fail on the donor node when binary logs are enabled. ()
With MariaDB Enterprise Cluster, when contains an IPv6 address and is set to the default value of AUTO, State Snapshot Transfers (SST) can fail. ()
With , replication can break if a system versioned table has been created on the replica via mariadb-dump, if the original table was altered before. ()
mariadb-backup does not detect multi-source replication primary. ()
Master_SSL_Crl shows Master_SSL_CA value in SHOW REPLICA STATUS output. ()
MariaDB Audit plugin produces corrupted log entries for CONNECT events. (MENT-1438)
mariadb-dump does not create a dump where the sql_mode is set correctly for SQL/PL packages. ()
Missing binlog data for INSERT .. ON DUPLICATE KEY UPDATE ()
mariadb-backup prepare fails for incremental backups if a new schema is created after full backup. ()
Optimizer uses all partitions during an UPDATE and ignores partitioning filters. ()
When is executed and is set to MIXED, the server raises an even though the statement is written to the binary log in row-based format. ()
The warning can appear in the MariaDB Error Log as the following:
When is executed and is set to FULL, the server does not write unchanged columns to the binary log. ()
Crash recovery fails if the configured server ID does not match the server ID in the crashed data directory. (MENT-1535)
PAM v2 plugin (auth_pam) produces zombie processes. (MENT-1443)
With MariaDB Enterprise Cluster (Galera), wsrep_incoming_addresses does not include address details. (MENT-1527)
With HashiCorp key management (hashicorp_key_management), dynamic changes to hashicorp_key_management_cache_timeout and hashicorp_key_management_cache_version_timeout system variables are ignored. (MENT-1512)
With Enterprise Spider, "Error while parsing DSN" can be returned when connecting to an ODBC source. (MENT-1316)
Last binlog file and position are "empty" in mariadb-backup --prepare output. ()
"Error" is shown instead of NULL in performance schema table P_S.THREADS_CONNECTION_TYPE for background threads. ()
With Enterprise Spider, login to ODBC resources fails if the password contains a semicolon. (MENT-805)
When setting group_concat_max_len to 1 GB or more and using GROUP_CONCAT() in a subquery, the result gets truncated. ()
Galera snapshot transfer fails to upgrade between some major versions. ()
On Windows, MSI installer does not install client shared libraries. ()
When the is loaded, should be used to take a logical backup before all minor and major upgrades due to changes that are not backward-compatible:
Starting with this release, the rejects encryption keys that contain non-digit characters in the hex notation.
If a database is encrypted with encryption keys that only contain digit characters in the hex notation, the encryption keys will continue to work with the new version.
If a database is encrypted with encryption keys that are no longer valid, it is recommended to upgrade by installing the new version to a clean system and restoring a logical backup of the data. However, another alternative is to migrate the system to a new encryption key that only contains digit characters in the hex notation prior to the upgrade. If the alternative route is taken, extra care must be taken to ensure that all encrypted data uses the new encryption key. For help with this process, contact .
When performing minor and major upgrades on Debian and Ubuntu, a logical backup must be taken before upgrading the server and plugin packages. When the old packages are upgraded, a message about plugin incompatibility is printed, but the server and plugin packages are upgraded anyway.
When performing minor upgrades on CentOS, RHEL, Rocky Linux, and SUSE, a logical backup can be taken before or after upgrading the server package. When the old packages are upgraded, a message about plugin incompatibility is printed, and the server package is upgraded, but the plugin package is not. The old plugin package must be manually removed, and then the new plugin package can be installed.
When performing major upgrades on CentOS, RHEL, Rocky Linux, and SUSE, a logical backup must be taken before upgrading the server and plugin packages. The old server and plugin packages must be manually removed, and then the new server and plugin packages can be installed.
When the plugin package is manually removed, the plugin configuration file can also be removed, so it is recommended to backup the file.
hashicorp_key_management_check_kv_version system variable added
system variable removed
status variable removed
status variable removed
status variable removed
function added
function added
mariadb-backup --sst-max-binlogs command-line option added
mariadb-dump --as-of command-line option added
mariadbd --hashicorp-key-management-check-kv-version command-line option added
mariadbd --password-reuse-check command-line option added
mariadbd --password-reuse-check-interval command-line option added
password_reuse_check password_reuse_check.so plugin added
system table added
system variable added
In alignment with the , MariaDB Enterprise Server 10.5.16-11 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
Note: This is the final release for Debian 9.
CVE (with cve.org link)
CVSS base score
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
6.5
6.5
6.5
6.5
6.5
6.5
[Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave Statement: OPTIMIZE TABLE SEQUENCE_NAMEYou are using safe update mode and you tried to update a table without a WHERE that uses a KEY columnEncountered illegal value '' when converting to DECIMALView being updated does not have complete key of underlying table in itInnoDB: Allocated tablespace ID TABLESPACE_ID for DATABASE_NAME/TABLE_NAME, old maximum was 0[Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe Statement: INSERT INTO TABLE_NAME VALUES (..) ON DUPLICATE KEY UPDATE KEY_NAME = KEY_VALUEMariaDB Enterprise Server 11.6.14-9 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2023-06-13
MariaDB Enterprise Server 10.6.14-9 is a maintenance release of MariaDB Enterprise Server 10.6. This release includes a variety of fixes. Users of MariaDB Enterprise Server 10.6.12-8 are encouraged to upgrade.
The next scheduled maintenance release for MariaDB Enterprise Server is 2023-09-11.
MariaDB Enterprise Server 10.6.14-9 was released on 2023-06-13.
This release now incorporates MariaDB ColumnStore engine version 23.02.12.
InnoDB's internal performance has been improved. (MDEV-30567)
The aria_log_dir_path system variable is added as read-only. (MDEV-30971)
The default value for the has been changed from None to OFF. (MDEV-11356)
Starting with this release, the innodb_buffer_pool_filename system variable is read-only and can't be changed dynamically. (MDEV-30453)
In previous releases, when innodb_buffer_pool_dump_at_shutdown was enabled, users with the SUPER privilege were able to dynamically change the value of the innodb_buffer_pool_filename system variable:
SET GLOBAL innodb_buffer_pool_filename='SOME_FILE_PATH';Starting with this release, the innodb_buffer_pool_filename system variable must be configured in a configuration file prior to starting up the server:
[mariadb]
innodb_buffer_pool_filename=SOME_FILE_PATHThe aria_log_dir_path system variable is added as read-only. (MDEV-26153)
The --aria-log-dir-path command-line option is added to mariadb-backup.
By default, mariadb-backup no longer prints messages about log scanning. (MDEV-25765)
In previous releases, messages like the following could be printed excessively:
>> log scanned up to (LSN)Starting with this release, the messages about log scanning are only printed when --verbose is enabled.
Performance schema instruments are now available to monitor mutex contention in InnoDB's internal thread pool that is used for asynchronous data page I/O. (MDEV-31048)
Starting with this release, the wait/synch/mutex/innodb/tpool_cache_mutex instrument can be enabled to track contention on the internal tpool::cache::m_mtx mutex in read_slots and write_slots.
When is enabled, you can enable the wait/synch/mutex/innodb/tpool_cache_mutex instrument by changing the ENABLED column for the instrument in the :
UPDATE performance_schema.setup_instruments
SET ENABLED='YES'
WHERE NAME='wait/synch/mutex/innodb/tpool_cache_mutex';When the instrument is enabled, details about mutex waits can be retrieved from other performance schema tables, such as , , and .
Enabling performance schema instrumentation can result in performance overhead, so extra care should be taken when enabling performance schema on production systems.
InnoDB page flushing speed has been improved. (MDEV-26827)
The has been added to monitor page splits in the InnoDB buffer pool. (MDEV-26827)
When InnoDB's purge thread encounters a cached undo page that has not yet been re-used, the page is freed. This approach avoids some page writes and improves backup and restore performance. It also prevents the system tablespace or temporary tablespace from growing unnecessarily when they store undo log pages. (MDEV-29593)
When a backup is created with mariadb-backup and aria_log_dir_path is configured, the Aria logs are not copied to the backup. (MDEV-30968)
When system versioning is enabled for a table without a primary key, changes to the table are not properly replicated. (MDEV-30430)
When a partitioned table contains a prefix index on a column that uses a NOPAD collation, queries with ORDER BY can return rows in the wrong order. (MDEV-30072)
For some collations, when a unique constraint is defined with UNIQUE(..) USING HASH, duplicate values are accepted. (MDEV-30034)
When an InnoDB table with ROW_FORMAT=REDUNDANT is being rebuilt due to a DDL statement, the server can crash while trying to apply cached DML operations to the rebuilt table. (MDEV-26198)
Long uniques don't work correctly with Unicode collations. Equal strings (in terms of the collation) are compared as unequal if the length of the strings are different. (MDEV-27653, MDEV-28190)
When innodb_buffer_pool_filename is set to the empty string, the server tries to delete the during shutdown. (MDEV-30453)
Starting with this release, the innodb_buffer_pool_filename system variable is read-only and can't be changed dynamically.
However, starting with MariaDB Community Server 10.9, the server rejects using numeric IDs to represent non-default character sets in binary logs. Replica servers using these newer versions would raise the following error message:
Unknown character set: '224'Starting with this release, the server writes the value to the binary log as a string instead of as a numeric ID. This change allows MariaDB Community Server 10.9 and later to connect as replica servers.
When a index includes a PERIOD in its definition, a duplicate key error can be incorrectly raised when the table uses the . (MDEV-30415)
With Galera, when a value is retrieved from an InnoDB sequence using the , the server can crash due to metadata lock conflicts between WSREP threads. (MDEV-30413)
In previous releases, the following log message would be reported in the log prior to the crash:
[Note] WSREP: MDL BF-BF conflict
[ERROR] AbortingCan result in a hang or crashWhen an UPDATE or DELETE is rolled back from an InnoDB table with ROW_FORMAT=COMPRESSED, the server can crash. (MDEV-30882)
When the is called on a string that has no character set defined, the server can crash. (MDEV-30351)
With Galera, when wsrep_sst_method=mariadb-backup is set and encrypt=4 is enabled for State Snapshot Transfers (SSTs), SSTs can fail if the version of socat installed on the donor node is 1.7.4.0 or later. (MDEV-30402)
In previous releases, SSTs could fail with the following error in the donor node's MariaDB error log if the version of socat installed is 1.7.4.0 or later:
E Failed to set SNI host ""Starting with this release, when the SST script starts the socat listener on the donor node, the error is prevented by setting no-sni=1 if the version of socat installed is 1.7.4.0 or later.
When optimizer trace is enabled, if a view is part of a multi-table update, the server can crash. (MDEV-31085)
When a view definition contains a UNION and the view is queried using server-side prepared statements, if the optimizer pushes down a condition into the execution of the view, the server can crash during character set conversions. (MDEV-31102)
When a replica server connects to a primary server with MASTER_USE_GTID=slave_pos, if the primary server has encrypted binary logs that it can no longer decrypt, the primary server crashes due to a segmentation fault. (MDEV-28798)
In previous releases, the primary node would iterate over all of its binary logs to look for the requested GTID. When one of the binary logs could not be decrypted, the server would crash.
Starting with this release, when the primary node fails to decrypt a binary log in this scenario, it stops iterating over the binary logs and raises an error with the ER_MASTER_FATAL_ERROR_READING_BINLOG error code with the following error message:
Got fatal error 1236 from master when reading data from binary log: 'Could not set up decryption for binlog.'With Galera, when streaming replicating is enabled by setting the wsrep_trx_fragment_size system variable, the server can crash when certain fragment sizes are specified. (MDEV-30838)
When EXPLAIN EXTENDED is executed for a single-table DELETE that contains an IN(..) predicand, the server can crash. (MDEV-31181)
When parallel replication is enabled by setting greater than 0, the replica's parallel replication worker threads could hang after hitting an error. (MDEV-30780)
In previous releases, when the server was hung in this scenario, the output of SHOW SLAVE STATUS would show that an error occurred, but the output would indicate that both the I/O and SQL threads were running.
SHOW SLAVE STATUS\G*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
..
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
..
Last_Errno: 1062
Last_Error: Could not execute Write_rows_v1 event on table TABLE_NAME; Duplicate entry 'VALUE' for key 'KEY_NAME', Error_code: 1062; handler error HA_ERR_FOUND_DUPP_KEY; the event's master log LOG_FILE, end_log_pos END_LOG_POS
..In this scenario, this issue causes one of the parallel replication worker threads to hang in the closing tables state, so the output of SHOW PROCESSLIST would show one worker thread in that state indefinitely:
SHOW PROCESSLIST;+------+--------------+--------------------+------+--------------+-------+-----------------------------------------------+------------------+----------+
| Id | User | Host | db | Command | Time | State | Info | Progress |
+------+--------------+--------------------+------+--------------+-------+-----------------------------------------------+------------------+----------+
..
| 2394 | system user | | NULL | Slave_worker | 50852 | closing tables | NULL | 0.000 |
..
+------+--------------+--------------------+------+--------------+-------+-----------------------------------------------+------------------+----------+When the optimizer chooses how to split a semi-join, the server can crash. (MDEV-31403)
With Galera, when CREATE TEMPORARY SEQUENCE is executed on a cluster node and binary logging is enabled, the server crashes. (MDEV-25045)
With Galera, when a write set fails certification and binary logging is enabled, the WSREP sequence numbers (cluster-wide transaction IDs) used by a WSREP applier thread can become out of sync with the node's XIDs (internal transaction IDs) due to a race condition, which can cause the node to crash. (MDEV-27317)
In previous releases, when a write set failed certification and binary logging was enabled, a WSREP applier thread could sync the WSREP sequence number out-of-order, because the commit order could be released too early.
With Galera, when streaming replicating is enabled by setting the wsrep_trx_fragment_size system variable and CREATE TABLE .. SELECT is executed, the server can crash. The following assertion is written to the MariaDB error log during the crash: (MDEV-30862)
Assertion `mode_ == m_high_priority' failed in void wsrep::client_state::after_applying()Starting with this release, the server prohibits CREATE TABLE .. SELECT in this scenario and raises the ER_NOT_ALLOWED_COMMAND error code with the following error message:
ERROR 42000: CREATE TABLE AS SELECT is not supported with streaming replicationWith Galera, when a connection uses the handler interface to start a transaction on a table, the server can crash when the client disconnects. (MDEV-30955) In previous releases, when the client disconnected, the server would rollback the transaction and release all locks, including the locks that the handler interface expected to survive after the transaction ended, which would cause the server to crash.
In previous releases, the following assertion is written to the MariaDB error log during the crash:
void close_thread_table(THD*, TABLE**): Assertion `thd->mdl_context.is_lock_owner(MDL_key::TABLE, table->s->db.str, table->s->table_name.str, MDL_SHARED)' failed.With Galera, when an SST donor changes to the non-primary state, the SST is not terminated properly, and the donor node crashes. (MENT-1708)
In previous releases, the following error message and assertion is written to the MariaDB error log during the crash:
[Warning] WSREP: server: NODE_NAME unallowed state transition: connected -> joined
void wsrep::server_state::state(wsrep::unique_lock<wsrep::mutex>&, wsrep::server_state::state): Assertion `0' failed.When a query is executed that uses DISTINCT and an aggregate function on a group, the server can crash. (MDEV-31113)
When a server-side prepared statement is used to execute a query that references views and contains a HAVING clause, the server can crash upon second execution of the query. (MDEV-31189)
When the InnoDB purge thread tries to use the change buffer for an uncommitted index, the server aborts with an assertion. (MDEV-30076)
When the rowid_filtering optimization is used with a partitioned table, the server aborts with an assertion. (MDEV-30596)
With Galera, a hang can occur in "starting" commit state due a deadlock between a KILL command and an abort issued by an applier. (MENT-1855)
Starting with this release, Total Order Isolation (TOI) is not used for the KILL command.
When a backup is prepared with mariadb-backup, the utility can hang due to a race condition between the thread flushing the buffer pool and the thread deleting the redo log file. (MDEV-30860)
With Galera, when a transaction changes multiple tables that use different storage engines, some of which support the server's internal 2-phase commit protocol and some of which don't support it, the node crashes with an assertion failure. (MDEV-30804)
In previous releases, the following assertion failure is written to the MariaDB error log during the crash in this scenario:
int wsrep::transaction::ordered_commit(): Assertion `state() == s_committing' failed.Starting with this release, when Galera is enabled, mixed transactions are rejected in with the following error message:
ERROR HY000: Transactional commit not supported by involved engine(s)When InnoDB uses a lot of memory during crash recovery, the server can hang due to a race condition between the thread flushing the buffer pool and the thread performing the recovery. (MDEV-30551)
With Galera, when streaming replicating is enabled by setting the wsrep_trx_fragment_size system variable, the server can crash when backup locks or user-level locks are released. (MDEV-25037)
With the InnoDB storage engine, when innodb_undo_log_truncate=ON is set, the server can hang. (MDEV-31343)
When processing a query with the , if the query uses in its FROM list a reference to a mergeable view, defined as SELECT, for more than one table that contains an ORDER BY clause, the server can crash. (MDEV-31162)
When an InnoDB table uses ROW_FORMAT=COMPRESSED, the server can hang when splitting a page. (MDEV-31158)
When processing a query executing the on a mergeable view with ORDER BY, under certain conditions checked in the preparation phase, it may be decided to materialize the view rather than merging it. In this case, the derived field of the TABLE_LIST structure created for the view remained equal to 0. As a result, the guard condition preventing range parsing for materialized views did not work as expected, causing the server to crash. (MDEV-31143)
When DDL is performed on an InnoDB table, the server can hang due to a deadlock between the DDL operation and the purge of InnoDB history. (MDEV-31132)
When processing a query executing the on a view, the server can crash. (MDEV-31073)
With the InnoDB storage engine, can cause I/O errors if the number of data files exceeds the limit specified in the . (MDEV-31049)
When InnoDB tablespace encryption is enabled and is executed, the server can crash due to a race condition between the background drop thread and the background encryption threads. (MDEV-29273)
With the InnoDB storage engine, a race condition between DDL and on a full-text table could cause the server to crash. (MDEV-25984)
With Galera, when XA transactions are used, the cluster node can crash. (MENT-1733, MENT-1737)
When creating a backup with mariadb-backup, the server can crash if the InnoDB system tablespace (default ibdata1) is very large. (MENT-1703)
ith Galera, when is executed on a node, the server can crash due to metadata lock conflicts between WSREP threads. (MDEV-30303)
In previous releases, the following log message would be reported in the log prior to the crash:
[Note] WSREP: MDL BF-BF conflict
[ERROR] AbortingWhen EXPLAIN EXTENDED is executed for a multi-table UPDATE that uses the system join type, the output can be incorrect. (MDEV-31224)
When a query specifies DISTINCT and contains expressions using the , the wrong results are returned. (MDEV-20057)
When a view's definition contains a HAVING clause, selecting from the view can fail with an error. (MDEV-28570)
In previous releases, queries could raise an error with the ER_VIEW_INVALID error code and the following error message:
View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use themWhen a view's definition contains an aggregate function, selecting from the view can fail with an error. (MDEV-28571)
In previous releases, queries could raise an error with the ER_INVALID_GROUP_FUNC_USE error code and the following error message:
ERROR 1111 (HY000): Invalid use of group functionWhen a view's definition contains a table-value constructor (TVC) as a single-value subquery, selecting from the view can fail with an error. (MDEV-28603)
In previous releases, queries could raise an error with the ER_VIEW_INVALID error code and the following error message:
View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use themWhen a view's definition contains an aggregate function in an uncorrelated subquery, the wrong result is returned. (MDEV-29224)
When a DELETE statement contains a subquery with a HAVING clause or an aggregate function in the WHERE clause, the statement can fail with an error. (MDEV-30586)
In previous releases, queries could raise an error with the ER_INVALID_GROUP_FUNC_USE error code and the following error message:
ERROR 1111 (HY000): Invalid use of group functionWhen an InnoDB tablespace has been discarded, selecting from fails with an error. (MDEV-30615)
In previous releases, an error with the ER_UNKNOWN_ERROR error code is raised:
ERROR 1105 (HY000): Unknown errorStarting with this release, no error is returned, and the results contain NULL for the PAGE_NO and SPACE columns for discarded tablespaces.
When innodb_undo_directory is set to a relative path, the path is not properly used by mariadb-backup --copy-back. (MDEV-28187)
In previous releases, the undo logs would be copied to the relative path compared to the current working directory.
Starting with this release, the undo logs are copied to the relative path compared to the .
When UNIX_TIMESTAMP(CURRENT_TIME()) is executed, the incorrect value is returned. (MDEV-26765)
In previous releases, NULL is returned.
With Galera, when wsrep_sst_method='mariadb-backup' is set, systemd raises an error about a mismatched PID. (MDEV-25887)
In previous releases, systemd could raise the following error, where BACKUP_PID is the PID of MariaDB Enterprise Backup and SERVER_PID is the PID of MariaDB Enterprise Server:
Got notification message from PID BACKUP_PID, but reception only permitted for main PID SERVER_PIDWhen an UPDATE contains a WHERE clause that contains a range condition over a non-indexed VARCHAR column, an error is raised. (MDEV-20773)
In previous releases, an error with the ER_DATA_TOO_LONG error code is raised with the following error message:
ERROR 1406 (22001): Data too long for column 'COLUMN_NAME' at row 1When is greater than 0 and SHOW SLAVE STATUS is executed, the connection can try to acquire an uninitialized mutex. (MDEV-30620)
In previous releases, a race condition could cause the mutexes of parallel replication worker threads to be acquired before they are initialized.
The ucs2_general_mysql500_ci collation, which is intended for compatibility with older versions of MySQL, incorrectly sorts 'ß' after 's'. (MDEV-30746)
When EXPLAIN EXTENDED is executed with an INSERT, UPDATE, DELETE, or REPLACE, a warning containing the query text is not printed. (MDEV-30539)
The rowid_filtering optimization is applied incorrectly in some cases. (MDEV-30218)
When preparing a partial backup, MariaDB Enterprise Backup raises error messages about missing InnoDB tablespace files that are expected to be missing, because they were excluded from the backup. (MDEV-29050)
When InnoDB writes data from the doublewrite buffer to the redo log file, the is not properly incremented. (MDEV-31124)
Parallel replication breaks if XA PREPARE fails updating replica GTID State (MDEV-31038)
When InnoDB has opened more data files than innodb_open_files, opening additional data files takes longer than expected due to a performance regression. (MDEV-30775)
When the is called with a key value that includes a double quote, the double quote character is not escaped. (MDEV-30412)
With optimizer_switch='not_null_range_scan=on', when a LEFT JOIN is executed on an empty table, the results can be incorrect. (MDEV-30333)
When a query contains a GROUP BY clause and the query calls an aggregate function on a table's primary key, the results can be incorrect if the GROUP BY clause is evaluated using an index. (MDEV-30605)
With Galera, when a cluster node has the query cache enabled and the node has regular MariaDB replication configured, query cache entries are not properly invalidated when tables are changed due to replication. (MDEV-28641)
When a backup is created with mariadb-backup, the utility opens the aria_log_control file in read/write mode instead of in read-only mode. (MENT-1794)
When INSERT .. SELECT is executed with a full-text index present, all other commits during the commit hang. (MDEV-30996)
In , undo tablespaces are shown with incorrect names. (MDEV-30870)
In previous releases, the names would be .undo00N
Starting with this release, the names are innodb_undo00N
Incorrect memory management during a commit operation on tables that contain a full-text index. (MDEV-30341)
When SELECT DISTINCT .. WITH TIES is executed using index, it produces incorrect results. (MDEV-30324)
When a bulk insert into an InnoDB table is performed, the transaction savepoint is not released. (MDEV-29975)
When foreign key checks and unique checks are disabled during an InnoDB bulk insert operation, ER_KEY_NOT_FOUND errors are sporadically raised. (MDEV-29545)
When an is executed on an InnoDB table, transactions can hang due to a race condition. (MDEV-27701)
With parallel replication, performance schema can contain inconsistent details about worker threads when the worker threads are starting up. (MDEV-26071)
When using the InnoDB storage engine, the execution of queries that use secondary indexes may slow down significantly. (MDEV-30357)
Prior to this release (starting with 10.6.8), the performance of queries using secondary indexes could be affected by code that implements locking reads from secondary indexes.
Starting with this release, the condition that was causing the performance degradation has been removed, so locking transactions that did not modify any persistent tables can have a transaction ID of 0
After writing to InnoDB temporary tables, space in the InnoDB temporary tablespace is not reclaimed. (MDEV-26782)
When innodb_adaptive_flushing is enabled, adaptive flushing is not always invoked after crossing innodb_adaptive_flushing_lwm. (MDEV-26055)
When creating a backup with mariadb-backup, the utility can fail to copy the Aria log file when there is a gap in logs. (MENT-1587)
In previous releases, the backup log could contain messages like the following:
Found aria log file: aria_log.00000001, current: 1, min: 1, max: 1
Found aria log file: aria_log.00000004, current: 4, min: 1, max: 4
Found 4 aria log files, minimum log number 1, maximum log number 4, last log number 4
Stop scanning aria tables.
..
error: cannot open file ./aria_log.00000002
Error: copy_file() failed.
Error on copying ./aria_log.00000002 aria log file.
Skip copying 3 aria log file due to error
Skip copying 4 aria log file due to errorsystem variable added.
system variable default value changed from None to OFF
innodb_buffer_pool_filename system variable dynamic changed from Yes to No
status variable added.
mariadb-backup --aria-log-dir-path command-line option added.
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 10.6.14-9 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Windows packages are not currently available for this release.
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see MariaDB Corporation Engineering Policies".
This twelfth release of MariaDB Enterprise Server 10.4 is a maintenance release. This release includes a variety of fixes.
MariaDB Enterprise Server 10.4.19-12 was released on 2021-06-14.
CVE (with link)
CVSS base score
4.9
4.9
New function calculates the spherical distance between two geometries (point or multipoint) on a sphere. (MDEV-13467)
Galera updated to 26.4.8
Issue deprecation warnings for values none, innodb, strict_none, strict_innodb (MDEV-25106)
MariaDB Enterprise Cluster avoids unnecessary rollbacks with streaming replication. (MDEV-25553)
Improved TLS/SSL error reporting. (MDEV-21730)
fails to rename a column in table and causes server to crash. table is not accessible after restart. (MDEV-24763)
Table corruption ER_NO_SUCH_TABLE_IN_ENGINE or ER_CRASHED_ON_USAGE after ALTER on table with foreign key. (MDEV-24532)
MariaDB Enterprise Backup deletes the current source file after a No space left on device error, before exiting. Only the incomplete target file is still available. (MDEV-25221)
Possible corruption in online for with ROW_FORMAT=REDUNDANT (MDEV-24730)
DELETE HISTORY may delete current data on . (MDEV-25468)
Encrypted transactional tables remain corrupt after crash recovery, automatic repair does not work. (MDEV-17913)
Possible hang when KILL CONNECTION or KILL QUERY is used with MariaDB Enterprise Cluster and a multi-master setup (MDEV-18874)
Possible memory corruption with MariaDB Enterprise Cluster when inserting values bigger than 4096 bytes into variable-length fields (, , , and related types). (MDEV-24978)
fails on compressed tables. (MDEV-25121)
Server crashes in check_grant upon invoking function with enabled. (MDEV-25242)
MariaDB Client crashes when is set and is undefined. (MDEV-24879)
Possible Server crash when . Only seen when using a table space per table and if the tablespace size is increased at the time of the drop. (MDEV-20648)
Possible server hang with and indexed virtual columns after an error with , , on virtual columns. (MDEV-24786)
MariaDB Enterprise Cluster conflict resolution issues. (MDEV-24923)
Index count mismatch due to aborted FULLTEXT INDEX (MDEV-25200)
MariaDB Enterprise Cluster node crashes when inserting a row into a table that contains a virtual column and does not have a primary key. (MDEV-25047)
Server crashes when fails to add a new index on a new virtual column and a concurrent connection executes a query that accesses the freed virtual column. (MDEV-24971)
subquery with correlation in ON expression crashes. (MDEV-25407)
Server crashes in row_undo_mod_clust_low upon rollback of read-only transaction. (MDEV-25457)
Server crashes on the second execution of a stored procedure when the stored procedure uses an invalid multi-table statement to update a view. (MDEV-24823)
startup hangs when a recovered transaction exists for the or system tables and a DDL transaction needs to be rolled back. (MDEV-25503)
Server crashes when tries to fetch data from table containing a FULLTEXT INDEX and the table's tablespace was discarded. (MDEV-25536)
Server crashes on when a WHERE condition references a derived table. (MDEV-21603)
Potential hang in purge when virtual indexed columns exist. (MENT-1203)
After or , change buffer entries for secondary indexes are lost on restart. (MENT-1217)
Crash with nested table value constructors. (MDEV-22786)
Server crashes when an aggregate function is called on a table value constructed with the or VALUE() functions. (MDEV-24919)
Server crashes when a statement has a subquery that references a table value constructed with the or VALUE() functions. (MDEV-24910)
Server crashes when a statement has an clause that references the UNION of two table values constructed with the VALUES() or VALUE() functions. (MDEV-24840)
Possible memory corruption or crash if a table definition is evicted from the cache during a transaction commit. (MDEV-24811)
Server crashes when the function is called on a column. (MDEV-22703, MDEV-24958, MDEV-24942)
Server crashes when a statement queries an table and uses a JOIN (MDEV-24929)
Server crash in optimize_schema_tables_memory_usage after from (MDEV-24868)
Server crashes when a FULLTEXT INDEX is added to an table and the tablespace for the table was previously discarded. (MDEV-25070)
Server crashes when the optimizer incorrectly removes a GROUP BY from a subquery, because the column is specified in both the list and the GROUP BY list. (MDEV-24925)
Server crashes when a statement has a subquery in the FROM clause that contains a GROUP BY clause and multiple indexes are used: one index is used to resolve the GROUP BY clause and another index is used for the LATERAL DERIVED optimization. (MDEV-23723)
Crash with .. with non-existing field in ON condition. (MDEV-25206)
Server crashes due to an assertion with multi-master workloads on MariaDB Enterprise Cluster when is disabled and a conflicting transaction is aborted for a higher priority transaction. (MDEV-24954)
Possible hang when KILL CONNECTION or KILL QUERY is used with MariaDB Enterprise Cluster and a multi-master setup. (MDEV-24967)
Possible memory corruption when streaming replication is used for MariaDB Enterprise Cluster. (MDEV-24964)
MariaDB Enterprise Cluster node crashes when the system table is truncated. (MDEV-24865)
MariaDB Enterprise Cluster node crashes when wsrep_provider_options set to NULL (MDEV-24856)
Server crashes when a column is dropped from an table with the INSTANT algorithm. (MDEV-25057)
MariaDB Enterprise Cluster node crashes when CREATE TABLE t1 ( .. ) SELECT .. FROM t2 is executed where t1 is an table and t2 is a non-InnoDB table. (MDEV-21697)
MariaDB Enterprise Cluster node crashes when an uncommitted transaction is replicated using streaming replication while wsrep_on is enabled and the transaction is committed while wsrep_on is disabled. (MDEV-25226)
Server crashes with MariaDB Enterprise Cluster when a non-InnoDB table is locked with the LOCK TABLE statement and a concurrent connections executes that references the same table. (MDEV-22227)
Possible server crash after failing instant on secondary indexes. (MDEV-25360)
Server crashes in thd_clear_errors() (MDEV-23542)
MariaDB Enterprise Backup crashes when called without parameters on Windows. (MDEV-24106)
Server crashes during crash recovery when freed pages exist in the tablespace of an encrypted table. Also affects [[mariadb-backup|MariaDB Enterprise Backup]] during --prepare (MDEV-24792)
MariaDB Enterprise Cluster conflict resolution issues. (MDEV-25579, MDEV-24980, MDEV-25378)
SUMcolumn from a derived table returns invalid values. ([MDEV-23291](https://jira.mariadb.org/browse/MDEV-23291))
returns an incorrect result. (MDEV-24790)
Incorrect behavior of when it is executed as a prepared statement. (MDEV-24860)
Query returns a ER_BAD_FIELD_ERROR error when a subquery contains a JOIN with an ON clause that references an outer column. (MDEV-25002)
Query returns a ER_BAD_FIELD_ERROR error when a Common Table Expression (CTE) contains a UNION (MDEV-24597)
Query returns wrong result when the or aggregate functions are used and the aggregated column is indexed. (MDEV-25112)
Wrong result (extra rows and wrong values) with incremental block nested loop hash. (MDEV-21104)
Query returns wrong results when a JOIN is evaluated using the Block Nested Loop Hash (BLNH) optimization with a compound index. (MDEV-24767)
Server fails to start using mysqld_multi with mysqld_safe options. (MDEV-21039)
Duplicate key may be generated during MariaDB Enterprise Cluster configuration change. (MDEV-24853)
State snapshot transfer (SST) for MariaDB Enterprise Cluster using [[mariadb-backup|MariaDB Enterprise Backup]] fails when the --log-bin option was set on the command-line with no value at server startup. (MDEV-24903)
Race condition between persistent statistics and or TRUNCATE (MDEV-25051)
Race condition between and STATS_AUTO_RECALC (MDEV-10682)
Incorrect message about field length is written to the when is executed on an table. (MDEV-24748)
No error is returned when the optimizer removes a redundant part of a subquery that contains an unknown table alias. For example, if the optimizer removes a redundant GROUP BY clause from an subquery, unknown table aliases in the redundant part are ignored. (MDEV-23449)
Selectivity shown with in field "filter" is incorrect for columns. (MDEV-22583)
Histogram statistics are used even with optimizer_use_condition_selectivity=3 (MDEV-19474)
shows nonsensical value for key_len with type=index (MDEV-11172)
SSL connection fails when server and client certs are signed by same CA. (MDEV-23740)
Wrong function name in error messages upon call. (MDEV-25272)
[[mariadb-backup|MariaDB Enterprise Backup]] fails --prepare on large backup. (MDEV-24197)
State snapshot transfer (SST) for MariaDB Enterprise Cluster using [[mariadb-backup|MariaDB Enterprise Backup]] fails when the password for the backup user is set via the MYSQL_PWD environment variable. (MDEV-25321)
State snapshot transfer (SST) for MariaDB Enterprise Cluster using [[mariadb-backup|MariaDB Enterprise Backup]] fails when the --innodb option was set on the command-line at server startup. (MDEV-25328)
An extra warning is returned when the EXPLAIN EXTENDED statement is executed in a prepared statement. (MDEV-25108)
Complex query in stored procedure returns wrong results. (MDEV-25182)
wrongly checks for field's default value if AFTER is used. (MDEV-25403)
Incorrect name resolution for subqueries in ON expressions. (MDEV-25362)
When is executed, a race condition between group commit and binary log rotation causes the old binary log file to become obsolete before the group commit has been written to it. (MDEV-24526)
[[mariadb-backup|MariaDB Enterprise Backup]] logs an error instead of a warning when it reads an invalid log block checksum during a --backup. (MDEV-25456)
Rows are wrongly omitted when an index is read using Multiversion Concurrency Control (MVCC). (MDEV-25459)
aborts after failed into table with virtual column. (MDEV-24583)
fails to fetch index type when index mismatch happens. (MDEV-22928)
MariaDB Enterprise Cluster silently enables Monitor output and never disables it when a wsrep slave thread tries to perform a brute-force (BF) kill, but fails due to a long lock wait. (MDEV-25319)
causes "Ignoring data file ... with space ID xxxx, since the redo log references ... with space ID xxxx." for [[mariadb-backup|MariaDB Enterprise Backup]]. (MDEV-25568)
The Replication Heartbeat binary log event (Heartbeat_log_event) uses 4 bytes to store the log position within the current binary log file, so the log position overflows when the binary log file size exceeds 4 GB. (MDEV-16146)
spatial indexes miss large geometry fields. (MENT-1205)
Table alias from previous statement interferes with later commands. (MENT-1200)
statement does not show details about sub-queries when the primary table is a table value constructed with the or VALUE() functions. (MDEV-24936)
JOIN of a materialized derived table returns wrong result when the split_materialized optimization is enabled. (MDEV-25128)
Uninitialized value upon CREATE .. SELECT .. VALUE and variety of resulting errors with different engines. (MDEV-24710)
Dropping primary key column from a always fails with Error 1072 (MDEV-24690)
ALTER TABLE .. ADD COLUMN .. AS ROW START returns misleading ER_VERS_DUPLICATE_ROW_START_END error. (MDEV-25172)
Unexpected ER_DUP_ENTRY error when the Primary Key column is dropped from a . (MDEV-25327)
doesn't work properly with semi-sync replication. (MDEV-24773)
Sequence created by one connection remains invisible to another. (MDEV-24545)
routine_definition in loses tablename if it starts with an _ and is not backticked. (MDEV-25501)
JOIN of a derived table using an aggregation function returns incorrect results. (MENT-1210)
Server temporarily consumes extra 4 GB of memory every time the table is queried. (MDEV-24975)
not replicated with MariaDB Enterprise Cluster. (MDEV-24956)
The setting can result in unexpected warnings when using MariaDB Enterprise Cluster. (MDEV-21402)
The statement fails with ER_MUST_CHANGE_PASSWORD when the statement is executed in a prepared statement and the user's password is expired. (MDEV-25197)
MariaDB Enterprise Cluster FLUSH SSL command doesn't reload wsrep cert. (MENT-1089)
State snapshot transfer (SST) for MariaDB Enterprise Cluster using causes shutdown of donor node to fail. (MDEV-25423)
returns The connect info 'tab' for table is too long when creating a Spider Table. (MDEV-22265)
garbd has connection issues. (MENT-1168)
Galera startup log shows data load error when enabling server audit log through configuration file. (MENT-1196)
Missing libsepol dependency on SLES 12 and SLES 15. (MENT-1163)
caching_sha2_password.so isn't included in Debian packages. (MDEV-24728)
mariadb-backup command-line option added
mariadb_repo_setup --skip-check-installed command-line option added
function added
In alignment with the enterprise lifecycle, MariaDB Enterprise Server 10.4.19-12 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64 Red Hat Enterprise Linux 8 packages)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see MariaDB Corporation Engineering Policies"..
MariaDB Enterprise Server 10.5.22-16 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2023-09-11
MariaDB Enterprise Server 10.5.22-16 is a maintenance release of 10.5. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.22-16 was released on 2023-09-11.
has been backported. (MENT-1853)
The JSON_OVERLAPS() function can be used to compare two JSON documents to determine if they have any key-value pairs or array elements in common.
has been backported. (MENT-1796)
The JSON_SCHEMA_VALID() function can be used to validate a JSON document against a JSON schema, as documented by the .
This function can also be used in a CHECK constraint to verify that JSON documents are only stored in the database if they include required items and that the values are within a given range and length.
The package for the cracklib_password_check plugin includes an SELinux policy, allowing the plugin to work with SELinux. ()
With Optimizer Trace, a sel_arg_alloc_limit_hit record is written when MAX_SEL_ARGS is reached. ()
MAX_SEL_ARGS is one of the limits in the optimizer that triggers short-cut of time-intensive or memory-intensive analysis for complex WHERE clauses.
For example:
ANALYZE FORMAT=JSON output includes InnoDB statistics. ()
For example:
Slow query log output includes InnoDB engine information. ()
InnoDB engine information output is enabled with --log-slow-verbosity=innodb
Sample output:
For the Spider storage engine, the default values and behavior of some system variables has changed: ()
Prior to this release:
These variables used a value of -1 (the default) to indicate that Spider would use the default table value, and this value was not user visible.
Spider table parameters could set values, but these values would be overridden with the system variable value if the system variable was set to a value other than -1.
Starting with this release
The default value for these system variables has been updated to reflect the actual default table value, rather than -1.
Where a value is set by a table parameter, this value overrides the system default and the value set by Spider system variable.
If a table parameter is not set, the Spider system variable's value is used. This behavior is unchanged.
See "Interface Changes" for a full list of updated default values.
With InnoDB storage engine, when innodb_undo_log_truncate=ON, performing a recovery can result in a corrupted undo log. ()
With InnoDB storage engine, when database encryption is enabled only on a replica, InnoDB pages can be corrupted. (, )
With InnoDB storage engine, when innodb_undo_log_truncate=ON, backup and recovery can fail. ()
With InnoDB storage engine, if two MariaDB Server instances using InnoDB are started with the same data directory there can be data loss. ()
With Aria storage engine, when Aria encryption is enabled and used but an encryption plugin is not loaded, the server can crash. ()
With Galera Cluster, when wsrep_sst_donor and wsrep_cluster_address are set to NULL rather than an empty string, the server can crash. ()
When optimizer_switch='optimize_join_buffer_size=off' is set, the server can crash. ()
When executing a SELECT query using an index for GROUP BY and filesort, the server can crash. ()
With MariaDB Connector/C, when the mysql_list_fields() function is called against a view, the server can crash. ()
With Aria storage engine, changing aria_sort_buffer_size settings to huge numbers and executing INSERT/UPDATE can result in a crash. ()
With InnoDB storage engine, when slave_parallel_mode is optimistic and slave_parallel_threads is greater than 0, an ALTER SEQUENCE can fail with an out-of-order binlog error if the SEQUENCE uses InnoDB. ()
Prior to this release, the following error can be raised:Last_Error: Error 'An attempt was made to binlog GTID 0-1-100 which would create an out-of-order sequence number with existing GTID 0-1-100 and gtid stric mode is enabled' on query. Default database: 'test'. Query: 'alter sequence s1 restart with 1' will be shown.
With SQL_MODE=ORACLE, a memory leak can occur on shutdown. ()
Queries in the form SELECT DISTINCT function_returning_string(aggregate_func(...)) ... GROUP BY ... could produce an assertion failure or wrong result. ()
With InnoDB storage engine, InnoDB can purge history too early, causing crash on undo record access in MVCC read. ()
With InnoDB storage engine, when executing a statement that rebuilds an InnoDB table (such as TRUNCATE TABLE, OPTIMIZE TABLE, ALTER TABLE, or as part of executing innodb_undo_log_truncate=ON), the server can hang. ()
With InnoDB storage engine, when a BINARY(0) or VARBINARY(0) column in an InnoDB table is indexed, the server can crash. ()
Setting session_track_system_variables globally to an invalid value can cause the server to crash. ()
Replication from an older MariaDB Server version to a newer MariaDB Server version can break, and the server may crash. (MENT-1935)
A mismatch in hash values was caused by use of different hash functions, causing rows in tables having explicit or implicit unique hash indexes to be treated as different rows between different versions of MariaDB Server even though the data in the rows was the same.
For a System Versioned table with non-versioned columns, if the initial INSERT includes a versioned column, an "on duplicate key update" for the non-versioned column generates a history record. ()
With Spider storage engine, setting a system variable overrides the value set as a table parameter. ()
The "pam_user_map" module does not correctly handle usernames or group names containing the "@" character. ()
With some Unicode collations, JSON functions can return incorrect results. ()
With sql_mode=ORACLE, information_schema.ROUTINES.ROUTINE_DEFINITION does not correctly contain the PACKAGE or PACKAGE BODY ()
Stored routines with ROW variables set by subselects can produce incorrect results. ()
Integer multiplication, DIV, MOD, or ROUND/TRUNCATE could return unexpected results when an argument is evaluated as -9223372036854775808 ()
With Galera Cluster, when using a KILL QUERY statement on a Galera node that executes user transactions, GTID sequence drift can occur between writer and appliers nodes. At the same time, data consistency is maintained and wsrep_last_committed is in sync. ()
With Galera Cluster, creating a TEMPORARY SEQUENCE can cause inconsistency. ()
With Galera Cluster, the state of the cluster can only be retrieved from the primary component. ()
information_schema.PARAMETERS can include outdated data when a stored routine is changed in one session while the stored routine is being used in a second session. ()
Queries that use multiple RANK window functions can produce the wrong result. ()
Queries that use the < "less than" operator to compare a string with a prefixed BLOB key produce the wrong result. ()
Recursive CTE execution is interrupted without errors or warnings when max_recursive_iterations is reached. ()
Starting with this release, a warning occurs when max_recursive_iterations is reached:
Warning 1931 Query execution was interrupted. The query exceeded max_recursive_iterations = 1000. The query result may be incomplete.
On Microsoft Windows, when lower_case_table_names=2, SHOW TABLES does not work properly. ()
When the system is busy, STOP REPLICA can take a long time. ()
With parallel replication, Seconds_Behind_Master can show a wrong value. ()
With replication for System Versioned tables, having a parent table and a child table WITH SYSTEM VERSIONING where child table has a Foreign Key CASCADE generates orphan rows on replica. ()
With replication, when in read-only mode, XA COMMIT/XA ROLLBACK on the replica fails to return an error. ()
mariadb-dump --force can stop with the error Couldn't execute 'SHOW CREATE FUNCTION object': even though --force should cause the error to be ignored. ()
A query using DISTINCT, LIMIT with offset, and subselect to join tables produces an unexpected result. ()
With the ColumnStore storage engine and Federated storage engine, ANALYZE can return the incorrect value 0 for r_rows ()
With InnoDB storage engine, SET GLOBAL innodb_undo_log_truncate=ON does not free space when no undo logs exist. ()
With InnoDB storage engine, freed data pages are not always scrubbed. ()
With InnoDB storage engine, when setting innodb_open_files to a number lower than the number of tables used, an error can be shown in the server log and the operation will be aborted. ()
ALTER TABLE .. MODIFY COLUMN can break foreign key constraints and lead to unrestorable dumps. ()
With InnoDB storage engine, three concurrent DELETE by a UNIQUE key can cause an unexpected deadlock. ()
With InnoDB storage engine, innochecksum fails with Floating point exception error. ()
With HashiCorp key management plugin, possible memory leaks. (MENT-1874)
Using functions MAX() or MIN() with functions ROUND(time), CEILING(time), or FLOOR(time) as an argument can return wrong results. ()
For transaction precise System Versioned tables, UPDATE can return an unexpected error: ERROR 1761 (23000): Foreign key constraint for table 'xxx', record 'yyy' would lead to a duplicate entry in table 'xxx', key 'PRIMARY' ()
Assertion const_item_cache == true failed in Item_func::fix_fields when a flow control statement (such as IF()) was used in a generated column. ()
Creating a table with a foreign key (with a cascade action) defined on a base column of a virtual column is not rejected. (, )
Starting with this release, it is no longer possible to create STORED generated columns and CHECK constraints when values of the affected columns can be changed by foreign key constraint actions, such as SET NULL or ON UPDATE CASCADE.
Starting with this release, this results in an error like: ERROR 1901 (HY000): Function or expression 'f_id' cannot be used in the GENERATED ALWAYS AS clause of 'v_id'
Starting with this release, for existing tables with STORED generated columns, SET NULL and ON UPDATE CASCADE are ignored.
With partitioning, possible slow down of queries. ()
With InnoDB storage engine, linear read-ahead (controlled by the innodb_read_ahead_threshold system variable) does not work as expected. This can impact performance of mariadb-dump and some queries that perform a full table scan. ()
system variable maximum value changed from 9223372036854775807 to 1152921504606846975 ()
system variable minimum value changed from 4096 to 16376 ()
error code added (MENT-1796)
error code added (MENT-1796)
error code removed ()
error code added ()
error code removed
error code added
function added (MENT-1853)
function added (MENT-1796)
system variable maximum value changed from 18446744073709551615 to 1152921504606846975 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 2 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 100 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 16000 ()
system variable default value changed from -1 to 16000 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 16000 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 6 ()
system variable default value changed from -1 to 2 ()
system variable default value changed from -1 to 51 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 2 ()
system variable default value changed from -1 to 2 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 0 ()
System Variable system variable default value changed from -1 to 9223372036854775807 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 1024 ()
system variable default value changed from -1 to 9223372036854775807 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 32767 ()
system variable default value changed from -1 to 100 ()
system variable default value changed from -1 to 600 ()
system variable default value changed from -1 to 600 ()
system variable default value changed from -1 to 3 ()
system variable default value changed from -1 to 10485760 ()
system variable default value changed from -1 to 1024 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 2 ()
system variable default value changed from -1 to 9223372036854775807 ()
system variable default value changed from 1 to 0 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 9223372036854775807 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 2 ()
system variable default value changed from -1 to 10 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 10 ()
system variable default value changed from -1 to 100 ()
system variable default value changed from -1 to 3000 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 1 ()
In alignment with the , MariaDB Enterprise Server 10.5.22-16 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
MariaDB Enterprise Server 10.5.8-5 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2020-12-14
This fifth release of 10.5 is a maintenance release. This release includes security fixes.
MariaDB Enterprise Server 10.5.8-5 was released on 2020-12-14.
#1:
MariaDB CVEs are assigned a word rating instead of a CVSS base score. See the for details.
A new privilege has been introduced with this version to fix a problem when upgrading to 10.5. A replica user couldn't run . Upgrades from 10.4 to 10.5 now adjust the privileges automatically. The new privilege needs to be added manually for a replica user when updating from an earlier 10.5 version. For more information on MariaDB Enterprise Server 10.5 privileges, see "Privileges Comparison ES10.4 and ES10.5.8-5".
Users of MariaDB MaxScale's MariaDB Monitor upgrading from a prior version of MariaDB Enterprise Server 10.5 who have used the new 10.5 privileges must ensure the updated privilege has been granted to the MaxScale user and Replication user. For detailed privilege information, see Configuring MariaDB Monitor's User Account.
Galera wsrep library updated to 26.4.6 in .
The (not MariaDB Enterprise Audit) did not log proxy users. The new plugin version 2.0.3 introduces an event sub-type PROXY_CONNECT for event type CONNECT. ()
On connect, if a proxy user is used, an extra line will be logged: TIME,HOSTNAME,user,localhost,ID,0,PROXY_CONNECT,test,plug_dest@%,0
Better MariaDB GTID support for the option. ()
New global variable ()
The new parameter --include-unsupported for the script mariadb_es_repo_setup can be used to enable a repository of unsupported packages in the repository configuration. The repository currently includes the CONNECT Storage Engine. The storage engine can be installed by yum install MariaDB-connect-engine or apt-get install mariadb-plugin-connect-engine (MENT-1003)
MariaDB Enterprise Audit did not log proxy users. The new plugin version 2.0.3 introduces an event sub-type PROXY_CONNECT for event type CONNECT. (MENT-977)
On connect, if a proxy user is used, an extra line will be logged: TIME,HOSTNAME,user,localhost,ID,0,PROXY_CONNECT,test,plug_dest@%,0
The event type can also be used in filters "connect_event": ["CONNECT","DISCONNECT","PROXY_CONNECT"]
Performance improvements for comparisons of temporal data types with temporal literals. ()
Performance improvements for comparisons of temporal data types. ()
For MariaDB Enterprise Server on MS Windows, NTFS file metadata on NTFS is not flushed anymore, reducing the write workload I/O. ()
Improved write performance for InnoDB. (, )
The now allows you to specify a port () to connect to and to force to use HTTP (). So it is now possible to connect to other solutions which provide the same open API used for Amazon S3. ()
Performance improvements for conversions from temporal data types to string. ()
Performance improvements for handling numeric data. ()
Default changed from 1 to 0 for command line option . Benchmarking showed that the old default causes a heavy mutex contention. ()
Data corruption possible for encrypted tables if the non-default option =ON is used. (MENT-910)
Temporary tables created by the user or the system can overwrite existing files on creation. ()
Table can disappear after command if SET is used before altering a child table to remove a primary key. ()
Server crashes on an instant ALTER TABLE .. MODIFY of a column from "not null" to "null". A virtual column must exist in the table. ()
One instant including multiple RENAME for indexes can corrupt the index cache. ()
DELETE .. FOR PORTION OF statement accepts non-constant FROM .. TO clause. This contradicts the documentation and is inconsistent with the behavior of the statement. ()
Change buffer corruption when reallocating a recently freed page. ()
delayed replication can drop a table when running a master-replica setup where both master and replica are pointed at the same S3 storage. ()
An which is changing multiple rows can result in corrupted data if a WITHOUT OVERLAPS key will be modified. ()
Memory corruption for tables using a column of type in a WITHOUT OVERLAPS key. ()
persistent stats analyze forces full scan which results in a lock crash. (MENT-1024)
hang on with error message Semaphore wait has lasted > 300 seconds. (MENT-1007)
Server crash can happen on filesort with a setting for to a value lower than the default of 64 ()
Potential stack overflow in fulltext search with a complex MATCH .. AGAINST string. ()
can hang if the server goes idle after a particular kind of redo log write. ()
A server crash can occur when encryption is enabled for temporary tables () and queries use window functions. ()
A crash of MariaDB Server is possible when binary logging is activated, caused by improper raising of an error or replication checksum. ()
assertion on after [ALTER TABLE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements-and-structure/sql-statements/data-definition/alter/alter-table) .. DISCARD TABLESPACE ()
Server crashes after failed attempt to create unique key on virtual column. ()
Possible server crash when using an index on a spatial data type with InnoDB. ()
Possible server crash when a string function is used for a column of type and the string function is used in a subquery which is returning a row. ()
node can crash on high , , or load from many connections executed on the same table with foreign keys. ()
Server crashes if a query is executed on an table with a foreign key where the foreign key was removed while using . This case should result in an SQL error. ()
Recursive procedure call ends with a crash instead of SQL error. ()
fails to open the table during removal of VIRTUAL column DDL while using , due to lack of referenced index. ()
Server crash when altering a table after its tablespace has been discarded already. ()
caused a variety of non-determinism failures if the given position did not exist. ()
SET GLOBAL replicate_do_db = DEFAULT causes a crash. ()
JSON_MERGE_PATCH(json_doc, json_doc [, json_doc] ...) can crash if the first parameter is set to NULL and the second is not valid JSON. ()
Server crashes after with ON DELETE SET NULL for foreign key and a virtual column in index. ()
Server can crash on a prepared statement executed via . ()
Crash on SELECT on a table that contains indexed virtual columns. ()
Possible server crash for queries using the window function NTH_VALUE() ()
Possible crash when using Tables and partitions. ()
MariaDB Enterprise Audit crashes. (MENT-1011)
node crash with Galera message Assertion server_state_.rollback_mode() == wsrep::server_state::rm_async' failed`. in the error log. (MENT-937)
node crashes or hangs during IST if the connection between donor and joiner is unstable or if cluster configuration changes take place at the same time. (MENT-514)
crash if bulk updates are executed on Galera. ()
Server crash when while replication is not enabled (wsrep-on=OFF). ()
Server crash if function is used with a decimal_position > 30. ()
Multiple calls to a Stored Procedure from another Stored Procedure crashes server. ()
Server crash when an invalid is set. ()
Server hang if TABLE LOCK is used after BACKUP LOCK was used. ()
Server crash on table updates using FOR PORTION OF ()
Assertion on executing with a prepared statement using when is on and wsrep_osu_method is TOI ()
Server crash if a transaction is started with SET SESSION wsrep_on=1, but the global is 0 ()
crash when used with sharding and XA, and (default). ()
node can crash with an error message WSREP: MDL BF-BF conflict in the error log. The error is related to running or on tables with foreign keys. ()
If resizing the redo log to be triggered immediately before a server shutdown is initiated, and if innodb_flush_sync=0 (non default setting), the shutdown may hang because the page cleaner thread fails to finish its job. (MENT-1031)
hangs with (MENT-992)
Crash recovery fails with Error InnoDB: Missing FILE_CHECKPOINT at ... between the checkpoint ... and the end ... after restart, if the redo log size has been changed with SET GLOBAL (MENT-795)
Replica crashes upon rename of a view. ()
The server can crash when an is executed on a HEAP table using WITHOUT OVERLAPS, and the is done for a value of a compound key which is included in the WITHOUT OVERLAPS definition. ()
can return incorrect event information from the binary log, prepended with set , ;
Defining a view with SQL syntax ISNULL(ID)=0 incorrectly returns a syntax error. (MENT-1015)
reports an error that it cannot find an log file './aria_log.00000000' (MENT-907)
failure for incremental backups. ()
Aborting a query on an table with does not show an SQL error message, if the query could not be aborted. ()
Optimizer has chosen an inefficient plan, if a multi-component index, a second index, and a WHERE or ON clause with conditions over these indexes are used. ()
Some rounding has been done in an unexpected way for decimal numbers. ()
Server crashes after changing at runtime via a statement. ()
Creating a view removes parentheses on expressions from the , which results in wrong results. ()
mysql_tzinfo_to_sql under InnoDB is slow. ()
UDF cannot be uninstalled if the UDF library file doesn't exist. ()
with type DECIMAL can return an unexpected result, if the given value for "expr" includes many leading zeros. ()
replication broken if only one timezone is loaded. ()
SST donation fails, FLUSH TABLES WITH READ LOCK times out. ()
Memory leaks possible after with FOREIGN KEY ()
SST fails for if data-directory has lost+found directory. ()
caused a variety of non-determinism failures if the given position did not exist. ()
Linux AIO returned OS error 22 if parameters set to and (default). ()
CREATE OR REPLACE TRIGGER in not replicating, if a trigger with the same name already exists. ()
mysqld_multi no longer works with different server binaries. ()
Possible error for incremental backup for encrypted tablespaces. ()
Possible slow server start and stop if full text indexes are used. ()
The parentheses in a VIEW can be defined incorrectly for a combination of = and BETWEEN ()
ER_BASE64_DECODE_ERROR upon replaying binary log. ()
Several IPv6 issues with powered by Galera. (, , , , )
Subquery on information_schema fails with an error message. (MENT-1016)
AUTO_INCREMENT does not increment with compound primary key on partitioned table. (MENT-997)
CREATE TEMPORARY TABLE .. LIKE () returns error if unique index is defined in the table. ()
CREATE .. SELECT can result in empty result on join versioned table. ()
Error ERROR 4142 (HY000): SYSTEM_TIME partitions in table t1 does not support historical query upon querying a view, when that view is selecting from the versioned table with partitions. It only happens if the view itself was created using FOR SYSTEM_TIME ALL ()
Disk space not reused for Blob in data file. ()
will not dump sequence definition details on --no-data dump. ()
fails to validate corruption on a table that was corrupted by a bug related to instant ADD or DROP (fixed in MariaDB Enterprise Server 10.3.17, 10.4.7). ()
Subquery execution not terminated after LIMIT ROWS EXAMINED is exceeded. ()
Deadlock between BACKUP STAGE BLOCK_COMMIT and parallel replication. ()
Possible memory leak in galera library. ()
Wrong result of and with GROUP BY ()
Syntax error results in misleading message on about missing system table mysql.proc ()
where decimal position is 0 or 38 and num is DECIMAL(38,38) returns incorrect results. ()
A query result includes a data row twice depending on the WHERE clause used, if partitioning is used. ()
Assertion after ROLLBACK AND CHAIN ()
Replica user can't run after upgrade to 10.5. (MENT-995)
galera_new_cluster starts server as standalone instance with no warnings or errors when , although the expectation is to bootstrap a cluster. (MENT-979)
Wrong value #wsrep_provider_options="gcache.size=1024Mb" in server.cnf for wsrep_provider_options The server would not start after removing the comment. (MENT-970)
Wrongly reported SQL Error (1038): Out of sort memory for queries, where dependent subqueries use the ORDER BY clause. ()
An [ALTER TABLE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements-and-structure/sql-statements/data-definition/alter/alter-table) .. RENAME to change a column to uppercase doesn't work. ()
IN-to-subquery conversion is not visible in optimizer trace. ()
is not replicated in with Galera Replication. ()
mariadb_es_repo_setup curl failed on Ubuntu Focal if ca-certificates is not installed. Now it will prompt an error about missing ca-certificates (MENT-971)
Upgrade wizard not offered during 10.5 MSI installation on Windows. ()
This release incorporates MariaDB ColumnStore storage engine version 5.5.1.
system variable added
system variable default value changed from 1024 to 1536
system variable default value changed from 75.000000 to 90.000000
system variable added
mariadbd --innodb-lru-flush-size command-line option added
mariadbd --innodb-max-purge-lag-wait command-line option added
mariadbd --s3-port command-line option added
mariadbd --s3-use-http command-line option added
system variable maximum value changed from 200 to 1048576
user privileges added
system variable added
system variable added
In alignment with the , MariaDB Enterprise Server 10.5.8-5 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "".
MariaDB Enterprise Server 10.4.25-16 is a maintenance release of 10.4. This release includes a variety of fixes.
MariaDB Enterprise Server 10.4.25-16 was released on 2022-06-13.
MariaDB Enterprise Server enables a predictable development and operations experience through an enterprise lifecycle. These new features have been backported after reaching maturity in MariaDB Community Server:
reads data as of specific timestamp from system-versioned tables. (MENT-1457)
Added to check JSON equality. (MENT-1452)
Added to normalize JSON values. (MENT-1456)
Added . (MENT-1451)
Added Enterprise Spider ODBC support. (MENT-1092)
Spider now supports the ODBC wrapper in this release series which was previously supported in MariaDB Enterprise Server 10.5 and 10.6.
Spider/ODBC allows federated access to ODBC resources.
Galera updated to 26.4.12
Spider storage engine refuses attempts to create a temporary table since the engine cannot itself store data and cannot create temporary tables on a remote server. ()
Status variables Innodb_encryption_key_rotation_list_length, Innodb_num_index_pages_written and Innodb_num_non_index_pages_written were unused and have been removed. (, )
Starting with this release, when is set to rsync or mariadb-backup, the sst_max_binlogs SST option can be specified in the [sst] option group in configuration files. This parameter specifies the number of binary log files to be sent to the joiner node during SST. ()
The default value is 0:
If a binlog exists, it will be transferred.
If a binlog does not exist, no binlog will be transferred.
Server error messages are available in Chinese. ()
MariaDB ColumnStore support is discontinued for MariaDB Enterprise Server 10.4. (MENT-1433)
When the parser converts a string from the binary character set to a multi-byte character set (such as utf32), an invalid string could be produced. ()
When rows are inserted into an intermediate temporary table via the , and then the rows are copied from the temporary table to a persistent table, the rows are not written to binary log if is set, which prevents the operation from properly replicating to replica servers. ()
When is set, can hang. ()
Starting with this release, the has been removed.
When a replica server's I/O thread receives an incomplete event group from the primary server, the replica server continues writing events to the relay log and does not raise an error. ()
Semisync-replica server recovery fails to rollback a prepared transaction. (MENT-1534)
If a primary is shutdown during an active semi-sync connection during the period when the primary is awaiting an ACK, the primary hard kills the active communication thread and does not ensure the transaction was received by a replica. This can lead to an inconsistent replication state. ()
With MariaDB Enterprise Cluster, powered by Galera, when is set to rsync or mariadb-backup, the donor node does not transfer the correct binary logs to the joiner node with some configurations. ()
When a window function is used in the global ORDER BY clause of a SELECT statement with a UNION, the statement should be rejected, but the server executes the statement and crashes with a segmentation fault. ()
When a stored procedure queries a view and uses a for loop, the server can crash with a segmentation fault when the stored procedure is called twice in the same session. ()
When is executed on an encrypted tablespace file using the , innochecksum crashes with a segmentation fault unless the is also specified. ()
When an invalid is used inside of a or statement, the server can crash while parsing the statement. ()
When a table contains a virtual generated column that is defined using the and functions, inserting a row into the table can cause the server to crash with a segmentation fault. ()
When a non-updateable view is defined with ALGORITHM=TEMPTABLE, selecting data from the view can cause the server to crash with a segmentation fault. ()
When a UNION of decimal types is performed in an ORDER BY clause, the server can crash with a segmentation fault. ()
When a stored procedure executes a query that results in a mergeable derived table, the server can crash with a segmentation fault when the stored procedure is called twice in the same session. ()
Querying views can result in mergeable derived tables.
Using subqueries with outer references can result mergeable derived tables.
When is executed with a query that contains a subquery, the server can crash. ()
When a query using a window function with an OVER (PARTITION BY ..) or OVER (ORDER BY ..) clause is executed, the server can crash with a segmentation fault. ()
If the query also uses WITH ROLLUP, this crash is more likely.
If the query's OVER (PARTITION BY ..) or OVER (ORDER BY ..) clause uses an aggregate function, this crash is more likely.
When a query contains an outer join expression and a non-correlated subquery that the optimizer determines is low cost, executing the query can cause the server to crash if the optimizer also determines that the inner join expression can be eliminated. ()
With MariaDB Enterprise Cluster, a joiner node's binary logs could be deleted during an Incremental State Transfer (IST), which causes the node to fail to start, because it can not read the binary logs. ()
This issue is confirmed to happen with set to rsync, but it might also occur with other SST/IST methods.
ALTER TABLE on a large InnoDB table can hang. ()
Online DDL fails while checking for instant alter condition. ()
With MariaDB Enterprise Cluster (Galera), parallel async replication hangs on a Galera node when slave-parallel-threads greater than 1 is used. ()
With MariaDB Enterprise Cluster (Galera), possible crash after a conflict of the applier thread with a stored procedure call triggered by the event scheduler. ()
Server crashes when executing a shutdown statement after starting an XA transaction. ()
Possible server crash during mariadbd initialization if the number of GTIDs added since the last purge of the mysql.gtid_slave_pos tables is greater than or equal to the --gtid-cleanup-batch-size value. ()
Possible server crash if an INSERT .. SELECT or REPLACE .. SELECT statement contains an ON expression in the top-level select and this expression used a subquery with a column reference. ()
When is executed on a sequence, the server raises an , even if is set to ROW or MIXED. ()
The warning can appear in the as the following:[Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave Statement: OPTIMIZE TABLE SEQUENCE_NAME
When an or statement uses an clause, the server raises an . ()
The error can appear on the client as the following:You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column
When an uses a subquery inside an clause, the optimizer could incorrectly choose to perform a full table scan (with type: ALL) when a range scan (with type: range) would be more efficient. ()
When a table contains multiple columns with identical values, the values could become corrupt if multi-byte character sets are used. ()
When columns are read from , the server could incorrectly raise an . ()
The warning can appear on the client as the following after executing : Encountered illegal value '' when converting to DECIMAL
With , the parser allows functions to be called using PACKAGE_NAME.FUNCTION_NAME(), but the parser raises a if the function is called using DATABASE_NAME.PACKAGE_NAME.FUNCTION_NAME(). ()
When a view is used to update multiple rows of a in a single , the server incorrectly raises a . ()
The warning can appear on the client as the following after executing : View being updated does not have complete key of underlying table in it
When using with and , events from the primary server's currently active log file are not written to their respective log file specified by . ()
When a prepared statement is used to execute , a different query plan can be returned on the second execution. ()
When is enabled with semi-synchronous replication, the numbering on packet headers can become out of sync between the primary and replica servers, but the inconsistency does not have any negative impact with release builds of MariaDB Enterprise Server. ()
The server and MariaDB Enterprise Backup can raise unnecessary warnings about tablespace IDs in some scenarios. ()
The warning can appear as the following: InnoDB: Allocated tablespace ID TABLESPACE_ID for DATABASE_NAME/TABLE_NAME, old maximum was 0
This warning can be written to standard output (stdout) when preparing a backup with .
This warning can be written to the when InnoDB performs crash recovery at startup.
With MariaDB Enterprise Cluster, the joiner node fails to complete an SSwhen specifies a directory different than . ()
When a non-partitioned table using the DATA DIRECTORY clause is converted to a partitioned table, the DATA DIRECTORY clause is silently ignored, and the partitioned table is moved to the default directory. ()
Starting with this release, the server will raise the .
When a table contains an invisible column, does not produce the correct in the backup file. ()
When a Spider table is queried using IF(COUNT() ..), the server can raise an . ()
With MariaDB Enterprise Cluster, State Snapshot Transfers (SSTs) can fail on the donor nodwhen binary logs are enabled. ()
With MariaDB Enterprise Cluster, when contains an IPv6 address and is set to the default value of AUTO, State Snapshot Transfers (SST) can fail. ()
With , replication can break if a system versioned table has been created on the replica via mariadb-dump, if the original table was altered before. ()
mariadb-backup does not detect multi-source replication primary. ()
Master_SSL_Crl shows Master_SSL_CA value in SHOW SLAVE STATUS output. ()
MariaDB Audit plugin produces corrupted log entries for CONNECT events. (MENT-1438)
mariadb-dump does not create a dump where the sql_mode is set correctly for SQL/PL packages. ()
Missing binlog data for INSERT .. ON DUPLICATE KEY UPDATE ()
mariadb-backup prepare fails for incremental backups if a new schema is created after full backup. ()
Optimizer uses all partitions during an UPDATE and ignores partitioning filters. ()
When is executed and is set to MIXED, the server raises an even though the statement is written to the binary log in row-based format. ()
The warning can appear in the as the following: <<sql>>[Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe Statement: INSERT INTO TABLE_NAME VALUES (..) ON DUPLICATE KEY UPDATE KEY_NAME = KEY_VALUE<</sql* >>
When INSERT .. ON DUPLICATE KEY UPDATE is executed and binlog_row_image is set to FULL, the server does not write unchanged columns to the binary log. ()
Crash recovery fails if the configured server ID does not match the server ID in the crashed data directory. (MENT-1535)
PAM v2 plugin (auth_pam) produces zombie processes. (MENT-1443)
With MariaDB Enterprise Cluster (Galera), wsrep_incoming_addresses does not include address details. (MENT-1527)
With HashiCorp key management (hashicorp_key_management), dynamic changes to hashicorp_key_management_cache_timeout and hashicorp_key_management_cache_version_timeout system variables are ignored. (MENT-1512)
Galera snapshot transfer fails to upgrade between some major versions. ()
On Windows, MSI installer does not install client shared libraries. ()
After upgrade, mysql.plugin table has an entry for Semi-sync Replication, though this former plugin functionality is now built-in. ()
On RPM-based distributions, the Spider storage engine is distributed as a separate RPM package. (MENT-1092)
In prior releases, Spider's components were installed with the server's RPM package.
Starting with this release, Spider adds unixODBC as a dependency, so Spider has been moved to a separate RPM package to avoid adding new dependencies to the server's RPM package. For users of RPM-based distributions who loaded the Spider plugin with previous ES 10.4 releases, Spider's new RPM package and dependencies must be installed after upgrading to this release.
To install Spider's new package and dependencies on CentOS, Red Hat Enterprise Linux (RHEL), or Rocky Linux: $ sudo yum install MariaDB-spider-engine
To install Spider's new package and dependencies on SUSE Linux Enterprise Server (SLES): $ sudo zypper install MariaDB-spider-engine
When the encryption plugin is loaded, should be used to take a logical backup before all minor and major upgrades due to changes that are not backward-compatible:
Starting with this release, the rejects encryption keys that contain non-digit characters in the hex notation.
If a database is encrypted with encryption keys that only contain digit characters in the hex notation, the encryption keys will continue to work with the new version.
If a database is encrypted with encryption keys that are no longer valid, it is recommended to upgrade by installing the new version to a clean system and restoring a logical backup of the data. However, another alternative is to migrate the system to a new encryption key that only contains digit characters in the hex notation prior to the upgrade. If the alternative route is taken, extra care must be taken to ensure that all encrypted data uses the new encryption key. For help with this process, contact .
When performing minor and major upgrades on Debian and Ubuntu, a logical backup must be taken before upgrading the server and plugin packages. When the old packages are upgraded, a message about plugin incompatibility is printed, but the server and plugin packages are upgraded anyway.
When performing minor upgrades on CentOS, RHEL, Rocky Linux, and SUSE, a logical backup can be taken before or after upgrading the server package. When the old packages are upgraded, a message about plugin incompatibility is printed, and the server package is upgraded, but the plugin package is not. The old plugin package must be manually removed, and then the new plugin package can be installed.
When performing major upgrades on CentOS, RHEL, Rocky Linux, and SUSE, a logical backup must be taken before upgrading the server and plugin packages. The old server and plugin packages must be manually removed, and then the new server and plugin packages can be installed.
When the plugin package is manually removed, the plugin configuration file can also be removed, so it is recommended to backup the file.
system variable added
system variable removed
status variable removed
status variable removed
status variable removed
function added
function added
mariadb-backup --sst-max-binlogs command-line option added
mysqld --hashicorp-key-management-check-kv-version command-line option added
mysqld --password-reuse-check command-line option added
mysqld --password-reuse-check-interval command-line option added
mysqld --spider-buffer-size command-line option added
mysqld --spider-wrapper-protocols command-line option added
mariadb-dump --as-of command-line option added
password_reuse_check password_reuse_check.so plugin added
system table added
system variable added
system variable added
information schema table added
SPIDER_WRAPPER_PROTOCOLS ha_spider.so plugin added
In alignment with the , MariaDB Enterprise Server 10.4.25-16 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64 Red Hat Enterprise Linux 8 packages)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see .
SELECT JSON_OVERLAPS('{"A": 1, "B": {"C":2}}', '{"A": 2, "B": {"C":2}}') AS is_overlap;+---------------------+
| is_overlap |
+---------------------+
| 1 |
+---------------------+SELECT
JSON_DETAILED(JSON_EXTRACT(trace, '$**.setup_range_conditions'))
FROM information_schema.OPTIMIZER_TRACE;[
[
{
"sel_arg_alloc_limit_hit":
{
"alloced_sel_args": 16001
}
}
]
]"table": {
"table_name": "t1",
...
"r_engine_stats": {
"pages_accessed": integer,
"pages_updated" : integer,
"pages_read_count" : integer,
"pages_read_time_ms" : double_val,
"old_rows_read" : integer,
},# Pages_accessed: 184 Pages_read: 95 Pages_updated: 0 Undo_rows_read: 1
# Pages_read_time: 17.0204 Engine_time: 248.1297
* `Engine_time` is the time in milliseconds spent inside engine calls.
* `Page_*` variables are supported for the InnoDB storage engine.CVE (with cve.org link)
CVSS base score
6.5
4.9
4.9
4.9
4.9
N/A (Critical)#1
CVE (with cve.org link)
CVSS base score
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
6.5
6.5
6.5
6.5
6.5
6.5
4.9
MariaDB Enterprise Server 11.6.15-10 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2023-09-11
MariaDB Enterprise Server 10.6.15-10 is a maintenance release of 10.6. This release includes a variety of fixes.
MariaDB Enterprise Server 10.6.15-10 was released on 2023-09-11.
This release originally incorporated MariaDB ColumnStore engine version 23.02.4.
This release now incorporates MariaDB ColumnStore engine version 23.10.0.
has been backported. (MENT-1853)
The JSON_OVERLAPS() function can be used to compare two JSON documents to determine if they have any key-value pairs or array elements in common.
has been backported. (MENT-1796)
The JSON_SCHEMA_VALID() function can be used to validate a JSON document against a JSON schema, as documented by the
This function can also be used in a CHECK constraint to verify that JSON documents are only stored in the database if they include required items and that the values are within a given range and length.
The package for the cracklib_password_check plugin includes an SELinux policy, allowing the plugin to work with SELinux. ()
MariaDB Enterprise Backup reports detailed recovery progress during mariadb-backup --prepare. ()
With Optimizer Trace, a sel_arg_alloc_limit_hit record is written when MAX_SEL_ARGS is reached. ()
MAX_SEL_ARGS is one of the limits in the optimizer that triggers short-cut of time-intensive or memory-intensive analysis for complex WHERE clauses.
For example:
ANALYZE FORMAT=JSON output includes InnoDB statistics. ()
For example:
Slow query log output includes InnoDB engine information. ()
InnoDB engine information output is enabled with --log-slow-verbosity=innodb
Sample output:
Engine_time is the time in milliseconds spent inside engine calls.
Page_* variables are supported for the InnoDB storage engine.
For the Spider storage engine, the default values and behavior of some system variables has changed: ()
Prior to this release:
These variables used a value of -1 (the default) to indicate that Spider would use the default table value, and this value was not user visible.
Spider table parameters could set values, but these values would be overridden with the system variable value if the system variable was set to a value other than -1.
Starting with this release:
The default value for these system variables has been updated to reflect the actual default table value, rather than -1.
Where a value is set by a table parameter, this value overrides the system default and the value set by Spider system variable.
If a table parameter is not set, the Spider system variable's value is used. This behavior is unchanged.
See "Interface Changes" for a full list of updated default values.
With InnoDB storage engine, when innodb_undo_log_truncate=ON, performing a recovery can result in a corrupted undo log. ()
With InnoDB storage engine, when database encryption is enabled only on a replica, InnoDB pages can be corrupted. (, )
With InnoDB storage engine, when innodb_undo_log_truncate=ON, backup and recovery can fail. ()
With InnoDB storage engine, if two MariaDB Server instances using InnoDB are started with the same data directory there can be data loss. ()
With InnoDB storage engine, a hang can occur with the following error: ()[Note] InnoDB: Set innodb_force_recovery=1 to ignore corrupted pages.
With Aria storage engine, when Aria encryption is enabled and used but an encryption plugin is not loaded, the server can crash. ()
With Galera Cluster, a Galera node can fail while aborting a transaction. ()
Assertion failure: !lock.was_chosen_as_deadlock_victim
With Galera Cluster, when wsrep_sst_donor and wsrep_cluster_address are set to NULL rather than an empty string, the server can crash. ()
When accessing information_schema.INNODB_BUFFER_PAGE or information_schema.INNODB_BUFFER_PAGE_LRU after starting the server and processing a crash recovery, the server can crash. ()
When optimizer_switch='optimize_join_buffer_size=off' is set, the server can crash. ()
When executing a SELECT query using an index for GROUP BY and filesort, the server can crash. ()
With MariaDB Connector/C, when the mysql_list_fields() function is called against a view, the server can crash. ()
With Aria storage engine, changing aria_sort_buffer_size settings to huge numbers and executing INSERT/UPDATE can result in a crash. ()
With InnoDB storage engine, when slave_parallel_mode is optimistic and slave_parallel_threads is greater than 0, an ALTER SEQUENCE can fail with an out-of-order binlog error if the SEQUENCE uses InnoDB. ()
Prior to this release, the following error can be raised:Last_Error: Error 'An attempt was made to binlog GTID 0-1-100 which would create an out-of-order sequence number with existing GTID 0-1-100 and gtid stric mode is enabled' on query. Default database: 'test'. Query: 'alter sequence s1 restart with 1' will be shown.
With replication, when binlog_format=ROW is set on the primary server and slave_run_triggers_for_rbr=1 is set on the replica server, the replica server can crash when calling a function from a different database within a TRIGGER on the replica. ()
During a simple SELECT, a crash can occur in Type_handler_json_common::make_json_valid_expr (MENT-1875)
With SQL_MODE=ORACLE, a memory leak can occur on shutdown. ()
Queries in the form SELECT DISTINCT function_returning_string(aggregate_func(...)) ... GROUP BY ... could produce an assertion failure or wrong result. ()
With InnoDB storage engine, InnoDB can purge history too early, causing crash on undo record access in MVCC read. ()
With InnoDB storage engine, when innodb_change_buffering=changes and innodb_file_per_table=0, the server can hang. ()
With InnoDB storage engine, purge on partitioned table can lead to a crash. ()
With InnoDB storage engine, when executing a statement that rebuilds an InnoDB table (such as TRUNCATE TABLE, OPTIMIZE TABLE, ALTER TABLE, or as part of executing innodb_undo_log_truncate=ON), the server can hang. ()
With InnoDB storage engine, when a BINARY(0) or VARBINARY(0) column in an InnoDB table is indexed, the server can crash. ()
With InnoDB storage engine, when reading or writing InnoDB data pages, asynchronous I/O errors can cause the server to crash. ()
For a System Versioned table, when adding a key to a virtual column, the server can crash. ()
Setting session_track_system_variables globally to an invalid value can cause the server to crash. ()
With Galera Cluster, a cluster node can crash during IST when rolling back a transaction. ()
Replication from an older MariaDB Server version to a newer MariaDB Server version can break, and the server may crash. (MENT-1935)
A mismatch in hash values was caused by use of different hash functions, causing rows in tables having explicit or implicit unique hash indexes to be treated as different rows between different versions of MariaDB Server even though the data in the rows was the same.
For a System Versioned table with non-versioned columns, if the initial INSERT includes a versioned column, an "on duplicate key update" for the non-versioned column generates a history record. ()
With Spider storage engine, setting a system variable overrides the value set as a table parameter. ()
With InnoDB storage engine, secondary indexes can be corrupted when a previously freed page is later reused. This is caused by change buffer entries being left behind when a page is freed. ()
The "pam_user_map" module does not correctly handle usernames or group names containing the "@" character. ()
With some Unicode collations, JSON functions can return incorrect results. ()
With sql_mode=ORACLE, information_schema.ROUTINES.ROUTINE_DEFINITION does not correctly contain the PACKAGE or PACKAGE BODY ()
Stored routines with ROW variables set by subselects can produce incorrect results. ()
Integer multiplication, DIV, MOD, or ROUND/TRUNCATE could return unexpected results when an argument is evaluated as -9223372036854775808 ()
With Galera Cluster, when using a KILL QUERY statement on a Galera node that executes user transactions, GTID sequence drift can occur between writer and appliers nodes. At the same time, data consistency is maintained and wsrep_last_committed is in sync. ()
With Galera Cluster, creating a TEMPORARY SEQUENCE can cause inconsistency. ()
With Galera Cluster, the state of the cluster can only be retrieved from the primary component. ()
information_schema.PARAMETERS can include outdated data when a stored routine is changed in one session while the stored routine is being used in a second session. ()
Queries that use multiple RANK window functions can produce the wrong result. ()
Queries that use the < "less than" operator to compare a string with a prefixed BLOB key produce the wrong result. ()
Recursive CTE execution is interrupted without errors or warnings when max_recursive_iterations is reached. ()
Starting with this release, a warning occurs when max_recursive_iterations is reached:Warning 1931 Query execution was interrupted. The query exceeded max_recursive_iterations = 1000. The query result may be incomplete.
On Microsoft Windows, when lower_case_table_names=2, SHOW TABLES does not work properly. ()
When the system is busy, STOP REPLICA can take a long time. ()
With parallel replication, Seconds_Behind_Master can show a wrong value. ()
With replication for System Versioned tables, having a parent table and a child table WITH SYSTEM VERSIONING where child table has a Foreign Key CASCADE generates orphan rows on replica. ()
With replication, when in read-only mode, XA COMMIT/XA ROLLBACK on the replica fails to return an error. ()
mariadb-dump --force can stop with the error Couldn't execute 'SHOW CREATE FUNCTION object': even though --force should cause the error to be ignored. ()
A query using DISTINCT, LIMIT with offset, and subselect to join tables produces an unexpected result. ()
The TO_CHAR() function returns an unclear error when an incorrect argument has been provided for the format string: ()
With the ColumnStore storage engine and Federated storage engine, ANALYZE can return the incorrect value 0 for r_rows ()
With InnoDB storage engine, SET GLOBAL innodb_undo_log_truncate=ON does not free space when no undo logs exist. ()
With InnoDB storage engine, freed data pages are not always scrubbed. ()
With InnoDB storage engine, when setting innodb_open_files to a number lower than the number of tables used, an error can be shown in the server log and the operation will be aborted. ()
ALTER TABLE .. MODIFY COLUMN can break foreign key constraints and lead to unrestorable dumps. ()
With InnoDB storage engine, three concurrent DELETE by a UNIQUE key can cause an unexpected deadlock. ()
With InnoDB storage engine, innochecksum fails with Floating point exception error. ()
With InnoDB storage engine, server status variables Innodb_row_lock_time, Innodb_row_lock_time_avg and Innodb_row_lock_time_max are reported in seconds instead of milliseconds. ()
With InnoDB storage engine, a duplicate entry is allowed into a UNIQUE column. ()
With InnoDB storage engine, in some rare cases InnoDB tables are being incorrectly flagged as corrupted on an I/O bound server. ()
With HashiCorp key management plugin, possible memory leaks. (MENT-1874)
Using functions MAX() or MIN() with functions ROUND(time), CEILING(time), or FLOOR(time) as an argument can return wrong results. ()
Querying a table with a Virtual Column, when the query has a WHERE clause, can return no results. (MENT-1925)
For transaction precise System Versioned tables, UPDATE can return an unexpected error: ERROR 1761 (23000): Foreign key constraint for table 'xxx', record 'yyy' would lead to a duplicate entry in table 'xxx', key 'PRIMARY' ()
Assertion const_item_cache == true failed in Item_func::fix_fields when a flow control statement (such as IF()) was used in a generated column. ()
Creating a table with a foreign key (with a cascade action) defined on a base column of a virtual column is not rejected. (, )
Starting with this release, it is no longer possible to create STORED generated columns and CHECK constraints when values of the affected columns can be changed by foreign key constraint actions, such as SET NULL or ON UPDATE CASCADE.
Starting with this release, this results in an error like: ERROR 1901 (HY000): Function or expression 'f_id' cannot be used in the GENERATED ALWAYS AS clause of 'v_id'
Starting with this release, for existing tables with STORED generated columns, SET NULL and ON UPDATE CASCADE are ignored.
With InnoDB storage engine, performance regression vs MariaDB Enterprise Server 10.5 for full index scans when innodb_flush_method=fsync and I/O bound. (MENT-1933)
With InnoDB storage engine, performance regression vs MariaDB Enterprise Server 10.5 for LOAD DATA into InnoDB tables with partitions. (MENT-1938)
If a long-running query on one connection uses a table subject to a ANALYZE TABLE on another connection to collect statistics, all further queries on that table had to wait for the long-running query to finish. (MENT-1937)
With partitioning, possible slow down of queries. ()
With InnoDB storage engine, linear read-ahead (controlled by the innodb_read_ahead_threshold system variable) does not work as expected. This can impact performance of mariadb-dump and some queries that perform a full table scan. ()
With InnoDB storage engine, query execution is slow due to incorrect estimates for range access paths. ()
Range access paths are constructed when a query's WHERE clause compares indexed columns with constants.
Having wrong estimates can cause the optimizer to pick sub-optimal query plan, which may result in a slow query execution.
mariadb-upgrade can crash with Error ""Cannot load from mysql.proc. The table is probably corrupted"" ()
This can occur when upgrading from a release series that uses the utf8mb3 character set for utf8 to a release series that uses utf8mb4 for the utf8 character set.
system variable maximum value changed from 9223372036854775807 to 1152921504606846975 ()
system variable minimum value changed from 4096 to 16376 ()
error code added (MENT-1796)
error code added (MENT-1796)
error code removed ()
error code added ()
error code removed
error code added
function added (MENT-1853)
function added (MENT-1796)
system variable maximum value changed from 18446744073709551615 to 1152921504606846975 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 2 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 100 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 16000 ()
system variable default value changed from -1 to 16000 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 16000 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 6 ()
system variable default value changed from -1 to 2 ()
system variable default value changed from -1 to 51 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 2 ()
system variable default value changed from -1 to 2 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 0 ()
System Variable system variable default value changed from -1 to 9223372036854775807 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 1024 ()
system variable default value changed from -1 to 9223372036854775807 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 32767 ()
system variable default value changed from -1 to 100 ()
system variable default value changed from -1 to 600 ()
system variable default value changed from -1 to 600 ()
system variable default value changed from -1 to 3 ()
system variable default value changed from -1 to 10485760 ()
system variable default value changed from -1 to 1024 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 2 ()
system variable default value changed from -1 to 9223372036854775807 ()
system variable default value changed from 1 to 0 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 9223372036854775807 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 2 ()
system variable default value changed from -1 to 10 ()
system variable default value changed from -1 to 1 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 10 ()
system variable default value changed from -1 to 100 ()
system variable default value changed from -1 to 3000 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 0 ()
system variable default value changed from -1 to 1 ()
In alignment to the , MariaDB Enterprise Server 10.6.15-10 is provided for:
CentOS 7 (x86_64)
Debian 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
MariaDB Enterprise Server 11.6.8-4 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.6, released on 2022-06-13
MariaDB Enterprise Server 10.6.8-4 is a maintenance release of 10.6. This release includes a variety of fixes.
MariaDB Enterprise Server 10.6.8-4 was released on 2022-06-13.
MariaDB Enterprise Server enables a predictable development and operations experience through an . These new features have been backported after reaching maturity in MariaDB Community Server:
reads data as of specific timestamp from system-versioned tables. (MENT-1457)
Added to check JSON equality. (MENT-1452)
Added to normalize JSON values. (MENT-1456)
Added . (MENT-1451)
Galera updated to 26.4.12
Spider storage engine refuses attempts to create a temporary table since the engine cannot itself store data and cannot create temporary tables on a remote server. ()
Status variables Innodb_encryption_key_rotation_list_length, Innodb_num_index_pages_written and Innodb_num_non_index_pages_written were unused and have been removed. (, )
Starting with this release, when is set to rsync or mariadb-backup, the sst_max_binlogs SST option can be specified in the [sst] option group in configuration files. This parameter specifies the number of binary log files to be sent to the joiner node during SST. ()
The default value is 0:
If a binlog exists, it will be transferred.
If a binlog does not exist, no binlog will be transferred.
Server error messages are available in Chinese. ()
Xpand storage engine support is discontinued for MariaDB Enterprise Server 10.6. (MENT-1499)
Ubuntu 22.04 LTS support added. (MENT-1441)
When the parser converts a string from the binary character set to a multi-byte character set (such as utf32), an invalid string could be produced. ()
When rows are inserted into an intermediate temporary table via the ,and then the rows are copied from the temporary table to a persistent table, the rows are not written to binary log if is set, which prevents the operation from properly replicating to replica servers. ()
When is set, can hang. ()
Starting with this release, the has been removed.
When a replica server's I/O thread receives an incomplete event group from the primary server, the replica server continues writing events to the relay log and does not raise an error. ()
If a primary is shutdown during an active semi-sync connection during the period when the primary is awaiting an ACK, the primary hard kills the active communication thread and does not ensure the transaction was received by a replica. This can lead to an inconsistent replication state. ()
InnoDB page corruption on btrfs filesystem with innodb_use_native_aio=1 ()
Semisync-replica server recovery fails to rollback a prepared transaction. ()
With MariaDB Enterprise Cluster, powered by Galera, when is set to rsync or mariadb-backup, the donor node does not transfer the correct binary logs to the joiner node with some configurations. ()
When a window function is used in the global ORDER BY clause of a with a UNION, the statement should be rejected, but the server executes the statement and crashes with a segmentation fault. ()
When a stored procedure queries a view and uses a for loop, the server can crash with a segmentation fault when the stored procedure is called twice in the same session. ()
When is executed on an encrypted tablespace file using the , innochecksum crashes with a segmentation fault unless the is also specified. ()
When an invalid is used inside of a or statement, the server can crash while parsing the statement. ()
When a table contains a virtual generated column that is defined using the and functions, inserting a row into the table can cause the server to crash with a segmentation fault. ()
When a non-updateable view is defined with ALGORITHM=TEMPTABLE, selecting data from the view can cause the server to crash with a segmentation fault. ()
When a UNION of decimal types is performed in an ORDER BY clause, the server can crash with a segmentation fault. ()
When a stored procedure executes a query that results in a mergeable derived table, the server can crash with a segmentation fault when the stored procedure is called twice in the same session. ()
Querying views can result in mergeable derived tables.
Using subqueries with outer references can result mergeable derived tables.
When is executed with a query that contains a subquery, the server can crash. ()
When a query using a window function with an OVER (PARTITION BY ..) or OVER (ORDER BY ..) clause is executed, the server can crash with a segmentation fault. ()
If the query also uses WITH ROLLUP, this crash is more likely.
If the query's OVER (PARTITION BY ..) or OVER (ORDER BY ..) clause uses an aggregate function, this crash is more likely.
When a query contains an outer join expression and a non-correlated subquery that the optimizer determines is low cost, executing the query can cause the server to crash if the optimizer also determines that the inner join expression can be eliminated. ()
With MariaDB Enterprise Cluster, a joiner node's binary logs could be deleted during an Incremental State Transfer (IST), which causes the node to fail to start, because it can not read the binary logs. ()
This issue is confirmed to happen with set to rsync, but it might also occur with other SST/IST methods.
Online DDL fails while checking for instant alter condition ()
With MariaDB Enterprise Cluster (Galera), parallel async replication hangs on a Galera node when slave-parallel-threads is greater than 1 ()
With MariaDB Enterprise Cluster (Galera), possible crash after a conflict of the applier thread with a stored procedure call triggered by the event scheduler. ()
Server crashes when executing a shutdown statement after starting an XA transaction. ()
Possible server crash during mariadbd initialization, if the number of GTIDs added since that last purge of the mysql.gtid_slave_pos tables is greater than or equal to the --gtid-cleanup-batch-size value. ()
Possible server crash if an INSERT .. SELECT or REPLACE .. SELECT statement contains an ON expression in the top-level select and this expression used a subquery with a column reference. ()
Running a grouping query over non-blob columns that take more than 65535 bytes (for example, VARCHAR(16383) CHARACTER SET UTF32) could cause a crash. ()
Possible crash after or during DROP TABLE when the InnoDB buffer pool size has been changed. ()
InnoDB crash on multiple concurrent SHOW TABLE STATUS ()
Shutdown hangs after altering an InnoDB partition when innodb_fast_shutdown=0 ()
When is executed on a , the server raises an , even if is set to ROW or MIXED. ()
The warning can appear in the as the following:
When an or statement uses an clause, the server raises an . ()
The error can appear on the client as the following:
When an uses a subquery inside an , the optimizer could incorrectly choose to perform a full table scan (with type: ALL) when a range scan (with type: range) would be more efficient. ()
When a table contains multiple columns with identical values, the values could become corrupt if multi-byte character sets are used. ()
When columns are read from , the server could incorrectly raise an . ()
The warning can appear on the client as the following after executing SHOW WARNINGS:
With , the parser allows functions to be called using PACKAGE_NAME.FUNCTION_NAME(), but the parser raises a if the function is called using DATABASE_NAME.PACKAGE_NAME.FUNCTION_NAME(). ()
When a view is used to update multiple rows of a in a single , the server incorrectly raises a . ()
The warning can appear on the client as the following after executing :
When using with and , events from the primary server's currently active log file are not written to their respective log file specified by . ()
When a prepared statement is used to execute , a different query plan can be returned on the second execution. ()
When is enabled with semi-synchronous replication, the numbering on packet headers can become out of sync between the primary and replica servers, but the inconsistency does not have any negative impact with release builds of MariaDB Enterprise Server. ()
The server and can raise unnecessary warnings about tablespace IDs in some scenarios. ()
The warning can appear as the following:
This warning can be written to standard output (stdout) when preparing a backup with .
This warning can be written to the when InnoDB performs crash recovery at startup.
With MariaDB Enterprise Cluster, the joiner node fails to complete an SST when specifies a directory different than . ()
When a non-partitioned table using the DATA DIRECTORY clause is converted to a partitioned table, the DATA DIRECTORY clause is silently ignored, and the partitioned table is moved to the default directory. ()
Starting with this release, the server will raise the .
When a table contains an invisible column, does not produce the correct in the backup file. ()
When a Spider table is queried using IF(COUNT() ..), the server can raise an . ()
With MariaDB Enterprise Cluster, State Snapshot Transfers (SSTs) can fail on the donor node when binary logs are enabled. ()
With MariaDB Enterprise Cluster, when contains an IPv6 address and is set to the default value of AUTO, State Snapshot Transfers (SST) can fail. ()
With , replication can break if a system versioned table has been created on the replica via mariadb-dump, if the original table was altered before. ()
mariadb-backup does not detect multi-source replication primary. ()
Master_SSL_Crl shows Master_SSL_CA value in SHOW REPLICA STATUS output. ()
MariaDB Audit plugin produces corrupted log entries for CONNECT events. (MENT-1438)
mariadb-dump does not create a dump where the sql_mode is set correctly for SQL/PL packages. ()
Missing binlog data for ()
mariadb-backup prepare fails for incremental backups if a new schema is created after full backup. ()
Optimizer uses all partitions during an UPDATE and ignores partitioning filters. ()
When is executed and binlog_format is set to MIXED, the server raises an even though the statement is written to the binary log in row-based format. ()
The warning can appear in the as the following:
When is executed and binlog_row_image is set to FULL, the server does not write unchanged columns to the binary log. ()
PAM v2 plugin (auth_pam) produces zombie processes. (MENT-1443)
With MariaDB Enterprise Cluster (Galera), wsrep_incoming_addresses does not include address details. (MENT-1527)
With HashiCorp key management (hashicorp_key_management), dynamic changes to hashicorp_key_management_cache_timeout and hashicorp_key_management_cache_version_timeout system variables are ignored. (MENT-1512)
With Enterprise Spider, "Error while parsing DSN" can be returned when connecting to an ODBC source. (MENT-1316)
Last binlog file and position are "empty" in mariadb-backup --prepare output. ()
"Error" is shown instead of NULL in performance schema table P_S.THREADS_CONNECTION_TYPE for background threads. ()
With Enterprise Spider, login to ODBC resources fails if the password contains a semicolon. (MENT-805)
When setting group_concat_max_len to 1 GB or more and using GROUP_CONCAT() in a subquery, the result gets truncated. ()
Crash recovery fails if the configured server ID does not match the server ID in the crashed data directory. ()
The innochecksum -w option was inadvertently removed. ()
Poor scaling with InnoDB and utf8mb3 ()
mariadb-backup --log-copy-interval is measured in milliseconds in MariaDB Enterprise Server 10.5 and in microseconds in MariaDB Enterprise Server 10.6. ()
Upsert during ALTER TABLE results in Duplicate entry error. ()
After a failed IMPORT TABLESPACE fails to delete files, DROP TABLE on the table can result in ERROR 1005 (HY000): Can't create table test.t2 (errno: 184 "Tablespace already exists") ()
Query performance degradation when using many tables. ()
JSON_TABLE doesn't allow one to extract a JSON ""subdocument"" into a JSON column. (MENT-1497)
With MariaDB Enterprise Cluster, no shared cipher warning when starting without encryption config. The warning should be about a missing ssl_cert configuration. (MENT-1462)
Galera snapshot transfer fails to upgrade between some major versions. ()
On Windows, MSI installer does not install client shared libraries. ()
When the is loaded, should be used to take a logical backup before all minor and major upgrades due to changes that are not backward-compatible:
Starting with this release, the rejects encryption keys that contain non-digit characters in the hex notation.
If a database is encrypted with encryption keys that only contain digit characters in the hex notation, the encryption keys will continue to work with the new version.
If a database is encrypted with encryption keys that are no longer valid, it is recommended to upgrade by installing the new version to a clean system and restoring a logical backup of the data. However, another alternative is to migrate the system to a new encryption key that only contains digit characters in the hex notation prior to the upgrade. If the alternative route is taken, extra care must be taken to ensure that all encrypted data uses the new encryption key. For help with this process, contact .
When performing minor and major upgrades on Debian and Ubuntu, a logical backup must be taken before upgrading the server and plugin packages. When the old packages are upgraded, a message about plugin incompatibility is printed, but the server and plugin packages are upgraded anyway.
When performing minor upgrades on CentOS, RHEL, Rocky Linux, and SUSE, a logical backup can be taken before or after upgrading the server package. When the old packages are upgraded, a message about plugin incompatibility is printed, and the server package is upgraded, but the plugin package is not. The old plugin package must be manually removed, and then the new plugin package can be installed.
When performing major upgrades on CentOS, RHEL, Rocky Linux, and SUSE, a logical backup must be taken before upgrading the server and plugin packages. The old server and plugin packages must be manually removed, and then the new server and plugin packages can be installed.
When the plugin package is manually removed, the plugin configuration file can also be removed, so it is recommended to backup the file.
On Windows, error during upgrade from 10.6.5 to 10.6.7: Installation directory ''C:\Program Files\[MariaDB 10.6](../../mariadb-community-server-release-notes/release-notes-mariadb-10-6-series/what-is-mariadb-106.md)\'' exists and is not empty. ()
On Windows, error during installation: InnoDB: innodb_page_size=65536 requires innodb_buffer_pool_size >= 20MiB current 10MiB ()
This release originally incorporated .
This release later incorporated .
This release later incorporated .
This release later incorporated .
This release now incorporates .
hashicorp_key_management_check_kv_version system variable added
innochecksum --write (-w) command-line option added
system variable removed
status variable removed
status variable removed
status variable removed
function added
function added
mariadb-backup --sst-max-binlogs command-line option added
mariadb-dump --as-of command-line option added
mariadbd --hashicorp-key-management-check-kv-version command-line option added
mariadbd --password-reuse-check command-line option added
mariadbd --password-reuse-check-interval command-line option added
password_reuse_check password_reuse_check.so plugin added
system table added
system variable added
In alignment to the , MariaDB Enterprise Server 10.6.8-4 is provided for:
CentOS 7 (x86_64)
Debian 9 (x86_64, ARM64)
Debian 10 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Microsoft Windows (x86_64)
Red Hat Enterprise Linux 7 (x86_64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 18.04 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see
This is the final release for Debian 9.
SELECT JSON_OVERLAPS('{"A": 1, "B": {"C":2}}', '{"A": 2, "B": {"C":2}}') AS is_overlap;+---------------------+
| is_overlap |
+---------------------+
| 1 |
+---------------------+SELECT
JSON_DETAILED(JSON_EXTRACT(trace, '$**.setup_range_conditions'))
FROM information_schema.OPTIMIZER_TRACE;[
[
{
"sel_arg_alloc_limit_hit":
{
"alloced_sel_args": 16001
}
}
]
]"table": {
"table_name": "t1",
...
"r_engine_stats": {
"pages_accessed": integer,
"pages_updated" : integer,
"pages_read_count" : integer,
"pages_read_time_ms" : double_val,
"old_rows_read" : integer,
},# Pages_accessed: 184 Pages_read: 95 Pages_updated: 0 Undo_rows_read: 1
# Pages_read_tim e: 17.0204 Engine_time: 248.1297
ER_STD_INVALID_ARGUMENT (3047): Invalid argument error: data type of first argument must be type date/datetime/time or string in function to_char.CVE (with cve.org link)
CVSS base score
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
7.5
6.5
6.5
6.5
6.5
6.5
6.5
[Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. Statement is unsafe because it uses a system function that may return a different value on the slave Statement: OPTIMIZE TABLE SEQUENCE_NAMEYou are using safe update mode and you tried to update a table without a WHERE that uses a KEY columnEncountered illegal value '' when converting to DECIMALView being updated does not have complete key of underlying table in itInnoDB: Allocated tablespace ID TABLESPACE_ID for DATABASE_NAME/TABLE_NAME, old maximum was 0[Warning] Unsafe statement written to the binary log using statement format since BINLOG_FORMAT = STATEMENT. INSERT... ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe Statement: INSERT INTO TABLE_NAME VALUES (..) ON DUPLICATE KEY UPDATE KEY_NAME = KEY_VALUEMariaDB Enterprise Server 10.5.10-7 is a Stable (GA) maintenance release of MariaDB Enterprise Server 10.5, released on 2021-06-14
This seventh release of MariaDB Enterprise Server 10.5 is a maintenance release. This release includes a variety of fixes.
MariaDB Enterprise Server 10.5.10-7 was released on 2021-06-14.
CVE (with link)
CVSS base score
4.9
4.9
New function calculates the spherical distance between two geometries (point or multipoint) on a sphere. (MDEV-13467)
Galera updated to 26.4.8
Issue deprecation warnings for values none, innodb, strict_none, strict_innodb (MDEV-25106)
MariaDB Enterprise Cluster avoids unnecessary rollbacks with streaming replication. (MDEV-25553)
Improved TLS/SSL error reporting. (MDEV-21730)
New field LEVEL exists in table to differentiate between column-level and table-level CHECK constraints. (MDEV-24601)
Remove useless counter (MDEV-25211)
fails to rename a column in table and causes server to crash. table is not accessible after restart. (MDEV-24763)
Table corruption ER_NO_SUCH_TABLE_IN_ENGINE or ER_CRASHED_ON_USAGE after on table with foreign key. (MDEV-24532)
[[mariadb-backup|MariaDB Enterprise Backup]] deletes the current source file after a No space left on device error, before exiting. Only the incomplete target file is still available. (MDEV-25221)
Possible corruption in online for with (MDEV-24730)
DELETE HISTORY may delete current data on system versioned table. (MDEV-25468)
Encrypted transactional tables remain corrupt after crash recovery, automatic repair does not work. (MDEV-17913)
Killing server during may lose transaction. (MDEV-25305)
recovery can fail with [ERROR] InnoDB: Not applying INSERT_REUSE_REDUNDANT due to corruption if is set to a different value than none (MENT-1208)
can report [ERROR] InnoDB: Flagged corruption of .. in table ... in CHECK TABLE; Wrong count if is set to a different value than none (MENT-1218)
Possible hang when KILL CONNECTION or KILL QUERY is used with MariaDB Enterprise Cluster and a multi-master setup. (MDEV-18874)
Possible memory corruption with MariaDB Enterprise Cluster when inserting values bigger than 4096 bytes into variable-length fields (, , , and related types). (MDEV-24978)
fails on compressed tables. (MDEV-25121)
Server crashes in check_grant upon invoking function with userstat enabled. (MDEV-25242)
MariaDB Client crashes when is set and is undefined. (MDEV-24879)
Possible Server crash when . Only seen when using a table space per table and if the tablespace size is increased at the time of the drop. (MDEV-20648)
Possible server hang with and indexed virtual columns after an error with , , on virtual columns. (MDEV-24786)
MariaDB Enterprise Cluster conflict resolution issues. (MDEV-24923)
Index count mismatch due to aborted FULLTEXT INDEX (MDEV-25200)
MariaDB Enterprise Cluster node crashes when inserting a row into a table that contains a virtual column and does not have a primary key. (MDEV-25047)
Server crashes when fails to add a new index on a new virtual column and a concurrent connection executes a query that accesses the freed virtual column. (MDEV-24971)
EXISTS subquery with correlation in ON expression crashes. (MDEV-25407)
Server crashes in row_undo_mod_clust_low upon rollback of read-only transaction. (MDEV-25457)
Server crashes on the second execution of a stored procedure when the stored procedure uses an invalid multi-table statement to update a view. (MDEV-24823)
startup hangs when a recovered transaction exists for the or system tables and a DDL transaction needs to be rolled back. (MDEV-25503)
Server crashes when tries to fetch data from table containing a FULLTEXT INDEX and the table's tablespace was discarded. (MDEV-25536)
Server crashes on when a WHERE condition references a derived table. (MDEV-21603)
Potential hang in purge when virtual indexed columns exist. (MENT-1203)
Crash with nested table value constructors. (MDEV-22786)
Server crashes when an aggregate function is called on a table value constructed with the or VALUE() functions. (MDEV-24919)
Server crashes when a statement has a subquery that references a table value constructed with the or VALUE() functions. (MDEV-24910)
Server crashes when a statement has an IN() clause that references the UNION of two table values constructed with the or VALUE() functions. (MDEV-24840)
Possible memory corruption or crash if a table definition is evicted from the cache during a transaction commit. (MDEV-24811)
Server crashes when the function is called on a column. (MDEV-22703, MDEV-24958, MDEV-24942)
Server crashes when a statement queries an table and uses a JOIN (MDEV-24929)
Server crashes in optimize_schema_tables_memory_usage after from (MDEV-24868)
Server crashes when a FULLTEXT INDEX is added to an table and the tablespace for the table was previously discarded. (MDEV-25070)
Server crashes when the optimizer incorrectly removes a GROUP BY from a subquery, because the column is specified in both the list and the GROUP BY list. (MDEV-24925)
Server crashes when a statement has a subquery in the FROM clause that contains a GROUP BY clause and multiple indexes are used: one index is used to resolve the GROUP BY clause and another index is used for the LATERAL DERIVED optimization. (MDEV-23723)
Crash with with non-existing field in ON condition. (MDEV-25206)
Server crashes due to an assertion with multi-master workloads on MariaDB Enterprise Cluster when is disabled and a conflicting transaction is aborted for a higher priority transaction. (MDEV-24954)
Possible hang when KILL CONNECTION or KILL QUERY is used with MariaDB Enterprise Cluster and a multi-master setup. (MDEV-24967)
Possible memory corruption when streaming replication is used for MariaDB Enterprise Cluster. (MDEV-24964)
MariaDB Enterprise Cluster node crashes when the mysql.user system table is truncated. (MDEV-24865)
MariaDB Enterprise Cluster node crashes when wsrep_provider_options set to NULL (MDEV-24856)
Server crashes when a column is dropped from an table with the INSTANT algorithm. (MDEV-25057)
MariaDB Enterprise Cluster node crashes when CREATE TABLE t1 ( .. ) SELECT .. FROM t2 is executed where t1 is an table and t2 is a non-InnoDB table. (MDEV-21697)
MariaDB Enterprise Cluster node crashes when an uncommitted transaction is replicated using streaming replication while wsrep_on is enabled and the transaction is committed while wsrep_on is disabled. (MDEV-25226)
Server crashes with MariaDB Enterprise Cluster when a non-InnoDB table is locked with the LOCK TABLE statement and a concurrent connections executes that references the same table. (MDEV-22227)
Possible server crash after failing instant on secondary indexes. (MDEV-25360)
Server crash in thd_clear_errors() (MDEV-23542)
MariaDB Enterprise Backup crashes when called without parameters on Windows. (MDEV-24106)
Server crashes when an statement is executed, wsrep_osu_method is set to NBO, and sql_mode is set to the empty string (''). (MENT-1134)
MariaDB Enterprise Cluster can crash when total order isolation (TOI) is used for Galera and is executed with ENGINE= using an unknown engine. Only happens with (no engine substitution). (MDEV-24833)
MariaDB Enterprise Backup crashes during --prepare. (MDEV-24848)
Server crashes when , , or is executed on an table and is set to a value other than none (MDEV-25018)
Server hangs during checkpoint when is executed. (MDEV-24302)
MariaDB Enterprise Cluster conflict resolution issues. (MDEV-24989, MDEV-25405, MDEV-25427)
Shutdown crash during innodb.innodb_buffer_pool_resize_temporary (MDEV-25483)
MariaDB Enterprise Cluster crashes after with multiple tables. Only seen if wsrep_osu_method=NBO (MENT-1144)
Server hangs on early shutdown if InnoDB needs to purge indexed virtual columns. (MENT-1206)
SUM column from a derived table returns invalid values. (MDEV-23291)
returns an incorrect result. (MDEV-24790)
Incorrect behavior of when it is executed as a prepared statement. (MDEV-24860)
Query returns a ER_BAD_FIELD_ERROR error when a subquery contains a JOIN with an ON clause that references an outer column. (MDEV-25002)
Query returns a ER_BAD_FIELD_ERROR error when a Common Table Expression (CTE) contains a UNION (MDEV-24597)
Query returns wrong result when the [[|MIN|MIN()]] or aggregate functions are used and the aggregated column is indexed. (MDEV-25112)
Wrong result (extra rows and wrong values) with incremental block nested loop hash. (MDEV-21104)
Query returns wrong results when a JOIN is evaluated using the Block Nested Loop Hash (BLNH) optimization with a compound index. (MDEV-24767)
Server fails to start using mysqld_multi with mysqld_safe options. (MDEV-21039)
Duplicate key may be generated during MariaDB Enterprise Cluster configuration change. (MDEV-24853)
State snapshot transfer (SST) for MariaDB Enterprise Cluster using MariaDB Enterprise Backup fails when the option was set on the command-line with no value at server startup. (MDEV-24903)
Race condition between persistent statistics and or [-TRUNCATE|TRUNCATE]] (MDEV-25051)
Race condition between and STATS_AUTO_RECALC (MDEV-10682)
Incorrect message about field length is written to the when is executed on an table. (MDEV-24748)
No error is returned when the optimizer removes a redundant part of a subquery that contains an unknown table alias. For example, if the optimizer removes a redundant GROUP BY clause from an subquery, unknown table aliases in the redundant part are ignored. (MDEV-23449)
Selectivity shown with in field "filter" is incorrect for columns. (MDEV-22583)
Histogram statistics are used even with =3 (MDEV-19474)
shows nonsensical value for key_len with type=index (MDEV-11172)
SSL connection fails when server and client certs are signed by same CA. (MDEV-23740)
Wrong function name in error messages upon call. (MDEV-25272)
MariaDB Enterprise Backup fails --prepare on large backup. (MDEV-24197)
State snapshot transfer (SST) for MariaDB Enterprise Cluster using MariaDB Enterprise Backup fails when the password for the backup user is set via the MYSQL_PWD environment variable. (MDEV-25321)
State snapshot transfer (SST) for MariaDB Enterprise Cluster using MariaDB Enterprise Backup fails when the option was set on the command-line at server startup. (MDEV-25328)
An extra warning is returned when the EXPLAIN EXTENDED statement is executed in a prepared statement. (MDEV-25108)
Complex query in stored procedure returns wrong results. (MDEV-25182)
wrongly checks for field's default value if AFTER is used. (MDEV-25403)
Incorrect name resolution for subqueries in ON expressions. (MDEV-25362)
When is executed, a race condition between group commit and binary log rotation causes the old binary log file to become obsolete before the InnoDB group commit has been written to it. (MDEV-24526)
MariaDB Enterprise Backup logs an error instead of a warning when it reads an invalid log block checksum during a --backup. (MDEV-25456)
Rows are wrongly omitted when an index is read using Multiversion Concurrency Control (MVCC). (MDEV-25459)
aborts after failed into table with virtual column. (MDEV-24583)
fails to fetch index type when index mismatch happens. (MDEV-22928)
MariaDB Enterprise Cluster silently enables Monitor output and never disables it when a wsrep slave thread tries to perform a brute-force (BF) kill, but fails due to a long lock wait. (MDEV-25319)
causes "Ignoring data file ... with space ID xxxx, since the redo log references ... with space ID xxxx." for MariaDB Enterprise Backup. (MDEV-25568)
The Replication Heartbeat binary log event (Heartbeat_log_event) uses 4 bytes to store the log position within the current binary log file, so the log position overflows when the binary log file size exceeds 4 GB. (MDEV-16146)
spatial indexes miss large geometry fields. (MENT-1205)
Table alias from previous statement interferes with later commands. (MENT-1200)
statement does not show details about sub-queries when the primary table is a table value constructed with the or VALUE() functions. (MDEV-24936)
JOIN of a materialized derived table returns wrong result when the split_materialized optimization is enabled. (MDEV-25128)
Uninitialized value upon CREATE .. SELECT ... VALUE and variety of resulting errors with different engines. (MDEV-24710)
Dropping primary key column from a system-versioned table always fails with Error 1072 (MDEV-24690)
[ALTER TABLE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements-and-structure/sql-statements/data-definition/alter/alter-table) .. ADD COLUMN .. AS ROW START returns misleading ER_VERS_DUPLICATE_ROW_START_END error. (MDEV-25172)
Unexpected ER_DUP_ENTRY error when the Primary Key column is dropped from a system-versioned table. (MDEV-25327)
doesn't work properly with semi-sync replication. (MDEV-24773)
Sequence created by one connection remains invisible to another. (MDEV-24545)
routine_definition in loses tablename if it starts with an _ and is not backticked. (MDEV-25501)
JOIN of a derived table using an aggregation function returns incorrect results. (MENT-1210)
Server temporarily consumes extra 4 GB of memory every time the table is queried. (MDEV-24975)
not replicated with MariaDB Enterprise Cluster. (MDEV-24956)
The setting can result in unexpected warnings when using MariaDB Enterprise Cluster. (MDEV-21402)
The statement fails with ER_MUST_CHANGE_PASSWORD when the statement is executed in a prepared statement and the user's password is expired. (MDEV-25197)
MariaDB Enterprise Cluster FLUSH SSL command doesn't reload wsrep cert. (MENT-1089)
State snapshot transfer (SST) for MariaDB Enterprise Cluster using mariadb-dump causes shutdown of donor node to fail. (MDEV-25423)
MariaDB Enterprise Spider returns The connect info 'tab' for table is too long when creating a Spider Table. (MDEV-22265)
garbd has connection issues. (MENT-1168)
Galera startup log shows mysql.server_audit_filters data load error when enabling server audit log through configuration file. (MENT-1196)
[ALTER TABLE](https://app.gitbook.com/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements-and-structure/sql-statements/data-definition/alter/alter-table) .. IMPORT TABLESPACE fails after DROP INDEX (MDEV-25265)
Upgrade to 10.5.9 breaks root user ability to GRANT (MDEV-25030)
shows 0 for I/O statistics that were previously removed. (MDEV-15756)
adaptive flushing fails to start when is exceeded. (MDEV-25093)
Replica server fails with ER_ROW_IS_REFERENCED_2 when DROP TABLE parent_table, child_table is executed on the primary server and foreign_key_checks is enabled. (MDEV-25530)
Missing libsepol dependency on SLES 12 and SLES 15. (MENT-1163)
This release incorporates MariaDB ColumnStore storage engine version 5.6.1 (before 2021-06-30).
This release incorporates MariaDB ColumnStore storage engine version 5.6.2 (after 2021-06-30).
information schema table schema adds LEVEL column
mariadb-backup --innodb-force-recovery command-line option added
mariadb_repo_setup --skip-check-installed command-line option added
function added
In alignment with the enterprise lifecycle, MariaDB Enterprise Server 10.5.10-7 is provided for:
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Microsoft Windows (x86_64) (MariaDB Enterprise Cluster excluded)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 12 (x86_64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "MariaDB Corporation Engineering Policies".
An overview of changes, improvements, and what's new in MariaDB Enterprise Server 11.4
MariaDB Enterprise Server 11.4 introduces new features to MariaDB Enterprise. Enhancements include JSON functions for validation and comparison, SQL functions for natural sorting and custom formatting, and a new UUID data type. Operational improvements include an improved cost-based optimizer, a new feature for non-blocking online schema changes, and faster InnoDB imports. Security is strengthened with default SSL encryption, password reuse prevention, and Galera Cluster security improvements. Replication is enhanced with default GTID, binary log size limits, and optimistic ALTER TABLE. Monitoring benefits from JSON histograms, new thread states, and detailed error reporting. These updates aim to improve developer experience, database administration, and overall performance.
This document includes all major features and changes between 10.6 ES and 11.4 ES.
Upgrading from 10.6 should use take a few seconds with Please ensure that you do a of 10.6 before doing the upgrade.
The variable has no effect in 11.4 as all the features are already in 11. The variable is deprecated and should be remove from existing config files.
As long as no new 11.4 features are used (by CREATE TABLE or DML's) and the new variable is 0 (default) one should be able to use a 10.6 slave of 11.4 master.
New JSON function JSON_SCHEMA_VALID to validate a JSON document against a JSON schema, as documented by the JSON Schema Draft 2020. This function can also be used in a CHECK constraint to verify that only JSON documents are stored in the database which include required items and that the values are within a given range, length, etcetera.
New JSON functions JSON_EQUALS() and JSON_NORMALIZE() for easier comparison of two JSON documents and for normalizing JSON objects to be comparable, for example when a unique key based on JSON data is needed.
New function JSON_OVERLAPS(), which compares JSON documents to determine if they have any key-value pairs or array elements in common.\
SELECT JSON_OVERLAPS('{"A": 1, "B": {"C":2}}', '{"A": 2, "B": {"C":2}}') AS is_overlap;
+---------------------+
| is_overlap |
+---------------------+
| 1 |
+---------------------+New function JSON_KEY_VALUE(<json_doc>,<json_path>), which extracts key/value pairs from a JSON object. The JSON path parameter is used to only return key/value pairs for matching JSON objects.
Example:\
SELECT JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]');+-----------------------------------------------------------------------------+
| JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]') |
+-----------------------------------------------------------------------------+
| [{"key": "key1", "value": "val1"}, {"key": "key2", "value": "val2"}] |
+-----------------------------------------------------------------------------+The function JSON_KEY_VALUE() can be used as an argument to JSON_TABLE(), which allows adding the key to a result set.\
Example:\
SELECT jt.* FROM JSON_TABLE(
JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]'),'$[*]'
COLUMNS (
k VARCHAR(20) PATH '$.key',
v VARCHAR(20) PATH '$.value',
id FOR ORDINALITY )) AS jt;+------+------+------+
| k | v | id |
+------+------+------+
| key1 | val1 | 1 |
| key2 | val2 | 2 |
+------+------+------+New function JSON_ARRAY_INTERSECT(<array1>, <array2>), used to find the intersection between two JSON arrays.
Example:\
SET @array1= '[1,2,3]';
SET @array2= '[1,2,4]';
SELECT json_array_intersect(@array1, @array2) AS result;\
+--------+
| result |
+--------+
| [1, 2] |
+--------+\
SET @json1= '[[1,2,3],[4,5,6],[1,1,1]]';
SET @json2= '[[1,2,3],[4,5,6],[1,3,2]]';
SELECT json_array_intersect(@json1, @json2) AS result;\
+------------------------+
| result |
+------------------------+
| [[1, 2, 3], [4, 5, 6]] |
+------------------------+The new JSON function JSON_OBJECT_TO_ARRAY(<json_doc>) is used to convert all JSON objects found in a JSON document to JSON arrays where each item in the outer array represents a single key-value pair from the object.
Example:\
SET @json1= '{ "a" : [1,2,3] , "b": {"key1": "val1", "key2": {"key3": "val3"}} }';
SELECT JSON_OBJECT_TO_ARRAY(@json1) AS result;\
+-----------------------------------------------------------------------+
| result |
+-----------------------------------------------------------------------+
| [["a", [1, 2, 3]], ["b", {"key1": "val1", "key2": {"key3": "val3"}}]] |
+-----------------------------------------------------------------------+Resulting arrays can be compared using JSON_ARRAY_INTERSECT():
SET @json1='{"a":[1,2,3],"b":{"key1":"val1","key2":{"key3":"val3"}}}';
SET @json2='{"a":[1,2,3]}';
SELECT JSON_OBJECT_TO_ARRAY(@json1) INTO @array1;
SELECT JSON_OBJECT_TO_ARRAY(@json2) INTO @array2;
SELECT JSON_ARRAY_INTERSECT(@array1,@array2) as result;+--------------------+
| result |
+--------------------+
| [["a", [1, 2, 3]]] |
+--------------------+The new JSON function JSON_OBJECT_FILTER_KEYS(<json_doc>,<array_keys>) returns key/value pairs from a JSON string for keys defined in <array_keys>.
Example:
SET @json1= '{ "a": 1, "b": 2, "c": 3}';
SELECT JSON_OBJECT_FILTER_KEYS (@json1, ' ["b", "c"] ') AS result;+------------------+
| result |
+------------------+
| {"b": 2, "c": 3} |
+------------------+By using JSON_ARRAY_INTERSECT() and JSON_KEY() as arguments for JSON_OBJECT_FILTER_KEYS(), a comparison of two JSON strings is possible where only the same keys are compared, not the key/value pairs.\
Example (only show key/value pairs of json1 where the key exists in json2):
SET @json1= '{ "a": 1, "b": 2, "c": 3}';
SET @json2= '{"b" : 10, "c": 20, "d": 30}';
SELECT JSON_OBJECT_FILTER_KEYS (@json1, json_array_intersect(json_keys(@json1), json_keys(@json2))) AS result;+------------------+
| result |
+------------------+
| {"b": 2, "c": 3} |
+------------------+To define the position in a JSON array from the end to the beginning, negative indexes or last can be used as the last element of an array for an JSON array of a JSON path, where the JSON path is used as a parameter in a JSON function.
SELECT JSON_REMOVE(@json, '$.A[-10]');
SELECT JSON_REMOVE(@json, '$.A[last]');Range notation for JSON path using the keyword to define a range of elements.
SELECT JSON_REMOVE(@json, '$.A[1 to 3]');New function NATURAL_SORT_KEY() which can be used to sort strings naturally.
Example: A string "v10" would be sorted after a string "v9"
New function SFORMAT() for custom formats of strings. The function uses a string including formatting options and a set of given values to generate a custom formatted string.
New function RANDOM_BYTES() which returns a binary string of a length between 1 and 1024 bytes. This nondeterministic value is generated by the random number generator of the SSL library, so it generates an arbitrary length string of cryptographic random bytes that are suitable for cryptographic use.
The encryption functions AES_ENCRYPT() and AES_DECRYPT() now support adding the two new parameters initialization vector (iv) and block encryption mode (mode).
Syntax for older release series:
AES_ENCRYPT(str,key_str)New syntax:
AES_ENCRYPT(str, key, [, iv [, mode]])If no mode is provided it will be used from the new system variable block_encryption_mode.\
Example (using the mode from system variable block_encryption_mode):
SELECT @@block_encryption_mode;+-------------------------+
| @@block_encryption_mode |
+-------------------------+
| aes-128-ecb |
+-------------------------+SELECT HEX(AES_ENCRYPT('MariaDB','mykey','vector')) AS result;+----------------------------------+
| result |
+----------------------------------+
| CD0352A4B2FB18A592C04FF8CDA6C2F2 |
+----------------------------------+SELECT AES_DECRYPT(x'CD0352A4B2FB18A592C04FF8CDA6C2F2','mykey','vector') AS result;+---------+
| result |
+---------+
| MariaDB |
+---------+Example (mode provided as argument):
SELECT HEX(AES_ENCRYPT('MariaDB','mykey','thisismy256vector','aes-256-cbc')) AS result;+----------------------------------+
| result |
+----------------------------------+
| CD6C47183B89A813557BFD639A893CE3 |
+----------------------------------+SELECT AES_DECRYPT(x'CD6C47183B89A813557BFD639A893CE3','mykey','thisismy256vector','aes-256-cbc') AS result;+---------+
| result |
+---------+
| MariaDB |
+---------+The new options %Z and %z can be used for the format string of the function
DATE_FORMAT(DATE, format)for adding time zone information to the date string.
%Z Time zone abbreviation
%z Numeric time zone +hhmm or -hhmm presenting the hour and minute offset from UTC
Example:
SELECT DATE_FORMAT(NOW(), '%W %d %M %Y %H:%i:%s %Z %z');+--------------------------------------------------+
| DATE_FORMAT(NOW(), '%W %d %M %Y %H:%i:%s %Z %z') |
+--------------------------------------------------+
| Tuesday 21 November 2023 13:28:34 EST -0500 |
+--------------------------------------------------+The SQL function KDF() is a key derivation function, useful for generating encryption keys from a user provided password or a passphrase. It can be used to generate encryption keys for encryption functions such as AES_ENCRYPT.
KDF(key_str, salt [, {info | iterations} [, kdf_name [, width ]]])kdf_name is "hkdf" or "pbkdf2_hmac"
width (in bits) can be any number divisible by 8
info is a non-secret parameter of the hkdf method, it allows to generate different encryption keys for different purposes from the same secret password
iterations is a positive numeric parameter of the pbkdf2_hmac method, larger values make the password more difficult to brute-force.
Example:
SELECT hex(kdf('foo', 'bar', 'info', 'hkdf'));+----------------------------------------+
| hex(kdf('foo', 'bar', 'info', 'hkdf')) |
+----------------------------------------+
| 710583081D40A55F0B573A76E02D8975 |
+----------------------------------------+
insert into tbl values (aes_encrypt(@secret_data, kdf("Passw0rd", "NaCl", "info", 'hkdf'), "iv"));The function CONV() , which converts a number between numeric base systems, now supports conversions up to base 62. This allows conversions to encodings to capital letters A-Z, lower case letters a-z, and numbers 0-9. The old limit was 36, not including lower case letters.
Example:
SELECT CONV(61,10,36);+----------------+
| CONV(61,10,36) |
+----------------+
| 1P |
+----------------+SELECT CONV(61,10,62);+----------------+
| CONV(61,10,62) |
+----------------+
| z |
+----------------+New data type UUID for more efficient storage of UUIDs
New data type INET4 to store IPv4 addresses as 4-byte binary strings. Benefits of storing IPv4 addresses in the INET4 data type are:
Validation of incorrect values
Comparisons
Sorting
Functions like CAST
Changed default behavior TIMESTAMP field properties
The default for explicit_defaults_for_timestamp is set to ON resulting in removing the nonstandard behavior for TIMESTAMP fields in CREATE TABLE
The properties DEFAULT CURRENT_TIMESTAMP or ON UPDATE CURRENT_TIMESTAMP are not set anymore for the first TIMESTAMP field in a table if not explicitly set
A TIMESTAMP field does not get the property NOT NULL set anymore if not explicitly set
The old behavior can be achieved by setting the properties explicitly or by setting explicit_defaults_for_timestamp to OFF
Stored Functions qualifiers for IN, OUT, INOUT, and IN OUT. The qualifiers are following the syntax already used for stored procedures and take the differences for Oracle into account when using the Oracle compatibility mode (sql_mode=ORACLE).
MariaDB Enterprise Server now supports descending indexes. Composite indexes can be used with differently ordered columns to get a significant performance boost in the corresponding ORDER BY use cases.
New, Detailed Replication Lag Representation
New Information Schema Table For Password Related Data
GTID binlog events now include the thread ID
Automatic SST user account management for Galera
PARSEC authentication plugin
Extending timestamp range to 2106
Limit the size of created disk temporary files and tables
The Software Bill of Materials (SBOM) JSON file is generated in the downloads archive
Vector Search capability has been added (MENT-2233)
Segmented key cache for Aria (MENT-2361)
A new variable (default 1) to define the number of segments has been added. The default disables the new feature.
New server internal which makes all schema changes (ALTER TABLE commands) non-blocking.
For instant ALTER TABLE operations (e.g., where ALGORITHM=INSTANT is used) OSC is not needed. However, for all other ALTER operations OSC provides significant benefits in reducing the locking time to a bare minimum.
The OSC feature works by creating a change buffer for storing changes during the copying of data from the old format to the new one. While data is copied from the old table structure to the new one all changes are stored in the change buffer and the table is fully accessible. Once the copying process is complete the change buffer is applied to the new data structure only requiring a very short locking period.
Having an internal OSC in the server eliminates the need for using external command line tools in order to reduce table locks. These external tools often need to create complicated structures in the database (like triggers and stored procedures) and certain race conditions can lead to the operations never finishing.
In MariaDB Enterprise Server 11.4 a default ALTER operation will be an OSC operation if possible. If the operation cannot be performed as an OSC then another algorithm will be used. If the option LOCK=NONE is explicitly specified in the ALTER statement, then the operation will fail if it cannot be done as an OSC.
CONVERT PARTITION and CONVERT TABLE used with ALTER TABLE can be used to convert a partition into a table or vise versa
Exchange a Partition or Convert a Table Without Validation
The process of exchanging a partition with a table or converting a table to a partition can be a very slow operation, especially for larger tables because for each new data row, the partitioning definitions need to be verified to validate that the new row should indeed be in this partition.
This process can now be sped up by disabling this validation. This new feature should be used with care, as it can lead to inconsistencies if the partitioning rules are not met.
The new addition to ALTER TABLE is:
EXCHANGE PARTITION partition_name WITH TABLE tbl_name [{WITH | WITHOUT} VALIDATION]
CONVERT TABLE normal_table TO partition_definition [{WITH | WITHOUT} VALIDATION]Syntax extension to not require PARTITION keyword in each partition definition
Stored routines are now taking changes to metadata into account whenever the stored routine is called, done for any object a stored routine depends on.
In older release series a reconnect was needed before a stored routine was able to update its metadata from altered objects
Example:
CREATE TABLE t1 (id INT);
INSERT INTO t1 VALUES (100);
CREATE PROCEDURE p1() SELECT * FROM t1;
CALL p1;+------+
| id |
+------+
| 100 |
+------+ALTER TABLE t1 ADD COLUMN b INT DEFAULT 0;
CALL p1;+------+------+
| id | b |
+------+------+
| 100 | 0 |
+------+------+In the above example both calls of the stored procedure p1 would have returned the same result set with the older release series.
Temporary tables are now included in information_schema.tables and included in SHOW TABLES and SHOW TABLE STATUS
Example:
CREATE DATABASE test;
USE test;
CREATE TABLE t1 (id INT);
CREATE TEMPORARY TABLE t2_temp (id INT);
SHOW FULL TABLE;+----------------+-----------------+
| Tables_in_test | Table_type |
+----------------+-----------------+
| t2_temp | TEMPORARY TABLE |
| t1 | BASE TABLE |
+----------------+-----------------+SELECT table_schema, table_name, table_type FROM information_schema.tables WHERE table_schema='test';+--------------+------------+------------+
| table_schema | table_name | table_type |
+--------------+------------+------------+
| test | t2_temp | TEMPORARY |
| test | t1 | BASE TABLE |
+--------------+------------+------------+General Support of Packages for Stored Routines
Before MariaDB Enterprise Server 11.4, the CREATE PACKAGE feature, as well as CREATE PACKAGE BODY, were only supported with sql_mode = ORACLE. They can now be used with any SQL mode.
Example:
DELIMITER $$
CREATE OR REPLACE PACKAGE myPkg
PROCEDURE p1();
FUNCTION f1() RETURNS INT;
END;
$$
CREATE OR REPLACE PACKAGE BODY myPkg
-- variable declarations
DECLARE v1 INT DEFAULT 1;
DECLARE v2 INT DEFAULT 10;
-- routine declarations
PROCEDURE p1()
BEGIN
SELECT v1, v2;
END;
FUNCTION f1() RETURNS INT
BEGIN
RETURN v1;
END;
-- package initialization
SET v1=v1 + 2;
END;
$$
DELIMITER ;
SELECT myPkg.f1();+------------+
| myPkg.f1() |
+------------+
| 3 |
+------------+CALL myPkg.p1();+------+------+
| v1 | v2 |
+------+------+
| 3 | 10 |
+------+------+System-Versioned Tables can automate the creation of new HISTORY partitions partitioned by INTERVAL/LIMIT using the keyword AUTO when creating a table.
CREATE TABLE t1 (x INT) WITH SYSTEM VERSIONING
PARTITION BY SYSTEM_TIME INTERVAL 1 months AUTO;In this case a new HISTORY partition will be created on a monthly basis, storing old versions of the table data.
Information About Application-time Period Tables
New views PERIOD and KEY_PERIOD_USAGE are added to information_schema.
View PERIODS includes the columns
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
PERIOD_NAME
START_COLUMN_NAME
END_COLUMN_NAME
to list Application-time period tables, the name defined for a period, and the columns used for start and end timestamps.
View KEY_PERIOD_USAGE includes the columns
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
PERIOD_NAME
Two new columns are added to the COLUMNS view of information_schema
IS_SYSTEM_TIME_PERIOD_START
IS_SYSTEM_TIME_PERIOD_END
A dump of historical data for system versioned tables is now possible via the new option --as-of for mariadb-dump
System versioned tables can now be dumped and restored by mariadb-dump
The new parameter mariadb-dump parameter --dump-history dumps all historical data
To restore from a dump file the new parameter system_versioning_insert_history needs to be enabled to allow direct inserts into ROW_START and ROW_END columns
The existing parameter secure_timestamp needs to be set to a value which allows changing session timestamps
The command-line tool mariadb-dump now supports the new option --order-by-size. The new option can be used to create a dump of the tables of a database according to their size, smaller tables first.
Parallelism for mariadb-dump
When mariadb-dump is used with the option -T / --tab= to produce tab-separated text-format data files per table, the new option --parallel (synonym --use-threads) can be used to use several threads in parallel to dump the table data to their .txt files. Parallelism also works if the option --single-tansaction is used.
The option --parallel has been added to mariadb-import as a synonym to --use-threads, which has been available before.
New collations based on the Unicode Collation Algorithm (UCA) 14.0.0 have been added for the character sets utf8mb3, utf8mb4, ucs2, utf16, utf32
One neutral and 22 language specific collations have been added
Case sensitive, case insensitive, and nopad variants have been added
Collations (how to compare characters) are now separated from character sets (how to store characters). Collation names no longer have to include character set names, and the same collation can apply to many character sets
Improved contraction performance in UCA collations
Improved UCA collation performance for utf8mb3 and utf8mb4
Full UNICODE support for MariaDB command-line tools on recent versions of Windows (Windows 10 1909 or later, Windows 11, Windows Server 2020 supported). The server my.ini config file is now also encoded in UTF8. Command-line client mariadb.exe uses utf8mb4 by default.
The default collation used for a character set can now be changed globally or for a session via the new system variable character_set_collations. The default collation will be used whenever a character set is defined for a database object without defining the collation.
When not defining a character set the default collation is still the one defined with the system variable collation_server.
This is also preparatory work for changing default collations to use the UCA 14.0.0 standard. In particular, this variable will allow replication between servers with different default collations.
SET @@character_set_collations='utf8mb4=uca1400_ai_ci';
CREATE DATABASE test_with_charset CHARACTER SET utf8mb4;
CREATE DATABASE test;
SELECT SCHEMA_NAME,DEFAULT_COLLATION_NAME FROM SCHEMATA WHERE SCHEMA_NAME LIKE "test%";+-------------------+------------------------+
| SCHEMA_NAME | DEFAULT_COLLATION_NAME |
+-------------------+------------------------+
| test_with_charset | utf8mb4_uca1400_ai_ci |
| test | utf8mb4_general_ci |
+-------------------+------------------------+Optimizations to information schema system tables
The information schema provides tables with metadata about stored procedures and stored routines, which are often used by third party tools, and MariaDB Connectors to retrieve details about existing routines. Previously, a high number of rows in these tables would have resulted in a performance impact. We have made a number of internal improvements to eliminate the performance impact completely for use cases, where metadata had to be queried regularly.
New optimizer cost model, a change from a more rule-based to a cost-based model. Huge effort went into improving the calculations of the optimizer costs, taking into account state of the art SSD disks. The new implementation also takes the different characteristics of a storage engine into account.
If a key lookup cannot be used, the optimizer can now make better choices when to use index scan, table scan, index merges, or other methods to join data.
While one model may work well for a specific use case, it may not be the right model for other use cases. With the changes we've made, it's now possible to fine-tune the optimizer by changing costs for different metrics.
Changes to the optimizer now allow the use of an index for a comparison of a DATE function to a constant value.
DATE(datetime_column) = constThe optimizer also has been enhanced to allow single-table UPDATE and DELETE to take advantage of semi-join optimization.
Improved optimizer performance in a case of join with many eq_ref tables
Automatic SST User Account Management for MariaDB Enterprise Cluster
The State Snapshot Transfer (SST) method, needed to provide a full data copy to a new node, requires a dedicated account to access the remote server (donor) during the SST process.
The new MariaDB Enterprise Cluster (Galera) creates the user internally for the time of an SST, which makes the need to have an account created manually obsolete. This also removes the requirement to have a user and password provided via a configuration file. Having the user created by Galera also ensures that the needed privileges are set.
For MariaDB Galera Cluster, configurations are set using one system variable as a semicolon separated list of options, the system variable wsrep_provider_options. MariaDB Community Server system variables are limited to a length of 2048 characters, which is not sufficient for the Galera options in some use cases, and also hard to maintain as a DBA.
A new plugin is available, enabled via the plugin-wsrep-provider option. The options are split into separate options, if the plugin is used. The use of the plugin is optional.
Incompatibility change: Replication is now using Global Transaction IDs (GTID) by default to make replicas crash safe
The default of CHANGE MASTER TO for master_use_gtid changes from no to slave_pos
A fresh slave start, a RESET SLAVE, or a CHANGE MASTER TO without the defining master_use_gtid is replicating in the GTID based mode using gtid_slave_pos as the position to start downloading transactions from the primary
Global Limitation of Space Used by Binary Logs
The new system variable max_binlog_total_size (alias binlog_space_limit) enables binary log purging when the total size of all binary logs exceeds the specified threshold. The default for max_binlog_total_size is 0, meaning that there is no limit. The system variable can be changed without restarting the server.
The new system variable --slave-connections-needed-for-purge, set to 1 by default, assures that binary log purging will not happen until at least that many replicas are connected, and do not need purged binary logs anymore.
The new status variable binlog_disk_use can be used to query the disk space currently used by the binary logs.
Index for Binary Log on GTIDs
An index is now created on the GTIDs of the binary log, which allows a connecting replica to find the position it should start from without the need to scan the whole binary log.
The new system variable binlog_gtid_index (default ON) can be used to disable the creation of indexes.
The new system variable binlog_gtid_index_page_size (default 4096) defines the page size to use for the binary log GTID index.
The new system variable binlog_gtid_index_span_min (default 65536) controls the sparseness of the binary log GTID index.
The new status variables binlog_gtid_index_hit and binlog_gtid_index_miss can be used for monitoring purposes. A miss is an indication that the index file is missing.
GTID Binlog Events Now Include Thread ID
The thread ID and the corresponding statement can now be retrieved from binary logs.
The output of mariadb-dump also includes the thread ID.
A new option 'slave_max_statement_time' for the SQL thread has been added to allow to set a maximum allowed execution time for a replicated query
Allows to control the maximum time a replica can be behind a primary if the primary goal is to have a small replication lack, with the cost to be out of sync. It is therefore disabled by default.
The binary log filter options binlog-do-db, binlog-ignore-db, and binlog-row-event-max-size are now visible as system variables.
Example:
SHOW GLOBAL VARIABLES WHERE
Variable_name LIKE 'binlog_do_db' OR
Variable_name LIKE 'binlog_ignore_db' OR
Variable_name LIKE 'binlog_row_event_max_size';+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| binlog_do_db | |
| binlog_ignore_db | |
| binlog_row_event_max_size | 8192 |
+---------------------------+-------+New "SQL_BEFORE_GTIDS" and "SQL_AFTER_GTIDS" for START REPLICA UNTIL
The new options SQL_BEFORE_GTIDS and SQL_AFTER_GTIDS for START REPLICA UNTIL allow user control of whether the replica stops before or after a provided GTID state. Its syntax is:
START SLAVE UNTIL (SQL_BEFORE_GTIDS|SQL_AFTER_GTIDS)="<gtid_list>"When providing SQL_BEFORE_GTIDS="<gtid_list>", for each domain specified in the gtid_list, the replica will execute transactions up to the GTID found, and immediately stop processing events in that domain without executing the transaction of the specified GTID.
Once all domains have stopped, the replica will stop. Events originating from domains that are not specified in the list are not replicated.
START SLAVE UNTIL SQL_AFTER_GTIDS="<gtid_list>" is an alias to the default behavior of START SLAVE UNTIL master_gtid_pos="<gtid_list>", the known behavior before MariaDB Enterprise Server 11.4.
The replica will execute transactions originating from domain ids provided in the list, and will stop once all transactions provided in the UNTIL list have all been executed.
Example:
If a primary server has a binary log consisting of the following GTIDs:
0-1-1
1-1-1
0-1-2
1-1-2
0-1-3
1-1-3Given a fresh replica (i.e., one with an empty GTID position, @@gtid_slave_pos=") is started with SQL_BEFORE_GTIDS, i.e.,
START SLAVE UNTIL SQL_BEFORE_GTIDS="1-1-2"the resulting gtid_slave_pos of the replica will be "1-1-1" because the replica will execute only events from domain 1. When it sees the transaction with sequence number 2 it immediately stops without executing it.
If the replica is started with SQL_AFTER_GTIDS, i.e.,
START SLAVE UNTIL SQL_AFTER_GTIDS="1-1-2"the resulting gtid_slave_pos of the replica will be "1-1-2" because the replica will execute only events from domain 1. But in this case it stops after executing the provided GTID.
New, detailed replication lag representation
The Seconds_Behind_Master field of SHOW REPLICA STATUS can be complex and confusing, especially when parallel replication, delayed replication, or the option sql_slave_skip_counter is used. To help provide a consistent view of replication lag, three new fields have been added to the statement's output to provide specific timing information about the state of the IO and SQL threads.
Master_last_event_time
Timestamp of the last event read from the primary by the IO thread
Slave_last_event_time
Timestamp from the primary of the last event committed on the replica
Master_Slave_time_diff
The difference of the above two timestamps
New optimistic ALTER TABLE for replicas. When enabled by binlog_alter_two_phase = 1 (not default), an ALTER TABLE is executed on the primary server and is replicated and "started" on the replica server more or less in parallel to the primary server. Thus, the possibly huge replication lag between a primary and replica server due to a long running ALTER TABLE on the primary can be avoided.
The command line tool mariadb-binlog now supports the use of global transaction IDs (GTID) for the options start-position and stop-position. mariadb-binlog can now be used to produce results filtered by the defined GTIDs.
The command-line tool mariadb-binlog now supports the new options --do-domain-ids, --ignore-domain-ids, and --ignore-server-ids. mariadb-binlog can now be used to produce results filtered by domain ids server ids.
Client to Server connection now SSL Encrypted by Default
Using SSL/TLS has been simplified with MariaDB Enterprise Server 11.4. Before version 11.4, proper SSL configuration required multiple manual steps for the server, and all the clients connecting to it.
Now the client can verify the server self-signed certificate without any configuration whatsoever. The server completely automatically generates the SSL certificate and the client automatically verifies it as needed.
This simplification allows the server to now require SSL encrypted connections by default and to refuse unencrypted connections. Additionally, MariaDB Enterprise Server 11.4 allows users to verify SSL certificates using their fingerprints.
New (Password Authentication using Response Signed with Elliptic Curves).
PARSEC improves security over old authentication plugins by introducing salted passwords, time consuming key derivation function, and a client-side scramble to ensure that man-in-the-middle attackers cannot control the client response.
Example on how to create a user using the new authentication plugin:
CREATE USER 'MariaDBUser'@'%' IDENTIFIED VIA PARSEC USING PASSWORD('MyPassword123!');This will result in:
SHOW GRANTS FOR MariaDBUser@'%';
Grants FOR MariaDBUser@%
GRANT USAGE ON *.* TO `MariaDBUser`@`%` IDENTIFIED VIA parsec USING 'P0:lhXyNv1cIxpB8EnTxR7ON7S7:1l3rWRW1/jw45yrvYXB8eh02wzk7lcJcz4CMcWw2b+8'The new plugin password_reuse_check can be used to validate that a password cannot be reused. The number of days until a password can be reused can be configured via a new parameter password_reuse_check_interval
New allowlist for MariaDB Galera Cluster node to restrict the nodes which can join a cluster to increase security .
A new system variable wsrep_allowlist can be used to define a list of IP addresses. Only nodes from these IP addresses can join a running
The new SQL syntax GRANT .. TO PUBLIC can now be used to easily grant privileges to databases or tables for any user, who has access to the server.
SHOW GRANTS FOR PUBLIC is an enhancement to the existing SHOW GRANTS syntax to retrieve all privileges granted to public
The fine grained privileges have been removed from the SUPER privilege.
The SUPER privilege is still used for some special cases, like using DES_ENCRYPT and DES_DECRYPT without an explicit key, for debug settings, and some system variables for changing them with SET GLOBAL.
With MariaDB Enterprise Server 11.4, changes were made to privileges to allow real read only replicas with no other privileges. This was achieved by removing the READ ONLY ADMIN privilege from the SUPER privilege and making it a new privilege. Hence the READ ONLY ADMIN privilege now needs to be granted explicitly, if this user should have write access to a read only replica (a replica having read_only=1 set).
New privilege SHOW CREATE ROUTINE
Before MariaDB Enterprise Server 11.4 a user only could see the definition of a routine, a stored feature, or function, when either of the following was met:
They had been granted the SELECT privilege for the mysql.procs table
The user was the definer of the Stored Procedure
The new privilege SHOW CREATE ROUTINE, has been introduced to enable any user with this privilege to view the definition of a stored routine.
Example without privilege SHOW CREATE ROUTINE:
SHOW grants;+--------------------------------------------------+
| Grants for user1@% |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO `user1`@`%` |
| GRANT SELECT, EXECUTE ON `test`.* TO `user1`@`%` |
+--------------------------------------------------+SHOW CREATE PROCEDURE myProc \G*************************** 1. row ***************************
Procedure: myProc
sql_mode: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Create Procedure: NULL
character_set_client: utf8mb3
collation_connection: utf8mb3_general_ci
Database Collation: utf8mb4_general_ciExample with the new privilege SHOW CREATE ROUTINE:
SHOW grants;+-----------------------------------------------------------------------+
| Grants for user1@% |
+-----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `user1`@`%` |
| GRANT SELECT, EXECUTE, SHOW CREATE ROUTINE ON `test`.* TO `user1`@`%` |
+-----------------------------------------------------------------------+SHOW CREATE PROCEDURE myProc \G*************************** 1. row ***************************
Procedure: myProc
sql_mode: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `myProc`()
BEGIN
SELECT "My Definiton of a Stored Procedure";
END
character_set_client: utf8mb3
collation_connection: utf8mb3_general_ci
Database Collation: utf8mb4_general_ciSHOW CREATE ROUTINE privilege can be granted globally, per schema, or on individual routines.
Retrieve Users Privileges on a Specific Table
MariaDB Server provides information about privileges a user has to a table in different views in the INFORMATION_SCHEMA, split between global, schema, and table privileges. Before MariaDB Enterprise Server 11.4, there was no easy way to list all the tables a user has access to, this information has to be queried from several tables.
MariaDB Enterprise Server 11.4 now provides a new view privileges_by_table_by_level in the SYS schema that lists the privilege and privilege level per user, schema, and table.
Example:
CREATE DATABASE test;
USE test;
CREATE TABLE t1 (id INT);
CREATE USER user1;
GRANT SELECT, UPDATE ON *.* TO user1;
CREATE USER user2;
GRANT SELECT ON test.* TO user2;
CREATE USER user3;
GRANT SELECT ON test.t1 TO user3;
SELECT * FROM sys.privileges_by_table_by_level WHERE GRANTEE NOT LIKE "'root'@'%'";+--------------+------------+-------------+-----------+--------+
| TABLE_SCHEMA | TABLE_NAME | GRANTEE | PRIVILEGE | LEVEL |
+--------------+------------+-------------+-----------+--------+
| test | t1 | 'user1'@'%' | SELECT | GLOBAL |
| test | t1 | 'user1'@'%' | UPDATE | GLOBAL |
| test | t1 | 'user2'@'%' | SELECT | SCHEMA |
| test | t1 | 'user3'@'%' | SELECT | TABLE |
+--------------+------------+-------------+-----------+--------+A new information Schema view, USERS, has been added, which DBAs can use to get insights about password related information for a user.
This information can be used:
by an application to inform a user about a password about to expire or an account which is at risk of being blocked due to the number of wrong passwords entered
by DBAs to query users which have been blocked because of too many invalid passwords entered
The new view includes the fields:
USER - A string including user name and host
PASSWORD_ERRORS - A counter with the current number of wrong passwords entered
Reset to 0 when a correct password has been entered
An account is blocked, if max_password_errors is reached
NULL for accounts with privilege CONNECTION ADMIN
PASSWORD_EXPIRATION_TIME - The date and time when the password expires or NULL, if the password never expires
Engine-defined attributes can now also be defined per-partition for more flexible configurations.
The space occupied by freed pages within the InnoDB system tablespace can be reclaimed by adding an :#autoshrink attribute to #innodb_data_file_path#, like:
[mariadb]
...
innodb_data_file_path=ibdata1:12M;ibdata2:50M:autoextend:autoshrinkThis allows the system tablespace to be truncated after the last allocated page within it, all the way to the specified minimum size (here: 12MiB). In older release series InnoDB data files never shrink in size during normal operation. One could shrink .ibd files by rebuilding tables with OPTIMIZE TABLE, or the undo tablespace files by SET GLOBAL innodb_undo_log_truncate=ON.
Shrink temporary InnoDB tablespaces without restart
Before MariaDB Enterprise Server 11.4 the only way to reclaim disk space used by temporary InnoDB tablespaces was to restart the server, as temporary tablespaces are deleted when you stop the server, and are recreated with their configured size.
Restarting the server is not always possible, while you still need to reclaim disk space. MariaDB Enterprise Server 11.4 can solve this problem by executing
SET GLOBAL innodb_truncate_temporary_tablespace_now=1;This triggers to reclaim the disk space, but existing tables will not be removed.
Example:
CREATE TEMPORARY TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL)ENGINE=InnoDB;
INSERT INTO t1 SELECT seq, seq FROM seq_1_to_65536;
DROP TABLE t1;
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE NAME="innodb_temp
orary";+------------------+-----------+
| NAME | FILE_SIZE |
+------------------+-----------+
| innodb_temporary | 79691776 |
+------------------+-----------+SET GLOBAL INNODB_TRUNCATE_TEMPORARY_TABLESPACE_NOW= 1;
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE NAME="innodb_temp
orary";+------------------+-----------+
| NAME | FILE_SIZE |
+------------------+-----------+
| innodb_temporary | 12582912 |
+------------------+-----------+The process to import a InnoDB tablespace is now simplified. While the old process required to first create a table and to discard the tablespace before executing ALTER TABLE IMPORT TABLESPACE, now ALTER TABLE IMPORT TABLESPACE is the only command needed.
Example:
FLUSH TABLES t1 FOR EXPORT;
--copy_file $MYSQLD_DATADIR/test/t1.cfg $MYSQLD_DATADIR/test/t2.cfg
--copy_file $MYSQLD_DATADIR/test/t1.frm $MYSQLD_DATADIR/test/t2.frm
--copy_file $MYSQLD_DATADIR/test/t1.ibd $MYSQLD_DATADIR/test/t2.ibd
UNLOCK TABLES;
ALTER TABLE t2 IMPORT TABLESPACE;The InnoDB storage engine has gone through additional code cleanup and we have removed some configuration parameters used by the InnoDB Change Buffering feature, a feature which was disabled for earlier release series.
New system variables like innodb_log_file_buffering, innodb_data_file_buffering, innodb_log_file_write_through, and innodb_data_file_write_through have been added to allow better control for log files and data files. They can be set dynamically while the Server is running.
Changes to the InnoDB redo log format to reduce write amplification, which can result in better performance.
The system variables innodb_write_io_threads and innodb_read_io_threads are now dynamic, and their values can be changed without restarting the server
The SPIDER storage engine now allows the use of engine-defined attributes (table options), similar to other storage engines, and more convenient than the current method of providing parameters via COMMENT for a table.
Improved error reporting for INSERT that inserts multiple rows. The property ROW_NUMBER in GET DIAGNOSTICS allows retrieval of the row number that caused the error or warning.
Implementation of JSON histograms with detailed histogram collection, used when histogram_type=JSON_HB (not the default) is set. Using JSON histograms results in more precise data statistics over string data types or when columns have highly-uneven data distribution. More precise statistics allow the optimizer to create better query plans resulting in faster queries.
ANALYZE [FORMAT=JSON] <select> has been extended to allow analyzing a query which is currently running in another connection by running SHOW ANALYZE FORMAT=JSON for <conn_id>.
ANALYZE FORMAT=JSON now shows the time spent in the query optimizer
In some cases optimizing the query can take a while. ANALYZE FORMAT=JSON now reports time as "query_optimization": { "r_total_time_ms": NNNN.NNN } in the JSON string
SHOW EXPLAIN for <conn_id>, which returns an EXPLAIN for a query running in another connection, has been extended to return the more detailed JSON output by using the syntax SHOW EXPLAIN [FORMAT=JSON] FOR <conn_id>.
Syntax EXPLAIN [ FORMAT=JSON] FOR CONNECTION <conn_id> is also supported.
New status monitoring features for MariaDB Enterprise Cluster:
New thread states in PROCESSLIST for MariaDB Galera Cluster allow better tracking of a session status
"waiting to execute in isolation"
"waiting for TOI DDL"
"waiting for flow control"
"waiting for certification"
MariaDB Enterprise Cluster has added a new feature to save wsrep node status changes in a dedicated machine readable JSON file. This allows an easier way for reading and interpreting the status file by an external monitoring tool. A filename needs to be specified via the option wsrep_status_file to enable the feature.
This JSON file also includes details about a node eviction status to the JSON file to report that a Galera node needs to be restarted to join the cluster.
MariaDB Enterprise Cluster now includes progress reporting of MariaDB Enterprise Backup based SST when wsrep-debug=1 is set and the tool pv is installed. The SST progress report is then written into the server log:
2022-03-24 13:10:43 0 [Note] WSREP: REPORTING SST PROGRESS: '{ "from": 1, "to": 3, "total": 23106759472, "done": 23106759472, "indefinite": -1 }'The new value SENT_ROWS in the information schema table PROCESSLIST includes the number of rows sent by the current statement, shown in the processlist.
Selects with functions show the total number of rows sent by the main statement and all functions
Stored procedures show the total number of rows sent per stored procedure statement
INSERT RETURNING and DELETE RETURNING show the total number of rows sent for the returning data set
Example:
SELECT * FROM processlist\G*************************** 1. row ***************************
...
*************************** 2. row ***************************
ID: 6
USER: root
HOST: localhost
DB: test
COMMAND: Query
TIME: 1
STATE: Sending data
INFO: select * from t1
TIME_MS: 1340.406
STAGE: 0
MAX_STAGE: 0
PROGRESS: 0.000
MEMORY_USED: 89856
MAX_MEMORY_USED: 392544
EXAMINED_ROWS: 0
SENT_ROWS: 3895737
QUERY_ID: 436
INFO_BINARY: select * from t1
TID: 100The SQL Error Log Plugin can be used to log errors sent to clients for later analysis. When option sql_error_log_with_db_and_thread_info=ON is set, the log file is now also showing thread id, and the current default schema for the error.
See also: All MariaDB Enterprise Releases
MariaDB Enterprise Server 11.6.4-1 is the first Stable (GA) release of MariaDB Enterprise Server 10.6, released on 2021-08-26
MariaDB Enterprise Server 10.6.4-1 is the first General Availability (GA) release of MariaDB Enterprise Server 10.6. This release contains a variety of new features.
MariaDB Enterprise Server 10.6.4-1 was released on 2021-08-26.
CVE (with link)
CVSS base score
5.5
Extensive internal optimizations, including a refactoring of InnoDB storage engine code.
Atomic DDL
DDL (Data Definition Language) statements are now atomic operations. If the DDL statement is not fully successful, the operation will be rolled back. When the server crashes or is killed in the middle of a DDL statement, the operation is rolled back during crash recovery when the server is restarted. (MDEV-17567)
During crash recovery, the server uses the DDL log to determine if an operation needs to be rolled back. When the is enabled, the crash recovery process ensures that the successful operations are written to the binary log and that the unsuccessful operations are not.
By default, the DDL log is at ddl-recovery.log in the . When DDL statements are being executed, the DDL log is synchronized to disk very frequently. If you want to configure a custom path for the DDL log, the log-ddl-recovery option can be used.
Default InnoDB flush method
The default innodb_flush_method is now O_DIRECT (MDEV-24854)
Prior to this release, the default innodb_flush_method was fsync
UTF-8 (utf8) character set alias
The character set has been renamed to , which used to be an alias for the utf8 character set
The character set utf8 is now an alias that defaults to utf8mb3 but can be turned into an alias for with a config change
The new default of is what makes utf8mb3 default to utf8, and anything that removes this new value from old_mode changes utf8 to mean utf8mb4 (MDEV-8334)
In a future release series (after 10.6) the default value of old_mode will drop this new value, making utf8 default to utf8mb4
IPv6 by Default (MDEV-6536)
When is configured, MariaDB Enterprise Server now listens on both IPv6 and IPv4 addresses.
This release incorporates MariaDB Enterprise ColumnStore version 6.1.1. Benefits include:
Disk-based aggregation allows larger aggregated result sets than can fit in memory
Increased DECIMAL precision
Transactional tables can be updated with data from ColumnStore tables
LZ4 compression
Default InnoDB flush method
(This item is also mentioned above in Notable Changes .)
The default innodb_flush_method is now O_DIRECT (MDEV-24854)
Prior to this release, the default innodb_flush_method was fsync
SELECT .. SKIP LOCKED
ignores already-locked rows. (MDEV-13115)
One use case for this feature is within applications that sell a limited resource, such as ticketing, rentals, or seat-based sales. In these applications, you need a way to display only the available inventory. This can be accomplished by querying available inventory and skipping locked rows.
SELECT *
FROM ticketing
WHERE claimed = 0 AND section = 'B'
ORDER BY row DESC
LIMIT 10
FOR UPDATE SKIP LOCKED;Compressed rows read-only by default
COMPRESSED row format is read-only by default. (MDEV-23497)
System variable innodb_read_only_compressed=ON by default.
System variable innodb_read_only_compressed=OFF enables write support.
This is a preparatory change. Additional change will occur in a future release series (after 10.6), when COMPRESSED row format will no longer accept writes. It is recommended to alter tables using the COMPRESSED row format to use the DYNAMIC row format with InnoDB page compression:
ALTER TABLE tab
ROW_FORMAT=DYNAMIC
PAGE_COMPRESSED=1;For additional information, see "" and "Configure InnoDB Page Compression".
Information Schema changes for InnoDB
Information Schema directly reflects the filesystem. (MDEV-22343)
INNODB_SYS_TABLESPACES.PAGE_SIZE contains the physical page size of a page.
INNODB_SYS_TABLESPACES.FILENAME added as a replacement for
Information Schema INNODB_SYS_DATAFILES removed. (MDEV-22343)
Reduced global lock duration in InnoDB transaction deadlock checks (MDEV-24738)
InnoDB no longer acquires advisory file locks by default (MDEV-24393)
When using data-at-rest encryption with the encryption plugin, InnoDB will automatically disable key rotation checks. (MDEV-14180)*
The encryption plugin does not support key rotation, so key rotation checks are not required.*
In previous releases, unnecessary key rotation checks with the encryption plugin could reduce performance, unless they were explicitly disabled by setting innodb_encryption_rotate_key_age=0.
Optimization added to speed up inserts into an empty InnoDB table. (MDEV-515)
Maximum value of the innodb_lock_wait_timeout system variable is now 100000000, which means infinite timeout.
Change in checksum algorithm options
innodb_checksum_algorithm options have changed: (MDEV-25105)
Supported: crc32, strict_crc32, full_crc32, strict_full_crc32
Eliminated: none, strict_none, innodb, strict_innodb
When InnoDB reads a page using an eliminated checksum algorithm after performing a physical upgrade, InnoDB will continue to accept the checksum.
When a query changes a page using an eliminated checksum algorithm, InnoDB will automatically switch to a supported checksum algorithm when InnoDB writes the changed page to disk.
Expanded compatibility with Oracle through new functions:
Added function (MDEV-20025)
Added function (MDEV-24285)
Added function (MDEV-24285)
Added function (MDEV-20017)
Expanded compatibility with Oracle through enhancements:
With sql_mode=ORACLE added MINUS as an alias to EXCEPT (MDEV-20021)
With sql_mode=ORACLE improved SYSDATEto allow use without parenthesis. (MDEV-19682)
With sql_mode=ORACLE supports a pseudo-column name as an alias for the function (MDEV-24089)
With sql_mode=ORACLE subqueries in a FROM clause do not require the AS clause.
Enhanced compatibility with Sybase SQL Anywhere through : (MENT-1062)
With sql_mode=EXTENDED_ALIASES, alias resolution and use of column aliases in the SQL list and WHERE clause.
With sql_mode=EXTENDED_ALIASES, support use of an alias in the list before the alias is defined.
With sql_mode=EXTENDED_ALIASES, if the same label is used for an alias and a column, the alias is used.
sys Schema
sys schema provides a set of views, functions, and stored procedures to aid DBA analysis of the . (MDEV-9077)
Increase in host name length
Host names in , and replication can be up to 255 bytes long. (MDEV-24312)
UTF8
(This item is also mentioned above in Notable Changes .)
The character set has been renamed to , which was formerly an alias for the utf8 character set
The character set utf8 is now an alias that defaults to utf8mb3 but can be turned into an alias for with a config change
The new default of is what makes utf8mb3 default to utf8, and anything that removes this new value from old_mode changes utf8 to mean utf8mb4 (MDEV-8334)
In a future release series (after 10.6) the default value of old_mode will drop this new value, making utf8 default to utf8mb4
Ignored indexes
An index can be marked with the IGNORED option, which forbids the optimizer from using the index in queries. The IGNORED option can be used to evaluate whether an index is actually helpful for performance without dropping the index. (MDEV-7317)
Example syntax for CREATE TABLE:
CREATE TABLE table_name (
id INT PRIMARY KEY,
col_name INT,
INDEX key_name (col_name) IGNORED
);Example syntax for CREATE INDEX:
CREATE INDEX key_name
ON table_name
(col_name) IGNORED;Example syntax for ALTER TABLE:
ALTER TABLE table_name
ALTER INDEX key_name IGNORED;An ignored index cannot be referenced in index hints, such as FORCE INDEX, IGNORE INDEX, or USE INDEX. When you try to reference an ignored index in an index hint, the server raises an error with the ER_KEY_DOES_NOT_EXISTS error code:
SELECT *
FROM table_name
FORCE INDEX (key_name)
WHERE col_name > 1;ERROR 1176 (42000): Key 'key_name' doesn't exist in table 'table_name'Thread Pool enhancements
The thread pool can be configured to reshuffle connections into random thread groups periodically, which can help prevent many connections from becoming concentrated in just a few thread groups. (MENT-622)
The thread_pool_reshuffle_group_period system variable defines how frequently the connections are reshuffled. By default, the value is 0 which means that connections are not reshuffled.
The THREAD_POOL_CONNECTIONS information schema table can be used to view which connections are assigned to each thread group.
Systemd
Systemd socket activation is now supported. (MDEV-5536)
JSON_TABLE()
returns a table from JSON data. (MDEV-17399)
Queryable rows and columns are produced based on the JSON input, but are not stored in a table on disk. Column mappings are defined in a JSON path expression.
Prior to this release, the and functions could be used to retrieve values from JSON data on a per-column basis.
With JSON_TABLE():
JSON data can JOIN with existing tables.``
A table can be created from JSON data using against a JSON_TABLE().
enables extraction of nested data from JSON arrays and objects.
OFFSET syntax
Additional syntax is supported for (MDEV-23908)
OFFSET start { ROW | ROWS } FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { ONLY | WITH TIES } is an alternative to LIMIT .. OFFSET
The WITH TIES option requires the use of ORDER BY and allows the number of rows to exceed the FETCH count to ensure that the final row in the chunk includes any additional rows that have the same values in the ORDER BY fields (eliminating the need to fetch the next chunk to check for spill-over).
For example, the following query can return more than 10 rows if there are more username rows that match the username in the 10th row (the order of the purchase values within the complete set of each username's records is non-deterministic):
SELECT username, purchase
FROM user_purchases
ORDER BY username
OFFSET 305 ROWS
FETCH NEXT 10 ROWS WITH TIES;For example, the following query specifies ONLY instead of WITH TIES, so the query can't return more than 10 rows:
SELECT username, purchase
FROM user_purchases
ORDER BY username, purchase
OFFSET 0 ROWS
FETCH NEXT 10 ROWS ONLY;Views supported with (MDEV-15888)
All SQL statements can be prepared except , , [DEALLOCATE / DROP (MDEV-16708)
allows database-specific and table-specific filters. (MENT-65) For example:
{
"connect_event" : "ALL",
"table_event" : ["READ","WRITE",{"ignore_tables" : "mysql.*"}],
"query_event" : ["DDL",{"tables" : "test.t2"}]
}The gssapi authentication plugin can now authenticate a user account by checking if the user belongs to an Active Directory group. (MDEV-23959)
The group is specified in the authentication string using the statement. The group can be specified using the group name or the SID.
Example syntax using a group name without specifying the domain:
CREATE USER root
IDENTIFIED VIA gssapi AS 'GROUP:Administrators';Example syntax using a group name that specifies the domain:
CREATE USER root
IDENTIFIED VIA gssapi AS 'GROUP:Administrators';Example syntax using a SID in the usual format:
CREATE USER root
IDENTIFIED VIA gssapi AS 'SID:S-1-5-32-544';Example syntax using a well-known SID:
CREATE USER everyone
IDENTIFIED VIA gssapi AS 'SID:WD';When using data-at-rest encryption with the encryption plugin, InnoDB will automatically disable key rotation checks. (MDEV-14180)*
The encryption plugin does not support key rotation, so key rotation checks are not required.*
In previous releases, unnecessary key rotation checks with the encryption plugin could hurt performance, unless they were explicitly disabled by setting innodb_encryption_rotate_key_age=0.
With MariaDB Enterprise Cluster, TLS is required for MariaDB Enterprise Cluster by default. (MENT-1192)
Since TLS is required for Enterprise Cluster by default, database administrators should create TLS certificates for each node during the deployment process.
Database administrators can revert Enterprise Cluster to the mode used in previous releases by setting the wsrep_ssl_mode system variable to PROVIDER.
For additional information, see "WSREP TLS Modes".
TLS functionality for State Snapshot Transfers (SSTs) is enhanced when MariaDB Enterprise Backup or Rsync is the SST method. (MDEV-25359)
For additional information, see "SST TLS Modes".
Cluster name verification is performed for Joiner nodes prior to State Snapshot Transfers (SSTs) and Incremental State Transfers (ISTs). (MDEV-25359) For additional information, see "Cluster Name Verification".
With MariaDB Enterprise Cluster, system variable wsrep_certificate_expiration_hours_warning enables logging of a warning prior to expiration of the TLS certificate used for wsrep (Enterprise Cluster) communications. (MENT-1090)
For additional information, see "Certificate Expiration Warnings".
With MariaDB Enterprise Cluster, communication between nodes can be changed from unencrypted to TLS without cluster downtime. (MDEV-22131)
Enabling TLS without downtime relies on two new options implemented for the wsrep_provider_options system variable: socket.dynamic and socket.ssl_reload.
For additional information, see "Enable TLS without Downtime".
Performance Schema table provides information on replica worker threads. (MDEV-20220)
Fine-grained binlog expiration
system variable defines the frequency in seconds of automated removal of binary logs. (MDEV-19371)
Prior to this release, expiration time was defined in days using binlog_expire_logs_days.
Enhanced consistency for Semi-Sync Replication
When , consistency is guaranteed for a Primary server in an HA (Primary/Replica) topology when using semi-synchronous replication. (MDEV-21117)
rior to this release, when using semi-synchronous replication, if a Primary crashed before sending a transaction to the Replica, on restart the Primary could recover incomplete InnoDB transactions when rejoining as a Replica.
With this release, when using semi-synchronous replication and with rpl_semi_sync_slave_enabled=ON, incomplete transactions will be rolled-back on the Replica, ensuring the new Primary (former Replica) and new Replica (former Primary) remain in sync.
MariaDB Enterprise Cluster is powered by Galera. New in this release:
XA Transactions are supported (MENT-690)
With MariaDB Enterprise Cluster, TLS is required for MariaDB Enterprise Cluster by default. (MENT-1192)
Since TLS is required for Enterprise Cluster by default, database administrators should create TLS certificates for each node during the deployment process.
Database administrators can revert Enterprise Cluster to the mode used in previous releases by setting the wsrep_ssl_mode system variable to PROVIDER.
For additional information, see "WSREP TLS Modes".
TLS functionality for State Snapshot Transfers (SSTs) is enhanced when MariaDB Enterprise Backup or Rsync is the SST method. (MDEV-25359)
For additional information, see "SST TLS Modes".
Cluster name verification is performed for Joiner nodes prior to State Snapshot Transfers (SSTs) and Incremental State Transfers (ISTs). (MDEV-25359)
For additional information, see "Cluster Name Verification".
wsrep_certificate_expiration_hours_warning system variable enables logging of a warning prior to expiration of the TLS certificate used for wsrep (Enterprise Cluster) communications. (MENT-1090)
For additional information, see "Certificate Expiration Warnings".
Communication between nodes can be changed from unencrypted to TLS without cluster downtime. (MDEV-22131)
Enabling TLS without downtime relies on two new options implemented for the wsrep_provider_options system variable: socket.dynamic and socket.ssl_reload.
For additional information, see "Enable TLS without Downtime".
Galera Cluster nodes can be configured to refuse statements that would generate local GTIDs. (MDEV-20715)
When Galera Cluster is used with MariaDB Replication, local GTIDs can cause replication errors when the primary or replica has to failover to a different cluster node. By configuring Galera Cluster nodes to refuse statements that would generate local GTIDs, replication is more likely to succeed against any available cluster node.
To configure a node to refuse statements that would generate local GTIDs, set wsrep_mode=DISALLOW_LOCAL_GTID.
wsrep_mode=STRICT_REPLICATION replaces deprecated system variable wsrep_strict_ddl (MDEV-20008)
wsrep_mode=REPLICATE_MYISAM replaces deprecated system variable wsrep_replicate_myisam (MDEV-24946)
When wsrep_debug=SERVER and wsrep_OSU_method=TOI, information about DDL queries from remote hosts is logged in the local error log, not just locally-initiated DDL queries. (MDEV-9609)
The default of wsrep_debug=NONE disables debug logging.
The script wsrep_sst_mariadb-backup checks all server-related configuration groups when processing a configuration file. (MDEV-25669)
Prior to this release, only the [mysqld] configuration group was checked when processing a configuration file.
The following changes are as compared to MariaDB Enterprise Server 10.5.10-7, the latest GA release on the prior release series.
For clients such as mariadb (mysql), the connection property specified via the command-line (such as --port=3306) will force the connection type (such as TCP/IP). (MDEV-14974)
Unchanged metadata is not sent in the result set for prepared statements. (MDEV-19237)
function added
system variable added
columnstore_cache_use_import system variable added
columnstore_decimal_overflow_check system variable added
status variable removed
ER_BINLOG_UNSAFE_SKIP_LOCKED error code added
ER_BLACKBOX_ERROR error code error number changed from 4174 to 6000
ER_JSON_TABLE_ALIAS_REQUIRED error code added
ER_JSON_TABLE_ERROR_ON_FIELD error code added
ER_JSON_TABLE_MULTIPLE_MATCHES error code added
ER_JSON_TABLE_SCALAR_EXPECTED error code added
ER_PK_INDEX_CANT_BE_IGNORED error code added
ER_REMOVED_ORPHAN_TRIGGER error code added
ER_STORAGE_ENGINE_DISABLED error code added
ER_UNSUPPORTED_COMPRESSED_TABLE error code replaces ER_UNSUPPORT_COMPRESSED_TEMPORARY_TABLE
ER_UNUSED_26 error code replaces ER_COMMULTI_BADCONTEXT
ER_UNUSED_27 error code replaces ER_BAD_COMMAND_IN_MULTI
ER_UNUSED_28 error code replaces ER_TABLE_IN_FK_CHECK
ER_WITH_TIES_NEEDS_ORDER error code added
system variable default value changed from 0 to 0.000000
performance schema table added
performance schema table added
sys table added
sys table added
sys table added
sys table added
sys table added
sys table added
innochecksum --strict-check (-C) command-line option removed
innochecksum --write (-w) command-line option removed
innodb_adaptive_max_sleep_delay system variable removed
innodb_background_scrub_data_check_interval system variable removed
innodb_background_scrub_data_compressed system variable removed
innodb_background_scrub_data_interval system variable removed
innodb_background_scrub_data_uncompressed system variable removed
innodb_buffer_pool_instances system variable removed
Innodb_buffer_pool_pages_lru_freed status variable added
innodb_buffer_stats_by_schema sys table added
innodb_buffer_stats_by_table sys table added
innodb_commit_concurrency system variable removed
innodb_concurrency_tickets system variable removed
innodb_deadlock_report system variable added
innodb_file_format system variable removed
innodb_flush_method system variable default value changed from fsync to O_DIRECT
innodb_large_prefix system variable removed
innodb_lock_schedule_algorithm system variable removed
innodb_lock_wait_timeout system variable maximum value changed from 1073741824 to 100000000
innodb_lock_waits sys table added
innodb_log_checksums system variable removed
innodb_log_compressed_pages system variable removed
innodb_log_files_in_group system variable removed
innodb_log_optimize_ddl system variable removed
INNODB_MUTEXES information schema table removed
INNODB_MUTEXES plugin removed
innodb_page_cleaners system variable removed
innodb_read_only_compressed system variable added
innodb_replication_delay system variable removed
innodb_scrub_log System Variable system variable removed
innodb_scrub_log_speed system variable removed
innodb_sync_array_size system variable removed
INNODB_SYS_DATAFILES information schema table removed
INNODB_SYS_DATAFILES plugin removed
INNODB_SYS_SEMAPHORE_WAITS information schema table removed
INNODB_SYS_SEMAPHORE_WAITS plugin removed
innodb_thread_concurrency system variable removed
innodb_thread_sleep_delay system variable removed
innodb_undo_logs system variable removed
sys table added
sys table added
sys table added
sys table added
sys table added
function added
information schema table added
sys table added
mariadb-backup --debug-sleep-before-unlock command-line option removed
mariadb-backup --debug-sync command-line option removed
mariadb-backup --innodb-log-files-in-group command-line option removed
mariadbd command-line option added
mariadbd --columnstore-cache-use-import command-line option added
mariadbd --columnstore-decimal-overflow-check command-line option added
mariadbd --innodb-adaptive-max-sleep-delay command-line option removed
mariadbd --innodb-background-scrub-data-check-interval command-line option removed
mariadbd --innodb-background-scrub-data-compressed command-line option removed
mariadbd --innodb-background-scrub-data-interval command-line option removed
mariadbd --innodb-background-scrub-data-uncompressed command-line option removed
mariadbd --innodb-buffer-pool-instances command-line option removed
mariadbd --innodb-commit-concurrency command-line option removed
mariadbd --innodb-concurrency-tickets command-line option removed
mariadbd --innodb-deadlock-report command-line option added
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option added
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option removed
mariadbd command-line option added
mariadbd command-line option added
mariadbd command-line option added
mariadbd command-line option added
mariadbd command-line option added
mariadbd --wsrep-mode command-line option added
mariadbd wsrep-ssl-mode command-line option added
system variable default value changed from 4294967295 to 1000 (MDEV-17239)
sys table added
sys table added
sys table added
sys table added
sys table added
sys table added
MINUS reserved word added
OFFSET reserved word added
system variable default value changed from "" (empty) to UTF8_IS_UTF8MB3
processlist sys table added
ps_check_lost_instrumentation sys table added
Resultset_metadata_skipped status variable added
function added
ROWNUM reserved word added
sys table added
schema_index_statistics sys table added
sys table added
schema_redundant_indexes-sys-schema-view sys table added
sys table added
schema_table_statistics-sys-schema-view sys table added
schema_table_statistics_with_buffer-sys-schema-viewsys table added
schema_schema_tables_with_full_table_scansobject_overview-sys-schema-view sys table added
schema_unused_indexes-sys-schema-view sys table added
server_audit_load_on_error system variable added
session sys table added
session_ssl_status sys table added
information schema table added
sql_mode value EXTENDED_ALIASES added
statement_analysis sys table added
statements_with_errors_or_warnings sys table added
statements_with_full_table_scans sys table added
statements_with_runtimes_in_95th_percentile sys table added
statements_with_sorting sys table added
statements_with_temp_tables sys table added
[SYS_GUID|[SYS_GUID()]] function added
SYSDATE reserved word added
system_versioning_asof system variable default value changed from DEFAULT to "" (empty)
THREAD_POOL_CONNECTIONS information schema table added
THREAD_POOL_CONNECTIONS plugin added
thread_pool_reshuffle_group_period system variable added
function added
user_summary sys table added
user_summary_by_file_io sys table added
user_summary_by_file_io_type sys table added
user_summary_by_stages sys table added
user_summary_by_statement_latency sys table added
user_summary_by_statement_type sys table added
version sys table added
wait_classes_global_by_avg_latency sys table added
wait_classes_global_by_latency sys table added
waits_by_host_by_latency sys table added
waits_by_user_by_latency sys table added
waits_global_by_latency sys table added
wsrep_certificate_expiration_hours_warning system variable added
wsrep_mode system variable added
wsrep_ssl_mode system variable added
sys table added
sys table added
sys table added
sys table added
sys table added
sys table added
hinnodb_buffer_stats_by_schema-and-xinnodb_buffer_stats_by_schema-sys-schema-views sys table added
sys table added
sys table added
sys table added
sys table added
io_global_by_file_by_latency-and-xio_global_by_file_by_latency-sys-schema-views sys table added
sys table added
io_global_by_wait_by_latency-and-xio_global_by_wait_by_latency-sys-schema-views sys table added
sys table added
memory_by_host_by_current_bytes-and-xmemory_by_host_by_current_bytes-sys-schema-views sys table added
memory_by_thread_by_current_bytes-and-xmemory_by_thread_by_current_bytes-sys-schema-views sys table added
memory_by_user_by_current_bytes-and-xmemory_by_user_by_current_bytes-sys-schema-views sys table added
memory_global_by_current_bytes-and-xmemory_global_by_current_bytes-sys-schema-views sys table added
memory_global_total-and-xmemory_global_total-sys-schema-views sys table added
processlist-and-xprocesslist-sys-schema-views sys table added
ps_digest_95th_percentile_by_avg_usy-and-xps_digest_95th_percentile_by_avg_us-sys-schema-views sys table added
hps_digest_avg_latency_distribution-and-xps_digest_avg_latency_distribution-sys-schema-views sys table added
ps_schema_table_statistics_io-and-xps_schema_table_statistics_io-sys-schema-views sys table added
schema_flattened_keys-and-xschema_flattened_keys-sys-schema-views sys table added
schema_index_statistics-and-xschema_index_statistics-sys-schema-views sys table added
schema_table_lock_waits-and-xschema_table_lock_waits-sys-schema-views sys table added
schema_table_statistics-and-xschema_table_statistics-sys-schema-views sys table added
schema_table_statistics_with_buffer-and-xschema_table_statistics_with_buffer-sys-schema-views sys table added
schema_tables_with_full_table_scans-and-xschema_tables_with_full_table_scans-sys-schema-views sys table added
session-and-xsession-sys-schema-views sys table added
statement_analysis-and-xstatement_analysis-sys-schema-views sys table added
statements_with_errors_or_warnings-and-xstatements_with_errors_or_warnings-sys-schema-views sys table added
statements_with_full_table_scans-and-xstatements_with_full_table_scans-sys-schema-views sys table added
statements_with_runtimes_in_95th_percentile-and-xstatements_with_runtimes_in_95th_percentile-sys-schema-view sys table added
statements_with_sorting-and-xstatements_with_sorting-sys-schema-views sys table added
statements_with_temp_tables-and-xstatements_with_temp_tables-sys-schema-views sys table added
user_summary-and-xuser_summary-sys-schema-views sys table added
user_summary_by_file_io-and-xuser_summary_by_file_io-sys-schema-views sys table added
user_summary_by_file_io_type-and-xuser_summary_by_file_io_type-sys-schema-views sys table added
user_summary_by_stages-and-xuser_summary_by_stages-sys-schema-views sys table added
user_summary_by_statement_latency-and-xuser_summary_by_statement_latency-sys-schema-views sys table added
user_summary_by_statement_type-and-xuser_summary_by_statement_type-sys-schema-views sys table added
wait_classes_global_by_avg_latency-and-xwait_classes_global_by_avg_latency-sys-schema-views) sys table added
wait_classes_global_by_latency-and-xwait_classes_global_by_latency-sys-schema-views sys table added
waits_by_host_by_latency-and-xwaits_by_host_by_latency-sys-schema-views sys table added
waits_by_user_by_latency-and-xwaits_by_user_by_latency-sys-schema-views sys table added
waits_global_by_latency-and-xwaits_global_by_latency-sys-schema-views sys table added
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 10.6.4-1 is provided for:
CentOS 7
Debian 9
Debian 10
Microsoft Windows
Red Hat Enterprise Linux 7
Red Hat Enterprise Linux 8
SUSE Linux Enterprise Server 12
SUSE Linux Enterprise Server 15
Ubuntu 18.04
Ubuntu 20.04
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see "MariaDB Corporation Engineering Policies".
MariaDB Enterprise Server 11.4.8-5 is a Release Candidate (RC) release of MariaDB Enterprise Server 11.4, released on 2024-11-19
MariaDB Enterprise Server 11.4.3-1 is the first Release Candidate release of MariaDB Enterprise Server 11.4.
The changes listed here are relative to MariaDB Enterprise Server 10.6.19-15
Software in release candidate is not recommended for production workloads.
MariaDB Enterprise Server 11.4.3-1 was released on 2024-11-19.
With InnoDB storage engine, the process to import an InnoDB tablespace has been simplified. (MDEV-26137)
Prior to this release, the process was to create a table, discard the tablespace, then execute ALTER TABLE IMPORT TABLESPACE.
Starting with this release, ALTER TABLE IMPORT TABLESPACE is the only command needed.
For example:
FLUSH TABLES t1 FOR EXPORT;
--copy_file $MYSQLD_DATADIR/test/t1.cfg $MYSQLD_DATADIR/test/t2.cfg
--copy_file $MYSQLD_DATADIR/test/t1.frm $MYSQLD_DATADIR/test/t2.frm
--copy_file $MYSQLD_DATADIR/test/t1.ibd $MYSQLD_DATADIR/test/t2.ibd
UNLOCK TABLES;
ALTER TABLE t2 IMPORT TABLESPACE;With InnoDB storage engine, space occupied by freed pages within the InnoDB system tablespace can be reclaimed. (MDEV-14795)
Prior to this release, InnoDB data files would never shrink during normal operation. .ibd files could be shrunk by rebuilding tables with OPTIMIZE TABLE and undo tablespace files using SET GLOBAL innodb_undo_log_truncate=ON
Starting with this release, an :autoshrink attribute has been added for the innodb_data_file_path system variable.
With :autoshrink, the InnoDB system tablespace can be truncated after the last allocated page within it, down to the specified minimum size.
For example, with this configuration the InnoDB system tablespace can be shrunk down to 12MiB:
[mariadb]
...
innodb_data_file_path=ibdata1:12M;ibdata2:50M:autoextend:autoshrinkWith InnoDB storage engine, system variable changes provide improved control of log files and data files: (MDEV-30136)
The innodb_log_file_buffering and innodb_log_file_write_through system variables have been added for log file control. These system variables are boolean and can be set dynamically while the server is running.
The innodb_data_file_buffering and innodb_data_file_write_through system variables have been added for data file control. These system variables are boolean and can be set dynamically while the server is running.
The innodb_flush_method system variable has been deprecated.
With InnoDB storage engine, performance of bulk inserts is improved. (MDEV-25036)
With InnoDB storage engine, changes to the InnoDB redo log format reduce write amplification, which can result in better performance. (MDEV-14425)
With InnoDB storage engine, the InnoDB change buffer has been removed: (MDEV-29694)
With modern storage speeds, the InnoDB change buffer tends to add more overhead, rather than providing a performance gain.
The removal of the InnoDB change buffer also simplifies the internal recovery process.
The innodb_change_buffering and innodb_change_buffer_max_size system variables have been removed.
The , , , , , , , , , and status variables have been removed.
With InnoDB storage engine, the Prefix Index Queries Optimization is always used: (MDEV-28540)
This feature was originally implemented as an optional optimization in MariaDB Server 10.1.
The and status variables have been removed.
With InnoDB storage engine, multiple undo tablespaces are now enabled by default, so that the default configuration enables undo logs to be truncated while the server is running: (MDEV-29986)
Truncation does not apply to undo logs in the system tablespace.
innodb_undo_tablespaces default changed from 0 to 3.
To reclaim space, innodb_undo_log_truncate=ON must be set
innodb_undo_log_truncate=ON can have a performance impact for some workloads. In those cases, undo truncation can be enabled by temporarily setting the following:
SET GLOBAL innodb_undo_log_truncate=ON;With InnoDB storage engine, the temporary InnoDB tablespaces can now be shrunk without restart
Before MariaDB Enterprise Server 11.4 the only way to reclaim disk space used by temporary InnoDB tablespaces was to restart the server, as temporary tablespaces are deleted when you stop the server and are recreated with their configured size
The disk space can now be reclaimed, tables in use will not be removed. The command to trigger the new feature is:
SET GLOBAL innodb_truncate_temporary_tablespace_now=1;Example:
CREATE TEMPORARY TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL)ENGINE=InnoDB;
INSERT INTO t1 SELECT seq, seq FROM seq_1_to_65536;
DROP TABLE t1;
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE NAME="innodb_temp
orary";+------------------+-----------+
| NAME | FILE_SIZE |
+------------------+-----------+
| innodb_temporary | 79691776 |
+------------------+-----------+SET GLOBAL INNODB_TRUNCATE_TEMPORARY_TABLESPACE_NOW= 1;
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE NAME="innodb_temp
orary";+------------------+-----------+
| NAME | FILE_SIZE |
+------------------+-----------+
| innodb_temporary | 12582912 |
+------------------+-----------+With Spider storage engine, engine-defined attributes (table options) are accepted. Previously, Spider required parameters to be provided via COMMENT for a table: (MDEV-27106)
REMOTE_DATABASE
database
The remote database that contains the remote table
REMOTE_SERVER
srv
The IP address or hostname of the remote server that contains the remote table
REMOTE_TABLE
tbl
The remote table
Spider storage engine system variable defaults have changed.
With the Spider storage engine the preferred way to specify Spider parameters is now to use the dedicated Spider table options. Abusing the table COMMENT clause is now deprecated (MDEV-28861)
With MyRocks storage engine, log files can be stored in a user-defined directory specified by the rocksdb_log_dir system variable. (MDEV-27791)
Stored function parameters can be qualified with IN, OUT, INOUT, and IN OUT: (MDEV-10654)
When a parameter is qualified with IN, a value is passed to the function.
When a parameter is qualified with OUT, the function returns a value to the caller.
When a parameter is qualified with INOUT or IN OUT, a value is passed to the function, and the function also returns a value to the caller.
OUT, INOUT, and INOUT can only be used when called from SET and not when called from SELECT
OUT, INOUT, and INOUT allow a function to return more than one value, which allows for more complex and nested functions.
In previous releases, the qualifiers were supported for stored procedures, but not for stored functions.
Starting with this release, the qualifiers are accepted in stored functions using the same syntax previously used for stored procedures.
When is set, the behavior is adjusted to match the behavior of Oracle.
Changed default behavior for field properties: (MDEV-28632)
Previous to this release, implementation-specific behavior was present by default for the first TIMESTAMP column in a table. This behavior added DEFAULT current_timestamp() ON UPDATE current_timestamp() to the TIMESTAMP field properties.
Starting this release, the implementation-specific behavior for TIMESTAMP field properties is disabled by default. The default value of the is changed to OFF
As a result of this change, new TIMESTAMP columns without explicit default values will be created with DEFAULT NULL
is new server internal functionality which makes all schema changes (ALTER TABLE commands) non-blocking. (MDEV-16329)
OSC targets a problem previously solvable using third-party solutions, in a way which reduces operational impact. Some aspects of the OSC implementation are operationally significant:
OSC performs internal Copy-Apply-Replace: First, the altered table gets copied, then the online changes get applied. A short table lock occurs when applying last changes and renaming the tables. The binary log is not used in this process. This is significant because some third-party approaches to this problem depend on client connections which can be subject to connection timeouts and similar factors.
OSC is asynchronous: Changes from applications are first stored in an online change buffer. This is significant because some third-party approaches to this problem are synchronous and as result impact the execution of other transactions.
OSC is trigger-less: Only server internal handlers for a DML-side check if ALTER TABLE is in progress are used. INSERT, UPDATE, or DELETE triggers based on stored routines are not used. This is significant because some third-party approaches to this problem depend on triggers.
By default, when an ALTER operation cannot be executed INSTANT, OSC will be used. If OSC cannot be used, another algorithm will be used.
If the LOCK=NONE option is explicitly specified in the ALTER statement, or if the equivalent statement ALTER ONLINE TABLE is used, the operation will be performed if it can be done as OSC and fails otherwise.
As an override to this new behavior, if the old_mode system variable is set with LOCK_ALTER_TABLE_COPY, the old behavior is preferred when LOCK=NONE is not explicitly set. (MDEV-31812)
Stored routine calls reflect all changes to metadata for objects the stored routine depends on. (MDEV-5816)
Prior to this release, a reconnect was needed before a stored routine was able to update its metadata from altered objects. For example, absent a reconnect:
CREATE TABLE t1 (id INT);
INSERT INTO t1 VALUES (100);
CREATE PROCEDURE p1() SELECT * FROM t1;
CALL p1;+------+
| id |
+------+
| 100 |
+------+ALTER TABLE t1 ADD COLUMN b INT DEFAULT 0;
CALL p1;+------+
| id |
+------+
| 100 |
+------+• Starting with this release, metadata changes are reflected without a reconnect:
CREATE TABLE t1 (id INT);
INSERT INTO t1 VALUES (100);
CREATE PROCEDURE p1() SELECT * FROM t1;
CALL p1;+------+
| id |
+------+
| 100 |
+------+ALTER TABLE t1 ADD COLUMN b INT DEFAULT 0;
CALL p1;+------+------+
| id | b |
+------+------+
| 100 | 0 |
+------+------+Temporary tables are now included in information_schema.TABLES, in SHOW TABLES output, and in SHOW TABLE STATUS output. (MDEV-12459)
For example:
CREATE DATABASE test;
USE test;
CREATE TABLE t1 (id INT);
CREATE TEMPORARY TABLE t2_temp (id INT);
SHOW FULL TABLE;+----------------+-----------------+
| Tables_in_test | Table_type |
+----------------+-----------------+
| t2_temp | TEMPORARY TABLE |
| t1 | BASE TABLE |
+----------------+-----------------+SELECT table_schema, table_name, table_type FROM information_schema.TABLES WHERE table_schema='test';+--------------+------------+------------+
| table_schema | table_name | table_type |
+--------------+------------+------------+
| test | t2_temp | TEMPORARY |
| test | t1 | BASE TABLE |
+--------------+------------+------------+For operations that insert multiple rows, error reporting has been improved: (MDEV-10075)
In GET DIAGNOSTICS, the ROW_NUMBER property allows retrieval of the row number that caused the error or warning:
GET DIAGNOSTICS CONDITION 1 @failed_row=ROW_NUMBER;Information Schema system table optimizations: (MDEV-20609)
When is queried and the WHERE clause filters on SPECIFIC_SCHEMA and SPECIFIC_NAME, an index is used to avoid a full table scan.
When is queried and the WHERE clause filters on ROUTINE_SCHEMA and ROUTINE_NAME, an index is used to avoid a full table scan.
can show the query plan for a query running in another connection: (MDEV-25956)
SHOW EXPLAIN FOR 1;The statement returns the query itself as a warning, which can be obtained via .
SHOW ANALYZE [FORMAT=JSON] FOR CONNECTION_ID can analyze a query running in another connection: (MDEV-27021)
SHOW ANALYZE FOR 1;ANALYZE FORMAT=JSON now shows the time spent in the query optimizer. (MDEV-28926)
With , the new allows tables to be dumped in order of size (smallest tables first): (MDEV-28074)
$ mariadb-dump \
--user=USER \
--password='PASSWORD' \
--all-databases \
--single-transaction \
--order-by-sizeThis new option is useful when the is specified and the backup contains tables that are truncated frequently. Since tables that are truncated frequently tend to be smaller, those tables will be backed up earlier, which reduces the chance that the backup will fail with the ER_TABLE_DEF_CHANGED error code.
The can now be used to set the transaction isolation: (MDEV-21921)
The tx_isolation system variable is still available as an alias, but it has been deprecated and will be removed in a later release.
The can now be used to set a transaction to read-only. (MDEV-21921)
Process list now includes the number of rows sent by the statement. The new value SENT_ROWS in the information schema table PROCESSLIST includes the number of rows sent by the current statement, shown in the processlist.
SELECTS with functions show the total number of rows sent by the main statement and all functions
Stored procedures show the total number of rows sent per stored procedure statement
INSERT RETURNING and DELETE RETURNING show the total number of rows sent for the returning data set
Example:
SELECT * FROM processlist\G*************************** 1. row ***************************
...
*************************** 2. row ***************************
ID: 6
USER: root
HOST: localhost
DB: test
COMMAND: Query
TIME: 1
STATE: Sending data
INFO: select * from t1
TIME_MS: 1340.406
STAGE: 0
MAX_STAGE: 0
PROGRESS: 0.000
MEMORY_USED: 89856
MAX_MEMORY_USED: 392544
EXAMINED_ROWS: 0
SENT_ROWS: 3895737
QUERY_ID: 436
INFO_BINARY: select * from t1
TID: 100The SQL Error Log Plugin, used to log errors sent to clients for later analysis, has been enhanced. When option sql_error_log_with_db_and_thread_info=ON is set, the log file is now also showing thread id and the current default schema for the error.
When mariadb-dump is used with the option -T / --tab= to produce tab-separated text-format data files per table, the new option --parallel (synonym --use-threads) can be used to use several threads in parallel to dump the table data to their .txt files.
Parallelism also works if the option --single-transaction is used.
The option --parallel has been added to mariadb-import as a synonym to --use-threads, which has been available before.
MariaDB Query Optimizer performs cost-based optimizations with an understanding of storage engine-specific costs: (MDEV-26974)
The query optimizer now defaults to assume SSD storage is used. Costs for disk access can be overridden.
Optimizer costs can be tuned by setting the following system variables via configuration file, command-line parameter, or the :
optimizer_disk_read_cost
Engine
Sets the time in microseconds required to read a 4K block from storage. The default value is tuned for an SSD reading at 400 MB/second.
optimizer_index_block_copy_cost
Engine
Sets the cost to lock a block in the global cache and copy it to the local cache. The cost applies to every block accessed, regardless of whether the block is already cached.
optimizer_key_compare_cost
Engine
Sets the cost to compare two key values.
optimizer_key_copy_cost
Engine
Sets the cost to copy a key value from the index to the local buffer while searching for a key value.
optimizer_key_lookup_cost
Engine
Sets the cost to find a key entry in the index.
optimizer_row_copy_cost
Engine
Sets the cost to find the next key entry in the index.
optimizer_rowid_compare_cost
Engine
Sets the cost to compare two rowid values.
optimizer_rowid_copy_cost
Engine
Sets the cost to copy a rowid from the index.
optimizer_row_lookup_cost
Engine
Sets the cost to find a row based on the rowid. The rowid is stored in the index with the key.
optimizer_row_next_find_cost
Engine
Sets the cost to find the next row.
optimizer_scan_setup_cost
Session
Sets the cost to start a table or index scan. The default low value configures the optimizer to use index lookups for tables with very few rows.
optimizer_where_cost
Session
Sets the cost to execute the WHERE clause for every row found. As this value is increases, the optimizer is more likely to choose plans which read fewer rows.
Optimizer costs can be tuned per storage engine by prefixing the system variable with the storage engine name.
Current optimizer costs for each storage engine can be queried via information_schema.OPTIMIZER_COSTS
For JOIN with many eq_ref tables, query performance is improved: (MDEV-28852)
New system variable
Default changed for system variable from 1 to 2 to enable prune join prefixes
New status variable Optimizer_join_prefixes_check_calls
An index can now be used when comparing the return value of the to a constant value. (MDEV-8320)
Single-table and can now benefit from semi-join optimization. (MDEV-7487)
JSON histograms with detailed histogram collection: (MDEV-26519)
Enabled when is set, which is now the default.
JSON histograms result in more precise data statistics for string data types or when columns have highly-uneven data distribution.
With more precise data statistics the optimizer can create better query plans, resulting in faster queries.
A table can be converted into a partition with ALTER TABLE .. CONVERT TABLE .. TO PARTITION: (MDEV-22165)
ALTER TABLE partitioned_tab
CONVERT TABLE tab1
TO PARTITION part_name VALUES LESS THAN (1000000);The ALTER TABLE .. CONVERT TABLE .. TO PARTITION operation was previously backported to MariaDB Enterprise Server 10.6.11-6.
A partition can be converted into a table with ALTER TABLE .. CONVERT PARTITION .. TO TABLE: (MDEV-22166)
ALTER TABLE partitioned_tab
CONVERT PARTITION part_name
TO TABLE tab1;The ALTER TABLE .. CONVERT PARTITION .. TO TABLE operation was previously backported to MariaDB Enterprise Server 10.6.11-6.
syntax has been extended, so the PARTITION keyword is optional in each partition definition: (MDEV-26471)
CREATE TABLE partitioned_tab (
col1 INT
)
PARTITION BY RANGE(col1) (
part1 VALUES LESS THAN (1000000),
part2 VALUES LESS THAN (2000000),
part3 VALUES LESS THAN (3000000),
part4 VALUES LESS THAN (4000000),
part5 VALUES LESS THAN (5000000),
part_end VALUES LESS THAN MAXVALUE
);Engine-defined attributes can be defined per-partition: (MDEV-5271)
CREATE TABLE remote_spider_tab (
id INT,
str VARCHAR(255),
PRIMARY KEY(id)
) ENGINE=Spider
PARTITION BY RANGE(id) (
PARTITION east_part VALUES LESS THAN (100) REMOTE_SERVER="mdb-east.example.org" REMOTE_TABLE="tab1",
PARTITION west_part VALUES LESS THAN MAXVALUE REMOTE_SERVER="mdb-west.example.org", REMOTE_TABLE="tab1"
);Exchanging partition or converting a table is now possible without a validation of the partitioning expression
This new feature should be used with care, as it can lead to inconsistencies if the partitioning rules are not met.
The new addition to ALTER TABLE is:
EXCHANGE PARTITION partition_name WITH TABLE tbl_name [{WITH | WITHOUT} VALIDATION]
CONVERT TABLE normal_table TO partition_definition [{WITH | WITHOUT} VALIDATION]History partition creation can be automated using the AUTO keyword when partitioned by INTERVAL or LIMIT: (MDEV-17554)
CREATE TABLE t1 (x INT) WITH SYSTEM VERSIONING
PARTITION BY SYSTEM_TIME INTERVAL 1 months AUTO;In the above example, a new history partition to store historical row versions is created on a monthly basis.
can backup historical data from system-versioned tables if the is specified. (MDEV-16029)
can perform a dump of historical data as of a point in time if the is specified. (MDEV-16355)
More Information about Application-time Period Tables is now available in the information schema
New views PERIOD and KEY_PERIOD_USAGE are added to information_schema.
View PERIODS includes the columns
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
PERIOD_NAME
START_COLUMN_NAME
END_COLUMN_NAMEto list Application-time period tables, the name defined for a period and the columns used for start and end timestamps.
View KEY_PERIOD_USAGE includes the columns
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
PERIOD_NAME
Two new columns are added to the COLUMNS view of information_schema
IS_SYSTEM_TIME_PERIOD_START
IS_SYSTEM_TIME_PERIOD_END
General Support of Packages for Stored Routines has been added
Before MariaDB Enterprise Server 11.4, the CREATE PACKAGE feature, as well as CREATE PACKAGE BODY, were only supported with sql_mode = ORACLE. They can now be used with any SQL mode.
Example:
DELIMITER $$
CREATE OR REPLACE PACKAGE myPkg
PROCEDURE p1();
FUNCTION f1() RETURNS INT;
END;
$$
CREATE OR REPLACE PACKAGE BODY myPkg
-- variable declarations
DECLARE v1 INT DEFAULT 1;
DECLARE v2 INT DEFAULT 10;
-- routine declarations
PROCEDURE p1()
BEGIN
SELECT v1, v2;
END;
FUNCTION f1() RETURNS INT
BEGIN
RETURN v1;
END;
-- package initialization
SET v1=v1 + 2;
END;
$$
DELIMITER ;
SELECT myPkg.f1();+------------+
| myPkg.f1() |
+------------+
| 3 |
+------------+CALL myPkg.p1();+------+------+
| v1 | v2 |
+------+------+
| 3 | 10 |
+------+------+Descending indexes are supported: (MDEV-13756)
When used with a composite index, can be used to get a significant performance boost for queries that perform ORDER BY operations on columns in different orders than the defined order.
In previous releases, MariaDB Enterprise Server already supported the DESC option for ORDER BY, but the optimizer would use the ascending index. For a composite index, the optimizer would have to use an index and perform a file sort.
For example, using the following example table:
CREATE TABLE sections (
top_level INT,
sub_level INT,
INDEX top_asc_sub_asc (top_level ASC, sub_level ASC),
INDEX top_asc_sub_desc (top_level ASC, sub_level DESC),
INDEX top_desc_sub_asc (top_level DESC, sub_level ASC),
INDEX top_desc_sub_desc (top_level DESC, sub_level DESC)
);
INSERT INTO sections VALUES
(1, 1), (1, 2), (2, 1), (2, 2),
(3, 1), (3, 2), (3, 3);Performing an ORDER BY .. ASC on multiple columns still shows "Using index" in the EXPLAIN output:
EXPLAIN SELECT * FROM sections
ORDER BY top_level ASC, sub_level ASC;+------+-------------+----------+-------+---------------+-----------------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+----------+-------+---------------+-----------------+---------+------+------+-------------+
| 1 | SIMPLE | sections | index | NULL | top_asc_sub_asc | 10 | NULL | 7 | Using index |
+------+-------------+----------+-------+---------------+-----------------+---------+------+------+-------------+With this change, performing a mix of ORDER BY .. ASC, .. DESC on multiple columns also shows "Using index" in the EXPLAIN output:
EXPLAIN SELECT * FROM sections
ORDER BY top_level ASC, sub_level DESC;+------+-------------+----------+-------+---------------+------------------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+----------+-------+---------------+------------------+---------+------+------+-------------+
| 1 | SIMPLE | sections | index | NULL | top_asc_sub_desc | 10 | NULL | 7 | Using index |
+------+-------------+----------+-------+---------------+------------------+---------+------+------+-------------+JSON_KEY_VALUE() extracts key/value pairs from a JSON object. (MDEV-30145)
Syntax: JSON_KEY_VALUE(<json_doc>, <json_path>)
**The <json_path> specifies the JSON objects whose key/value pairs should be returned. For example:
SELECT JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]');
```**
+-----------------------------------------------------------------------------+ | JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]') | +-----------------------------------------------------------------------------+ | [{"key": "key1", "value": "val1"}, {"key": "key2", "value": "val2"}] | +-----------------------------------------------------------------------------+
• JSON_KEY_VALUE() can be used as an argument to JSON_TABLE(), adding the key to a result set. For example:
```sql
SELECT jt.\* FROM JSON\_TABLE(\
JSON\_KEY\_VALUE('\[\[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$\[0]\[1]'),'$\[\*]'\
COLUMNS (\
k VARCHAR(20) PATH '$.KEY',\
v VARCHAR(20) PATH '$.value',\
id FOR ORDINALITY )) AS jt;
+------+------+------+\
\| k | v | id |\
+------+------+------+\
\| key1 | val1 | 1 |\
\| key2 | val2 | 2 |\
+------+------+------+
* \##JSON\_ARRAY\_INTERSECT()## finds the intersection between two JSON arrays. (MDEV-26182)\
\*\* Syntax: ##JSON\_ARRAY\_INTERSECT(, )##\
\*\* For example:<>SET @array1= '\[1,2,3]';\
SET @array2= '\[1,2,4]';\
SELECT json\_array\_intersect(@array1, @array2) as result;
+--------+\
\| result |\
+--------+\
\| \[1, 2] |\
+--------+
SET @json1= '\[\[1,2,3],\[4,5,6],\[1,1,1]]';\
SET @json2= '\[\[1,2,3],\[4,5,6],\[1,3,2]]';\
SELECT json\_array\_intersect(@json1, @json2) as result;
+------------------------+\
\| result |\
+------------------------+\
\| \[\[1, 2, 3], \[4, 5, 6]] |\
+------------------------+
JSON_OBJECT_TO_ARRAY() converts all JSON objects found in a JSON document to JSON arrays. (MDEV-26182)
Syntax: JSON_OBJECT_TO_ARRAY(<json_doc>)
For example:
SET @json1= '{ "a" : \[1,2,3] , "b": {"key1": "val1", "key2": {"key3": "val3"\}} }';\
SELECT JSON\_OBJECT\_TO\_ARRAY(@json1) AS result;
+-----------------------------------------------------------------------+
| result |
+-----------------------------------------------------------------------+
| [["a", [1, 2, 3]], ["b", {"key1": "val1", "key2": {"key3": "val3"}}]] |
+-----------------------------------------------------------------------+Resulting arrays can be compared using JSON_ARRAY_INTERSECT(). For example:
SET @json1='{"a":\[1,2,3],"b":{"key1":"val1","key2":{"key3":"val3"\}}}';\
SET @json2='{"a":\[1,2,3]}';\
SELECT JSON\_OBJECT\_TO\_ARRAY(@json1) INTO @array1;\
SELECT JSON\_OBJECT\_TO\_ARRAY(@json2) INTO @array2;\
SELECT JSON\_ARRAY\_INTERSECT(@array1,@array2) AS result;+--------------------+
| result |
+--------------------+
| [["a", [1, 2, 3]]] |
+--------------------+JSON_OBJECT_FILTER_KEYS() returns key/value pairs from a JSON string for keys in an array. (MDEV-26182)
Syntax: JSON_OBJECT_FILTER_KEYS(<json_doc>,<array_keys>)
For example:
SET @json1= '{ "a": 1, "b": 2, "c": 3}';
SELECT JSON_OBJECT_FILTER_KEYS (@json1, ' ["b", "c"] ') AS result;+------------------+
| result |
+------------------+
| {"b": 2, "c": 3} |
+------------------+
Using JSON_ARRAY_INTERSECT() and JSON_KEY() as arguments for JSON_OBJECT_FILTER_KEYS(), a comparison of two JSON strings is possible where only the same keys are compared, not the key/value pairs. For example:
SET @json1= '{ "a": 1, "b": 2, "c": 3}';
SET @json2= '{"b" : 10, "c": 20, "d": 30}';
SELECT JSON_OBJECT_FILTER_KEYS (@json1, json_array_intersect(json_keys(@json1), json_keys(@json2))) AS result;
+------------------+
| result |
+------------------+
| {"b": 2, "c": 3} |
+------------------+
JSON_EQUALS() can be used to compare two documents and determine if they are equal. (MDEV-16375)
The JSON_EQUALS() function was previously backported to MariaDB Enterprise Server 10.4.25-16, 10.5.16-11, and 10.6.8-4.
##JSON_NORMALIZE()## can be used to normalize two JSON documents to make them more comparable. (MDEV-23143)
For example, this function can be used when defining a unique key on JSON data.
The JSON_NORMALIZE() function was previously backported to MariaDB Enterprise Server 10.4.25-16, 10.5.16-11, and 10.6.8-4.
JSON_OVERLAPS() can be used to compare two JSON documents to determine if they have any key-value pairs or array elements in common. (MDEV-27677)
SELECT JSON_OVERLAPS('{"A": 1, "B": {"C":2}}', '{"A": 2, "B": {"C":2}}') AS is_overlap;+---------------------+
| is_overlap |
+---------------------+
| 1 |
+---------------------+JSON_SCHEMA_VALID() can be used to validate a JSON document against a JSON schema, as documented by the JSON Schema Draft 2020. (MDEV-27128)
This function can also be used in a CHECK constraint to verify that JSON documents are only stored in the database if they include required items and that the values are within a given range and length.
Negative indexes can be used to access values in JSON arrays relative to the end of the array when a JSON Path expression is used as a parameter to a JSON function. (MDEV-22224)
SELECT JSON_REMOVE(@json, '$.A\[-10]')The last index can be used to access the last value in a JSON array when a JSON Path expression is used as a parameter to a JSON function. (MDEV-22224)
SELECT JSON\_REMOVE(@json, '$.A\[last]');A range of indexes can be used to access the values in that range in a JSON array when a JSON Path expression is used as a parameter to a JSON function. (MDEV-27911)
SELECT JSON_REMOVE(@json, '$.A[1 TO 3]');The TIMESTAMP range of values was extended from '2038-01-19 03:14:07 UTC', to '2106-02-07 06:28:15 UTC'.
The storage format is not changed, and new tables can be read by old MariaDB servers as long as timestamp values are within the old timestamp range.
INET4 values can now be compared with INET6 values and can be inserted into INET6 columns; the server does automatically convert INET4 value into INET6 as needed.
UUID data type is added to store UUIDs more efficiently. (MDEV-4958) The UUID data type was previously backported to MariaDB Enterprise Server 10.6.9-5.
INET4 data type is added to store IPv4 addresses as BINARY(4), where each byte stores one octet. (MDEV-23287)
The data type provides the following functionality:
Validation of incorrect values
Comparisons
Sorting
Functions like CAST()
New time zone options for function DATE_FORMAT()
The new options %Z and %z can be used for the format string of the function
DATE_FORMAT(DATE, format)for adding time zone information to the date string.
%Z Time zone abbreviation
%z Numeric time zone +hhmm or -hhmm presenting the hour and minute offset from UTC
Example:
SELECT DATE_FORMAT(NOW(), '%W %d %M %Y %H:%i:%s %Z %z');+--------------------------------------------------+
| DATE_FORMAT(NOW(), '%W %d %M %Y %H:%i:%s %Z %z') |
+--------------------------------------------------+
| Tuesday 21 November 2023 13:28:34 EST -0500 |
+--------------------------------------------------+SQL function KDF() for key derivation
A possible use case is to generate encryption keys from a user provided password or a passphrase. It can be used to generate encryption keys for encryption functions such as AES_ENCRYPT.
KDF(key_str, salt [, {info | iterations} [, kdf_name [, width ]]])* `kdf_name` is "hkdf" or "pbkdf2_hmac"
* `width` (in bits) can be any number divisible by 8
* `info` is a non-secret parameter of the hkdf method, it allows to generate different encryption keys for different purposes from the same secret password
* `iterations` is a positive numeric parameter of the pbkdf2_hmac method. Larger values make the password more difficult to brute-force.Example:
SELECT hex(kdf('foo', 'bar', 'info', 'hkdf'));+----------------------------------------+
| hex(kdf('foo', 'bar', 'info', 'hkdf')) |
+----------------------------------------+
| 710583081D40A55F0B573A76E02D8975 |
+----------------------------------------+INSERT INTO tbl VALUES (aes\_encrypt(@secret\_data, kdf("Passw0rd", "NaCl", "info", 'hkdf'), "iv"));Function CONV() now supports conversions up to base 62
The function CONV(), which converts a number between numeric base systems, now supports conversions up to base 62.
This allows conversions to encodings to capital letters A-Z, lower case letters a-z, and numbers 0-9.
The old limit was 36, not including lower case letters.
Example:
SELECT CONV(61,10,36);+----------------+
| CONV(61,10,36) |
+----------------+
| 1P |
+----------------+SELECT CONV(61,10,62);+----------------+
| CONV(61,10,62) |
+----------------+
| z |
+----------------+
AES_ENCRYPT() and AES_DECRYPT() allow specifying the initialization vector (iv) and block encryption mode (mode). (MDEV-9069)
AES_ENCRYPT syntax prior to this release: AES_ENCRYPT(<str>, <key_str>)
AES_ENCRYPT syntax starting with this release: AES_ENCRYPT(<str>, <key>, [, iv [, mode]])
AES_DECRYPT syntax prior to this release: AES_DECRYPT(<str>, <key_str>)
AES_DECRYPT syntax starting with to this release: AES_DECRYPT(<str>, <key>, [, iv [, mode]])
The block_encryption_mode system variable specifies which mode will be used if the mode is not specified as a function argument.
For example, using the default mode from the block_encryption_mode:
SELECT @@block_encryption_mode;+-------------------------+
| @@block_encryption_mode |
+-------------------------+
| aes-128-ecb |
+-------------------------+SELECT HEX(AES\_ENCRYPT('MariaDB','mykey','VECTOR')) AS result;+----------------------------------+
| result |
+----------------------------------+
| CD0352A4B2FB18A592C04FF8CDA6C2F2 |
+----------------------------------+
```sql
SELECT AES_DECRYPT(x'CD0352A4B2FB18A592C04FF8CDA6C2F2','mykey','VECTOR') AS result;+---------+
| result |
+---------+
| MariaDB |
+---------+
• For example, specifying the mode as an argument:
SELECT HEX(AES_ENCRYPT('MariaDB','mykey','thisismy256vector','aes-256-cbc')) AS result;+----------------------------------+
| result |
+----------------------------------+
| CD6C47183B89A813557BFD639A893CE3 |
+----------------------------------+SELECT AES_DECRYPT(x'CD6C47183B89A813557BFD639A893CE3','mykey','thisismy256vector','aes-256-cbc') AS result;+---------+
| result |
+---------+
| MariaDB |
+---------+
RANDOM_BYTES() returns a binary string of a length between 1 and 1024 bytes. (MDEV-25704)
This nondeterministic value is generated by the cryptographically secure pseudo random generator (CSPRNG) of the SSL library, so it generates an arbitrary length string of cryptographic random bytes that are suitable for cryptographic use.
NATURAL_SORT_KEY() can be used to perform a natural sort of strings. (MDEV-4742)
Characters are sorted in alphabetical order, whereas numbers are sorted, such that "10" is greater than "9".
For example, "v10" would appear after the string "v9".
SFORMAT() formats strings based on the specified options and values to generate a custom formatted string. (MDEV-25015)
SELECT SFORMAT("MariaDB version {}", VERSION());
This function uses the fmtlib library for string formatting similar to Python, Rust, C++20.
CRC32() computes a cyclic redundancy check (CRC) as a 32-bit unsigned value using the ISO 3309 polynomial. (MDEV-27208)
The CRC can now be computed in pieces, using an optional second parameter: CRC32('String') is equal to CRC32(CRC32('Str','ing')).
CRC32C() can be used to compute checksums using the alternate Castagnoli polynomial.
The character_set_collations system variable allows the default collation for a character set to be changed globally or for a session. (MDEV-30164)
Starting with this release, the default collation is used whenever a character set is defined for a database object but the collation is not defined.
Starting with this release, when the character set is not defined, the default collation is as specified by the collation_server system variable.
SET @@character_set_collations='utf8mb4=uca1400_ai_ci';
CREATE DATABASE test_with_charset CHARACTER SET utf8mb4;
CREATE DATABASE test;
SELECT SCHEMA_NAME,DEFAULT_COLLATION_NAME FROM SCHEMATA WHERE SCHEMA_NAME LIKE "test%";+-------------------+------------------------+
| SCHEMA_NAME | DEFAULT_COLLATION_NAME |
+-------------------+------------------------+
| test_with_charset | utf8mb4_uca1400_ai_ci |
| test | utf8mb4_general_ci |
+-------------------+------------------------+
Collations based on the Unicode Collation Algorithm (UCA) 14.0.0 have been added for the character sets : (MDEV-27009)
One neutral and 22 language specific collations have been added.
Accent sensitive, accent insensitive, case sensitive, case insensitive, no-pad variants have been added.
Collation names for new UCA 14.0.0 collations can be specified without the character set prefix, because the character set prefix can be automatically detected from the context. For example, uca1400_german_as_ci can be specified instead of utf8mb4_uca1400_german_as_ci. Collation names with character set prefixes are accepted for the new UCA 14.0.0 collations, but they are optional.
When the information_schema.COLLATIONS table is queried for metadata about the new UCA 14.0.0 collations, the COLLATION_NAME column contains the collation name without a character set prefix, and the CHARACTER_SET_NAME column contains NULL, which indicates that these collations can apply to multiple character sets.
When the information_schema.COLLATION_CHARACTER_SET_APPLICABILITY table is queried for character set applicability of the new UCA 14.0.0 collations, the COLLATION_NAME column also contains the collation name without a character set prefix. A newFULL_COLLATION_NAMEcolumn has been added, which contains the full collation name (with a character set prefix) for all collations, including new UCA 14.0.0 collations.
Improved contraction performance in UCA collations.
Improved UCA collation performance for the utf8mb3 and utf8mb4 character sets.
On Microsoft Windows, MariaDB command-line tools now include full Unicode support. (MDEV-26713)
Unicode support is available on Microsoft Windows 10 1909 or later, Microsoft Windows 11, and Microsoft Windows Server 2020.
The my.ini configuration file is now UTF-8 encoded.
The mariadb.exe command-line client uses utf8mb4 as the default character set.
Client to server connection now requires SSL encryption by default
Using SSL (a more correct term would be TLS, but in reality SSL is more commonly used) has been simplified with MariaDB Enterprise Server 11.4.
Before version 11.4, proper SSL configuration required multiple manual steps for the server and all the clients connecting to it.
Now the client can verify the server self-signed certificate without any configuration whatsoever. The server completely automatically generates the SSL certificate and the client automatically verifies it as needed.
A default configuration now refuses unencrypted connections.
New Privilege SHOW CREATE ROUTINE to enable any user with this privilege to view the definition of a stored routine.
Before MariaDB Enterprise Server 11.4 a user only could see the definition of a routine, a stored feature, or function, when:
SELECT privilege exists for the mysql.procs table
The user is the definer of the Stored Procedure
SHOW CREATE ROUTINE privilege can be granted globally, per schema, or on individual routines.
Example without privilege SHOW CREATE ROUTINE:
SHOW grants;+--------------------------------------------------+
| Grants for user1@% |
+--------------------------------------------------+
| GRANT USAGE ON _._ TO `user1`@`%` |
| GRANT SELECT, EXECUTE ON `test`.* TO `user1`@`%` |
+--------------------------------------------------+SHOW CREATE PROCEDURE myProc \G*************************** 1. row ***************************
Procedure: myProc
sql_mode: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Create Procedure: NULL
character_set_client: utf8mb3
collation_connection: utf8mb3_general_ci
Database Collation: utf8mb4_general_ciExample with the new privilege SHOW CREATE ROUTINE:
SHOW grants;+-----------------------------------------------------------------------+
| Grants for user1@% |
+-----------------------------------------------------------------------+
| GRANT USAGE ON _._ TO `user1`@`%` |
| GRANT SELECT, EXECUTE, SHOW CREATE ROUTINE ON `test`.* TO `user1`@`%` |
+-----------------------------------------------------------------------+SHOW CREATE PROCEDURE myProc \G*************************** 1. row ***************************
Procedure: myProc
sql_mode: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `myProc`()
BEGIN
SELECT "My Definiton of a Stored Procedure";
END
character_set_client: utf8mb3
collation_connection: utf8mb3_general_ci
Database Collation: utf8mb4_general_ciNew view in the SYS schema to retrieve user privileges per specific table
View privileges_by_table_by_level in the SYS schema lists the privilege and privilege level per user, schema, and table.
Example:
CREATE DATABASE test;
USE test;
CREATE TABLE t1 (id INT);
CREATE USER user1;
GRANT SELECT, UPDATE ON _._ TO user1;
CREATE USER user2;
GRANT SELECT ON test.* TO user2;
CREATE USER user3;
GRANT SELECT ON test.t1 TO user3;
SELECT * FROM sys.privileges_by_table_by_level WHERE GRANTEE NOT LIKE "'root'@'%'";+--------------+------------+-------------+-----------+--------+
| TABLE_SCHEMA | TABLE_NAME | GRANTEE | PRIVILEGE | LEVEL |
+--------------+------------+-------------+-----------+--------+
| test | t1 | 'user1'@'%' | SELECT | GLOBAL |
| test | t1 | 'user1'@'%' | UPDATE | GLOBAL |
| test | t1 | 'user2'@'%' | SELECT | SCHEMA |
| test | t1 | 'user3'@'%' | SELECT | TABLE |
+--------------+------------+-------------+-----------+--------+
New Information Schema Table For Password Related Data (MENT-2145)
A new information Schema view, USERS, has been added, which DBAs can use to get insights about password related information for a user. This information can be used:
by an application to inform a user about a password about to expire or an account which is at risk of being blocked due to the number of wrong passwords entered
by DBAs to query users which have been blocked because of too many invalid passwords entered
The new view includes the fields:
USER – A string including user name and host PASSWORD_ERRORS – A counter with the current number of wrong passwords entered
Reset to 0 when a correct password has been entered
An account is blocked, if max_password_errors is reached
NULL for accounts with privilege CONNECTION ADMIN
PASSWORD_EXPIRATION_TIME – The date and time when the password expires or NULL, if the password never expires
New Authentication Plugin — PARSEC (Password Authentication using Response Signed with Elliptic Curves) (MENT-2142)
PARSEC improves security over old authentication plugins by introducing salted passwords, time consuming key derivation function, and a client-side scramble to ensure that man-in-the-middle attackers cannot control the client response.
Example on how to create a user using the new authentication plugin:
CREATE USER 'MariaDBUser'@'%' IDENTIFIED VIA PARSEC USING PASSWORD('MyPassword123!');This will result in:
SHOW GRANTS FOR MariaDBUser@'%';\
Grants FOR MariaDBUser@%\
GRANT USAGE ON _._ TO `MariaDBUser`@`%` IDENTIFIED VIA parsec USING 'P0:lhXyNv1cIxpB8EnTxR7ON7S7:1l3rWRW1/jw45yrvYXB8eh02wzk7lcJcz4CMcWw2b+8'The implements a way to prevent a user from setting a password that had been set for that user previously. (MDEV-5245)
The specifies the number of days before a password can be reused.
The plugin only affects a SQL statement that sets a user password using a literal password string. It cannot check the password of a SQL statement that makes use of a hashed password value.
The plugin makes use of password history records stored in the mysql.password_reuse_check_history system table. Each row in the table stores a cryptographic hash and a date. The hashed data includes information about the affected user and the password that is being set. Because it is a one-way cryptographic hash, the stored data cannot be used to extract the prior password values nor which user the historical record is associated with.
The password_reuse_check plugin was previously backported to MariaDB Enterprise Server 10.4.25-16, 10.5.16-11, and 10.6.8-4.
GRANT .. TO PUBLIC can be used to grant privileges to all currently authenticated users and newly authenticated users on the system. (MDEV-5215)
SHOW GRANTS FOR PUBLIC retrieves all privileges granted to public. (MDEV-5215)
Fine-grained privileges have been removed from the SUPER privilege: (MDEV-29668, MDEV-29596)|=Fine-grained privilege removed from SUPER as of ES 11.4.4-2|
Upon upgrade, each user that has the SUPER privilege will be granted the privileges removed from SUPER, so that the user's capabilities will not change. The SUPER privilege is still used for some special cases, including:
*** Calling DES_ENCRYPT() and DES_DECRYPT() without an explicit key*** Dynamically changing certain system variables with SET GLOBAL
*** Changing certain debug settings** Due to this change, the consistency of read-only replicas are now protected when users with the SUPER privilege attempt to write to a read-only replica if they do not also have the READ ONLY ADMIN privilege.
*** Read-only replicas are replica servers that have read_only=1 set to ensure that they stay consistent with the primary.*** If a user with the SUPER privilege requires write access to a read-only replica server, the user must be explicitly granted the READ ONLY ADMIN privilege.
New option to limit the space used by binary bogs per server instance
The new system variable max_binlog_total_size (alias binlog_space_limit) enables binary log purging when the total size of all binary logs exceeds the specified threshold.
The default for max_binlog_total_size is 0, meaning that there is no limit.
The system variable can be changed without restarting the server.
New system variable --slave-connections-needed-for-purge set to 1 by default.
Assures that binary log purging will not happen until at least that many replicas are connected and do not need purged binary logs anymore.
New status variable binlog_disk_use provides the disk space currently used by the binary logs.
New options SQL_BEFORE_GTIDS and SQL_AFTER_GTIDS for START REPLICA UNTIL
The new options SQL_BEFORE_GTIDS and SQL_AFTER_GTIDS for START REPLICA UNTIL allow the user to control of whether the replica stops before or after a provided GTID state.
Its syntax is:
START SLAVE UNTIL (SQL_BEFORE_GTIDS|SQL_AFTER_GTIDS)="<gtid_list>"
* When providing `SQL_BEFORE_GTIDS="<gtid_list>"`, for each domain specified in the gtid_list, the replica will execute transactions up to the GTID found, and immediately stop processing events in that domain without executing the transaction of the specified GTID. Once all domains have stopped, the replica will stop. Events originating from domains that are not specified in the list are not replicated.
* `START SLAVE UNTIL SQL_AFTER_GTIDS="<gtid_list>"` is an alias to the default behavior of `START SLAVE UNTIL master_gtid_pos="<gtid_list>"`, the known behavior before MariaDB Enterprise Server 11.4.
* The replica will execute transactions originating from domain ids provided in the list, and will stop once all transactions provided in the `UNTIL` list have all been executed.An index is now created on the GTIDs of the binary log, which allows a connecting replica to find the position it should start from without the need to scan the whole binary log.
The new system variable binlog_gtid_index (default ON) can be used to disable the creation of indexes.
The new system variable binlog_gtid_index_page_size (default 4096) defines the page size to use for the binary log GTID index.
The new system variable binlog_gtid_index_span_min (default 65536) controls the sparseness of the binary log GTID index.
The new status variables binlog_gtid_index_hit and binlog_gtid_index_miss can be used for monitoring purposes. A miss is an indication that the index file is missing.
GTID binlog events now include the thread ID (MENT-2180)
The thread ID and the corresponding statement can now be retrieved from binary logs
The output of mariadb-binlog also includes the thread ID
Binary log filter options binlog-do-db, binlog-ignore-db, and binlog-row-event-max-size are now visible as system variables. (MDEV-30188)
For example:
SHOW GLOBAL VARIABLES WHERE
Variable_name LIKE 'binlog_do_db' OR
Variable_name LIKE 'binlog_ignore_db' OR
Variable_name LIKE 'binlog_row_event_max_size';+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| binlog_do_db | |
| binlog_ignore_db | |
| binlog_row_event_max_size | 8192 |
+---------------------------+-------+
For all storage engines, ALTER is divided into two phases to prevent long-running DDL statements from causing replication lag on replicas: (MDEV-11675)
Enabled by setting binlog_alter_two_phase=1, which is not the default.
Two-phase ALTER TABLE is optimistic, so the operation begins on the replica server before it finishes on the primary server.
Two events are written to the binary log on the primary server: a START ALTER event when the operation starts, and either a COMMIT ALTER event or a ROLLBACK ALTER event when the operation finishes depending on whether it succeeds or fails.
By default, replication uses Global Transaction IDs (GTID), which makes replicas crash-safe. (MDEV-19801)
This change impacts backward compatibility.
In previous releases, when TO was executed without explicitly specifying MASTER_USE_GTID, it would default to MASTER_USE_GTID=no.
Starting with this release, when CHANGE MASTER TO is executed without explicitly specifying MASTER_USE_GTID, it defaults to MASTER_USE_GTID=slave_pos. With MASTER_USE_GTID=slave_pos, the replica server uses the gtid_slave_pos system variable as the GTID position.
This change can cause new behavior to occur when performing the following operations:
Setting up a new replica with CHANGE MASTER TO without specifying MASTER_USE_GTID
Freshly starting a stopped replica with START REPLICA if the replica configuration does not explicitly have MASTER_USE_GTID set.
Resetting a replica with RESET REPLICA
When MASTER_LOG_FILE and MASTER_LOG_POS are explicitly set, MASTER_USE_GTID=no is implicitly set.
For mariadb-binlog, the start and stop positions can be specified as GTIDs: (MDEV-4989)
$ mariadb-binlog --start-position='0-1-1001,1-2-1000'\
\--stop-position='0-1-2000,1-2-1050'\
mariadb-bin.000001The --start-position command-line option can set the starting GTID position as a comma-separated list of GTIDs. For each specified GTID domain, the GTID position is exclusive, so an event is only printed if its sequence number is greater than the sequence number specified for that domain.
The --stop-position command-line option can set the ending GTID position as a comma-separated list of GTIDs. For each specified GTID domain, the GTID position is inclusive, so an event is only printed if its sequence number is greater than or equal to the sequence number specified for that domain.
Both command-line options require each GTID in the comma-separated list to have a different domain ID.
For , events can be filtered based on the domain IDs and server IDs in the event's GTID: (MDEV-4989, MDEV-20119)
$ mariadb-binlog --do-domain-ids='0,1'\
\--do-server-ids='1,2'\
mariadb-bin.000001The --do-domain-ids command-line option can set domain IDs that should be read as a comma-separated list of domain IDs. If an event's GTID does not have one of the specified domain IDs, the event is not printed.
The --ignore-domain-ids command-line option can set domain IDs that should be ignored as a comma-separated list of domain IDs. If an event's GTID has one of the specified domain IDs, the event is not printed.$ mariadb-binlog --start-position='0-1-1001,1-2-1000' \ --stop-position='0-1-2000,1-2-1050' mariadb-bin.000001
The --start-position command-line option can set the starting GTID position as a comma-separated list of GTIDs. For each specified GTID domain, the GTID position is exclusive, so an event is only printed if its sequence number is greater than the sequence number specified for that domain.
The --stop-position command-line option can set the ending GTID position as a comma-separated list of GTIDs. For each specified GTID domain, the GTID position is inclusive, so an event is only printed if its sequence number is greater than or equal to the sequence number specified for that domain.
Both command-line options require each GTID in the comma-separated list to have a different domain ID.
The following changes pertain to Galera Cluster with MariaDB Enterprise Server 11.4:
Automatic SST User Account Management with Galera (MENT-2144)
The State Snapshot Transfer (SST) method, needed to provide a full data copy to a new node, requires a dedicated account to access the remote server (donor) during the SST process.
MariaDB Enterprise Cluster (Galera) now creates the user internally for the time of an SST, which makes the need to have an account created manually obsolete. This removes the requirement to have a user and password provided via a configuration file. Having the user created by Galera also ensures that the needed privileges are set.
New connection states in SHOW [FULL] PROCESSLIST and information_schema.PROCESSLIST better reflect the state of the connection: (MDEV-26352)
waiting to execute in isolation
The connection is executing a DDL statement with , but the operation requires other concurrent operations to finish first, so the DDL statement can be executed in isolation.
waiting for TOI DDL
Another connection is executing a DDL statement with , so this connection must wait for the DDL statement to finish.
waiting for flow control
The connection is committing a transaction, but transactions are currently paused due to flow control, so the connection is waiting for the cluster to catch up and unpause transactions.
waiting for certification
The connection is committing a transaction, but it is waiting for the other cluster nodes to certify the transaction.
Node state changes can be saved to a machine-readable JSON file configured by the wsrep_status_file system variable: (MDEV-26971)
[mariadb]
wsrep_status_file=galera_status.jsonThe JSON file can be read by monitoring tools.
When wsrep_status_file is set to a path, the node state changes are written to the specified file.
When wsrep_status_file is set to none, this functionality is disabled.
Progress reporting for MariaDB Enterprise Backup-based SST by configuring the progress option in the [sst] option group: (MDEV-26971)
[mariadb]
wsrep_sst_method=mariadb-backup
wsrep_debug=1
[sst]
progress=1
rlimit=100mProgress reporting is only supported for MariaDB Enterprise Backup-based SST, so wsrep_sst_method=mariadb-backup must be set.
Progress reporting is only enabled when wsrep_debug=1 is set.
When progress=1 is set, progress reporting goes to standard error (stderr).
When progress is set to a path, progress reporting is written to the specified file.
When progress is set to none, progress reporting is disabled.
rlimit can be used to set a rate limit in bytes. The value can use a suffix to represent a unit: k for kilobytes, m for megabytes, g for gigabytes, and t for terabytes.
The pv utility must be installed for SST progress reporting.
When progress reporting is enabled, the following SST progress message is written to the MariaDB log during an SST:
When wsrep_status_file is set to none, this functionality is disabled.
Progress reporting for MariaDB Enterprise Backup-based SST by configuring the progress option in the [sst] option group: (MDEV-26971)
[mariadb]
wsrep_sst_method=mariadb-backup
wsrep_debug=1
[sst]
progress=1
rlimit=100mProgress reporting is only supported for MariaDB Enterprise Backup-based SST, so wsrep_sst_method=mariadb-backup must be set.
Progress reporting is only enabled whwsrep_debug=1 is set.
When progress=1 is set, progress reporting goes to standard error (stderr).
When progress is set to a path, progress reporting is written to the specified file.
When progress is set to none, progress reporting is disabled.
rlimit can be used to set a rate limit in bytes. The value can use a suffix to represent a unit: k for kilobytes, m for megabytes, g for gigabytes, and t for terabytes.
The pv utility must be installed for SST progress reporting.
When progress reporting is enabled, the following SST progress message is written to the MariaDB log during an SST.
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 11.4.5-3 is provided for:
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Ubuntu 24.04 (x86_64, ARM64)
Microsoft Windows (x86_64) (Without MariaDB Enterprise Cluster (Galera) support)
Red Hat UBI 8 (x86_64, ARM64)
Red Hat UBI 8 is part of the Enterprise Server Docker Image. It does not support MariaDB Enterprise Cluster (Galera) or MariaDB ColumnStore.
Some components of MariaDB Enterprise Server are supported on a subset of platforms. See MariaDB Engineering Policies for details.
MariaDB Enterprise Server 11.4.4-2 is the first Stable (GA) release of MariaDB Enterprise Server 11.4, released on 2025-01-16
MariaDB Enterprise Server 11.4.4-2 is the first GA release of MariaDB Enterprise Server 11.4.
The changes listed here are relative to MariaDB Enterprise Server 10.6.19-15
MariaDB Enterprise Server 11.4.4-2 was released on 2025-01-16.
With InnoDB storage engine, the process to import an InnoDB tablespace has been simplified. (MDEV-26137)
Prior to this release, the process was to create a table, discard the tablespace, then execute ALTER TABLE IMPORT TABLESPACE.
Starting with this release, ALTER TABLE IMPORT TABLESPACE is the only command needed.
For example:
FLUSH TABLES t1 FOR EXPORT;
--copy_file $MYSQLD_DATADIR/test/t1.cfg $MYSQLD_DATADIR/test/t2.cfg
--copy_file $MYSQLD_DATADIR/test/t1.frm $MYSQLD_DATADIR/test/t2.frm
--copy_file $MYSQLD_DATADIR/test/t1.ibd $MYSQLD_DATADIR/test/t2.ibd
UNLOCK TABLES;
ALTER TABLE t2 IMPORT TABLESPACE;With InnoDB storage engine, space occupied by freed pages within the InnoDB system tablespace can be reclaimed. (MDEV-14795)
Prior to this release, InnoDB data files would never shrink during normal operation. .ibd files could be shrunk by rebuilding tables with OPTIMIZE TABLE and undo tablespace files using SET GLOBAL innodb_undo_log_truncate=ON
Starting with this release, an :autoshrink attribute has been added for the innodb_data_file_path system variable.
With :autoshrink, the InnoDB system tablespace can be truncated after the last allocated page within it, down to the specified minimum size.
For example, with this configuration the InnoDB system tablespace can be shrunk down to 12MiB:
[mariadb]
...
innodb_data_file_path=ibdata1:12M;ibdata2:50M:autoextend:autoshrinkWith InnoDB storage engine, system variable changes provide improved control of log files and data files: (MDEV-30136)
The innodb_log_file_buffering and innodb_log_file_write_through system variables have been added for log file control. These system variables are boolean and can be set dynamically while the server is running.
The innodb_data_file_buffering and innodb_data_file_write_through system variables have been added for data file control. These system variables are boolean and can be set dynamically while the server is running.
The innodb_flush_method system variable has been deprecated.
With InnoDB storage engine, performance of bulk inserts is improved. (MDEV-25036)
With InnoDB storage engine, changes to the InnoDB redo log format reduce write amplification, which can result in better performance. (MDEV-14425)
With InnoDB storage engine, the InnoDB change buffer has been removed: (MDEV-29694)
With modern storage speeds, the InnoDB change buffer tends to add more overhead, rather than providing a performance gain.
The removal of the InnoDB change buffer also simplifies the internal recovery process.
The innodb_change_buffering and innodb_change_buffer_max_size system variables have been removed.
The , , , , , , , , , and status variables have been removed.
With InnoDB storage engine, the Prefix Index Queries Optimization is always used: (MDEV-28540)
This feature was originally implemented as an optional optimization in MariaDB Server 10.1.
The and status variables have been removed.
With InnoDB storage engine, multiple undo tablespaces are now enabled by default, so that the default configuration enables undo logs to be truncated while the server is running: (MDEV-29986)
Truncation does not apply to undo logs in the system tablespace.
innodb_undo_tablespaces default changed from 0 to 3.
To reclaim space, innodb_undo_log_truncate=ON must be set
innodb_undo_log_truncate=ON can have a performance impact for some workloads. In those cases, undo truncation can be enabled by temporarily setting the following:
SET GLOBAL innodb_undo_log_truncate=ON;With InnoDB storage engine, the temporary InnoDB tablespaces can now be shrunk without restart
Before MariaDB Enterprise Server 11.4 the only way to reclaim disk space used by temporary InnoDB tablespaces was to restart the server, as temporary tablespaces are deleted when you stop the server and are recreated with their configured size
The disk space can now be reclaimed, tables in use will not be removed. The command to trigger the new feature is:
SET GLOBAL innodb_truncate_temporary_tablespace_now=1;Example:
CREATE TEMPORARY TABLE t1(f1 INT NOT NULL, f2 INT NOT NULL)ENGINE=InnoDB;
INSERT INTO t1 SELECT seq, seq FROM seq_1_to_65536;
DROP TABLE t1;
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE NAME="innodb_temp
orary";+------------------+-----------+
| NAME | FILE_SIZE |
+------------------+-----------+
| innodb_temporary | 79691776 |
+------------------+-----------+SET GLOBAL INNODB_TRUNCATE_TEMPORARY_TABLESPACE_NOW= 1;
SELECT NAME, FILE_SIZE FROM INFORMATION_SCHEMA.INNODB_SYS_TABLESPACES WHERE NAME="innodb_temp
orary";+------------------+-----------+
| NAME | FILE_SIZE |
+------------------+-----------+
| innodb_temporary | 12582912 |
+------------------+-----------+With Spider storage engine, engine-defined attributes (table options) are accepted. Previously, Spider required parameters to be provided via COMMENT for a table: (MDEV-27106)
REMOTE_DATABASE
database
The remote database that contains the remote table
REMOTE_SERVER
srv
The IP address or hostname of the remote server that contains the remote table
REMOTE_TABLE
tbl
The remote table
Spider storage engine system variable defaults have changed.
With the Spider storage engine the preferred way to specify Spider parameters is now to use the dedicated Spider table options. Abusing the table COMMENT clause is now deprecated (MDEV-28861)
With MyRocks storage engine, log files can be stored in a user-defined directory specified by the rocksdb_log_dir system variable. (MDEV-27791)
Stored function parameters can be qualified with IN, OUT, INOUT, and IN OUT: (MDEV-10654)
When a parameter is qualified with IN, a value is passed to the function.
When a parameter is qualified with OUT, the function returns a value to the caller.
When a parameter is qualified with INOUT or IN OUT, a value is passed to the function, and the function also returns a value to the caller.
OUT, INOUT, and INOUT can only be used when called from SET and not when called from SELECT
OUT, INOUT, and INOUT allow a function to return more than one value, which allows for more complex and nested functions.
In previous releases, the qualifiers were supported for stored procedures, but not for stored functions.
Starting with this release, the qualifiers are accepted in stored functions using the same syntax previously used for stored procedures.
When is set, the behavior is adjusted to match the behavior of Oracle.
Changed default behavior for field properties: (MDEV-28632)
Previous to this release, implementation-specific behavior was present by default for the first TIMESTAMP column in a table. This behavior added DEFAULT current_timestamp() ON UPDATE current_timestamp() to the TIMESTAMP field properties.
Starting this release, the implementation-specific behavior for TIMESTAMP field properties is disabled by default. The default value of the is changed to OFF
As a result of this change, new TIMESTAMP columns without explicit default values will be created with DEFAULT NULL
is new server internal functionality which makes all schema changes (ALTER TABLE commands) non-blocking. (MDEV-16329)
OSC targets a problem previously solvable using third-party solutions, in a way which reduces operational impact. Some aspects of the OSC implementation are operationally significant:
OSC performs internal Copy-Apply-Replace: First, the altered table gets copied, then the online changes get applied. A short table lock occurs when applying last changes and renaming the tables. The binary log is not used in this process. This is significant because some third-party approaches to this problem depend on client connections which can be subject to connection timeouts and similar factors.
OSC is asynchronous: Changes from applications are first stored in an online change buffer. This is significant because some third-party approaches to this problem are synchronous and as result impact the execution of other transactions.
OSC is trigger-less: Only server internal handlers for a DML-side check if ALTER TABLE is in progress are used. INSERT, UPDATE, or DELETE triggers based on stored routines are not used. This is significant because some third-party approaches to this problem depend on triggers.
By default, when an ALTER operation cannot be executed INSTANT, OSC will be used. If OSC cannot be used, another algorithm will be used.
If the LOCK=NONE option is explicitly specified in the ALTER statement, or if the equivalent statement ALTER ONLINE TABLE is used, the operation will be performed if it can be done as OSC and fails otherwise.
As an override to this new behavior, if the old_mode system variable is set with LOCK_ALTER_TABLE_COPY, the old behavior is preferred when LOCK=NONE is not explicitly set. (MDEV-31812)
Stored routine calls reflect all changes to metadata for objects the stored routine depends on. (MDEV-5816)
Prior to this release, a reconnect was needed before a stored routine was able to update its metadata from altered objects. For example, absent a reconnect:
CREATE TABLE t1 (id INT);
INSERT INTO t1 VALUES (100);
CREATE PROCEDURE p1() SELECT * FROM t1;
CALL p1;+------+
| id |
+------+
| 100 |
+------+ALTER TABLE t1 ADD COLUMN b INT DEFAULT 0;
CALL p1;+------+
| id |
+------+
| 100 |
+------+• Starting with this release, metadata changes are reflected without a reconnect:
CREATE TABLE t1 (id INT);
INSERT INTO t1 VALUES (100);
CREATE PROCEDURE p1() SELECT * FROM t1;
CALL p1;+------+
| id |
+------+
| 100 |
+------+ALTER TABLE t1 ADD COLUMN b INT DEFAULT 0;
CALL p1;+------+------+
| id | b |
+------+------+
| 100 | 0 |
+------+------+Temporary tables are now included in information_schema.TABLES, in SHOW TABLES output, and in SHOW TABLE STATUS output. (MDEV-12459)
For example:
CREATE DATABASE test;
USE test;
CREATE TABLE t1 (id INT);
CREATE TEMPORARY TABLE t2_temp (id INT);
SHOW FULL TABLE;+----------------+-----------------+
| Tables_in_test | Table_type |
+----------------+-----------------+
| t2_temp | TEMPORARY TABLE |
| t1 | BASE TABLE |
+----------------+-----------------+SELECT table_schema, table_name, table_type FROM information_schema.TABLES WHERE table_schema='test';+--------------+------------+------------+
| table_schema | table_name | table_type |
+--------------+------------+------------+
| test | t2_temp | TEMPORARY |
| test | t1 | BASE TABLE |
+--------------+------------+------------+For operations that insert multiple rows, error reporting has been improved: (MDEV-10075)
In GET DIAGNOSTICS, the ROW_NUMBER property allows retrieval of the row number that caused the error or warning:
GET DIAGNOSTICS CONDITION 1 @failed_row=ROW_NUMBER;Information Schema system table optimizations: (MDEV-20609)
When is queried and the WHERE clause filters on SPECIFIC_SCHEMA and SPECIFIC_NAME, an index is used to avoid a full table scan.
When is queried and the WHERE clause filters on ROUTINE_SCHEMA and ROUTINE_NAME, an index is used to avoid a full table scan.
can show the query plan for a query running in another connection: (MDEV-25956)
SHOW EXPLAIN FOR 1;The statement returns the query itself as a warning, which can be obtained via .
SHOW ANALYZE [FORMAT=JSON] FOR CONNECTION_ID can analyze a query running in another connection: (MDEV-27021)
SHOW ANALYZE FOR 1;ANALYZE FORMAT=JSON now shows the time spent in the query optimizer. (MDEV-28926)
With , the new --order-by-size command-line option allows tables to be dumped in order of size (smallest tables first): (MDEV-28074)
$ mariadb-dump \
--user=USER \
--password='PASSWORD' \
--all-databases \
--single-transaction \
--order-by-sizeThis new option is useful when the is specified and the backup contains tables that are truncated frequently. Since tables that are truncated frequently tend to be smaller, those tables will be backed up earlier, which reduces the chance that the backup will fail with the ER_TABLE_DEF_CHANGED error code.
The can now be used to set the transaction isolation: (MDEV-21921)
The tx_isolation system variable is still available as an alias, but it has been deprecated and will be removed in a later release.
The can now be used to set a transaction to read-only. (MDEV-21921)
Process list now includes the number of rows sent by the statement. The new value SENT_ROWS in the information schema table PROCESSLIST includes the number of rows sent by the current statement, shown in the processlist.
SELECTS with functions show the total number of rows sent by the main statement and all functions
Stored procedures show the total number of rows sent per stored procedure statement
INSERT RETURNING and DELETE RETURNING show the total number of rows sent for the returning data set
Example:
SELECT * FROM processlist\G*************************** 1. row ***************************
...
*************************** 2. row ***************************
ID: 6
USER: root
HOST: localhost
DB: test
COMMAND: Query
TIME: 1
STATE: Sending data
INFO: select * from t1
TIME_MS: 1340.406
STAGE: 0
MAX_STAGE: 0
PROGRESS: 0.000
MEMORY_USED: 89856
MAX_MEMORY_USED: 392544
EXAMINED_ROWS: 0
SENT_ROWS: 3895737
QUERY_ID: 436
INFO_BINARY: select * from t1
TID: 100The SQL Error Log Plugin, used to log errors sent to clients for later analysis, has been enhanced. When option sql_error_log_with_db_and_thread_info=ON is set, the log file is now also showing thread id and the current default schema for the error.
When mariadb-dump is used with the option -T / --tab= to produce tab-separated text-format data files per table, the new option --parallel (synonym --use-threads) can be used to use several threads in parallel to dump the table data to their .txt files.
Parallelism also works if the option --single-transaction is used.
The option --parallel has been added to mariadb-import as a synonym to --use-threads, which has been available before.
MariaDB Query Optimizer performs cost-based optimizations with an understanding of storage engine-specific costs: (MDEV-26974)
The query optimizer now defaults to assume SSD storage is used. Costs for disk access can be overridden.
Optimizer costs can be tuned by setting the following system variables via configuration file, command-line parameter, or the :
optimizer_disk_read_cost
Engine
Sets the time in microseconds required to read a 4K block from storage. The default value is tuned for an SSD reading at 400 MB/second.
optimizer_index_block_copy_cost
Engine
Sets the cost to lock a block in the global cache and copy it to the local cache. The cost applies to every block accessed, regardless of whether the block is already cached.
optimizer_key_compare_cost
Engine
Sets the cost to compare two key values.
optimizer_key_copy_cost
Engine
Sets the cost to copy a key value from the index to the local buffer while searching for a key value.
optimizer_key_lookup_cost
Engine
Sets the cost to find a key entry in the index.
optimizer_row_copy_cost
Engine
Sets the cost to find the next key entry in the index.
optimizer_rowid_compare_cost
Engine
Sets the cost to compare two rowid values.
optimizer_rowid_copy_cost
Engine
Sets the cost to copy a rowid from the index.
optimizer_row_lookup_cost
Engine
Sets the cost to find a row based on the rowid. The rowid is stored in the index with the key.
optimizer_row_next_find_cost
Engine
Sets the cost to find the next row.
optimizer_scan_setup_cost
Session
Sets the cost to start a table or index scan. The default low value configures the optimizer to use index lookups for tables with very few rows.
optimizer_where_cost
Session
Sets the cost to execute the WHERE clause for every row found. As this value is increases, the optimizer is more likely to choose plans which read fewer rows.
Optimizer costs can be tuned per storage engine by prefixing the system variable with the storage engine name.
Current optimizer costs for each storage engine can be queried via information_schema.OPTIMIZER_COSTS
For JOIN with many eq_ref tables, query performance is improved: (MDEV-28852)
New system variable
Default changed for system variable from 1 to 2 to enable prune join prefixes
New status variable Optimizer_join_prefixes_check_calls
An index can now be used when comparing the return value of the to a constant value. (MDEV-8320)
Single-table and can now benefit from semi-join optimization. (MDEV-7487)
JSON histograms with detailed histogram collection: (MDEV-26519)
Enabled when is set, which is now the default.
JSON histograms result in more precise data statistics for string data types or when columns have highly-uneven data distribution.
With more precise data statistics the optimizer can create better query plans, resulting in faster queries.
A table can be converted into a partition with ALTER TABLE .. CONVERT TABLE .. TO PARTITION: (MDEV-22165)
ALTER TABLE partitioned_tab
CONVERT TABLE tab1
TO PARTITION part_name VALUES LESS THAN (1000000);The ALTER TABLE .. CONVERT TABLE .. TO PARTITION operation was previously backported to MariaDB Enterprise Server 10.6.11-6.
A partition can be converted into a table with ALTER TABLE .. CONVERT PARTITION .. TO TABLE: (MDEV-22166)
ALTER TABLE partitioned_tab
CONVERT PARTITION part_name
TO TABLE tab1;The ALTER TABLE .. CONVERT PARTITION .. TO TABLE operation was previously backported to MariaDB Enterprise Server 10.6.11-6.
syntax has been extended, so the PARTITION keyword is optional in each partition definition: (MDEV-26471)
CREATE TABLE partitioned_tab (
col1 INT
)
PARTITION BY RANGE(col1) (
part1 VALUES LESS THAN (1000000),
part2 VALUES LESS THAN (2000000),
part3 VALUES LESS THAN (3000000),
part4 VALUES LESS THAN (4000000),
part5 VALUES LESS THAN (5000000),
part_end VALUES LESS THAN MAXVALUE
);Engine-defined attributes can be defined per-partition: (MDEV-5271)
CREATE TABLE remote_spider_tab (
id INT,
str VARCHAR(255),
PRIMARY KEY(id)
) ENGINE=Spider
PARTITION BY RANGE(id) (
PARTITION east_part VALUES LESS THAN (100) REMOTE_SERVER="mdb-east.example.org" REMOTE_TABLE="tab1",
PARTITION west_part VALUES LESS THAN MAXVALUE REMOTE_SERVER="mdb-west.example.org", REMOTE_TABLE="tab1"
);Exchanging partition or converting a table is now possible without a validation of the partitioning expression
This new feature should be used with care, as it can lead to inconsistencies if the partitioning rules are not met.
The new addition to ALTER TABLE is:
EXCHANGE PARTITION partition_name WITH TABLE tbl_name [{WITH | WITHOUT} VALIDATION]
CONVERT TABLE normal_table TO partition_definition [{WITH | WITHOUT} VALIDATION]History partition creation can be automated using the AUTO keyword when partitioned by INTERVAL or LIMIT: (MDEV-17554)
CREATE TABLE t1 (x INT) WITH SYSTEM VERSIONING
PARTITION BY SYSTEM_TIME INTERVAL 1 months AUTO;In the above example, a new history partition to store historical row versions is created on a monthly basis.
can backup historical data from system-versioned tables if the is specified. (MDEV-16029)
can perform a dump of historical data as of a point in time if the is specified. (MDEV-16355)
More Information about Application-time Period Tables is now available in the information schema
New views PERIOD and KEY_PERIOD_USAGE are added to information_schema.
View PERIODS includes the columns
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
PERIOD_NAME
START_COLUMN_NAME
END_COLUMN_NAMEto list Application-time period tables, the name defined for a period and the columns used for start and end timestamps.
View KEY_PERIOD_USAGE includes the columns
CONSTRAINT_CATALOG
CONSTRAINT_SCHEMA
CONSTRAINT_NAME
TABLE_CATALOG
TABLE_SCHEMA
TABLE_NAME
PERIOD_NAME
Two new columns are added to the COLUMNS view of information_schema
IS_SYSTEM_TIME_PERIOD_START
IS_SYSTEM_TIME_PERIOD_END
General Support of Packages for Stored Routines has been added
Before MariaDB Enterprise Server 11.4, the CREATE PACKAGE feature, as well as CREATE PACKAGE BODY, were only supported with sql_mode = ORACLE. They can now be used with any SQL mode.
Example:
DELIMITER $$
CREATE OR REPLACE PACKAGE myPkg
PROCEDURE p1();
FUNCTION f1() RETURNS INT;
END;
$$
CREATE OR REPLACE PACKAGE BODY myPkg
-- variable declarations
DECLARE v1 INT DEFAULT 1;
DECLARE v2 INT DEFAULT 10;
-- routine declarations
PROCEDURE p1()
BEGIN
SELECT v1, v2;
END;
FUNCTION f1() RETURNS INT
BEGIN
RETURN v1;
END;
-- package initialization
SET v1=v1 + 2;
END;
$$
DELIMITER ;
SELECT myPkg.f1();+------------+
| myPkg.f1() |
+------------+
| 3 |
+------------+CALL myPkg.p1();+------+------+
| v1 | v2 |
+------+------+
| 3 | 10 |
+------+------+Descending indexes are supported: (MDEV-13756)
When used with a composite index, can be used to get a significant performance boost for queries that perform ORDER BY operations on columns in different orders than the defined order.
In previous releases, MariaDB Enterprise Server already supported the DESC option for ORDER BY, but the optimizer would use the ascending index. For a composite index, the optimizer would have to use an index and perform a file sort.
For example, using the following example table:
CREATE TABLE sections (
top_level INT,
sub_level INT,
INDEX top_asc_sub_asc (top_level ASC, sub_level ASC),
INDEX top_asc_sub_desc (top_level ASC, sub_level DESC),
INDEX top_desc_sub_asc (top_level DESC, sub_level ASC),
INDEX top_desc_sub_desc (top_level DESC, sub_level DESC)
);
INSERT INTO sections VALUES
(1, 1), (1, 2), (2, 1), (2, 2),
(3, 1), (3, 2), (3, 3);• Performing an ORDER BY .. ASC on multiple columns still shows "Using index" in the EXPLAIN output:
EXPLAIN SELECT * FROM sections
ORDER BY top_level ASC, sub_level ASC;+------+-------------+----------+-------+---------------+-----------------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+----------+-------+---------------+-----------------+---------+------+------+-------------+
| 1 | SIMPLE | sections | index | NULL | top_asc_sub_asc | 10 | NULL | 7 | Using index |
+------+-------------+----------+-------+---------------+-----------------+---------+------+------+-------------+• With this change, performing a mix of ORDER BY .. ASC, .. DESC on multiple columns also shows "Using index" in the EXPLAIN output:
EXPLAIN SELECT * FROM sections
ORDER BY top_level ASC, sub_level DESC;+------+-------------+----------+-------+---------------+------------------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+----------+-------+---------------+------------------+---------+------+------+-------------+
| 1 | SIMPLE | sections | index | NULL | top_asc_sub_desc | 10 | NULL | 7 | Using index |
+------+-------------+----------+-------+---------------+------------------+---------+------+------+-------------+JSON_KEY_VALUE() extracts key/value pairs from a JSON object. (MDEV-30145)
Syntax: JSON_KEY_VALUE(<json_doc>, <json_path>)
The <json_path> specifies the JSON objects whose key/value pairs should be returned. For example:
SELECT JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]');+-----------------------------------------------------------------------------+
| JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]') |
+-----------------------------------------------------------------------------+
| [{"key": "key1", "value": "val1"}, {"key": "key2", "value": "val2"}] |
+-----------------------------------------------------------------------------+• JSON_KEY_VALUE() can be used as an argument to JSON_TABLE(), adding the key to a result set. For example:
SELECT jt.* FROM JSON_TABLE(
JSON_KEY_VALUE('[[1, {"key1":"val1", "key2":"val2"}, 3], 2, 3]', '$[0][1]'),'$[*]'
COLUMNS (
k VARCHAR(20) PATH '$.KEY',
v VARCHAR(20) PATH '$.value',
id FOR ORDINALITY )) AS jt;+------+------+------+
| k | v | id |
+------+------+------+
| key1 | val1 | 1 |
| key2 | val2 | 2 |
+------+------+------+
* ##JSON_ARRAY_INTERSECT()## finds the intersection between two JSON arrays. (MDEV-26182)
** Syntax: ##JSON_ARRAY_INTERSECT(<array1>, <array2>)##
** For example:<<sql inline=false>>SET @array1= '[1,2,3]';
SET @array2= '[1,2,4]';
SELECT json_array_intersect(@array1, @array2) as result;+--------+
| result |
+--------+
| [1, 2] |
+--------+SET @json1= '[[1,2,3],[4,5,6],[1,1,1]]';
SET @json2= '[[1,2,3],[4,5,6],[1,3,2]]';
SELECT json_array_intersect(@json1, @json2) AS result;+------------------------+
| result |
+------------------------+
| [[1, 2, 3], [4, 5, 6]] |
+------------------------+JSON_OBJECT_TO_ARRAY() converts all JSON objects found in a JSON document to JSON arrays. (MDEV-26182)
Syntax: JSON_OBJECT_TO_ARRAY(<json_doc>)
For example:
SET @json1= '{ "a" : [1,2,3] , "b": {"key1": "val1", "key2": {"key3": "val3"}} }';
SELECT JSON_OBJECT_TO_ARRAY(@json1) AS result;+-----------------------------------------------------------------------+
| result |
+-----------------------------------------------------------------------+
| [["a", [1, 2, 3]], ["b", {"key1": "val1", "key2": {"key3": "val3"}}]] |
+-----------------------------------------------------------------------+Resulting arrays can be compared using JSON_ARRAY_INTERSECT(). For example:
SET @json1='{"a":[1,2,3],"b":{"key1":"val1","key2":{"key3":"val3"}}}';
SET @json2='{"a":[1,2,3]}';
SELECT JSON_OBJECT_TO_ARRAY(@json1) INTO @array1;
SELECT JSON_OBJECT_TO_ARRAY(@json2) INTO @array2;
SELECT JSON_ARRAY_INTERSECT(@array1,@array2) AS result;+--------------------+
| result |
+--------------------+
| [["a", [1, 2, 3]]] |
+--------------------+JSON_OBJECT_FILTER_KEYS() returns key/value pairs from a JSON string for keys in an array. (MDEV-26182)
Syntax: JSON_OBJECT_FILTER_KEYS(<json_doc>,<array_keys>)\
For example:
SET @json1= '{ "a": 1, "b": 2, "c": 3}';
SELECT JSON_OBJECT_FILTER_KEYS (@json1, ' ["b", "c"] ') AS result;+------------------+
| result |
+------------------+
| {"b": 2, "c": 3} |
+------------------+Using JSON_ARRAY_INTERSECT() and JSON_KEY() as arguments for JSON_OBJECT_FILTER_KEYS(), a comparison of two JSON strings is possible where only the same keys are compared, not the key/value pairs. For example:
SET @json1= '{ "a": 1, "b": 2, "c": 3}';
SET @json2= '{"b" : 10, "c": 20, "d": 30}';
SELECT JSON_OBJECT_FILTER_KEYS (@json1, json_array_intersect(json_keys(@json1), json_keys(@json2))) AS result;+------------------+
| result |
+------------------+
| {"b": 2, "c": 3} |
+------------------+can be used to compare two documents and determine if they are equal. (MDEV-16375)
The JSON_EQUALS() function was previously backported to MariaDB Enterprise Server 10.4.25-16, 10.5.16-11, and 10.6.8-4.
# can be used to normalize two JSON documents to make them more comparable. (MDEV-23143)
For example, this function can be used when defining a unique key on JSON data.
The JSON_NORMALIZE() function was previously backported to MariaDB Enterprise Server 10.4.25-16, 10.5.16-11, and 10.6.8-4.
can be used to compare two JSON documents to determine if they have any key-value pairs or array elements in common. (MDEV-27677)
SELECT JSON_OVERLAPS('{"A": 1, "B": {"C":2}}', '{"A": 2, "B": {"C":2}}') AS is_overlap;+---------------------+
| is_overlap |
+---------------------+
| 1 |
+---------------------+can be used to validate a JSON document against a JSON schema, as documented by the JSON Schema Draft 2020. (MDEV-27128)
This function can also be used in a CHECK constraint to verify that JSON documents are only stored in the database if they include required items and that the values are within a given range and length.
Negative indexes can be used to access values in JSON arrays relative to the end of the array when a JSON Path expression is used as a parameter to a JSON function. (MDEV-22224)
SELECT JSON_REMOVE(@json, '$.A[-10]')The last index can be used to access the last value in a JSON array when a JSON Path expression is used as a parameter to a JSON function. (MDEV-22224)
SELECT JSON_REMOVE(@json, '$.A[last]');A range of indexes can be used to access the values in that range in a JSON array when a JSON Path expression is used as a parameter to a JSON function. (MDEV-27911)
SELECT JSON_REMOVE(@json, '$.A[1 TO 3]');The TIMESTAMP range of values was extended from '2038-01-19 03:14:07 UTC', to '2106-02-07 06:28:15 UTC'.
The storage format is not changed, and new tables can be read by old MariaDB servers as long as timestamp values are within the old timestamp range.
INET4 values can now be compared with INET6 values and can be inserted into INET6 columns; the server does automatically convert INET4 value into INET6 as needed.
UUID data type is added to store UUIDs more efficiently. (MDEV-4958) The UUID data type was previously backported to MariaDB Enterprise Server 10.6.9-5.
INET4 data type is added to store IPv4 addresses as BINARY(4), where each byte stores one octet. (MDEV-23287)
The data type provides the following functionality:
Validation of incorrect values
Comparisons
Sorting
Functions like CAST()
New time zone options for function DATE_FORMAT()
The new options %Z and %z can be used for the format string of the function
DATE_FORMAT(DATE, format)for adding time zone information to the date string.
%Z Time zone abbreviation
%z Numeric time zone +hhmm or -hhmm presenting the hour and minute offset from UTC
Example:
SELECT DATE_FORMAT(NOW(), '%W %d %M %Y %H:%i:%s %Z %z');+--------------------------------------------------+
| DATE_FORMAT(NOW(), '%W %d %M %Y %H:%i:%s %Z %z') |
+--------------------------------------------------+
| Tuesday 21 November 2023 13:28:34 EST -0500 |
+--------------------------------------------------+SQL function KDF() for key derivation
A possible use case is to generate encryption keys from a user provided password or a passphrase. It can be used to generate encryption keys for encryption functions such as AES_ENCRYPT.
KDF(key_str, salt [, {info | iterations} [, kdf_name [, width ]]])* `kdf_name` is "hkdf" or "pbkdf2_hmac"
* `width` (in bits) can be any number divisible by 8
* `info` is a non-secret parameter of the hkdf method, it allows to generate different encryption keys for different purposes from the same secret password
* `iterations` is a positive numeric parameter of the pbkdf2_hmac method. Larger values make the password more difficult to brute-force.Example:
SELECT hex(kdf('foo', 'bar', 'info', 'hkdf'));+----------------------------------------+
| hex(kdf('foo', 'bar', 'info', 'hkdf')) |
+----------------------------------------+
| 710583081D40A55F0B573A76E02D8975 |
+----------------------------------------+INSERT INTO tbl VALUES (aes_encrypt(@secret_data, kdf("Passw0rd", "NaCl", "info", 'hkdf'), "iv"));Function CONV() now supports conversions up to base 62
The function CONV(), which converts a number between numeric base systems, now supports conversions up to base 62.
This allows conversions to encodings to capital letters A-Z, lower case letters a-z, and numbers 0-9.
The old limit was 36, not including lower case letters.
Example:
SELECT CONV(61,10,36);+----------------+
| CONV(61,10,36) |
+----------------+
| 1P |
+----------------+SELECT CONV(61,10,62);+----------------+
| CONV(61,10,62) |
+----------------+
| z |
+----------------+and allow specifying the initialization vector (iv) and block encryption mode (mode). (MDEV-9069)
AES_ENCRYPT syntax prior to this release: AES_ENCRYPT(<str>, <key_str>)
AES_ENCRYPT syntax starting with this release: AES_ENCRYPT(<str>, <key>, [, iv [, mode]])
AES_DECRYPT syntax prior to this release: AES_DECRYPT(<str>, <key_str>)
AES_DECRYPT syntax starting with to this release: AES_DECRYPT(<str>, <key>, [, iv [, mode]])
The block_encryption_mode system variable specifies which mode will be used if the mode is not specified as a function argument.
For example, using the default mode from the block_encryption_mode:
SELECT @@block_encryption_mode;+-------------------------+
| @@block_encryption_mode |
+-------------------------+
| aes-128-ecb |
+-------------------------+SELECT HEX(AES_ENCRYPT('MariaDB','mykey','VECTOR')) AS result;+----------------------------------+
| result |
+----------------------------------+
| CD0352A4B2FB18A592C04FF8CDA6C2F2 |
+----------------------------------+SELECT AES_DECRYPT(x'CD0352A4B2FB18A592C04FF8CDA6C2F2','mykey','VECTOR') AS result;+---------+
| result |
+---------+
| MariaDB |
+---------+For example, specifying the mode as an argument: <<sql inline=false>> SELECT HEX(AES_ENCRYPT('MariaDB','mykey','thisismy256vector','aes-256-cbc')) as result;
+----------------------------------+
| result |
+----------------------------------+
| CD6C47183B89A813557BFD639A893CE3 |
+----------------------------------+SELECT AES_DECRYPT(x'CD6C47183B89A813557BFD639A893CE3','mykey','thisismy256vector','aes-256-cbc') AS result;+---------+
| result |
+---------+
| MariaDB |
+---------+returns a binary string of a length between 1 and 1024 bytes. (MDEV-25704)
This nondeterministic value is generated by the cryptographically secure pseudo random generator (CSPRNG) of the SSL library, so it generates an arbitrary length string of cryptographic random bytes that are suitable for cryptographic use.
can be used to perform a natural sort of strings. (MDEV-4742)
Characters are sorted in alphabetical order, whereas numbers are sorted, such that "10" is greater than "9".
For example, "v10" would appear after the string "v9".
formats strings based on the specified options and values to generate a custom formatted string. (MDEV-25015)
SELECT SFORMAT("MariaDB version {}", VERSION());This function uses the fmtlib library for string formatting similar to Python, Rust, C++20.
CRC32() computes a cyclic redundancy check (CRC) as a 32-bit unsigned value using the ISO 3309 polynomial. (MDEV-27208)
The CRC can now be computed in pieces, using an optional second parameter: CRC32('String') is equal to CRC32(CRC32('Str','ing')).
CRC32C() can be used to compute checksums using the alternate Castagnoli polynomial.
The character_set_collations system variable allows the default collation for a character set to be changed globally or for a session. (MDEV-30164)
Starting with this release, the default collation is used whenever a character set is defined for a database object but the collation is not defined.
Starting with this release, when the character set is not defined, the default collation is as specified by the collation_server system variable.
SET @@character_set_collations='utf8mb4=uca1400_ai_ci';
CREATE DATABASE test_with_charset CHARACTER SET utf8mb4;
CREATE DATABASE test;
SELECT SCHEMA_NAME,DEFAULT_COLLATION_NAME FROM SCHEMATA WHERE SCHEMA_NAME LIKE "test%";+-------------------+------------------------+
| SCHEMA_NAME | DEFAULT_COLLATION_NAME |
+-------------------+------------------------+
| test_with_charset | utf8mb4_uca1400_ai_ci |
| test | utf8mb4_general_ci |
+-------------------+------------------------+Collations based on the Unicode Collation Algorithm (UCA) 14.0.0 have been added for the character sets : (MDEV-27009)
One neutral and 22 language specific collations have been added.
Accent sensitive, accent insensitive, case sensitive, case insensitive, no-pad variants have been added.
Collation names for new UCA 14.0.0 collations can be specified without the character set prefix, because the character set prefix can be automatically detected from the context. For example, uca1400_german_as_ci can be specified instead of utf8mb4_uca1400_german_as_ci. Collation names with character set prefixes are accepted for the new UCA 14.0.0 collations, but they are optional.
When the is queried for metadata about the new UCA 14.0.0 collations, the COLLATION_NAME column contains the collation name without a character set prefix, and the CHARACTER_SET_NAME column contains NULL, which indicates that these collations can apply to multiple character sets.
When the is queried for character set applicability of the new UCA 14.0.0 collations, the COLLATION_NAME column also contains the collation name without a character set prefix. A newFULL_COLLATION_NAMEcolumn has been added, which contains the full collation name (with a character set prefix) for all collations, including new UCA 14.0.0 collations.
Improved contraction performance in UCA collations.
Improved UCA collation performance for the utf8mb3 and utf8mb4 character sets.
On Microsoft Windows, MariaDB command-line tools now include full Unicode support. (MDEV-26713)
Unicode support is available on Microsoft Windows 10 1909 or later, Microsoft Windows 11, and Microsoft Windows Server 2020.
The my.ini configuration file is now UTF-8 encoded.
The mariadb.exe command-line client uses utf8mb4 as the default character set.
Client to server connection now requires SSL encryption by default
Using SSL (a more correct term would be TLS, but in reality SSL is more commonly used) has been simplified with MariaDB Enterprise Server 11.4.
Before version 11.4, proper SSL configuration required multiple manual steps for the server and all the clients connecting to it.
Now the client can verify the server self-signed certificate without any configuration whatsoever. The server completely automatically generates the SSL certificate and the client automatically verifies it as needed.
A default configuration now refuses unencrypted connections.
New Privilege SHOW CREATE ROUTINE to enable any user with this privilege to view the definition of a stored routine.
Before MariaDB Enterprise Server 11.4 a user only could see the definition of a routine, a stored feature, or function, when:
SELECT privilege exists for the mysql.procs table
The user is the definer of the Stored Procedure
SHOW CREATE ROUTINE privilege can be granted globally, per schema, or on individual routines.
Example without privilege SHOW CREATE ROUTINE:
SHOW grants;+--------------------------------------------------+
| Grants for user1@% |
+--------------------------------------------------+
| GRANT USAGE ON *.* TO `user1`@`%` |
| GRANT SELECT, EXECUTE ON `test`.* TO `user1`@`%` |
+--------------------------------------------------+SHOW CREATE PROCEDURE myProc \G*************************** 1. row ***************************
Procedure: myProc
sql_mode: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Create Procedure: NULL
character_set_client: utf8mb3
collation_connection: utf8mb3_general_ci
Database Collation: utf8mb4_general_ciExample with the new privilege SHOW CREATE ROUTINE:
SHOW grants;+-----------------------------------------------------------------------+
| Grants for user1@% |
+-----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `user1`@`%` |
| GRANT SELECT, EXECUTE, SHOW CREATE ROUTINE ON `test`.* TO `user1`@`%` |
+-----------------------------------------------------------------------+SHOW CREATE PROCEDURE myProc \G*************************** 1. row ***************************
Procedure: myProc
sql_mode: STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Create Procedure: CREATE DEFINER=`root`@`localhost` PROCEDURE `myProc`()
BEGIN
SELECT "My Definiton of a Stored Procedure";
END
character_set_client: utf8mb3
collation_connection: utf8mb3_general_ci
Database Collation: utf8mb4_general_ciNew view in the SYS schema to retrieve user privileges per specific table
View privileges_by_table_by_level in the SYS schema lists the privilege and privilege level per user, schema, and table.
Example:
CREATE DATABASE test;
USE test;
CREATE TABLE t1 (id INT);
CREATE USER user1;
GRANT SELECT, UPDATE ON *.* TO user1;
CREATE USER user2;
GRANT SELECT ON test.* TO user2;
CREATE USER user3;
GRANT SELECT ON test.t1 TO user3;
SELECT * FROM sys.privileges_by_table_by_level WHERE GRANTEE NOT LIKE "'root'@'%'";+--------------+------------+-------------+-----------+--------+
| TABLE_SCHEMA | TABLE_NAME | GRANTEE | PRIVILEGE | LEVEL |
+--------------+------------+-------------+-----------+--------+
| test | t1 | 'user1'@'%' | SELECT | GLOBAL |
| test | t1 | 'user1'@'%' | UPDATE | GLOBAL |
| test | t1 | 'user2'@'%' | SELECT | SCHEMA |
| test | t1 | 'user3'@'%' | SELECT | TABLE |
+--------------+------------+-------------+-----------+--------+New Information Schema Table For Password Related Data (MENT-2145)
A new information Schema view, USERS, has been added, which DBAs can use to get insights about password related information for a user. This information can be used:
by an application to inform a user about a password about to expire or an account which is at risk of being blocked due to the number of wrong passwords entered
by DBAs to query users which have been blocked because of too many invalid passwords entered
The new view includes the fields:
USER – A string including user name and host PASSWORD_ERRORS – A counter with the current number of wrong passwords entered
Reset to 0 when a correct password has been entered
An account is blocked, if max_password_errors is reached
NULL for accounts with privilege CONNECTION ADMIN
PASSWORD_EXPIRATION_TIME – The date and time when the password expires or NULL, if the password never expires
New Authentication Plugin — PARSEC (Password Authentication using Response Signed with Elliptic Curves) (MENT-2142)
PARSEC improves security over old authentication plugins by introducing salted passwords, time consuming key derivation function, and a client-side scramble to ensure that man-in-the-middle attackers cannot control the client response.
Example on how to create a user using the new authentication plugin:
CREATE USER 'MariaDBUser'@'%' IDENTIFIED VIA PARSEC USING PASSWORD('MyPassword123!');This will result in:
SHOW GRANTS FOR MariaDBUser@'%';
Grants FOR MariaDBUser@%
GRANT USAGE ON *.* TO `MariaDBUser`@`%` IDENTIFIED VIA parsec USING 'P0:lhXyNv1cIxpB8EnTxR7ON7S7:1l3rWRW1/jw45yrvYXB8eh02wzk7lcJcz4CMcWw2b+8'The implements a way to prevent a user from setting a password that had been set for that user previously. (MDEV-5245)
The specifies the number of days before a password can be reused.
The plugin only affects a SQL statement that sets a user password using a literal password string. It cannot check the password of a SQL statement that makes use of a hashed password value.
The plugin makes use of password history records stored in the . Each row in the table stores a cryptographic hash and a date. The hashed data includes information about the affected user and the password that is being set. Because it is a one-way cryptographic hash, the stored data cannot be used to extract the prior password values nor which user the historical record is associated with.
The password_reuse_check plugin was previously backported to MariaDB Enterprise Server 10.4.25-16, 10.5.16-11, and 10.6.8-4.
can be used to grant privileges to all currently authenticated users and newly authenticated users on the system. (MDEV-5215)
retrieves all privileges granted to public. (MDEV-5215)
Fine-grained privileges have been removed from the : (MDEV-29668, MDEV-29596)|=Fine-grained privilege removed from as of ES 11.4.4-2|
Upon upgrade, each user that has the SUPER privilege will be granted the privileges removed from SUPER, so that the user's capabilities will not change. The SUPER privilege is still used for some special cases, including:
*** Calling and without an explicit key*** Dynamically changing certain system variables with
*** Changing certain debug settings** Due to this change, the consistency of read-only replicas are now protected when users with the SUPER privilege attempt to write to a read-only replica if they do not also have the .
*** Read-only replicas are replica servers that have set to ensure that they stay consistent with the primary.*** If a user with the SUPER privilege requires write access to a read-only replica server, the user must be explicitly granted the READ ONLY ADMIN privilege.
New option to limit the space used by binary bogs per server instance
The new system variable max_binlog_total_size (alias binlog_space_limit) enables binary log purging when the total size of all binary logs exceeds the specified threshold.
The default for max_binlog_total_size is 0, meaning that there is no limit.
The system variable can be changed without restarting the server.
New system variable --slave-connections-needed-for-purge set to 1 by default.
Assures that binary log purging will not happen until at least that many replicas are connected and do not need purged binary logs anymore.
New status variable binlog_disk_use provides the disk space currently used by the binary logs.
New options SQL_BEFORE_GTIDS and SQL_AFTER_GTIDS for START REPLICA UNTIL
The new options SQL_BEFORE_GTIDS and SQL_AFTER_GTIDS for START REPLICA UNTIL allow the user to control of whether the replica stops before or after a provided GTID state.
Its syntax is:
START SLAVE UNTIL (SQL_BEFORE_GTIDS|SQL_AFTER_GTIDS)="<gtid_list>"When providing SQL_BEFORE_GTIDS="<gtid_list>", for each domain specified in the gtid_list, the replica will execute transactions up to the GTID found, and immediately stop processing events in that domain without executing the transaction of the specified GTID. Once all domains have stopped, the replica will stop. Events originating from domains that are not specified in the list are not replicated.
START SLAVE UNTIL SQL_AFTER_GTIDS="<gtid_list>" is an alias to the default behavior of START SLAVE UNTIL master_gtid_pos="<gtid_list>", the known behavior before MariaDB Enterprise Server 11.4.
The replica will execute transactions originating from domain ids provided in the list, and will stop once all transactions provided in the UNTIL list have all been executed.
An index is now created on the GTIDs of the binary log, which allows a connecting replica to find the position it should start from without the need to scan the whole binary log.
The new system variable binlog_gtid_index (default ON) can be used to disable the creation of indexes.
The new system variable binlog_gtid_index_page_size (default 4096) defines the page size to use for the binary log GTID index.
The new system variable binlog_gtid_index_span_min (default 65536) controls the sparseness of the binary log GTID index.
The new status variables binlog_gtid_index_hit and binlog_gtid_index_miss can be used for monitoring purposes. A miss is an indication that the index file is missing.
GTID binlog events now include the thread ID (MENT-2180)
The thread ID and the corresponding statement can now be retrieved from binary logs
The output of mariadb-binlog also includes the thread ID
Binary log filter options binlog-do-db, binlog-ignore-db, and binlog-row-event-max-size are now visible as system variables. (MDEV-30188)
For example:
SHOW GLOBAL VARIABLES WHERE
Variable_name LIKE 'binlog_do_db' OR
Variable_name LIKE 'binlog_ignore_db' OR
Variable_name LIKE 'binlog_row_event_max_size';+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| binlog_do_db | |
| binlog_ignore_db | |
| binlog_row_event_max_size | 8192 |
+---------------------------+-------+For all storage engines, is divided into two phases to prevent long-running DDL statements from causing replication lag on replicas: (MDEV-11675)
Enabled by setting , which is not the default.
Two-phase ALTER TABLE is optimistic, so the operation begins on the replica server before it finishes on the primary server.
Two events are written to the binary log on the primary server: a START ALTER event when the operation starts, and either a COMMIT ALTER event or a ROLLBACK ALTER event when the operation finishes depending on whether it succeeds or fails.
By default, replication uses Global Transaction IDs (GTID), which makes replicas crash-safe. (MDEV-19801)
This change impacts backward compatibility.
In previous releases, when CHANGE MASTER TO was executed without explicitly specifying MASTER_USE_GTID, it would default to MASTER_USE_GTID=no.
Starting with this release, when is executed without explicitly specifying MASTER_USE_GTID, it defaults to MASTER_USE_GTID=slave_pos. With MASTER_USE_GTID=slave_pos, the replica server uses the as the GTID position.
This change can cause new behavior to occur when performing the following operations:
Setting up a new replica with without specifying MASTER_USE_GTID
Freshly starting a stopped replica with if the replica configuration does not explicitly have MASTER_USE_GTID set.
Resetting a replica with
When MASTER_LOG_FILE and MASTER_LOG_POS are explicitly set, MASTER_USE_GTID=no is implicitly set.
For mariadb-binlog, the start and stop positions can be specified as GTIDs: (MDEV-4989)
$ mariadb-binlog --start-position='0-1-1001,1-2-1000' \
--stop-position='0-1-2000,1-2-1050' \
mariadb-bin.000001The --start-position command-line option can set the starting GTID position as a comma-separated list of GTIDs. For each specified GTID domain, the GTID position is exclusive, so an event is only printed if its sequence number is greater than the sequence number specified for that domain.
The --stop-position command-line option can set the ending GTID position as a comma-separated list of GTIDs. For each specified GTID domain, the GTID position is inclusive, so an event is only printed if its sequence number is greater than or equal to the sequence number specified for that domain.
Both command-line options require each GTID in the comma-separated list to have a different domain ID.
For , events can be filtered based on the domain IDs and server IDs in the event's GTID: (MDEV-4989, MDEV-20119)
$ mariadb-binlog --do-domain-ids='0,1' \
--do-server-ids='1,2' \
mariadb-bin.000001The --do-domain-ids command-line option can set domain IDs that should be read as a comma-separated list of domain IDs. If an event's GTID does not have one of the specified domain IDs, the event is not printed.
The --ignore-domain-ids command-line option can set domain IDs that should be ignored as a comma-separated list of domain IDs. If an event's GTID has one of the specified domain IDs, the event is not printed.$ mariadb-binlog --start-position='0-1-1001,1-2-1000' \ --stop-position='0-1-2000,1-2-1050' mariadb-bin.000001
The --start-position command-line option can set the starting GTID position as a comma-separated list of GTIDs. For each specified GTID domain, the GTID position is exclusive, so an event is only printed if its sequence number is greater than the sequence number specified for that domain.
The --stop-position command-line option can set the ending GTID position as a comma-separated list of GTIDs. For each specified GTID domain, the GTID position is inclusive, so an event is only printed if its sequence number is greater than or equal to the sequence number specified for that domain.
Both command-line options require each GTID in the comma-separated list to have a different domain ID.
The following changes pertain to Galera Cluster with MariaDB Enterprise Server 11.4:
Automatic SST User Account Management with Galera (MENT-2144)
The State Snapshot Transfer (SST) method, needed to provide a full data copy to a new node, requires a dedicated account to access the remote server (donor) during the SST process.
MariaDB Enterprise Cluster (Galera) now creates the user internally for the time of an SST, which makes the need to have an account created manually obsolete. This removes the requirement to have a user and password provided via a configuration file. Having the user created by Galera also ensures that the needed privileges are set.
New connection states in and better reflect the state of the connection: (MDEV-26352)
waiting to execute in isolation
The connection is executing a DDL statement with , but the operation requires other concurrent operations to finish first, so the DDL statement can be executed in isolation.
waiting for TOI DDL
Another connection is executing a DDL statement with , so this connection must wait for the DDL statement to finish.
waiting for flow control
The connection is committing a transaction, but transactions are currently paused due to flow control, so the connection is waiting for the cluster to catch up and unpause transactions.
waiting for certification
The connection is committing a transaction, but it is waiting for the other cluster nodes to certify the transaction.
Node state changes can be saved to a machine-readable JSON file configured by the wsrep_status_file system variable: (MDEV-26971)
[mariadb]
wsrep_status_file=galera_status.jsonThe JSON file can be read by monitoring tools.
When wsrep_status_file is set to a path, the node state changes are written to the specified file.
When wsrep_status_file is set to none, this functionality is disabled.
Progress reporting for MariaDB Enterprise Backup-based SST by configuring the progress option in the [sst] option group: (MDEV-26971)
[mariadb]
wsrep_sst_method=mariadb-backup
wsrep_debug=1
[sst]
progress=1
rlimit=100mProgress reporting is only supported for MariaDB Enterprise Backup-based SST, so wsrep_sst_method=mariadb-backup must be set.
Progress reporting is only enabled when wsrep_debug=1 is set.
When progress=1 is set, progress reporting goes to standard error (stderr).
When progress is set to a path, progress reporting is written to the specified file.
When progress is set to none, progress reporting is disabled.
rlimit can be used to set a rate limit in bytes. The value can use a suffix to represent a unit: k for kilobytes, m for megabytes, g for gigabytes, and t for terabytes.
The pv utility must be installed for SST progress reporting.
When progress reporting is enabled, the following SST progress message is written to the MariaDB log during an SST:
When wsrep_status_file is set to none, this functionality is disabled.
Progress reporting for MariaDB Enterprise Backup-based SST by configuring the progress option in the [sst] option group: (MDEV-26971)
[mariadb]
wsrep_sst_method=mariadb-backup
wsrep_debug=1
[sst]
progress=1
rlimit=100mProgress reporting is only supported for MariaDB Enterprise Backup-based SST, so wsrep_sst_method=mariadb-backup must be set.
Progress reporting is only enabled when wsrep_debug=1 is set.
When progress=1 is set, progress reporting goes to standard error (stderr).
When progress is set to a path, progress reporting is written to the specified file.
When progress is set to none, progress reporting is disabled.
rlimit can be used to set a rate limit in bytes. The value can use a suffix to represent a unit: k for kilobytes, m for megabytes, g for gigabytes, and t for terabytes.
The pv utility must be installed for SST progress reporting.
When progress reporting is enabled, the following SST progress message is written to the MariaDB log during an SST:
In alignment with enterprise lifecycle, MariaDB Enterprise Server 11.4.4-2 is provided for:
Debian 11 (x86_64, ARM64)
Debian 12 (x86_64, ARM64)
Red Hat Enterprise Linux 8 (x86_64, ARM64)
Red Hat Enterprise Linux 9 (x86_64, ARM64, PPC64LE)
AlmaLinux 8 (x86_64, ARM64)
AlmaLinux 9 (x86_64, ARM64)
Rocky Linux 8 (x86_64, ARM64)
Rocky Linux 9 (x86_64, ARM64)
SUSE Linux Enterprise Server 15 (x86_64, ARM64)
Ubuntu 20.04 (x86_64, ARM64)
Ubuntu 22.04 (x86_64, ARM64)
Ubuntu 24.04 (x86_64, ARM64)
Microsoft Windows (x86_64) (Without MariaDB Enterprise Cluster (Galera) support)
Red Hat UBI 8 (x86_64, ARM64)
Red Hat UBI 8 is part of the Enterprise Server Docker Image. It does not support MariaDB Enterprise Cluster (Galera) or MariaDB ColumnStore.
Some components of MariaDB Enterprise Server might not support all platforms. For additional information, see MariaDB Corporation Engineering Policies".
An overview of changes, improvements, and what's new in MariaDB Enterprise Server 10.5
MariaDB Enterprise Server 10.5 introduces the new features listed below.
The ColumnStore storage engine is a columnar storage engine that provides distributed, columnar storage for scalable analytical processing and smart transactions.
MariaDB Enterprise Server 10.5 includes an enterprise version of the ColumnStore storage engine as a plugin:
It includes MariaDB Enterprise ColumnStore 5, which has many improvements.
The installation process has been massively simplified.
The multi-node implementation has been completely rebuilt to use a REST API for orchestration.
See What's New in MariaDB Enterprise ColumnStore 5? for more details.
MariaDB Enterprise Server 10.5 uses the "MariaDB" name in more places:
It uses MariaDB in many error messages that previously referred to MySQL.
It uses DBD::MariaDB for bundled Perl scripts that previously used DBD::mysql.
It uses new MariaDB-based names as the primary names for many executables. The old names are still supported for backward compatibility using symbolic links. The new MariaDB-based names were first introduced in MariaDB Enterprise Server 10.4. However, in that version, the old names were still the primary names for the executables, and the new names were supported using symbolic links. See below for the new MariaDB-based names:
mysql
mysqld
mariadb-backup
mysql_plugin
mysql_upgrade
mysql_waitpid
mysqladmin
mysqlbinlog
mysqlcheck
mysqldump
mysqlimport
mysqlshow
mysqlslap
mysql_client_test
mariadb-client-test
mysql_client_test_embedded
mariadb-client-test-embedded
mysql_config
mariadb-config
mysql_convert_table_format
mariadb-convert-table-format
mysql_embedded
mariadb-embedded
mysql_find_rows
mariadb-find-rows
mysql_fix_extensions
mariadb-fix-extensions
mysql_install_db
mariadb-install-db
mysql_ldb
mariadb-ldb.
mysql_secure_installation
mariadb-secure-installation
mysql_setpermission
mariadb-setpermission
mysql_tzinfo_to_sql
mariadb-tzinfo-to-sql
mysql_upgrade_service
mariadb-upgrade-service
mysql_upgrade_wizard
mariadb-upgrade-wizard
mysqld_multi
mariadbd-multi
mysqld_safe
mariadbd-safe
mysqld_safe_helper
mariadbd-safe-helper
mysqldumpslow
mariadb-dumpslow
mysqlhotcopy
mariadb-hotcopy
mysqltest
mariadb-test
mysqltest_embedded
mariadb-test-embedded
MariaDB Enterprise Server 10.5 includes some packaging improvements:
It includes a new mariadb-conv command-line tool to encode/decode MariaDB-encoded file system names.
Binary tarball packages have the following changes:
Embedded server (libmysqld) has been removed.
Debug symbols have been stripped from non-server binaries.
The server binary () retains its debug symbols, so that stack traces contain readable function names.
Binary tarball size has been reduced from over 1 GB to around 300 MB.
It removes the TokuDB storage engine from packages.
It removes the Cassandra storage engine from packages.
It removes support for RHEL6 and CentOS 6.
The is an ACID-compliant storage engine that is very performant and reliable for general purpose transactional workloads.
MariaDB Enterprise Server 10.5 includes many significant improvements to the :
It implements a new thread pool for InnoDB background tasks, which allows for InnoDB to use system resources more efficiently.
It reduces semaphore contention in several areas to help the system perform better under high concurrency:
It reduces semaphore contention when accessing the buffer pool.
It removes the ability to configure multiple buffer pool instances, since it does not reduce contention.
It reduces semaphore contention when executing statements.
It uses table metadata locks instead of internal InnoDB semaphores for certain background operations.
It adds instrumentation that informs the server's thread pool about semaphore waits, so that the thread pool can let other client connections perform work while a client connection is waiting on a semaphore.
It improves performance in several areas:
It uses a new InnoDB redo log format that is more efficient.
It removes the ability to configure multiple InnoDB redo log files, since it does not help performance.
It optimizes access to certain InnoDB page header fields.
It optimizes how the change buffer is merged.
It optimizes how InnoDB scrubs deleted data.
It improves stability in several areas:
It improves how InnoDB scrubs deleted data by ensuring that scrubbing operations are properly written to the InnoDB redo log.
It receives foreign key metadata from the server, rather than relying on an internal SQL parser.
It allows prepared XA transactions to be properly recovered after a client disconnects.
It allows the without a server restart. As a consequence, the innodb_purge_threads system variable can be changed dynamically with the SET GLOBAL statement.
It allows the without a server restart. As a consequence, the innodb_log_file_size system variable can be changed dynamically with the SET GLOBAL statement.
It allows the without a server restart. As a consequence, the and system variables can be changed dynamically with the SET GLOBAL statement.
The allows you to build complex and powerful distributed databases using federated and sharded tables.
MariaDB Enterprise Server 10.5 contains several enhancements for the storage engine:
It adds support for an ODBC foreign data wrapper. This feature has beta maturity.
It adds the table.
The is a crash-safe storage engine that is incredibly fast for read-only workloads.
MariaDB Enterprise Server 10.5 contains several enhancements for the :
It handles the statement by blocking commits to Aria tables, which allows for safer backups with MariaDB Backup.
It increases the index length limit for Aria tables from 1000 bytes to 2000 bytes.
MariaDB Enterprise Server 10.5 contains several enhancements to the :
The S3 storage engine allows tables to be archived in S3-compatible storage.
Tables can be archived in S3 by executing .
After the table has been archived, it becomes read-only.
The S3 storage engine supports partitioning.
The S3 storage engine supports replication.
MariaDB Enterprise Server 10.5 adds privileges that allow operations that previously required the . The following table is a summary of the changes between MariaDB Enterprise Server 10.4 and MariaDB Enterprise Server 10.5.8-5. More specific detail is found in , and in MariaDB Reference.
no
yes
Notes:
Allows the user to execute statements
Allows the user to the following system variables:
no
yes
Notes:
privilege is an alias for this new privilege, but the capabilities have changed
Unlike legacy REPLICATION CLIENT privilege, can no longer execute SHOW SLAVE STATUS, SHOW REPLICA STATUS in ES10.5
BINLOG MONITOR allows the user to execute statements
BINLOG MONITOR allows the user to execute statements
BINLOG MONITOR allows the user to execute statements
BINLOG MONITOR allows the user to execute statements
If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required
The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later
no
yes
Notes:
Allows the user to execute statements, which are output by
Allows the user to execute statements when is set to replication
Allows the user to set the session values of several system variables that are usually included in statements:
no
yes
Notes:
Skips the execution of when the user connects
Ignores when the user connects
Ignores when the user connects
Ignores when the user connects
Allows the user to kill connections owned by other users with the statement
Allows the user to set system variables:
no
yes
Notes:
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
no
yes
Notes:
Allows the user to write data even if the system variable is enabled
Allows the user to execute statements even if the system variable is enabled
Allows the user to execute statements even if the system variable is enabled
Allows the user to set system variables:
no
yes
Notes:
REPLICA MONITOR is a new privilege in ES10.5.8-5 and was not present in earlier releases
REPLICA MONITOR can execute:
If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required
The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later
REPLICA MONITOR is an alias for SLAVE MONITOR which is also new in ES10.5.8-5
yes
no
Notes:
Replaced by in 10.5
REPLICATION CLIENT can be used as an alias for BINLOG MONITOR but the capabilities for BINLOG MONITOR are different than those of legacy REPLICATION CLIENT
Unlike legacy REPLICATION CLIENT privilege, can no longer execute SHOW SLAVE STATUS, SHOW REPLICA STATUS in ES10.5
REPLICATION CLIENT as an alias for BINLOG MONITOR:
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required
The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later
no
yes
Notes:
Allows the user to execute statements
Allows the user to execute statements
Allows the user to set system variables:
no
yes
Notes:
Added in ES10.5 as an alias for
yes
yes
Notes:
Can be used as an alias for
In ES10.5 REPLICATION SLAVE can no longer execute SHOW RELAYLOG EVENTS. In ES10.5 versions earlier than ES10.5.8-5, SHOW RELAYLOG EVENTS requires . In ES10.5.8-5, SHOW RELAYLOG EVENTS requires
In ES10.5 REPLICATION SLAVE can no longer execute . SHOW BINLOG EVENTS requires
If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required
The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later
no
yes
Notes:
Alias for
Capabilities changed in ES10.5.8-5 with the following abilities removed from REPLICATION SLAVE ADMIN and now granted with :
Allows the user to execute statements, which are output by mariadb-binlog
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
Allows the user to set system variables:
no
yes
Notes:
Alias for see for details
no
yes
Notes:
Allows the user to set the definer of views, triggers, stored procedures, stored functions, and events
Allows the user to view the definer of an object, even if the user account no longer exists. |
no
yes
Notes:
SLAVE MONITOR is a new privilege in ES10.5.8-5 and was not present in earlier releases
SLAVE MONITOR can execute:
If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the SLAVE MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required.
The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later
SLAVE MONITOR is an alias for REPLICA MONITOR which is also new in ES10.5.8-5
yes
yes
Notes:
The SUPER privilege is present in ES10.4 and ES10.5 but the capabilities have changed. New privileges have been added in ES10.5 to provide finer grained control and reduce the need to grant SUPER privileges
With the addition of the new privileges in ES10.5, SUPER:
no longer executes SHOW MASTER STATUS, SHOW BINLOG STATUS, and SHOW BINARY LOGS. Those require BINLOG MONITOR in ES10.5
no longer sets the definer for views, triggers, functions, procedures, and events in ES10.5. Those capabilities require SET USER in ES10.5
no longer ignores the read_only system variable in ES10.5. That capability requires READ ONLY ADMIN in ES10.5
no longer kills threads owned by other users and bypass limits on connection and authentication failures. Those capabilities require CONNECTION ADMIN in ES10.5
no longer executes CREATE SERVER, ALTER SERVER, DROP SERVER in ES10.5. Those capabilities require FEDERATED ADMIN in ES10.5
no longer executes PURGE BINARY LOGS in ES10.5. PURGE BINARY LOGS requires BINLOG ADMIN in ES10.5.
MariaDB Enterprise Server 10.5 adds privileges that allow operations that previously required the . The following table is a summary of the changes between MariaDB Enterprise Server 10.4 and MariaDB Enterprise Server 10.5 before MariaDB Enterprise Server 10.5.8-5. More specific detail is found in , and in .
no
yes
Notes:
Allows the user to execute statements
Allows the user to the following system variables:
no
yes
Notes:
Legacy privilege is an alias for this new privilege, but the capabilities have changed
Unlike legacy REPLICATION CLIENT privilege, can no longer execute SHOW SLAVE STATUS, SHOW REPLICA STATUS in ES10.5
BINLOG MONITOR allows the user to execute statements
BINLOG MONITOR allows the user to execute statements
BINLOG MONITOR allows the user to execute statements
BINLOG MONITOR allows the user to execute statements
If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required
The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later
no
yes
Notes:
Allows the user to execute statements, which are output by
Allows the user to execute SET TIMESTAMP statements when is set to replication
Allows the user to set the session values of several system variables that are usually included in statements:
no
yes
Notes:
Skips the execution of init_connect when the user connects
Ignores max_connections when the user connects
Ignores max_user_connections when the user connects
Ignores max_password_errors when the user connects
Allows the user to kill connections owned by other users with the KILL statement
Allows the user to set system variables:
no
yes
Notes:
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
no
yes
Notes:
Allows the user to write data even if the system variable is enabled
Allows the user to execute statements even if the system variable is enabled
Allows the user to execute statements even if the system variable is enabled
Allows the user to set system variables:
yes
no
Notes:
Replaced by in 10.5
REPLICATION CLIENT can be used as an alias for BINLOG MONITOR but the capabilities for BINLOG MONITOR are different than those of legacy REPLICATION CLIENT
Unlike legacy REPLICATION CLIENT privilege, can no longer execute SHOW SLAVE STATUS, SHOW REPLICA STATUS in ES10.5
REPLICATION CLIENT as an alias for BINLOG MONITOR:
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required
The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later
no
yes
Notes:
Allows the user to execute statements
Allows the user to execute statements
Allows the user to set system variables:
no
yes
Notes:
Added in ES10.5 as an alias for
yes
yes
Notes:
Can be used as an alias for
In ES10.5 REPLICATION SLAVE can no longer execute SHOW RELAYLOG EVENTS. In ES10.5 versions earlier than ES10.5.8-5, SHOW RELAYLOG EVENTS requires . In ES10.5.8-5, SHOW RELAYLOG EVENTS requires
In ES10.5 REPLICATION SLAVE can no longer execute . SHOW BINLOG EVENTS requires
If a user upgrades from ES10.4 or earlier to ES10.5.8-5 or later, any users with REPLICATION CLIENT or REPLICATION SLAVE privileges will automatically be granted the REPLICA MONITOR privilege. This privilege upgrade happens upon server startup, so mysql_upgrade is not required
The upgrade behavior does not apply to minor release upgrades that upgrade from ES10.5.6-4 or earlier ES10.5.x to ES10.5.8-5 or later
no
yes
Notes:
Alias for REPLICATION SLAVE ADMIN
Capabilities changed in ES10.5.8-5 with the following abilities removed from REPLICATION SLAVE ADMIN and now granted with :
Allows the user to execute statements, which are output by
Allows the user to execute CHANGE MASTER TO statements
Allows the user to execute START ALL REPLICAS statements
Allows the user to execute START ALL SLAVES statements
Allows the user to execute START REPLICA statements
Allows the user to execute START SLAVE statements
Allows the user to execute STOP ALL REPLICAS statements
Allows the user to execute STOP ALL SLAVES statements
Allows the user to execute STOP REPLICA statements
Allows the user to execute STOP SLAVE statements
Allows the user to set system variables:
no
yes
Notes:
Alias for see for details
no
yes
Notes:
Allows the user to set the definer of views, triggers, stored procedures, stored functions, and events
Allows the user to view the definer of an object, even if the user account no longer exists.
yes
yes
Notes:
The SUPER privilege is present in ES10.4 and ES10.5 but the capabilities have changed. New privileges have been added in ES10.5 to provide finer grained control and reduce the need to grant SUPER privileges
With the addition of the new privileges in ES10.5, SUPER:
no longer executes SHOW MASTER STATUS, SHOW BINLOG STATUS, and SHOW BINARY LOGS. Those require BINLOG MONITOR in ES10.5
no longer sets the definer for views, triggers, functions, procedures, and events in ES10.5. Those capabilities require SET USER in ES10.5
no longer ignores the read_only system variable in ES10.5. That capability requires READ ONLY ADMIN in ES10.5
no longer kills threads owned by other users and bypass limits on connection and authentication failures. Those capabilities require CONNECTION ADMIN in ES10.5
no longer executes CREATE SERVER, ALTER SERVER, DROP SERVER in ES10.5. Those capabilities require FEDERATED ADMIN in ES10.5
no longer executes PURGE BINARY LOGS in ES10.5. PURGE BINARY LOGS requires BINLOG ADMIN in ES10.5
MariaDB Enterprise Server 10.5 improves :
It allows extended table metadata to be written to the binary log by configuring the system variable.
It changes the default parallel replication mode from conservative to optimistic.
It renames the REPLICATION CLIENT privilege to BINLOG MONITOR, but it still supports the old name.
It allows replication-related operations that previously required the SUPER privilege to the BINLOG MONITOR (formerly REPLICATION CLIENT):
Newly Granted Operations:
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
It adds new replication-related privileges to allow operations that previously required the SUPER privilege:
** Granted Operations:**
Allows the user to execute PURGE BINARY LOGS statements
Allows the user to set system variables:
Granted Operations:
Allows the user to execute statements, which are output by
Allows the user to execute SET TIMESTAMP statements when is set to replication
Allows the user to set the session values of several system variables that are usually included in statements:
Granted Operations:
Allows the user to execute SHOW REPLICA HOSTS statements
Allows the user to execute SHOW SLAVE HOSTS statements
Allows the user to set system variables:
Granted Operations:
Allows the user to execute statements, which are output by
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute SHOW ALL SLAVES STATUS statements
Allows the user to execute SHOW RELAYLOG EVENTS statements
Allows the user to execute SHOW REPLICA STATUS statements
Allows the user to execute SHOW SLAVE STATUS statements
Allows the user to execute START ALL REPLICAS statements
Allows the user to execute START ALL SLAVES statements
Allows the user to execute START REPLICA statements
Allows the user to execute START SLAVE statements
Allows the user to execute STOP ALL REPLICAS statements
Allows the user to execute STOP ALL SLAVES statements
Allows the user to execute STOP REPLICA statements
Allows the user to execute STOP SLAVE statements
Allows the user to set system variables:
It adds aliases for statements that contain the word SLAVE that also allow the word REPLICA:
It adds the shutdown_wait_for_slaves system variable to control whether a replication-aware shutdown is the default shutdown behavior.
MariaDB Enterprise Server 10.5 improves support for Galera Cluster:
It allows Galera Cluster to be configured to prohibit DDL replication to only the storage engines that support Galera Cluster by configuring the wsrep_strict_ddl system variable.
It adds full GTID support to Galera Cluster.
It adds an inconsistency voting protocol to mitigate the harm of inconsistencies by choosing very carefully which inconsistent nodes need to abort.
It adds support for non-blocking operations when wsrep_OSU_method is set to NBO, including:
operations executed in SHARED or EXCLUSIVE locking mode.
operations executed in SHARED or EXCLUSIVE locking mode.
operations.
operations.
It adds a "black box" for Galera troubleshooting. The black box holds debug log messages in memory, which can be analyzed in case of a crash.
The default value for gcache.size in wsrep_provider_options has been changed to 1 GB.
MariaDB Enterprise Server 10.5 improves support for :
It allows that are partitioned on an interval of SYSTEM_TIME to be configured with a specific start date and time, which can make partition management more user-friendly.
It allows to be configured to prohibit overlapping time periods.
MariaDB Enterprise Server 10.5 improves SQL functionality in several areas:
It changes the behavior of the statement to forcefully drop the table, even if the storage engine can't find the table.
It changes the behavior of the statement, so that it no longer flushes the table definition cache, so that it performs better under concurrency.
It changes the behavior of the ANALYZE statement to SHOW the time spent checking the WHERE clause.
It adds support for statements.
It adds support for statements.
It adds support for the EXCEPT ALL clause in statements.
It adds support for the INTERSECT ALL clause in statements.
It adds support for the CYCLE clause in common table expressions (CTEs).
It adds support for COMMENT option for and statements.
It adds support for
It adds support for .
It adds support for .
It adds support for defining foreign keys using REFERENCE clauses in column definitions.
It adds support for the VISIBLE option in index definitions, which can be needed to import dumps from MySQL.
It adds support for the WITHOUT OVERLAP option in index definitions that are defined for .
It adds support for the STARTS option for system-versioned tables that are partitioned on an interval of SYSTEM_TIME.
It adds support for the function.
It adds support for the function.
It adds support for the RELEASE_ALL_LOCKS() function.
It adds support for the function.
It adds support for a new Data Type API, so that plugins can define custom data types.
It adds support for the data type, which can be used to represent IPv4 and IPv6 addresses.
It changes the way that , , and columns that use the pre-MariaDB 10.0 format are displayed in the output of and and in the value of the column. Columns using the older format will have a comment that says /* mariadb-5.3 */.
MariaDB Enterprise Server 10.5 includes several improvements:
It allows a server to be configured to by configuring the system variable.
If this mode is enabled, then all TCP connections must use TLS.
Local connections that connect using a Unix socket or a named pipe are also allowed.
It adds the CONNECTION_TYPE column to the , which can be used to determine which connections are using TLS.
It renames the REPLICATION CLIENT privilege to BINLOG MONITOR, but it still supports the old name.
It allows replication-related operations that previously required the SUPER privilege to the BINLOG MONITOR (formerly REPLICATION CLIENT):
Newly Granted Operations:
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
It adds new privileges to allow operations that previously required the SUPER privilege.
Granted Operations:
Allows the user to execute PURGE BINARY LOGS statements
Allows the user to set system variables:
Granted Operations:
Allows the user to execute BINLOG statements, which are output by mariadb-binlog
Allows the user to execute SET TIMESTAMP statements when secure_timestamp is set to replication
Allows the user to set the session values of several system variables that are usually included in BINLOG statements:
Granted Operations:
Skips the execution of init_connect when the user connects
Ignores max_connections when the user connects
Ignores max_user_connections when the user connects
Ignores max_password_errors when the user connects
Allows the user to kill connections owned by other users with the KILL statement
Allows the user to set system variables:
|
Granted Operations:
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
Granted Operations:
Allows the user to write data even if the system variable is enabled
Allows the user to execute DROP TRIGGER statements even if the system variable is enabled
Allows the user to execute START TRANSACTION READ WRITE statements even if the system variable is enabled
Allows the user to set system variables:
Granted Operations:
Allows the user to execute statements
Allows the user to execute statements
Allows the user to set system variables:
Granted Operations:
Allows the user to execute statements, which are output by
Allows the user to execute statements
Allows the user to execute STATUS statements
Allows the user to execute SHOW ALL SLAVES STATUS statements
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute statements
Allows the user to execute START ALL REPLICAS statements
Allows the user to execute START ALL SLAVES statements
Allows the user to execute statements
Allows the user to execute START SLAVE statements
Allows the user to execute STOP ALL REPLICAS statements
Allows the user to execute STOP ALL SLAVES statements
Alows the user to execute statements
Allows the user to execute statements
Allows the user to set system variables:
Granted Operations:
Allows the user to set the definer of views, triggers, stored procedures, stored functions, and events.○ Allows the user to view the definer of an object, even if the user account no longer exists
MariaDB Enterprise Server 10.5 introduces an encryption plugin to support for :
It allows HashiCorp Vault to manage encryption keys for .
It communicates with the remote KMS using TLS.
It supports key rotation.
MariaDB Enterprise Server 10.5 includes several improvements:
It adds support for some of the instrumentation and tables included in MySQL 5.7.
It adds the CONNECTION_TYPE column to the threads table, which can be used to determine which connections are using TLS.
It adds new instrumentation for the following:
Memory
Metadata locks
Prepared statements
Stored procedures
Transactions
SX-Locks
Status variables
User variables
It adds the following new tables:
[session_variables](https://app.gitbook.com/o/diTpXxF5WsbHqTReoBsS/s/SsmexDFPv2xG2OTyO5yV/reference/sql-statements/administrative-sql-statements/system-tables/performance-schema/performance-schema-tables/performance-schema-session_status-table
MariaDB Enterprise Server 10.5 includes several improvements:
It adds the GLOBAL_VALUE_PATH column to the table, which can be used to determine which configuration file a variable's global value was read from.
It adds new tables to monitor the internals of the thread pool on Linux:
It removes the table.
It changes some other InnoDB-related tables in minor ways.
MariaDB Enterprise Server 10.5 includes several thread pool improvements:
It improves how it calculates the number of currently active threads, which can help prevent deadlocks.
It improves performance under very bursty workloads by basing the thread creation rate and the throttling interval on the values of the and system variables.
It adds new tables to monitor the internals of the thread pool on Linux:
MariaDB Enterprise Server 10.5 includes several protocol improvements:
It adds protocol support for the new Data Type API.
It adds protocol support for the data type.
It adds protocol support for the data type.
MariaDB Enterprise Server 10.5 includes some XA transaction improvements:
It allows prepared XA transactions to be properly recovered after a client disconnects.
MariaDB Enterprise Server 10.5 includes some internal improvements:
Its internal regular expression library has been upgraded from PCRE to PCRE2.
It adds support for a new Data Type API, so that plugins can define custom data types.
For a complete list of changes, see MariaDB Enterprise Server 10.5.4-2 release notes.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is: Copyright © 2025 MariaDB. All rights reserved.
This page is licensed: CC BY-SA / Gnu FDL
This page is licensed: CC BY-SA / Gnu FDL