Changes & Improvements in MariaDB 10.1
MariaDB 10.1 is no longer maintained. Please use a more recent release.
The most recent release of MariaDB 10.1 is:
MariaDB 10.1.48 Stable (GA) Download Now
Contents
MariaDB 10.1 is a previous stable version of MariaDB. The first stable release was in October 2014.
For details on upgrading from MariaDB 10.0, see Upgrading from MariaDB 10.0 to 10.1.
The following lists the major new features in MariaDB 10.1:
Implemented Features
Galera
- Galera, a true multi-master solution, is a standard part of MariaDB 10.1.
- Two new Information Schema tables for examining wsrep information, WSREP_MEMBERSHIP and WSREP_STATUS (MDEV-7053)
Encryption
Page Compression
- InnoDB/XtraDB Page Compression
- Page compression for FusionIO.
Replication
- Optimistic mode of in-order parallel replication (MDEV-6676)
- domain_id based replication filters - see CHANGE MASTER TO (MDEV-6593)
- Enhanced semisync replication; Wait for at least one slave to acknowledge transaction before committing (MDEV-162).
- Triggers can now be run on the slave for row-based events.
- Dump Thread Enhancements from Google. Makes multiple slave setups faster by allowing concurrent reading of binary log. (MDEV-7257)
- Commits in certain instances in parallel replication complete immediately, avoiding losing throughput when many transactions need conflicting locks. See binlog_commit_wait_count.
- RESET_MASTER is extended with
TO #
which allows one to specify the number of the first binary log. (MDEV-8469) - Due to the implementation of SQL standards-compliant behavior when dealing with Primary Keys with Nullable Columns, in certain edge cases, there may be replication issues when replicating from a MariaDB 10.0 master to a MariaDB 10.1 slave using statement-based replication. See MDEV-12248.
Roles
- SET DEFAULT ROLE (MDEV-5210).
- New columns for the INFORMATION_SCHEMA.APPLICABLE_ROLES table.
Optimization
- ORDER BY optimization is improved by several fixes for real-world cases.
- Don't create frm files for temporary tables (MDEV-4260).
- MAX_STATEMENT_TIME can be used to automatically abort long running queries. (MDEV-4427).
- UNION ALL works without usage of a temporary table (MDEV-334). The feature was backported from MySQL 5.7
- Scalability fixes (MDEV-7004). Up to 60% higher throughput in sysbench benchmarks on Power8.
- Make simple queries faster as we call malloc() fewer times.
- Automatic discovery of performance schema tables (simpler mysql_install_db code). (MDEV-4262), Performance Schema tables no longer use
.frm
files. - Other Webscale patches (MDEV-6039)
- MDEV-7728 xid cache scalability was significantly improved (by using lock-free hash)
GIS
- Support for Spatial Reference systems for the GIS data (MDEV-60), new
REF_SYSTEM_ID
column attribute can be used to specify Spatial Reference System ID for columns of spatial data types: - More functions from the OGC standard added (MDEV-4045):
- INFORMATION_SCHEMA.GEOMETRY_COLUMNS table.
- INFORMATION_SCHEMA.SPATIAL_REF_SYS table.
Syntax
- Consistent support for
IF EXISTS
,IF NOT EXISTS
, andOR REPLACE
clauses:- CREATE DATABASE (MDEV-7280)
- CREATE FUNCTION UDF (MDEV-7283)
- CREATE ROLE (MDEV-7288)
- CREATE SERVER (MDEV-7285)
- CREATE USER (MDEV-7288)
- CREATE VIEW (MDEV-7283)
- DROP ROLE (MDEV-7288)
- DROP USER (MDEV-7288)
- CREATE EVENT and DROP EVENT (MDEV-7281)
- CREATE INDEX and DROP INDEX (MDEV-7284)
- CREATE TRIGGER and DROP TRIGGER (MDEV-7286)
- Information Schema plugins can now support SHOW and FLUSH statements. New statements include:
- New columns for the INFORMATION_SCHEMA.APPLICABLE_ROLES and INFORMATION_SCHEMA.VIEWS tables.
- ANALYZE statement provides output that looks like EXPLAIN output, but also includes data from the query execution (how many rows were actually read, etc).
- EXPLAIN FORMAT=JSON is a re-implementation of similar feature in MySQL 5.6
- ANALYZE FORMAT=JSON produces detailed information about the statement execution
- GET_LOCK() now supports microseconds in the timeout, no longer rounding fractions to the nearest integer (MDEV-4018)
- Compound statements can be used outside of stored programs.
- The number of rows affected by a slow UPDATE or DELETE is now recorded in the slow query log - see also mysql.slow_log Table. (MDEV-4412)
- SQL standards-compliant behavior when dealing with Primary Keys with Nullable Columns. Note that this could cause replication issues in certain edge cases when replicating from a MariaDB 10.0 master to a MariaDB 10.1 slave. using statement-based replication. See MDEV-12248.
- Explicit or implicit casts from MAX(string) to INT, DOUBLE or DECIMAL now produce warnings (MDEV-8852).
XtraDB / InnoDB
- Allow up to 64K pages in InnoDB (old limit was 16K) (MDEV-6075).
- The Facebook/Kakao defragmentation patch (see Defragmenting InnoDB Tablespaces) which uses OPTIMIZE TABLE to defragment InnoDB tablespaces).
Collations
- Added the
utf8_thai_520_w2
,utf8mb4_thai_520_w2
,ucs2_thai_520_w2
,utf16_thai_520_w2
andutf32_thai_520_w2
collations.
Variables
For a list of all new variables, see System Variables Added in MariaDB 10.1 and Status Variables Added in MariaDB 10.1. Some of these, and other variable-related changes, include:
- INFORMATION_SCHEMA.SYSTEM_VARIABLES gives information, like description and value origin, for system variables (MDEV-6138).
- MDEV-6858 New server variable enforce_storage_engine
- New status variables to show the number of grants on different objects (see Status Variables Added in MariaDB 10.1)
- Default size of query_alloc_block_size changed from
8192
to16384
and query_prealloc_size from8192
to24576
to avoid the need for simple queries with one join to callmy_malloc
. - Added variable default-tmp-storage-engine (From MySQL 5.6) (MDEV-6107).
- SET STATEMENT - set variables for the duration of the query (MDEV-5231). This is a backport of Per-query Variable Statement feature of Percona Server 5.6 (which, in turn, is based in MySQL GSoC 2009 project by Joseph Lukas), with many bugs fixed.
- --mysql56-temporal-format option to use the MySQL-5.6 low level formats to store TIME, DATETIME and TIMESTAMP types. (MDEV-5528)
- Backport innodb_default_row_format (MDEV-14904)
mysqld --help --verbose
now shows valid variables for ENUM variables. (MDEV-6137)- MDEV-6981 New status variables to track MASTER_GTID_WAIT time.
- MDEV-7198 New status variable Slave_skipped_errors.
--silent-startup
mysqld option. If specified, mysqld does not print Notes to the error log during startup.
Plugins
- Password validation plugin API (MDEV-6431).
- simple_password_check password validation plugin. It can enforce a minimum password length and guarantee that a password contains at least a specified number of uppercase and lowercase letters, digits, and punctuation characters.
- cracklib_password_check password validation plugin. It only allows passwords that are strong enough to pass CrackLib test. This is the same test that
pam_cracklib.so
does, installed by default on many Linux distributions. - ed25519 authentication plugin for traditional password-based authentication. A new, secure alternative to the old
mysql_native_password
plugin.
Security
- Enhance security using special compilation options - MariaDB is now compiled with security hardening options by default. It is an additional protection layer that makes new, yet unknown, security vulnerabilities more difficult to exploit. (MDEV-5730)
Security Vulnerabilities Fixed in MariaDB 10.1
For a complete list of security vulnerabilities (CVEs) fixed across all versions of MariaDB, see the Security Vulnerabilities Fixed in MariaDB page.
- CVE-2021-2144: MariaDB 10.1.42
- CVE-2021-2022: MariaDB 10.1.46
- CVE-2021-2011: MariaDB 10.1.33
- CVE-2021-2007: MariaDB 10.1.41
- CVE-2020-2922: MariaDB 10.1.41
- CVE-2020-28912: MariaDB 10.1.48
- CVE-2020-2814: MariaDB 10.1.45
- CVE-2020-2812: MariaDB 10.1.45
- CVE-2020-2780: MariaDB 10.1.42
- CVE-2020-2752: MariaDB 10.1.45
- CVE-2020-2574: MariaDB 10.1.44
- CVE-2020-15180: MariaDB 10.1.47
- CVE-2020-14812: MariaDB 10.1.48
- CVE-2020-14765: MariaDB 10.1.48
- CVE-2020-14550: MariaDB 10.1.33
- CVE-2019-2974: MariaDB 10.1.42
- CVE-2019-2805: MariaDB 10.1.41
- CVE-2019-2740: MariaDB 10.1.41
- CVE-2019-2739: MariaDB 10.1.41
- CVE-2019-2737: MariaDB 10.1.41
- CVE-2019-2627: MariaDB 10.1.39
- CVE-2019-2614: MariaDB 10.1.39
- CVE-2019-2537: MariaDB 10.1.38
- CVE-2019-2529: MariaDB 10.1.38
- CVE-2019-2503: MariaDB 10.1.36
- CVE-2019-2455: MariaDB 10.1.33
- CVE-2018-3282: MariaDB 10.1.37
- CVE-2018-3251: MariaDB 10.1.37
- CVE-2018-3174: MariaDB 10.1.37
- CVE-2018-3156: MariaDB 10.1.37
- CVE-2018-3143: MariaDB 10.1.37
- CVE-2018-3133: MariaDB 10.1.30
- CVE-2018-3081: MariaDB 10.1.33
- CVE-2018-3066: MariaDB 10.1.35
- CVE-2018-3064: MariaDB 10.1.35
- CVE-2018-3063: MariaDB 10.1.35
- CVE-2018-3058: MariaDB 10.1.35
- CVE-2018-2819: MariaDB 10.1.33
- CVE-2018-2817: MariaDB 10.1.33
- CVE-2018-2813: MariaDB 10.1.33
- CVE-2018-2787: MariaDB 10.1.33
- CVE-2018-2784: MariaDB 10.1.33
- CVE-2018-2782: MariaDB 10.1.33
- CVE-2018-2781: MariaDB 10.1.33
- CVE-2018-2771: MariaDB 10.1.33
- CVE-2018-2767: MariaDB 10.1.33
- CVE-2018-2766: MariaDB 10.1.33
- CVE-2018-2761: MariaDB 10.1.33
- CVE-2018-2755: MariaDB 10.1.33
- CVE-2018-2668: MariaDB 10.1.31
- CVE-2018-2665: MariaDB 10.1.31
- CVE-2018-2640: MariaDB 10.1.31
- CVE-2018-2622: MariaDB 10.1.31
- CVE-2018-2612: MariaDB 10.1.31
- CVE-2018-2562: MariaDB 10.1.31
- CVE-2017-3653: MariaDB 10.1.26
- CVE-2017-3651: MariaDB 10.1.19
- CVE-2017-3641: MariaDB 10.1.26
- CVE-2017-3636: MariaDB 10.1.26
- CVE-2017-3600: MariaDB 10.1.19
- CVE-2017-3464: MariaDB 10.1.23
- CVE-2017-3456: MariaDB 10.1.23
- CVE-2017-3453: MariaDB 10.1.23
- CVE-2017-3318: MariaDB 10.1.21
- CVE-2017-3317: MariaDB 10.1.21
- CVE-2017-3313: MariaDB 10.1.22
- CVE-2017-3312: MariaDB 10.1.21
- CVE-2017-3309: MariaDB 10.1.23
- CVE-2017-3308: MariaDB 10.1.23
- CVE-2017-3302: MariaDB 10.1.22
- CVE-2017-3291: MariaDB 10.1.21
- CVE-2017-3265: MariaDB 10.1.21
- CVE-2017-3258: MariaDB 10.1.21
- CVE-2017-3257: MariaDB 10.1.21
- CVE-2017-3244: MariaDB 10.1.21
- CVE-2017-3243: MariaDB 10.1.21
- CVE-2017-3238: MariaDB 10.1.21
- CVE-2017-15365: MariaDB 10.1.30
- CVE-2017-10384: MariaDB 10.1.26
- CVE-2017-10379: MariaDB 10.1.26
- CVE-2017-10378: MariaDB 10.1.29
- CVE-2017-10286: MariaDB 10.1.26
- CVE-2017-10268: MariaDB 10.1.29
- CVE-2016-9843: MariaDB 10.1.37
- CVE-2016-8283: MariaDB 10.1.18
- CVE-2016-7440: MariaDB 10.1.19
- CVE-2016-6664: MariaDB 10.1.21
- CVE-2016-6663: MariaDB 10.1.18
- CVE-2016-6662: MariaDB 10.1.17
- CVE-2016-5629: MariaDB 10.1.18
- CVE-2016-5626: MariaDB 10.1.18
- CVE-2016-5624: MariaDB 10.1.18
- CVE-2016-5616: MariaDB 10.1.18
- CVE-2016-5584: MariaDB 10.1.19
- CVE-2016-5483: MariaDB 10.1.19
- CVE-2016-5444: MariaDB 10.1.14
- CVE-2016-5440: MariaDB 10.1.15
- CVE-2016-3615: MariaDB 10.1.15
- CVE-2016-3521: MariaDB 10.1.15
- CVE-2016-3492: MariaDB 10.1.18
- CVE-2016-3477: MariaDB 10.1.15
- CVE-2016-3471: MariaDB 10.1.9
- CVE-2016-3459: MariaDB 10.1.14
- CVE-2016-3452: MariaDB 10.1.14
- CVE-2016-2047: MariaDB 10.1.10
- CVE-2016-0668: MariaDB 10.1.12
- CVE-2016-0666: MariaDB 10.1.14
- CVE-2016-0655: MariaDB 10.1.14
- CVE-2016-0651: MariaDB 10.1.10
- CVE-2016-0650: MariaDB 10.1.12
- CVE-2016-0649: MariaDB 10.1.12
- CVE-2016-0648: MariaDB 10.1.14
- CVE-2016-0647: MariaDB 10.1.14
- CVE-2016-0646: MariaDB 10.1.12
- CVE-2016-0644: MariaDB 10.1.12
- CVE-2016-0643: MariaDB 10.1.14
- CVE-2016-0642: MariaDB 10.1.10
- CVE-2016-0641: MariaDB 10.1.12
- CVE-2016-0640: MariaDB 10.1.12
- CVE-2016-0616: MariaDB 10.1.10
- CVE-2016-0610: MariaDB 10.1.9
- CVE-2016-0609: MariaDB 10.1.10
- CVE-2016-0608: MariaDB 10.1.10
- CVE-2016-0606: MariaDB 10.1.10
- CVE-2016-0600: MariaDB 10.1.10
- CVE-2016-0598: MariaDB 10.1.10
- CVE-2016-0597: MariaDB 10.1.10
- CVE-2016-0596: MariaDB 10.1.10
- CVE-2016-0546: MariaDB 10.1.10
- CVE-2016-0505: MariaDB 10.1.10
- CVE-2015-7744: MariaDB 10.1.9
- CVE-2015-4913: MariaDB 10.1.8
- CVE-2015-4895: MariaDB 10.1.8
- CVE-2015-4879: MariaDB 10.1.8
- CVE-2015-4870: MariaDB 10.1.8
- CVE-2015-4866: MariaDB 10.1.8
- CVE-2015-4864: MariaDB 10.1.8
- CVE-2015-4861: MariaDB 10.1.8
- CVE-2015-4858: MariaDB 10.1.8
- CVE-2015-4836: MariaDB 10.1.8
- CVE-2015-4830: MariaDB 10.1.8
- CVE-2015-4826: MariaDB 10.1.8
- CVE-2015-4819: MariaDB 10.1.8
- CVE-2015-4816: MariaDB 10.1.8
- CVE-2015-4815: MariaDB 10.1.8
- CVE-2015-4807: MariaDB 10.1.8
- CVE-2015-4802: MariaDB 10.1.8
- CVE-2015-4792: MariaDB 10.1.8
Comparison with MySQL
- System Variable Differences Between MariaDB 10.1 and MySQL 5.6
- System Variable Differences Between MariaDB 10.1 and MySQL 5.7