MariaDB 10.4 is a previous major stable version. The first stable release of 10.4 was in June 2019, and it was maintained until June 2024.
Implemented Features
See the page for items that are different between MariaDB Community Server 10.4 and MariaDB Enterprise Server 10.4.
Authentication
See for an overview of the changes.
The is now default on Unix-like systems, which is a major change to authentication in MariaDB ()
()
InnoDB
Added instant and changing of the order of columns ()
More Instant VARCHAR extension or ROW_FORMAT=DYNAMIC and ROW_FORMAT=COMPACT ()
change CHAR(0) to any VARCHAR
Optimizer
Implementation of the , one can enable the optimizer trace by enabling the system variable ()
is now enabled by default; new default values are and ()
Two new values for the variable : COMPLEMENTARY_FOR_QUERIES
Syntax
extended with support for (, , , )
Support of brackets (parentheses) for specifying precedence in // operations ()
New command to reload SSL certificates without server restart ()
Variables
For a list of all new variables, see and .
Added to the system variable ()
Removed the status variable ().
New setting, TIME_ROUND_FRACTIONAL ()
Replication
Speed up rotation of binary logs, SHOW BINARY LOGS etc with optimizing binary log index file locking (, ).
A new server command, , and a new option, are added to instruct the server to wait for the last binlog event to be sent to all connected slaves before shutting down. ().
Backup
allows one to implement very efficient backups with minimal locking. .
Galera 4
In and later, has been upgraded from Galera 3 to Galera 4.
Galera 4 Versions
The following table lists each version of the 4 wsrep provider, and it lists which version of MariaDB each one was first released in. If you would like to install 4 using , , or , then the package is called galera-4.
Galera Version
Released in MariaDB Version
New Features in Galera 4
The database contains new tables related to Galera replication:
wsrep_cluster
wsrep_cluster_members
wsrep_streaming_log
End users may read but not modify these tables.
The new streaming replication feature allows replicating transactions of
unlimited size. With streaming replication, a cluster is replicating a
transaction in small fragments during transaction execution. This transaction
fragmenting is controlled by two new configuration variables:
(bytes, rows, statements) defines the metrics for
how to measure transaction size limit for fragmenting. Possible values are:
bytes: transaction’s binlog events buffer size in bytes
rows: number of rows affected by the transaction
Transactions replicated through galera replication will now process the commit
phase using MariaDB's group commit logic. This will affect transaction
throughput, especially when binary logging is enabled in the cluster.
Limitations in Galera 4
Rolling Upgrades from Galera 3 to Galera 4
Rolling upgrades from (or earlier) to also require an upgrade from 3 to 4. Galera 4 has a lot of changes and improvements that were not present in Galera 3.
Prior to the General Availability (GA) releases of and Galera 4, earlier versions of and Galera 4 had bugs that could lead to problems if Galera 4 nodes were in a cluster with Galera 3 nodes during a rolling upgrade. In these versions, rolling upgrades were not supported. This meant that, in order to upgrade a cluster, the cluster had to be completely stopped, and the nodes could only be restarted after the entire cluster had been upgraded to and Galera 4.
These bugs have been fixed in more recent versions, and rolling upgrades from Galera 3 to Galera 4 are supported. In order to perform a rolling upgrade, it is recommended to upgrade to or later and Galera 26.4.2 or later. However, as a general rule, users should try to ensure that they are upgrading to the latest versions of and Galera 4.
For more detailed information on how to upgrade, see .
General
Crash safe -based ()
Added Linux abstract socket support ()
Enabled C++11 ()
Support for window via the new method ()
Json service for plugins ()
Change in behavior for ().
Security Vulnerabilities Fixed in
For a complete list of security vulnerabilities (CVEs) fixed across all
versions of MariaDB, see the
page.
:
:
:
List of All Releases
Date
Release
Status
Release Notes
Changelog
Be notified of new MariaDB Server releases automatically by to the MariaDB Foundation community announce 'at' lists.mariadb.org announcement list (this is a low traffic, announce-only list). MariaDB plc customers will be notified for all new releases, security issues and critical bug fixes for all MariaDB plc products thanks to the Notification Services.
MariaDB may already be included in your favorite OS distribution. More information can be found on the page.
are now used (but not collected) by default (MDEV-18608).
variable added. The default value is 100 (ANALYZE will use the whole table), but one can also set analyze to only use a sample of table data to collect the statistics.
Condition pushdown optimization now has bigger scope:
statements: number of SQL statements executed in the multi-statement
transaction
defines the limit for fragmenting. When a
transaction’s size, in terms of the configured fragment unit, has grown over
this limit, a new fragment will be replicated.
Improvements with SQL standard INTERVAL support to help functions
and return more predictable results.
Historically, MariaDB uses the TIME data type for both "time of the day"
values and "duration" values. In the first meaning the natural value range
is from '00:00:00' to '23:59:59.999999', in the second meaning the range is
from '-838:59:59.999999' to '+838:59:59.999999'.
To remove this ambiguity and for the SQL standard conformance we plan to
introduce a dedicated data type INTERVAL that will be able to store values
in the range at least from '-87649415:59:59.999999' to
'+87649415:59:59.999999', which will be enough to represent the time
difference between TIMESTAMP'0001-01-01 00:00:00' and TIMESTAMP'9999-12-31
23:59:59.999999'.
As a first step we support this range of values for intermediate
calculations when TIME-alike string and numeric values are used in INTERVAL
(i.e. duration) context, e.g. as the second argument of SQL functions
TIMESTAMP(ts,interval) and ADDTIME(ts,interval), so the following can now be
calculated:
The function is automatically used as a for the in order to ensure that a valid json document is inserted (MDEV-13916)