Category Archives: Development
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%.
…
Continue reading “MariaDB Plugins Beyond C++: What the Community Told Us”
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.
…
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.
…
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.
…
Continue reading “MariaDB Server Plugins: disabled functions”
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.
…
Continue reading “Lowering the Barrier for MariaDB Plugin Development: Plugins in More Languages”
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.
…
Continue reading “MariaDB Hidden Gem: Create Aggregate Function”
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. …
Continue reading “Vibe-coding an Audit Plugin in Under 3 Minutes”
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.
…
Continue reading “Documented: The MariaDB Server (Community) Contribution Process”