Release Notes for MariaDB Xpand 23.09.1


MariaDB Xpand is a distributed SQL database. This is the first General Availability (GA) release in the MariaDB Xpand 23.09 series.

MariaDB Xpand 23.09.1 was released on 2023-09-21.

The changes listed here are relative to MariaDB Xpand 6.1.1.

Multi-region HA Clusters

Multi-region clusters provide full, zero RPO high availability in the face of a regional failure.

  • A single Xpand cluster can be deployed across multiple regions.

  • In the event of a complete region failure, the database remains completely available and able to serve traffic immediately.

  • No manual intervention is required to restore from backup since the fault tolerance and resilience is built into the cluster.

  • Within each region, multiple zones can also be configured. In the event of a single zone failure within a region, the other zones within the same region will provide HA.

For more information, see Configure Multi-Region HA Cluster with MariaDB Xpand.

LDAP Integration

Xpand supports native authentication and authorization support through the Lightweight Directory Access Protocol (LDAP), including the ability to map LDAP groups to User Roles in the database. (XPAND-34710)

  • LDAP integration provides a convenient option for system administrators to define a centralized access control of users and group permissions, without having to duplicate the setup for each distinct Xpand cluster or any other service capable of utilizing LDAP.

  • After configuration, each Xpand node in the cluster can directly process login requests for LDAP users by making connections with one or multiple LDAP servers using the ldap:// or ldaps:// protocols.

  • MaxScale 23.08.1 or higher is required for LDAP integration.

For more information see, see Native LDAP Support for MariaDB Xpand and the list of added system variables.

XFS Support

The XFS file system is now supported by Xpand. (XPAND-34067, XPAND-36615)

For more about the XFS file system, see The XFS File System at

Rocky 9 and RHEL 9 Support

MariaDB Xpand 23.09 supports Rocky Linux 9 and RHEL 9 operating systems, as well as CentOS 7 and RHEL 7 operating systems.

CentOS 7 and RHEL 7 support will be removed in a future MariaDB Xpand release series.

Fast Parallel Import (xpand_import)

xpand_import is a new parallel import tool that provides fast parallel import of CSV and dump files. (XPAND-37135, XPAND-36559, XPAND-36852)

  • xpand_import is bundled with new installations of Xpand 23.09 by default.

  • xpand_import replaces clustrix_import and clx_import which are now deprecated.

  • xpand_import supports --ssl-ca and --ssl-verify-server-cert options. (XPAND-36852)

For more information see, see xpand_import for MariaDB Xpand

Notable Changes

General Enhancements

  • If Zones are configured, they can now include a name (and not just a numbering). (XPAND-34524)

  • When dropping a node, the hostname can be used as an argument. (XPAND-20434)

    • Dropping nodes by nid (nodeid) is deprecated, and will be removed in a future release.

  • AWS S3 Backup and Restore can use IAM permissions. (XPAND-36793)

  • The default value for multi_alloc is automatically set as a percentage of available memory. (XPAND-37154)

  • The histograms in the internode_latency_histograms table have been modified to account for larger values. (XPAND-37160)

  • The total number of open file handles is added to the system.stats table. (XPAND-36787)

  • SHUTDOWN requests are logged to the query.log file. (XPAND-36241)

  • When binlog reprotect is complete, a message is added to the log. (XPAND-35999)

  • The dependency on virtual relations that read from /proc has been reduced. (XPAND-36340)

    • Setting proc_vrels_disable = true (default: false) will turn specific vrels into no-op, including relevant monitoring by statd. This affects the following objects in the SYSTEM database: PROC_INTERRUPTS, PROC_SOFTIRQS, PROC_DISKSTATS, PROC_CPU, PROC_NET_DEV, PROC_NETSTAT

  • A new inaccessible_slices system table has been added that contains a list of slices for which there is no available replica. (XPAND-33936)


  • Support added for the NATIONAL VARCHAR data type. (XPAND-36445)

  • Support added for the LONG VARBINARY data type. LONG VARBINARY is aliased to MEDIUMBLOB. (XPAND-36666)

  • The default_storage_engine system variable has been added.

    • For compatibility purposes, the default engine type is listed as InnoDB but the Clustrix engine type is applied. (XPAND-35519)

  • proxy_protocol_networks can be configured with a comma separated list. (XPAND-36564)

  • The SHOW PLUGINS statement is supported. SHOW PLUGINS will always return 0 rows. (XPAND-36450)

  • The C API has been updated to return the correct values for the MYSQL_TIME structure. (XPAND-36599)

  • Roles can be specified as the DEFINER of a procedure, function, or trigger. (XPAND-36519)

  • SET NAMES DEFAULT is supported by aliasing it to SET NAMES utf8. (XPAND-32572)

Installation and Upgrade

  • The SSH socket connect timeout for clx is increased. (XPAND-37244)

  • For Rocky Linux 9 and RHEL 9 installs, systemd is used instead of sudo to run the nanny process as non-root (XPAND-35981)

  • A sysctl.d configuration file is used instead of modifying sysctl.conf (XPAND-35998)

Optimizer/Probability Distribution (PD) Enhancements

  • The way memory limits are applied to the query optimizer has been simplified, and clearer error messages are displayed when memory limits are exceeded. (XPAND-29196)

  • The cardinality estimate has been redesigned to improve the accuracy of the estimates and create more optimal query plans. (XPAND-36374)

  • The upper limit of the max_sierra_opt_mem_MiB global variable has been increased. (XPAND-37008)

  • The number of scans performed with columns is limited by the number of processors. (XPAND-36989)

  • Index matching on the data type mismatch in-list predicate is prohibited to avoid incorrect results. (XPAND-36907)

  • The query optimizer generates more optimal plans. (XPAND-36994)

  • Parent FK tables are excluded from joins if no columns are required. (XPAND-36382)

  • The probability distributions are flushed to disk during SHUTDOWN. (XPAND-36292)

  • The probability distributions are synchronized as part of the ALTER statement. (XPAND-24031)

  • Fetching the initial probability distributions starts only with a subset. (XPAND-36811)

  • The accuracy of the probability distribution for freshly loaded data has been improved. (XPAND-36515)

  • The PD size has been added to the system.device_containers table. (XPAND-36794)


  • The performance of statd has been improved. (XPAND-37224)

  • The internal program cache has been modified to make it more scalable. (XPAND-37193)

  • The performance of queries to the system.nodeinfo table has been improved. (XPAND-37221)

  • The performance of queries to the system.activity table has been improved. (XPAND-37109)

Tools and Utilities

Issues Fixed

Can result in data loss

  • Group changes with ongoing writes to columnar indexes can cause the columnar indexes to become corrupted. (XPAND-36922)

  • Scaling out using more nodes than currently in quorum overwrites the system catalog. (XPAND-37129)

Can result in a hang or crash

  • Cluster restart results in a memory leak. (XPAND-36552)

  • Setting internode_timeout_ms to a too-low value (for example 100ms) can prevent a cluster from forming. (XPAND-37241)

  • Rarely, when executing a soft group change the group management protocol encounters a race condition and causes a hard group change. (XPAND-37087)

  • When doing bulk writes with a columnar index, a crash can occur. (XPAND-35422)

  • Probability distribution (PD) causes an out of memory (OOM) condition. (XPAND-36662)

  • The lack of statistics (PDs) would misinform the predictive governor, which would allow queries to execute, even when they exceed sierra_predictive_governor_threshold (which could lead to a crash). (XPAND-36336)

  • Using ANALYZE can cause a crash. (XPAND-36839)

  • In rare cases, the global transaction manager causes a crash. (XPAND-36510)

  • Out of memory (OOM) condition occurs when there are a large number of slices. (XPAND-36733)

  • Setting the SPLIT_THRESHOLD_KB system variable too low can result in a crash. (XPAND-26826)

  • When a binlog transaction size exceeds 31KB, the system can crash. (XPAND-36203)

  • Using a large number of values in COALESCE() can result in a crash. (XPAND-37068)

  • When a query compilation triggers a recompile, and the query optimizer finds an empty expression, it can result in a crash. (XPAND-36785)

  • Generating a debug dump can cause a crash. (XPAND-36701)

Can result in unexpected behavior

  • Flushing the Query Plan Cache (QPC) can be over-aggressive leading to more query re-compilation and resulting in slightly decreased performance. (XPAND-37036)

  • URIs can be incorrectly encoded when using backup/restore from S3. (XPAND-37091)

  • Wrong results could be generated when OR/IN are used with DATETIME in WHERE predicate when compared with INT (XPAND-35039)

  • The history of slice splits shows an incorrect split size. (XPAND-36956)

  • The Rebalancer excessively swaps slices. (XPAND-36618)

  • Rebalancer incorrectly computes if a swap should occur. (XPAND-36681)

  • SELECT CURRENT_ROLE() retrieves stale roles. (XPAND-36525)

  • GRANT <role> TO <user> is not honored when a stored procedure is invoked with a set DEFINER. (XPAND-37171)

  • The binlog reprotect process occupies all available task space on all nodes preventing other Rebalancer tasks from being performed. (XPAND-37246)

    • Starting with this release, the binlog reprotect process will limit itself to using a subset of nodes.

  • The Host Anomaly Detector incorrectly generates error messages if non-default log locations are configured. (XPAND-36760)

  • Backups omit empty slices. (XPAND-36163)

Interface Changes

Changes to Default Values for Global Variables

The following global variables have new default values. If you are upgrading from a previous release, we recommend reviewing the new default values, and consider applying them to your system. If you would like further assistance or guidance, please contact MariaDB support.

  • cost_read_column default changed from 0.9 to 0.3

    • Adjusts costs to achieve more optimal plans.

  • internode_timeout_ms default changed from 100 to 1000

    • A higher setting results in lower CPU utilization.

  • layer_max_top_layer_size_bytes default changed from 16777216 to 67108864 (XPAND-36889)

    • Performance testing has shown that a higher value is more optimal.

  • max_sierra_tot_mem_MiB default changed from 160 to 512

    • This option may affect planning/compilation time, but also results in much faster runtimes. The new value is relative to max_sierra_opt_mem_MiB and is set higher to achieve better plans.

  • rebalancer_rebalance_mode default changed from noswap to normal

  • reoptimize_group_after_merge default changed from false to true

  • sierra_allow_mtable_cross_join default changed from false to true

    • This rule was previously disabled to reduce query plan execution time. The query optimizer is now more sophisticated and can take advantage of this rule in a more reasonable time.

  • sierra_extract_max_recursion_depth default changed from 10000 to 2000

  • sierra_table_def_card default changed from 10000 to 1

    • This value changes the default cardinality used for tables where probability statistic information is not available.


  • The XpandGUI is no longer supported, and is no longer bundled with installations and upgrades. (XPAND-36925)

Installation Instructions

Upgrade Instructions