All pages
Powered by GitBook
1 of 1

Loading...

MariaDB 10.4 Changes & Improvements

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

  • 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

    • change a CHAR that is longer than 255 bytes to VARCHAR or wider CHAR

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 and PREFERABLY_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 ()

  • New variable

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 ()

  • Performance improvements in collations (, , , )

  • Support for window via the new method ()

  • Json service for plugins ()

  • Change in behavior for ().

  • The function is automatically used as a for the in order to ensure that a valid json document is inserted (

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

The obsolete is no longer created (MDEV-15851)

  • Much faster privilege checks for MariaDB setups with many user accounts or many database grants (MDEV-15649)

  • table is retired. User accounts and global privileges are now stored in the table (MDEV-17658)

  • support for and other (MDEV-12321)

  • change a VARCHAR that is shorter than 128 bytes into any longer VARCHAR

  • Instant collation or charset changes for non-indexed columns (MDEV-15564)

  • Reduced redo log volume for undo tablespace initialization (MDEV-17138)

  • Removed crash-upgrade support for pre-10.2.19 TRUNCATE TABLE (MDEV-13564)

  • Added key rotation for (MDEV-12041)

  • Implement (MDEV-12026)

  • 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:

    • (MDEV-12387)

    • Conditions in HAVING clause can be pushed to WHERE. This behavior is controlled through flag condition_pushdown_from_having.

  • The flag optimize_join_buffer_size now defaults to on (MDEV-17903)

  • added (MDEV-16188). It is controlled through flag rowid_filter .

  • New CAST target — CAST(x AS INTERVAL DAY_SECOND(N)) (MDEV-17776)
  • IF NOT EXISTS clause added to and IF EXISTS clause added to and (MDEV-16294)

  • Unique indexes can be created on or fields (MDEV-371)

  • for determining how many old rows must accumulate in the
    table before a background job will be run to delete them.
  • The default for is now 200 (previously 0) (MDEV-18551)

  • on Windows now defaults to ON (MDEV-18439)

  • 26.4.13

    , , , , , ,

    26.4.12

    , , , , , ,

    26.4.11

    , , , ,

    26.4.9

    , ,

    26.4.8

    , ,

    26.4.7

    ,

    26.4.6

    ,

    26.4.5

    ,

    26.4.4

    ,

    26.4.3

    ,

    26.4.2

    26.4.1

    26.4.0

    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.

  • User data type plugins (MDEV-4912, in progress)

  • 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:

  • )
  • MariaDB Named Commands (MDEV-17591)

  • MariaDB systemd multi-instance service have changed. See for details.

  • CVE-2022-32091: MariaDB 10.4.26

  • CVE-2022-32089: MariaDB 10.4.26

  • CVE-2022-32088: MariaDB 10.4.25

  • CVE-2022-32087: MariaDB 10.4.25

  • CVE-2022-32086: MariaDB 10.4.25

  • CVE-2022-32085: MariaDB 10.4.25

  • CVE-2022-32084: MariaDB 10.4.26

  • CVE-2022-32083: MariaDB 10.4.25

  • CVE-2022-32081: MariaDB 10.4.26

  • CVE-2022-31624: MariaDB 10.4.22

  • CVE-2022-27458: MariaDB 10.4.25

  • CVE-2022-27457: MariaDB 10.4.25

  • CVE-2022-27456: MariaDB 10.4.25

  • CVE-2022-27455: MariaDB 10.4.25

  • CVE-2022-27452: MariaDB 10.4.25

  • CVE-2022-27451: MariaDB 10.4.25

  • CVE-2022-27449: MariaDB 10.4.25

  • CVE-2022-27448: MariaDB 10.4.25

  • CVE-2022-27447: MariaDB 10.4.25

  • CVE-2022-27446: MariaDB 10.4.25

  • CVE-2022-27445: MariaDB 10.4.25

  • CVE-2022-27444: MariaDB 10.4.25

  • CVE-2022-27387: MariaDB 10.4.25

  • CVE-2022-27386: MariaDB 10.4.25

  • CVE-2022-27385: MariaDB 10.4.22

  • CVE-2022-27384: MariaDB 10.4.25

  • CVE-2022-27383: MariaDB 10.4.25

  • CVE-2022-27382: MariaDB 10.4.25

  • CVE-2022-27381: MariaDB 10.4.25

  • CVE-2022-27380: MariaDB 10.4.25

  • CVE-2022-27379: MariaDB 10.4.25

  • CVE-2022-27378: MariaDB 10.4.25

  • CVE-2022-27377: MariaDB 10.4.25

  • CVE-2022-27376: MariaDB 10.4.25

  • CVE-2022-24052: MariaDB 10.4.23

  • CVE-2022-24051: MariaDB 10.4.23

  • CVE-2022-24050: MariaDB 10.4.23

  • CVE-2022-24048: MariaDB 10.4.23

  • CVE-2022-21595: MariaDB 10.4.23

  • CVE-2022-21451: MariaDB 10.4.19

  • CVE-2022-21427: MariaDB 10.4.25

  • CVE-2022-0778: MariaDB 10.4.23

  • CVE-2021-46669: MariaDB 10.4.25

  • CVE-2021-46668: MariaDB 10.4.24

  • CVE-2021-46667: MariaDB 10.4.22

  • CVE-2021-46666: MariaDB 10.4.20

  • CVE-2021-46665: MariaDB 10.4.24

  • CVE-2021-46664: MariaDB 10.4.24

  • CVE-2021-46663: MariaDB 10.4.24

  • CVE-2021-46662: MariaDB 10.4.22

  • CVE-2021-46661: MariaDB 10.4.24

  • CVE-2021-46659: MariaDB 10.4.23

  • CVE-2021-46658: MariaDB 10.4.21

  • CVE-2021-46657: MariaDB 10.4.20

  • CVE-2021-35604: MariaDB 10.4.22

  • CVE-2021-27928: MariaDB 10.4.18

  • CVE-2021-2389: MariaDB 10.4.21

  • CVE-2021-2372: MariaDB 10.4.21

  • CVE-2021-2194: MariaDB 10.4.16

  • CVE-2021-2166: MariaDB 10.4.19

  • CVE-2021-2154: MariaDB 10.4.19

  • CVE-2021-2144: MariaDB 10.4.9

  • CVE-2021-2022: MariaDB 10.4.14

  • CVE-2021-2007: MariaDB 10.4.7

  • CVE-2020-7221: MariaDB 10.4.12

  • CVE-2020-2922: MariaDB 10.4.7

  • CVE-2020-28912: MariaDB 10.4.16

  • CVE-2020-2814: MariaDB 10.4.13

  • CVE-2020-2812: MariaDB 10.4.13

  • CVE-2020-2780: MariaDB 10.4.9

  • CVE-2020-2760: MariaDB 10.4.13

  • CVE-2020-2752: MariaDB 10.4.13

  • CVE-2020-2574: MariaDB 10.4.12

  • CVE-2020-15180: MariaDB 10.4.15

  • CVE-2020-14812: MariaDB 10.4.16

  • CVE-2020-14789: MariaDB 10.4.16

  • CVE-2020-14776: MariaDB 10.4.16

  • CVE-2020-14765: MariaDB 10.4.16

  • CVE-2020-13249: MariaDB 10.4.13

  • CVE-2019-2974: MariaDB 10.4.9

  • CVE-2019-2938: MariaDB 10.4.9

  • CVE-2019-2805: MariaDB 10.4.7

  • CVE-2019-2758: MariaDB 10.4.7

  • CVE-2019-2740: MariaDB 10.4.7

  • CVE-2019-2739: MariaDB 10.4.7

  • CVE-2019-2737: MariaDB 10.4.7

  • CVE-2019-2628: MariaDB 10.4.5

  • CVE-2019-2627: MariaDB 10.4.5

  • CVE-2019-2614: MariaDB 10.4.5

  • CVE-2018-25032: MariaDB 10.4.26

  • Stable (GA)

    14 Aug 2023

    Stable (GA)

    7 Jun 2023

    Stable (GA)

    10 May 2023

    Stable (GA)

    6 Feb 2023

    Stable (GA)

    7 Nov 2022

    Stable (GA)

    15 Aug 2022

    Stable (GA)

    20 May 2022

    Stable (GA)

    12 Feb 2022

    Stable (GA)

    9 Feb 2022

    Stable (GA)

    8 Nov 2021

    Stable (GA)

    6 Aug 2021

    Stable (GA)

    23 Jun 2021

    Stable (GA)

    7 May 2021

    Stable (GA)

    22 Feb 2021

    Stable (GA)

    11 Nov 2020

    Stable (GA)

    3 Nov 2020

    Stable (GA)

    7 Oct 2020

    Stable (GA)

    10 Aug 2020

    Stable (GA)

    12 May 2020

    Stable (GA)

    28 Jan 2020

    Stable (GA)

    11 Dec 2019

    Stable (GA)

    8 Nov 2019

    Stable (GA)

    5 Nov 2019

    Stable (GA)

    11 Sep 2019

    Stable (GA)

    31 Jul 2019

    Stable (GA)

    18 Jun 2019

    Stable (GA)

    21 May 2019

    RC

    7 Apr 2019

    RC

    25 Feb 2019

    RC

    29 Jan 2019

    Beta

    20 Dec 2018

    Beta

    9 Nov 2018

    Alpha

    26.4.21

    11.8.1, 11.7.2, 11.4.5,10.11.11, 10.6.21, 10.5.28

    26.4.20

    11.7.1, 11.6.2, 11.4.4, 11.2.6, 10.11.10, 10.6.20, 10.5.27

    26.4.19

    11.4.3, 11.2.5, 11.1.6, 10.11.9, 10.6.19, 10.5.26

    26.4.18

    11.2.4, 11.1.5, 11.0.6, 10.11.8, 10.6.18, 10.5.25, 10.4.34

    26.4.16

    11.2.2, 11.1.3, 11.0.4, 10.11.6, 10.10.7, 10.6.16, 10.5.23, 10.4.32

    26.4.14

    10.10.3, 10.9.5, 10.8.7, 10.7.8, 10.6.12, 10.5.19, 10.4.28

    16 May 2024

    MariaDB 10.4.34

    Stable (GA)

    Release Notes

    Changelog

    7 Feb 2024

    MariaDB 10.4.33

    Stable (GA)

    Release Notes

    Changelog

    MDEV-12484
    MDEV-7597
    MDEV-13095
    MDEV-15562
    MDEV-15563
    MDEV-6111
    MDEV-15253
    MDEV-17255
    MDEV-16973
    MDEV-16974
    MDEV-16975
    MDEV-17082
    MDEV-11953
    MDEV-16266
    MDEV-16277
    MDEV-15705
    MDEV-16991
    MDEV-19116
    MDEV-19117
    MDEV-18450
    MDEV-5336
    MariaDB 10.4.2
    mysql
    MariaDB 10.3
    MariaDB 10.4
    MariaDB 10.4
    MariaDB 10.4
    MariaDB 10.4
    MariaDB 10.4.6
    MariaDB 10.4
    MDEV-16421
    MDEV-15655
    MDEV-16410
    MDEV-17534
    MDEV-17511
    MDEV-17502
    MDEV-17474
    MDEV-15073
    MDEV-5313
    MDEV-5336
    MariaDB 10.4
    CVE-2023-5157
    MariaDB 10.4.26
    CVE-2023-22084
    MariaDB 10.4.32
    CVE-2022-47015
    MariaDB 10.4.29
    CVE-2022-38791
    MariaDB 10.4.26
    MariaDB 10.4
    Galera
    Galera
    Galera
    Galera
    Galera

    13 Nov 2023

    MDEV-13916
    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'
    10.10.2
    10.9.4
    10.8.6
    10.7.7
    10.6.11
    10.5.18
    10.4.27
    10.10.1
    10.9.2
    10.8.4
    10.7.5
    10.6.9
    10.5.17
    10.4.26
    10.8.1
    10.7.2
    10.6.6
    10.5.14
    10.4.22
    10.6.4
    10.5.12
    10.4.21
    10.6.1
    10.5.10
    10.4.19
    10.5.9
    10.4.18
    10.5.7
    10.4.16
    10.5.4
    10.4.14
    10.5.1
    10.4.13
    10.5.0
    10.4.9
    10.4.4
    10.4.3
    10.4.2
    MariaDB 10.4.32
    Release Notes
    Changelog
    MariaDB 10.4.31
    Release Notes
    Changelog
    MariaDB 10.4.30
    Release Notes
    Changelog
    MariaDB 10.4.29
    Release Notes
    Changelog
    MariaDB 10.4.28
    Release Notes
    Changelog
    MariaDB 10.4.27
    Release Notes
    Changelog
    MariaDB 10.4.26
    Release Notes
    Changelog
    MariaDB 10.4.25
    Release Notes
    Changelog
    MariaDB 10.4.24
    Release Notes
    Changelog
    MariaDB 10.4.23
    Release Notes
    Changelog
    MariaDB 10.4.22
    Release Notes
    Changelog
    MariaDB 10.4.21
    Release Notes
    Changelog
    MariaDB 10.4.20
    Release Notes
    Changelog
    MariaDB 10.4.19
    Release Notes
    Changelog
    MariaDB 10.4.18
    Release Notes
    Changelog
    MariaDB 10.4.17
    Release Notes
    Changelog
    MariaDB 10.4.16
    Release Notes
    Changelog
    MariaDB 10.4.15
    Release Notes
    Changelog
    MariaDB 10.4.14
    Release Notes
    Changelog
    MariaDB 10.4.13
    Release Notes
    Changelog
    MariaDB 10.4.12
    Release Notes
    Changelog
    MariaDB 10.4.11
    Release Notes
    Changelog
    MariaDB 10.4.10
    Release Notes
    Changelog
    MariaDB 10.4.9
    Release Notes
    Changelog
    MariaDB 10.4.8
    Release Notes
    Changelog
    MariaDB 10.4.7
    Release Notes
    Changelog
    MariaDB 10.4.6
    Release Notes
    Changelog
    MariaDB 10.4.5
    Release Notes
    Changelog
    MariaDB 10.4.4
    Release Notes
    Changelog
    MariaDB 10.4.3
    Release Notes
    Changelog
    MariaDB 10.4.2
    Release Notes
    Changelog
    MariaDB 10.4.1
    Release Notes
    Changelog
    MariaDB 10.4.0
    Release Notes
    Changelog

    Be notified of new MariaDB Server releases automatically by subscribing 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.

    wsrep_trx_fragment_unit
    Upgrading from MariaDB 10.3 to MariaDB 10.4 with Galera Cluster
    wsrep_trx_fragment_size
    optimizer trace
    Distributions which Include MariaDB
    Authentication from MariaDB 10.4
    unix_socket authentication plugin
    User password expiry
    Account Locking
    DROP COLUMN
    optimizer_trace
    Engine Independent Table Statistics
    use_stat_tables=PREFERABLY_FOR_QUERIES
    optimizer_use_condition_selectivity=4
    use_stat_tables
    Temporal tables
    application-time periods
    UNION
    EXCEPT
    INTERSECT
    FLUSH SSL
    System Variables Added in MariaDB 10.4
    Status Variables Added in MariaDB 10.4
    tcp_nodelay
    Innodb_pages0_read
    sql-mode
    gtid_cleanup_batch_size
    SHUTDOWN WAIT FOR ALL SLAVES
    mysqladmin shutdown --wait-for-all-slaves
    BACKUP STAGE
    yum
    apt
    zypper
    Aria
    system tables
    Unicode
    UDF functions
    x_remove
    FLUSH TABLES
    JSON_VALID
    CHECK constraint
    JSON data type alias
    Security Vulnerabilities Fixed in MariaDB
    mysql.host table
    mysql.user
    mysql.global_priv
    SET PASSWORD
    ed25519
    authentication plugins
    innodb_encrypt_log
    innodb_checksum_algorithm=full_crc32
    Histograms
    analyze_sample_percentage
    Conditions can be pushed into materialized IN-subqueries
    optimizer switch
    optimizer switch
    Rowid Filtering optimization
    optimizer switch
    INSTALL PLUGIN
    UNINSTALL PLUGIN
    UNINSTALL SONAME
    BLOB
    TEXT
    mysql.gtid_slave_pos
    eq_range_index_dive_limit
    core_file
    TIMESTAMP()
    ADDTIME()
    systemd page

    This page is licensed: CC BY-SA / Gnu FDL