Release Notes for MariaDB Enterprise Server 10.4.24-15
This page is part of MariaDB's Documentation.
The parent of this page is: Release Notes for MariaDB Enterprise Server 10.4
Topics on this page:
Overview
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.
Fixed Security Vulnerabilities
CVE (with cve.org link) | CVSS base score |
5.5 | |
5.5 | |
5.5 | |
5.5 | |
5.5 | |
5.5 | |
4.4 |
Notable Changes
Galera updated to 26.4.11
The maximum values for
innodb_ft_cache_size
andinnodb_ft_total_cache_size
have been changed from80000000
to1099511627776
(1 TB). (MENT-1428)On Windows,
core_file
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 is0
, then the keys will always be considered invalid, but they are still used if the vault server is unavailable andhashicorp_key_management_use_cache_on_timeout
is enabled. By default, the value is60000
(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 is0
, then information about latest key version numbers always considered invalid, but they are still used if the vault server is unavailable andhashicorp_key_management_use_cache_on_timeout
is enabled. By default, the value is0
.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=120000
Issues Fixed
Can result in data loss
Columns in some
INFORMATION_SCHEMA
tables are erroneously declared withDEFAULT
clauses, which is not compliant with the SQL standard. (MDEV-18918)Consequently, when
sql_mode=EMPTY_STRING_IS_NULL
is set, queries likeCREATE 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
ALTER TABLE
statement changes the order of indexes in a MyISAM or Aria table using theINPLACE
algorithm, the table can become corrupt. (MDEV-25803)When
CREATE OR REPLACE SEQUENCE
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)
Can result in a hang or crash
When a
FULLTEXT
index is added to an InnoDB table withALGORITHM=INPLACE
and the indexed column uses thetis620
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=mariabackup
andinnodb_force_recovery=1
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:
mariabackup: The option "innodb_force_recovery" should only be used with "--prepare". mariabackup: 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
log_slow_verbosity = 'explain'
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
character_set_server=utf8mb4
andcollation_server=utf8mb4_unicode_1400_ci
, the server can crash. (MDEV-27195)When a system-versioned table is partitioned by
SYSTEM_TIME
, executingDELETE FROM .. PARTITION(..)
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
in_predicate_conversion_threshold
system variable must be set to some valuen
.The query must contain an
IN(...)
clause with more thann
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
REPAIR VIEW
is executed on a view that referencesinformation_schema.TABLES
, the server can crash. (MDEV-25538)When
ALTER TABLE .. ADD COLUMN
is used to instantly add columns in the middle of an InnoDB table, and then the tablespace is exported withFLUSH TABLES .. FOR EXPORT
, and then the tablespace is re-imported withALTER TABLE .. IMPORT TABLESPACE
, the server can crash. (MDEV-27272)When
optimizer_switch='not_null_range_scan=on'
is set, the server can crash if an index on an InnoDB table is used to check a condition that can evaluate toNULL
. (MDEV-22846)When a Spider table uses a
FLOAT
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
CREATE TABLE
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
mysql.slow_log
system table andwsrep_trx_fragment_size
is greater than0
, 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 ;
Can result in unexpected behavior
When a multi-byte character set is used, the last character of a
TINYTEXT
column can be truncated, which makes it appear as a question mark ('?
). (MDEV-24335)Subquery using the
ALL
keyword onTIME
columns produces a wrong result. (MDEV-27098)Subquery using the
ALL
keyword onDATE
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 theER_NO_DB_ERROR
error code. (MDEV-26470)When MariaDB Enterprise Cluster performs an SST, the SST scripts incorrectly try to read
ssl_ca
as a path to a directory of TLS CA certificates instead of usingssl_capath
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 theRange Checked for Each Record
optimization. (MDEV-27270)When
optimizer_switch='index_merge_sort_intersection=on'
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
version
system variable is set, MariaDB Connector/C and themariadb
client do not interpret MariaDB Server's extended metadata properly, which can cause results from someSHOW ..
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
inSHOW REPLICA STATUS
can temporarily show an incorrect value that is very high. (MDEV-16091)The
collation
column in theinformation_schema.STATISTICS
table is incorrectly read asNULL
. (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
innodb_buffer_pool_size
is changed dynamically withSET GLOBAL
, InnoDB does not enforce the minimum value that is enforced on startup, which can result in an impossibly small buffer pool with some values ofinnodb_buffer_pool_chunk_size
. (MDEV-27467)When the
DATABASE()
function is used in some queries (such as queries usingUNION ALL
), database names can be truncated to 34 characters, even though database names can have up to 64 characters. (MDEV-27544)When the
--symbolic-links
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 theDATA DIRECTORY
option. (MDEV-26870)When
CREATE TABLE t1 LIKE t2
is executed and thet2
table is a partitioned table that uses the MyISAM or Aria storage engines and has theDATA DIRECTORY
option defined for partitions, the operation fails with a file system error. (MDEV-25917)When
sql_mode=ONLY_FULL_GROUP_BY
is set, some window functions incorrectly raise an error with theER_MIX_OF_GROUP_FUNC_AND_FIELDS
error code. (MDEV-17785)When the
JSON_COMPACT
function is called with values from a subquery, the output is not always returned as theJSON
data type. (MDEV-18284)When a system-versioned table is partitioned by
SYSTEM_TIME` with a ``LIMIT
clause,CHECK TABLE
can incorrectly return an error. (MDEV-25552)The lateral derived optimization is not disabled for queries that use
WITH ROLLUP
, which causes queries that useGROUP BY
to return incorrect results. (MDEV-26337)When
optimizer_switch='split_materialized=on'
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
slave_parallel_mode
set to'optimistic'
or'aggressive'
, this can result in the following error inSHOW REPLICA STATUS
:
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,ALTER SEQUENCE
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
optimizer_use_condition_selectivity=4
, the optimizer could sometimes produce worse execution plans than withoptimizer_use_condition_selectivity=1
, except whenoptimizer_switch='extended_keys=off'
is set. (MDEV-25830)
Related to install and upgrade
When
wsrep_sst_method=mariabackup
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
andmysql.DropGeometryColumn
stored procedures use the old defaultDEFINER = 'root@localhost'
,mariadb-upgrade
does not alter them to use the new defaultDEFINER = 'mariadb.sys@localhost'
. (MDEV-27124)
Changes in Storage Engines
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.
Interface Changes
ER_
VERS_ error code addedNOT_ ALLOWED innodb_
buffer_ system variable minimum value changed frompool_ size 5242880
to2097152
innodb_
ft_ system variable dynamic changed fromcache_ size No
toYes
innodb_
ft_ system variable maximum value changed fromcache_ size 80000000
to1099511627776
innodb_
ft_ system variable dynamic changed fromtotal_ cache_ size No
toYes
innodb_
ft_ system variable maximum value changed fromtotal_ cache_ size 1600000000
to1099511627776
mysql_upgrade
--check-if-upgrade-is-needed command-line option addedmysqld
--hashicorp-key-management-cache-timeout command-line option addedmysqld
--hashicorp-key-management-cache-version-timeout command-line option addedmysqld
--rocksdb-ignore-datadic-errors command-line option addedrocksdb_
ignore_ system variable addeddatadic_ errors
Platforms
In alignment to the enterprise lifecycle, MariaDB Enterprise Server 10.4.24-15 is provided for:
CentOS 7 (x86_
64) Debian 9 (x86_
64, ARM64) Debian 10 (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".