10.7.0 Comes As Preview Releases

Now is the time to try out the new candidate features of MariaDB Server 10.7, the next release series of MariaDB! This blog describes how the new preview releases work, and where we need your help as a MariaDB user.

The challenge: Making MariaDB mature quicker

Remember the challenges and visions I described two weeks ago? To address them we launch an experiment with several parallel preview releases of MariaDB Server 10.7 features.

This should solve two challenges mentioned in the blog: giving users early access to new functionality and making releases mature more rapidly through intensive internal testing.

ServerFest Two Weeks Later

Update your calendars: The MariaDB ServerFest has moved to be two weeks later, Tue-Wed 5.-6. October 2021. We hope the new dates fit your calendar!

Technical reasons

The postponement is due to what is usually called “technical reasons”, which is an expression intended to obscure any underlying facts. In our case, we don’t need to obscure, but can openly disclose the reasoning and point to a few late speaker submissions and one early newborn.

YAMB = Yet Another MariaDB Baby

The early newborn is my son Felix. Before we knew his gender, he went under the description “October Revolution”.

10.7 feature preview: Miscellaneous features

The “Misc features” preview includes all the other features that did not make it into a separate dedicated preview binary.


MariaDB Server 10.7 includes the JSON_EQUALS function, which compares inputs as JSON objects, regardless of whitespace, key order, or number format.

(more…)

10.7 preview feature: Password Reuse Check plugin

By default, MariaDB does not check if a user reuses a password. Some security policies require users to choose a new password each time, and the Password Reuse Check plugin, available in a MariaDB 10.7.0 preview, enables this functionality.

Old passwords are stored in the mysql.password_reuse_check_history table, and the period they are retained for is determined by the password-reuse-check-interval system variable, which specifies a number of days. By default this is zero, meaning unlimited retention.

The password can be used in conjunction with other password validation plugins, such as the Simple Password Check plugin or the CrackLib Password Check plugin.

10.7 preview feature: CONVERT PARTITION

If you are using table partitioning, you have likely heard of the ALTER TABLE … EXCHANGE PARTITION … WITH TABLE … command. It existed in MariaDB since forever. But if you check the manual (any manual) or search the web, you will see that almost the only use case of it is converting a partition to a standalone non-partitoned table, or converting a standalone non-partitoned table into a partition.

And the usage was designed back then to be anything but obvious. To convert a partition to a table you need first to create an empty table with the same structure as a partition, then you exchange it with a partition, and then you drop the empty partition.

10.7 preview feature: Python-like string formatting

Sometimes there is a need to combine data from different columns into one string. For example,

SELECT CONCAT(first_name, ‘ ‘, last_name) FROM employees;

This doesn’t look too bad, but can quickly get out of hand, if you need to do something more complex than that. For example, let’s say, we also need to mention the salary here:

SELECT CONCAT(first_name, ‘ ‘, last_name, ‘ -‘, CAST(FORMAT(salary, 0) AS VARCHAR(10)), ‘ ‘, currency) FROM employees;

This preview shows a new feature for MariaDB 10.7 that was developed as a part of Google Summer of Code (MDEV-25015) by Alan Cueva, together with his mentor Vicențiu Ciorbaru.

10.7 preview feature JSON Histograms

MariaDB has had support for histograms as part of Engine Independent Table Statistics since 10.0. As part of Google Summer of Code (MDEV-21130), Michael Okoko, together with his mentor Sergey Petrunia, have implemented a new format (using JSON) for histograms that significantly improves the accuracy and flexibility of histograms. For those just interested in the feature details, you can skip to the “New format”, however if one is unfamiliar with the purpose of histograms, read on.

Why statistics are needed

Histograms are important for queries where the WHERE clause uses columns that are not indexed.

10.7 preview feature: Compression Provider Plugins

MariaDB has been using a pluggable storage engine architecture for a long time and whilst this means great flexibility in choosing and managing the right storage engines for specific use cases, it also means they are easier to develop and therefore there’s an expectation that more engines will be created.

More storage engines means the MariaDB Server itself needs to be as flexible as possible to accommodate all sorts of functionalities that storage engines may need. One area where the MariaDB Server proved to be not that welcoming was in making available all the compression libraries needed by storage engines.

10.7 preview feature: Natural sort

Natural sort order is the ordering of strings in alphabetical order, while numbers are treated as numbers. This understanding of sorting is closer to human comprehension than to a machine. You can find an example of this feature in the Windows file manager. There the files are sorted in natural order. Try to create four folders “b1”, “a11”, “a2”, “a1”.

There are several programming languages which have natural sort. In PHP it is built-in function natsort, while as an third-party module in Python it is natsort, in Perl it is Sort::Naturally and in Matlab it is sort_nat.

10.7 preview feature: UUID Data Type

Universally unique identifiers (UUIDs) have a common place in computing already. A 128-bit value with a text representational value and the prescription of a number of version types to ensure a uniqueness makes it an ideal data type.

After many years of the UUID datatype existing only as a feature request in MDEV-4958, slowly accumulating votes and watchers, we are pleased to announce a preview of the UUID data type. Like the INET6 data type, this uses the datatype plugin API from MariaDB 10.5.

What does the UUID data type look like?