This is a read-only copy of the MariaDB Knowledgebase generated on 2024-12-18. For the latest, interactive version please visit https://mariadb.com/kb/.

Changes and Improvements in MariaDB 10.4

MariaDB 10.4 is no longer maintained. Please use a more recent release.

The most recent release of MariaDB 10.4 is:
MariaDB 10.4.34 Stable (GA) Download Now

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 Differences in MariaDB Enterprise Server 10.4 page for items that are different between MariaDB Community Server 10.4 and MariaDB Enterprise Server 10.4.

Authentication

InnoDB

Optimizer

Syntax

Variables

For a list of all new variables, see System Variables Added in MariaDB 10.4 and Status Variables Added in MariaDB 10.4.

Replication

Backup

Galera 4

In MariaDB 10.4.2 and later, Galera has been upgraded from Galera 3 to Galera 4.

Galera 4 Versions

The following table lists each version of the Galera 4 wsrep provider, and it lists which version of MariaDB each one was first released in. If you would like to install Galera 4 using yum, apt, or zypper, then the package is called galera-4.

New Features in Galera 4

The mysql 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:

  • wsrep_trx_fragment_unit (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
    • statements: number of SQL statements executed in the multi-statement transaction
  • wsrep_trx_fragment_size 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.

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 MariaDB 10.3 (or earlier) to MariaDB 10.4 also require an upgrade from Galera 3 to Galera 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 MariaDB 10.4 and Galera 4, earlier versions of MariaDB 10.4 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 MariaDB 10.4 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 MariaDB 10.4.6 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 MariaDB 10.4 and Galera 4.

For more detailed information on how to upgrade, see Upgrading from MariaDB 10.3 to MariaDB 10.4 with Galera Cluster.

General

  • Crash safe Aria-based system tables (MDEV-16421)
  • Added Linux abstract socket support (MDEV-15655)
  • Enabled C++11 (MDEV-16410)
  • Performance improvements in Unicode collations (MDEV-17534, MDEV-17511, MDEV-17502, MDEV-17474)
  • User data type plugins (MDEV-4912, in progress)
  • Improvements with SQL standard INTERVAL support to help functions TIMESTAMP() and ADDTIME() 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:
SELECT ADDTIME(TIMESTAMP'0001-01-01 00:00:00', '87649415:59:59.999999');
-> '9999-12-31 23:59:59.999999'  

SELECT TIMESTAMP(DATE'0001-01-01', '87649415:59:59.999999')
-> '9999-12-31 23:59:59.999999'  

SELECT ADDTIME(TIME'-838:59:59.999999', '1677:59:59.999998');
-> '838:59:59.999999'  

Security Vulnerabilities Fixed in MariaDB 10.4

For a complete list of security vulnerabilities (CVEs) fixed across all versions of MariaDB, see the Security Vulnerabilities Fixed in MariaDB page.

List of All MariaDB 10.4 Releases

DateReleaseStatusRelease NotesChangelog
16 May 2024MariaDB 10.4.34Stable (GA)Release NotesChangelog
7 Feb 2024MariaDB 10.4.33Stable (GA)Release NotesChangelog
13 Nov 2023MariaDB 10.4.32Stable (GA)Release NotesChangelog
14 Aug 2023MariaDB 10.4.31Stable (GA)Release NotesChangelog
7 Jun 2023MariaDB 10.4.30Stable (GA)Release NotesChangelog
10 May 2023MariaDB 10.4.29Stable (GA)Release NotesChangelog
6 Feb 2023MariaDB 10.4.28Stable (GA)Release NotesChangelog
7 Nov 2022MariaDB 10.4.27Stable (GA)Release NotesChangelog
15 Aug 2022MariaDB 10.4.26Stable (GA)Release NotesChangelog
20 May 2022MariaDB 10.4.25Stable (GA)Release NotesChangelog
12 Feb 2022MariaDB 10.4.24Stable (GA)Release NotesChangelog
9 Feb 2022MariaDB 10.4.23Stable (GA)Release NotesChangelog
8 Nov 2021MariaDB 10.4.22Stable (GA)Release NotesChangelog
6 Aug 2021MariaDB 10.4.21Stable (GA)Release NotesChangelog
23 Jun 2021MariaDB 10.4.20Stable (GA)Release NotesChangelog
7 May 2021MariaDB 10.4.19Stable (GA)Release NotesChangelog
22 Feb 2021MariaDB 10.4.18Stable (GA)Release NotesChangelog
11 Nov 2020MariaDB 10.4.17Stable (GA)Release NotesChangelog
3 Nov 2020MariaDB 10.4.16Stable (GA)Release NotesChangelog
7 Oct 2020MariaDB 10.4.15Stable (GA)Release NotesChangelog
10 Aug 2020MariaDB 10.4.14Stable (GA)Release NotesChangelog
12 May 2020MariaDB 10.4.13Stable (GA)Release NotesChangelog
28 Jan 2020MariaDB 10.4.12Stable (GA)Release NotesChangelog
11 Dec 2019MariaDB 10.4.11Stable (GA)Release NotesChangelog
8 Nov 2019MariaDB 10.4.10Stable (GA)Release NotesChangelog
5 Nov 2019MariaDB 10.4.9Stable (GA)Release NotesChangelog
11 Sep 2019MariaDB 10.4.8Stable (GA)Release NotesChangelog
31 Jul 2019MariaDB 10.4.7Stable (GA)Release NotesChangelog
18 Jun 2019MariaDB 10.4.6Stable (GA)Release NotesChangelog
21 May 2019MariaDB 10.4.5RCRelease NotesChangelog
7 Apr 2019MariaDB 10.4.4RCRelease NotesChangelog
25 Feb 2019MariaDB 10.4.3RCRelease NotesChangelog
29 Jan 2019MariaDB 10.4.2BetaRelease NotesChangelog
20 Dec 2018MariaDB 10.4.1BetaRelease NotesChangelog
9 Nov 2018MariaDB 10.4.0AlphaRelease NotesChangelog
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.