MariaDB Plugins Beyond C++: What the Community Told Us

A few weeks ago, we asked a simple question:

Which language would you use to write MariaDB plugins?

The question related to MDEV-40189 (Support plugins written in various languages), an idea we introduced earlier this summer to lower the barrier to MariaDB plugin development by supporting languages other than C and C++.

The poll is now closed, and 2,090 people voted.

And the results are interesting.

Python and Rust lead, but there is no single winner

Python takes first place with 21%, closely followed by Rust with 19%.

MariaDB Server 12.3, 11.8, 11.4 and 10.11 – Q3 2026 Maintenance Releases, and Goodbye 10.6

MariaDB Server maintenance releases are here!

On August 24, we released updates for our four currently maintained Long Term Support series:

  • MariaDB 12.3.3
  • MariaDB 11.8.9
  • MariaDB 11.4.13
  • MariaDB 10.11.19

As usual, these maintenance releases include bug fixes, stability improvements, and ongoing work across MariaDB Server.

You can find the complete release notes and changelogs for each version:

MariaDB 12.3.3

MariaDB 11.8.9

MariaDB 11.4.13

MariaDB 10.11.19

If you are running one of these MariaDB Server versions, we recommend reviewing the changelog and planning your upgrade.

Extending MariaDB with Native Aggregate Plugins: Laying the Groundwork for HyperLogLog

MariaDB already allows developers to add new Pluggable Data Types and scalar Plugin Functions. One missing piece has been Pluggable Aggregate Functions operating on PDTs. That matters for functionality such as HyperLogLog, where an extension needs to aggregate values into a custom statistical sketch while preserving its native SQL type.

MDEV-40672 closes that architectural gap. Aggregate functions can now participate in MariaDB’s native aggregation infrastructure, including DISTINCT, window execution, prepared statements and Pluggable Data Types.

MariaDB already supports MariaDB_FUNCTION_PLUGIN, a mechanism for registering SQL functions that create regular server Item objects and can behave almost like built-in functions.

MariaDB Server Plugins: disabled functions

During the last MariaDB Foundation Board Meeting (24 June 2026), Barry shared how it can be difficult to deploy an upgrade immediately and that they sometimes have to wait for one that fixes security bugs. Wait for the validation, wait for the fix, and the release. Even if the MariaDB engineers are doing incredible work, it might still not be fast enough for the security team.

That’s where Barry requested MariaDB implement a query-rewriter plugin, like the one in MySQL, to address the fact that, in a multi-tenant environment, certain queries that would trigger known vulnerabilities are never legitimately used by applications.

Lowering the Barrier for MariaDB Plugin Development: Plugins in More Languages

MariaDB Server has long supported a flexible plugin architecture. Plugins allow developers to extend server functionality in areas such as data types, auditing, storage engines, information schema tables, and more.

Today, MariaDB Server plugins are typically developed in C or C++, like the server’s codebase. At least for a while

Even with the current plugin-writing approach, familiarity with MariaDB internals is beneficial because it enables you to do things you otherwise cannot. But it is not required.

A new development idea, MDEV-40189: Support plugins written in various languages, explores whether MariaDB Server could make plugin development accessible from additional programming languages.

MariaDB Hidden Gem: Create Aggregate Function

Have you ever written a query where the GROUP BY was easy, but the aggregate was the problem?

You know how to group the rows.
You know what result you want for each group.
But none of the built-in aggregate functions really match your logic.

So you end up with a long expression using SUM(), CASE, IF(), GROUP_CONCAT(), JSON functions, or application-side code. It works, but it is not beautiful. And if you need the same logic in several places, it becomes even worse.

This is exactly the kind of problem MariaDB’s CREATE AGGREGATE FUNCTION solves.

Vibe-coding an Audit Plugin in Under 3 Minutes

Who says developing MariaDB plugins is hard? I was able to produce one in under 3 minutes!

I of course did it by asking Grok nicely:

The produced result is actually very decent:

/*
errorwatch.c – MariaDB Audit API plugin

Records statement execution errors into a dedicated log file.

This plugin subscribes to the GENERAL audit class and logs
events of type MYSQL_AUDIT_GENERAL_ERROR (and STATUS events
that carry a non-zero error code). It writes structured
entries to /var/log/mariadb/errorwatch.log (or /tmp/ fallback).

To build (inside MariaDB source tree):
1. Copy this file and CMakeLists.txt to plugin/errorwatch/
2. …

Documented: The MariaDB Server (Community) Contribution Process

If you ever considered contributing code to the MariaDB server, you should know that this is an intricate process involving multiple steps and multiple actors. To help you see your contributions successfully merged into the MariaDB Server codebase I’ve compiled a comprehensive description of the contribution process itself, the roles involved into it, the sequence of actions and conditions for transition from one to another. There’s even a diagram!

Please go to COMMUNITY_CONTRIBUTIONS.md.

This of course is going to be a moving target! I fully intend to keep the document up to date and enhance it with clarifications and process changes as they happen.