[
    {
        "id": "tidesdb",
        "visible": true,
        "name": "TidesDB",
        "logo": "/assets/logo_tidesdb.png",
        "description": "TidesDB is a fast, light-weight and efficient embeddable key-value storage engine library written in C.",
        "website": "https://tidesdb.com/",
        "type": "Storage Engine",
        "maturity": "Stable",
        "distribution": "external",
        "tags": [],
        "sponsor": "silver",
        "sponsor_primary": true,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About TidesDB",
                    "content": [
                            "TidesDB is a fast, light-weight and efficient embeddable key-value storage engine library written in C. Built on a log-structured merge-tree (LSM-tree) architecture, it provides a foundational library for building database systems or can be used directly as a standalone key-value or column store.",
                            "TidesDB is designed for direct integration into applications. It handles keys and values as raw byte sequences without size restrictions (up to system memory limits), giving you full control over serialization. Optimized for write-heavy workloads, it maintains efficient reads through bloom filters, caching, block indices, and compaction."
                        ]
                },
                {
                    "title": "Resources",
                    "content": {
                        "type": "ul",
                        "items": [
                            "[Celebrating the MariaDB Foundation Sea Lions Champions Nominees](https://mariadb.org/celebrating-the-mariadb-foundation-sea-lions-champions-nominees/)"
                        ]
                    }
                },
                {
                    "title": "MariaDB Support",
                    "content": "TideSQL is a pluggable storage engine for MariaDB, built on top of TidesDB. The engine supports ACID transactions through multi-version concurrency control (MVCC), letting readers proceed without blocking writers. It handles primary keys, secondary indexes, auto-increment columns, virtual and stored generated columns, savepoints, TTL-based expiration, data-at-rest encryption, online DDL, partitioning, and online backups. All of these features are accessible through standard SQL, so switching from InnoDB to TidesDB for a particular table requires nothing more than changing the ENGINE clause."
                }
            ],
            "links": [
                {
                    "label": "Official Website",
                    "url": "https://tidesdb.com/"
                },
                {
                    "label": "Documentation",
                    "url": "https://tidesdb.com/getting-started/what-is-tidesdb/"
                },
                {
                    "label": "Installation",
                    "url": "https://tidesdb.com/reference/tidesql/"
                },
                {
                    "label": "GitHub",
                    "url": "https://github.com/tidesdb/tidesdb"
                },
                {
                    "label": "Sponsorship Announcement",
                    "url": "https://mariadb.org/tidesdb-becomes-silver-sponsor-of-the-mariadb-foundation/"
                }
            ]
        }
    },
    {
        "id": "archive",
        "visible": true,
        "name": "Archive",
        "logo": "/assets/logo_plugin_storage_engine.svg",
        "description": "The Archive storage engine is optimized for high-speed insertion and compression of large amounts of data, suitable for logging and auditing.",
        "website": "https://mariadb.com/docs/server/server-usage/storage-engines/archive",
        "type": "Storage Engine",
        "maturity": "Stable",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Archive",
                    "content": [
                            "The ARCHIVE storage engine is a storage engine that uses gzip to compress rows. It is mainly used for storing large amounts of data, without indexes, with only a very small footprint.",
                            "A table using the ARCHIVE storage engine is stored in two files on disk. There's a table definition file with an extension of .frm, and a data file with the extension .ARZ. At times during optimization, a .ARN file will appear.",
                            "New rows are inserted into a compression buffer and are flushed to disk when needed. SELECTs cause a flush. Sometimes, rows created by multi-row inserts are not visible until the statement is complete.",
                            "ARCHIVE allows a maximum of one key. The key must be on an AUTO_INCREMENT column, and can be a PRIMARY KEY or a non-unique key. However, it has a limitation: it is not possible to insert a value which is lower than the next AUTO_INCREMENT value."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/server-usage/storage-engines/archive"
                }
            ]
        }
    },
    {
        "id": "aria",
        "visible": true,
        "name": "Aria",
        "logo": "/assets/logo_plugin_storage_engine.svg",
        "description": "A crash-safe storage engine compiled into MariaDB Server, used internally for system and temporary tables. Offers improved caching and crash recovery over MyISAM.",
        "website": "https://mariadb.com/docs/server/server-usage/storage-engines/aria",
        "type": "Storage Engine",
        "maturity": "Stable",
        "distribution": "installed",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Aria",
                    "content": "Aria is a storage engine developed as a crash-safe successor to MyISAM, compiled into MariaDB Server since version 5.1. It serves as the storage engine for internal system tables and temporary tables. Aria supports three row formats — PAGE (default), FIXED, and DYNAMIC — and provides better caching than MyISAM, which benefits queries involving GROUP BY and DISTINCT operations."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "Used internally by MariaDB for system tables and temporary tables, ensuring reliability for internal query processing.",
                            "Improved caching over MyISAM, accelerating intermediate query operations such as GROUP BY and DISTINCT",
                            "Three row formats: PAGE (default, enables crash safety), FIXED, and DYNAMIC, allowing storage behavior to be tuned per table.",
                            "Group commit support that batches write operations to the transaction log, reducing I/O overhead on write-heavy workloads."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/server-usage/storage-engines/aria"
                }
            ]
        }
    },
    {
        "id": "audit",
        "visible": true,
        "name": "Audit Plugin",
        "logo": "/assets/logo_plugin_audit.svg",
        "description": "The MariaDB Audit Plugin records server activity, including connections, queries, and table access, to help meet organizational auditing and compliance regulations.",
        "website": "https://mariadb.com/docs/server/reference/plugins/mariadb-audit-plugin/mariadb-audit-plugin-overview",
        "type": "Audit",
        "maturity": "Stable",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Audit Plugin",
                    "content": [
                            "MariaDB and MySQL are used in a broad range of environments, but if you needed to record user access to be in compliance with auditing regulations for your organization, you would previously have had to use other database solutions. To meet this need, though, MariaDB has developed the MariaDB Audit Plugin. Although the MariaDB Audit Plugin has some unique features available only for MariaDB, it can be used also with MySQL.",
                            "Basically, the purpose of the MariaDB Audit Plugin is to log the server's activity. For each client session, it records who connected to the server (i.e., user name and host), what queries were executed, and which tables were accessed and server variables that were changed. This information is stored in a rotating log file or it may be sent to the local syslogd."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/plugins/mariadb-audit-plugin/mariadb-audit-plugin-overview"
                }
            ]
        }
    },
    {
        "id": "aws-key-mngt",
        "visible": true,
        "name": "AWS Key Management",
        "logo": "/assets/logo_plugin_encryption.svg",
        "description": "This plugin uses Amazon KMS to generate and store master keys, decrypting them at startup to enable data-at-rest encryption with key rotation support.",
        "website": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/aws-key-management-encryption-plugin",
        "type": "Encryption",
        "maturity": "Stable",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About AWS Key Management",
                    "content": "The AWS Key Management plugin uses the Amazon Web Services (AWS) Key Management Service (KMS) to generate and store AES keys on disk, in encrypted form, using the Customer Master Key (CMK) kept in AWS KMS. When MariaDB Server starts, the plugin will decrypt the encrypted keys, using the AWS KMS 'Decrypt' API function. MariaDB data will then be encrypted and decrypted using the AES key. It supports multiple encryption keys. It supports key rotation."
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/aws-key-management-encryption-plugin"
                },
                {
                    "label": "AWS KMS",
                    "url": "https://aws.amazon.com/kms/"
                },
                {
                    "label": "Key Management in MariaDB",
                    "url": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/encryption-key-management"
                }
            ]
        }
    },
    {
        "id": "blackhole",
        "visible": true,
        "name": "Blackhole",
        "logo": "/assets/logo_plugin_storage_engine.svg",
        "description": "The BLACKHOLE storage engine discards all data written to it but records operations in the binary log, useful for replication filtering and testing.",
        "website": "https://mariadb.com/docs/server/server-usage/storage-engines/blackhole",
        "type": "Storage Engine",
        "maturity": "Stable",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Blackhole",
                    "content": [
                            "The BLACKHOLE storage engine accepts data but does not store it and always returns an empty result.",
                            "A table using the BLACKHOLE storage engine consists of a single .frm table format file, but no associated data or index files.",
                            "This storage engine can be useful, for example, if you want to run complex filtering rules on a slave without incurring any overhead on a master. The master can run a BLACKHOLE storage engine, with the data replicated to the slave for processing."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/server-usage/storage-engines/blackhole"
                }
            ]
        }
    },
    {
        "id": "connect",
        "visible": true,
        "name": "CONNECT",
        "logo": "/assets/logo_plugin_storage_engine.svg",
        "description": "The CONNECT storage engine enables MariaDB to access external local or remote data (MED).",
        "website": "https://mariadb.com/docs/server/server-usage/storage-engines/connect/introduction-to-the-connect-engine",
        "type": "Storage Engine",
        "maturity": "Stable",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About CONNECT",
                    "content": [
                            "The CONNECT storage engine enables MariaDB to access external local or remote data (MED). This is done by defining tables based on different data types, in particular files in various formats, data extracted from other DBMS or products (such as Excel or MongoDB) via ODBC or JDBC, or data retrieved from the environment (for example DIR, WMI, and MAC tables)",
                            "This storage engine supports table partitioning, MariaDB virtual columns and permits defining_special_ columns such as ROWID, FILEID, and SERVID."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/server-usage/storage-engines/connect/introduction-to-the-connect-engine"
                }
            ]
        }
    },
    {
        "id": "file-key-mngt-enc",
        "visible": true,
        "name": "File Key Management",
        "logo": "/assets/logo_plugin_encryption.svg",
        "description": "This plugin reads encryption keys from a plain-text (or encrypted) file, serving as a simple solution or reference implementation for data-at-rest encryption",
        "website": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/file-key-management-encryption-plugin",
        "type": "Encryption",
        "maturity": "Gamma",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About File Key Management",
                    "content": [
                            "MariaDB's data-at-rest encryption requires the use of a key management and encryption plugin. These plugins are responsible both for the management of encryption keys and for the actual encryption and decryption of data.",
                            "MariaDB supports the use of multiple encryption keys. Each encryption key uses a 32-bit integer as a key identifier. If the specific plugin supports key rotation, then encryption keys can also be rotated, which creates a new version of the encryption key.",
                            "The File Key Management plugin that ships with MariaDB is a key management and encryption plugin that reads encryption keys from a plaintext file."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/file-key-management-encryption-plugin"
                }
            ]
        }
    },
    {
        "id": "pam",
        "visible": true,
        "name": "PAM",
        "logo": "/assets/logo_plugin_authentication.svg",
        "description": "This authentication plugin delegates password validation to the OS PAM framework, enabling integration with LDAP, Kerberos, and other services.",
        "website": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-with-pluggable-authentication-modules-pam/authentication-plugin-pam",
        "type": "Authentication",
        "maturity": "Stable",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About PAM",
                    "content": [
                            "The pam authentication plugin allows MariaDB to offload user authentication to the system's Pluggable Authentication Module (PAM) framework. PAM is an authentication framework used by Linux, FreeBSD, Solaris, and other Unix-like operating systems.",
                            "Windows does not support PAM, so the pam authentication plugin does not support Windows. However, one can use a MariaDB client on Windows to connect to MariaDB server that is installed on a Unix-like operating system and that is configured to use the pam authentication plugin."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-with-pluggable-authentication-modules-pam/authentication-plugin-pam"
                }
            ]
        }
    },
    {
        "id": "userstat",
        "visible": true,
        "name": "User Statistics",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "The userstat plugin creates multiple tables allowing the user to better understand the server activity and load.",
        "website": "https://mariadb.com/docs/server/ha-and-performance/optimization-and-tuning/query-optimizations/statistics-for-optimizing-queries/user-statistics",
        "type": "Information Schema",
        "maturity": "Stable",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About User Statistics",
                    "content": [
                            "The User Statistics (userstat) plugin creates the USER_STATISTICS, CLIENT_STATISTICS, the INDEX_STATISTICS, and the TABLE_STATISTICS tables in the INFORMATION_SCHEMA database. As an alternative to these tables, the plugin also adds the SHOW USER_STATISTICS, the SHOW CLIENT_STATISTICS, the SHOW INDEX_STATISTICS, and the SHOW TABLE_STATISTICS statements.",
                            "These tables and commands can be used to understand the server activity better and to identify the sources of your database's load.",
                            "The plugin also adds the FLUSH USER_STATISTICS, FLUSH CLIENT_STATISTICS, FLUSH INDEX_STATISTICS, and FLUSH TABLE_STATISTICS statements."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/ha-and-performance/optimization-and-tuning/query-optimizations/statistics-for-optimizing-queries/user-statistics"
                }
            ]
        }
    },
    {
        "id": "sql-error-log",
        "visible": true,
        "name": "SQL Error Log",
        "logo": "/assets/logo_plugin_audit.svg",
        "description": "The SQL Error Log Plugin allows logging of errors sent to clients to a file, enabling analysis of application-side errors that might otherwise be missed.",
        "website": "https://mariadb.com/docs/server/server-management/server-monitoring-logs/sql-error-log-plugin",
        "type": "Audit",
        "maturity": "Stable",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About SQL Error Log",
                    "content": [
                            "The SQL_ERROR_LOG plugin collects errors sent to clients in a log file defined by sql_error_log_filename, so that they can later be analyzed. The log file can be rotated if sql_error_log_rotate is set.",
                            "Errors are logged as they happen and an error will be logged even if it was handled by a condition handler and was never technically sent to the client.",
                            "Comments are also logged, which can make the log easier to search. But this is only possible if the client does not strip the comments away. For example, the mariadb command-line client only leaves comments when started with the --comments option."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/server-management/server-monitoring-logs/sql-error-log-plugin"
                }
            ]
        }
    },
    {
        "id": "unix-socket",
        "visible": true,
        "name": "Unix Socket",
        "logo": "/assets/logo_plugin_authentication.svg",
        "description": "The unix_socket authentication plugin allows the user to use operating system credentials when connecting to MariaDB via the local Unix socket file. ",
        "website": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-unix-socket",
        "type": "Authentication",
        "maturity": "Stable",
        "distribution": "installed",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Unix Socket",
                    "content": [
                            "The unix_socket authentication plugin is installed by default, and it is used by the 'root'@'localhost' user account by default. This Unix socket file is defined by the socket system variable.",
                            "The unix_socket authentication plugin works by calling the getsockopt system call with the SO_PEERCRED socket option, which allows it to retrieve the uid of the process that is connected to the socket. It is then able to get the user name associated with that uid. Once it has the user name, it will authenticate the connecting user as the MariaDB account that has the same user name.",
                            "The unix_socket authentication plugin is not suited to multiple Unix users accessing a single MariaDB user account."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-unix-socket"
                },
                {
                    "label": "Authentication",
                    "url": "https://mariadb.com/docs/server/security/user-account-management/authentication-from-mariadb-10-4"
                }
            ]
        }
    },
    {
        "id": "parsec",
        "visible": true,
        "name": "PARSEC",
        "logo": "/assets/logo_plugin_authentication.svg",
        "description": "PARSEC is a modern, secure authentication plugin that uses salted passwords and elliptic curve cryptography to prevent replay attacks and secure user credentials.",
        "website": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-parsec",
        "type": "Authentication",
        "maturity": "Gamma",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About PARSEC",
                    "content": [
                            "The PARSEC (Password Authentication using Response Signed with Elliptic Curve) authentication plugin uses salted passwords, key derivation, extensible password storage format, and both server- and client-side scrambles.",
                            "It signs the response with ed25519, but it uses stock unmodified ed25519 as provided by OpenSSL/WolfSSL/GnuTLS."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-parsec"
                }
            ]
        }
    },
    {
        "id": "caching-sha2-password",
        "visible": true,
        "name": "caching_sha2_password",
        "logo": "/assets/logo_plugin_authentication.svg",
        "description": "To aid migrations, MariaDB provides MySQL compatible caching_sha2_password authentication plugin.",
        "website": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-caching_sha2_password",
        "type": "Authentication",
        "maturity": "Gamma",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About caching_sha2_password",
                    "content": "The caching_sha2_password plugin allows to move users from MySQL to MariaDB without requiring them to change their passwords. It should be only used for migration, otherwise a more secure and convenient PARSEC plugin is recommended."
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/plugins/authentication-plugins/authentication-plugin-caching_sha2_password"
                }
            ]
        }
    },
    {
        "id": "handlersocket",
        "visible": true,
        "name": "HandlerSocket",
        "logo": "/assets/logo_plugin_daemon.svg",
        "description": "This plugin enables high-performance NoSQL-like access directly to InnoDB tables, bypassing SQL parsing for fast key-value operations.",
        "website": "https://mariadb.com/docs/server/reference/sql-structure/nosql/handlersocket/handlersocket-installation",
        "type": "Daemon",
        "maturity": "Beta",
        "distribution": "bundled",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About HandlerSocket",
                    "content": "HandlerSocket is a NoSQL plugin for MariaDB and MySQL. It works as a daemon inside the mysqld process, accept tcp connections, and execute requests from clients. HandlerSocket does not support SQL queries. Instead, it supports simple CRUD operations on tables."
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/sql-structure/nosql/handlersocket/handlersocket-installation"
                },
                {
                    "label": "GitHub",
                    "url": "https://github.com/DeNA/HandlerSocket-Plugin-for-MySQL"
                }
            ]
        }
    },
    {
        "id": "xmltype",
        "visible": true,
        "name": "XMLTYPE",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "XMLTYPE is a data type introduced in MariaDB 12.3 for storing XML data.",
        "website": "https://mariadb.com/docs/server/reference/data-types/string-data-types/xmltype",
        "type": "Data Type",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About XMLTYPE",
                    "content": "The XMLTYPE data type is designed to provide convenient storage of XML data, ensure compatibility with Oracle databases as well as support future XML validation and processing capabilities."
                },
                {
                    "title": "Characteristics",
                    "content": {
                        "type": "ul",
                        "items": [
                            "Maximum storage capacity: 4GB (same as LONGBLOB).",
                            "Compatibility: Designed to be compatible with Oracle’s XMLTYPE.",
                            "Validation: XML validation or schema enforcement is not supported.",
                            "Length restriction: Length cannot be specified."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/data-types/string-data-types/xmltype"
                }
            ]
        }
    },
    {
        "id": "inet6",
        "visible": true,
        "name": "INET6",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "IPv6 address data type. Stores IPv6 addresses as 16-byte binary strings, also supporting IPv4 addresses via mapping.",
        "website": "https://mariadb.com/docs/server/reference/data-types/string-data-types/inet6",
        "type": "Data Type",
        "maturity": "Stable",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About INET6",
                    "content": "The INET6 data type is intended for storage of IPv6 addresses, as well as IPv4 addresses assuming conventional mapping of IPv4 addresses into IPv6 addresses. Both short and long IPv6 notation are permitted, according to RFC-5952."
                },
                {
                    "title": "Characteristics",
                    "content": {
                        "type": "ul",
                        "items": [
                            "Values are stored as a 16-byte fixed length binary string, with most significant byte first.",
                            "Storage engines see INET6 as BINARY(16).",
                            "Clients see INET6 as CHAR(39) and get text representation on retrieval."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/data-types/string-data-types/inet6"
                }
            ]
        }
    },
    {
        "id": "mysql-json",
        "visible": true,
        "name": "MYSQL_JSON",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "The MYSQL_JSON plugin provides a JSON data type alias for compatibility, ensuring that tables created with the MySQL JSON type can be read by MariaDB.",
        "website": "https://mariadb.com/docs/server/reference/plugins/other-plugins/mysql_json",
        "type": "Data Type",
        "maturity": "Stable",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About MYSQL_JSON",
                    "content": "The JSON type in MySQL stores the JSON object in its own native form, while, in MariaDB, the JSON type is a LONGTEXT. The mysql_json plugin is used to make it easier to upgrade to MariaDB."
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/plugins/other-plugins/mysql_json"
                },
                {
                    "label": "JSON Data Type",
                    "url": "https://mariadb.com/docs/server/reference/data-types/string-data-types/json"
                }
            ]
        }
    },
    {
        "id": "uuid",
        "visible": true,
        "name": "UUID",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "The UUID data type is intended for the storage of 128-bit UUID (Universally Unique Identifier) data. See the UUID function page for more details on UUIDs themselves.",
        "website": "https://mariadb.com/docs/server/reference/data-types/string-data-types/uuid-data-type",
        "type": "Data Type",
        "maturity": "Stable",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About UUID",
                    "content": [
                            "The UUID data type is intended for the storage of 128-bit UUID (Universally Unique Identifier) data. Data retrieved by this data type is in the string representation defined in RFC4122.",
                            "String literals of hexadecimal characters and CHAR/VARCHAR/TEXT can be cast to the UUID data type. Likewise hexadecimal literals, binary-literals, and BINARY/VARBINARY/BLOB types can also be cast to UUID."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/data-types/string-data-types/uuid-data-type"
                },
                {
                    "label": "UUID Function",
                    "url": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/uuid"
                },
                {
                    "label": "RFC4122",
                    "url": "https://datatracker.ietf.org/doc/html/rfc4122"
                }
            ]
        }
    },
    {
        "id": "inet4",
        "visible": true,
        "name": "INET4",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "The inet4 plugin provides the INET4 data type, allowing for efficient native storage and manipulation of IPv4 addresses as 4-byte binary strings.",
        "website": "https://mariadb.com/docs/server/reference/plugins/other-plugins/inet4",
        "type": "Data Type",
        "maturity": "Stable",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About INET4",
                    "content": "This plugin implements the inet4 data type and functions used by this data type, like conversions. It can be used in stored procedures as a variable type and as a data type for table columns. It is built in to MariaDB Server and it cannot be disabled."
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/plugins/other-plugins/inet4"
                },
                {
                    "label": "INET4 Data Type",
                    "url": "https://mariadb.com/docs/server/reference/data-types/string-data-types/inet4"
                }
            ]
        }
    },
    {
        "id": "hashicorp-key-management",
        "visible": true,
        "name": "Hashicorp Key Management",
        "logo": "/assets/logo_plugin_encryption.svg",
        "description": "The Hashicorp Key Management Pugin is used to implement encryption using keys stored in the Hashicorp Vault KMS.",
        "website": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/hashicorp-key-management-plugin",
        "type": "Encryption",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Hashicorp Key Management",
                    "content": "The HashiCorp Key Management plugin supports key versioning provided by the HashiCorp Vault Server. In previous versions, rotating keys required a server restart to clear the internal cache. As of MariaDB 12.3, you can flush the plugin cache manually while the server is running."
                },
                {
                    "title": "Characteristics",
                    "content": {
                        "type": "ul",
                        "items": [
                            "Authentication is done using the Hashicorp Vault's token authentication method.",
                            "If additional client authentication is required, then the path to the CA authentication bundle file may be passed as a plugin parameter.",
                            "The creation of the keys and their management is carried out using the Hashicorp Vault KMS and their tools.",
                            "The plugin uses libcurl (https) as an interface to the HashiCorp Vault server.",
                            "JSON parsing is performed through the JSON service (through the include/mysql/service_json.h)."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/security/encryption/data-at-rest-encryption/key-management-and-encryption-plugins/hashicorp-key-management-plugin"
                },
                {
                    "label": "Install Vault",
                    "url": "https://developer.hashicorp.com/vault/docs/get-vault"
                }
            ]
        }
    },
    {
        "id": "inet6-aton",
        "visible": true,
        "name": "INET6_ATON",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Convert an IPv6 address to binary. This function takes an IPv6 (or IPv4) address string and returns it as a VARBINARY(16) string.",
        "website": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/inet6_aton",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About INET6_ATON",
                    "content": "Given an IPv6 or IPv4 network address as a string, returns a binary string that represents the numeric value of the address. No trailing zone ID's or traling network masks are permitted. For IPv4 addresses, or IPv6 addresses with IPv4 address parts, no classful addresses or trailing port numbers are permitted and octal numbers are not supported. Returns NULL if the argument is not understood."
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/inet6_aton"
                }
            ]
        }
    },
    {
        "id": "inet-aton",
        "visible": true,
        "name": "INET_ATON",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Convert an IPv4 address to an integer. This function takes a dotted-quad IP string (e.g., '1.2.3.4') and returns its numeric representation.",
        "website": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/inet_aton",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About INET_ATON",
                    "content": "Given the dotted-quad representation of an IPv4 network address as a string, returns an integer that represents the numeric value of the address. Addresses may be 4 or 8-byte addresses. Returns NULL if the argument is not understood."
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/inet_aton"
                }
            ]
        }
    },
    {
        "id": "uuid-v7",
        "visible": true,
        "name": "UUID_v7",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Generate a time-ordered UUID (v7). This function returns a version 7 UUID, which is sortable by creation time.",
        "website": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/uuid_v7",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About UUID_v7",
                    "content": [
                            "Returns a Universally Unique Identifier (UUID) version 7. To generate a version 1 UUID, see the UUID function. To generate a version 4 UUID, see UUID_v4.",
                            "A UUID is designed as a number that is globally unique in space and time. Two calls to UUID() are expected to generate two different values, even if these calls are performed on two separate computers that are not connected to each other.",
                            "A UUID is a 128-bit number represented by a utf8 string of five hexadecimal numbers in aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee format."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/sql-functions/secondary-functions/miscellaneous-functions/uuid_v7"
                },
                {
                    "label": "UUID Data Type",
                    "url": "https://mariadb.com/docs/server/reference/data-types/string-data-types/uuid-data-type"
                }
            ]
        }
    },
    {
        "id": "query-cache-info",
        "visible": true,
        "name": "Query Cache Information",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "This plugin exposes the contents of the query cache via the QUERY_CACHE_INFO table in the Information Schema, aiding in performance analysis.",
        "website": "https://mariadb.com/docs/server/reference/plugins/other-plugins/query-cache-information-plugin",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Query Cache Information",
                    "content": "The QUERY_CACHE_INFO plugin creates the QUERY_CACHE_INFO table in the INFORMATION_SCHEMA database. This table shows all queries in the query cache. Querying this table acquires the query cache lock and will result in lock waits for queries that are using or expiring from the query cache. You must have the PROCESS privilege to query this table."
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/plugins/other-plugins/query-cache-information-plugin"
                },
                {
                    "label": "Query Cache",
                    "url": "https://mariadb.com/docs/server/ha-and-performance/optimization-and-tuning/buffers-caches-and-threads/query-cache"
                }
            ]
        }
    },
    {
        "id": "user-variables",
        "visible": true,
        "name": "User Variables",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "The User Variables plugin adds the USER_VARIABLES table to the Information Schema, allowing users to inspect defined user variables and their values.",
        "website": "https://mariadb.com/docs/server/reference/plugins/other-plugins/user-variables-plugin",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About User Variables",
                    "content": [
                            "The user_variables plugin creates the USER_VARIABLES table in the INFORMATION_SCHEMA database. This table contains information about user-defined variables.",
                            "User-defined variables can be viewed by either querying the USER_VARIABLES, or by running SHOW USER_VARIABLES.",
                            "User-defined variables are reset and the Information Schema table emptied with the FLUSH USER_VARIABLES statement."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/plugins/other-plugins/user-variables-plugin"
                }
            ]
        }
    },
    {
        "id": "query-response-time",
        "visible": true,
        "name": "Query Response Time",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "The Query Response Time plugin collects and displays the distribution of query execution times, helping to identify performance bottlenecks.",
        "website": "https://mariadb.com/docs/server/reference/plugins/other-plugins/query-response-time-plugin",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Query Response Time",
                    "content": [
                            "The query_response_time plugin creates the QUERY_RESPONSE_TIME table in the INFORMATION_SCHEMA database. The plugin also adds the SHOW QUERY_RESPONSE_TIME and FLUSH QUERY_RESPONSE_TIME statements.",
                            "The slow query log provides exact information about queries that take a long time to execute. However, sometimes there are a large number of queries that each take a very short amount of time to execute. This feature provides a tool for analyzing that information by counting and displaying the number of queries according to the length of time they took to execute."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/plugins/other-plugins/query-response-time-plugin"
                },
                {
                    "label": "Slow Query Log",
                    "url": "https://mariadb.com/docs/server/server-management/server-monitoring-logs/slow-query-log/slow-query-log-overview"
                }
            ]
        }
    },
    {
        "id": "disks",
        "visible": true,
        "name": "Disks",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "The Disks plugin adds the DISKS table to the Information Schema, providing metadata about the system's disk storage and usage.",
        "website": "https://mariadb.com/docs/server/reference/plugins/other-plugins/disks-plugin",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About Disks",
                    "content": [
                            "The DISKS plugin creates the DISKS table in the INFORMATION_SCHEMA database. This table shows metadata about disks on the system, enabling monitoring of the disk space status. Accessing the INFORMATION_SCHEMA.DISKS table requires the FILE privilege.",
                            "As an alternative option, the plugin includes the INFORMATION_SCHEMA.MOUNTS table, which contains mount points and their respective disks."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/reference/plugins/other-plugins/disks-plugin"
                }
            ]
        }
    },
    {
        "id": "myrocks-for-mariadb",
        "visible": true,
        "name": "MyRocks for MariaDB",
        "logo": "/assets/logo_plugin_storage_engine.svg",
        "description": "MyRocks is a storage engine based on RocksDB, optimized for high-write workloads and flash storage, offering superior compression and reduced write amplification.",
        "website": "https://mariadb.com/docs/server/server-usage/storage-engines/myrocks/about-myrocks-for-mariadb",
        "type": "Storage Engine",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About MyRocks for MariaDB",
                    "content": [
                            "MyRocks is an open source storage engine that was originally developed by Facebook.",
                            "MyRocks has been extended by the MariaDB engineering team to be a pluggable storage engine that you use in your MariaDB solutions. It works seamlessly with MariaDB features. This openness in the storage layer allows you to use the right storage engine to optimize your usage requirements, which provides optimum performance. Community contributions are one of MariaDB’s greatest advantages over other databases. Under the lead of our developer Sergey Petrunia, MyRocks in MariaDB is occasionally being merged with upstream MyRocks from Facebook.",
                            "MyRocks, typically, gives greater performance for web scale type applications. It can be an ideal storage engine solution when you have workloads that require greater compression and IO efficiency. It uses a Log Structured Merge (LSM) architecture, which has advantages over B-Tree algorithms, to provide efficient data ingestion, like read-free replication slaves, or fast bulk data loading."
                        ]
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/server-usage/storage-engines/myrocks/about-myrocks-for-mariadb"
                },
                {
                    "label": "MyRocks",
                    "url": "https://myrocks.io/"
                }
            ]
        }
    },
    {
        "id": "innodb",
        "visible": true,
        "name": "InnoDB",
        "logo": "/assets/logo_plugin_storage_engine.svg",
        "description": "The default storage engine for MariaDB.",
        "website": "https://mariadb.com/docs/server/server-usage/storage-engines/innodb",
        "type": "Storage Engine",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About InnoDB",
                    "content": "InnoDB is a general purpose transactional storage engine that is performant, ACID-compliant, and well-suited for most workloads."
                },
                {
                    "title": "InnoDB Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "Is available with all versions of MariaDB Enterprise Server and MariaDB Community Server.",
                            "Is a general purpose storage engine.",
                            "Is transactional and well-suited for online transactional processing (OLTP) workloads.",
                            "Is ACID-compliant.",
                            "Performs well for mixed read-write workloads.",
                            "Supports online DDL."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "Documentation",
                    "url": "https://mariadb.com/docs/server/server-usage/storage-engines/innodb"
                }
            ]
        }
    },
    {
        "id": "videx",
        "visible": true,
        "name": "VIDEX",
        "logo": "/assets/logo_videx.jpeg",
        "description": "The VIDEX storage engine is an aggregated, extensible engine suitable for what-if analyses in MariaDB. The name is derived from [VI]rtual in[DEX].",
        "website": "https://github.com/bytedance/videx",
        "type": "Storage Engine",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About VIDEX",
                    "content": [
                            "VIDEX is a virtual/hypothetical index engine for what-if analysis.",
                            "Goal: Evaluate how potential indexes (and optimizer decisions such as join orders) would change query plans without creating real indexes on production data.",
                            "How it works: VIDEX replays optimizer / handler calls using statistics (cardinality, NDV, histograms, etc.) instead of reading table data. Complex statistics computation is offloaded to an external service (VIDEX-Server) via HTTP.",
                            "In practice, you keep your existing MariaDB schema and data as the target, and create a second schema whose tables use ENGINE=VIDEX. You then run EXPLAIN on both schemas and compare plans.",
                            "VIDEX is developed by the ByteBrain Team at ByteDance and serves as a practical, extensible platform for database what-if analysis, index evaluation, and optimizer research. It has been deployed in ByteDance production environments for large-scale slow SQL optimization, processing millions of slow SQL queries daily."
                        ]
                }
            ],
            "links": [
                {
                    "label": "VLDB Demo paper",
                    "url": "https://www.vldb.org/pvldb/vol18/p5231-zhang.pdf"
                },
                {
                    "label": "GitHub",
                    "url": "https://github.com/bytedance/videx"
                },
                {
                    "label": "MariaDB Documentation",
                    "url": "https://mariadb.com/docs/server/server-usage/storage-engines/videx-storage-engine"
                }
            ]
        }
    },
    {
        "id": "rest2sql-plugin",
        "visible": true,
        "name": "REST2SQL-plugin",
        "logo": "/assets/logo_arbaudie.png",
        "description": "A MariaDB daemon plugin under active development that exposes a REST API for querying databases via HTTP GET requests.",
        "website": "https://github.com/MariaDBJones/REST2SQL-plugin",
        "type": "Daemon",
        "maturity": "Pre-alpha",
        "distribution": "external",
        "tags": [],
        "sponsor": "silver",
        "details": {
            "sections": [
                {
                    "title": "About REST2SQL-plugin",
                    "content": [
                            "REST2SQL-plugin is a pre-alpha MariaDB daemon plugin that embeds a lightweight HTTP server directly inside the MariaDB process using libmicrohttpd. Currently supporting read operations via GET to SELECT mapping, the plugin is under active development with POST, PATCH, DELETE, and authentication planned for upcoming releases.",
                            "By running inside the database rather than as an external proxy or middleware layer, it eliminates intermediate network hops and leverages existing database resources directly. The plugin is designed for single-database deployments where simplicity and tight database integration are priorities over a full API gateway."
                        ]
                },
                {
                    "title": "MariaDB Support",
                    "content": "REST2SQL-plugin is a native MariaDB plugin written in C, compiled against the MariaDB plugin API and deployed directly into the server. It is developed by Sylvain Arbaudie of ArBauDie.IT."
                }
            ],
            "links": [
                {
                    "label": "Development Status",
                    "url": "https://github.com/MariaDBJones/REST2SQL-plugin/blob/main/doc/TODO.md"
                },
                {
                    "label": "Compilation",
                    "url": "https://github.com/MariaDBJones/REST2SQL-plugin/blob/main/doc/compilation.md"
                },
                {
                    "label": "ArBauDie.IT",
                    "url": "https://arbaudie.it/"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-vmstat",
        "name": "VMSTAT",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "MariaDB Server plugin exposing Linux host statistics related to vmstat on CPU, Memory and Disks",
        "website": "https://github.com/lefred/mariadb-plugin-vmstat",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About VMSTAT",
                    "content": [
                            "This plugin exposes Linux host statistics as three read-only INFORMATION_SCHEMA tables:",
                            {
                                "type": "ul", 
                                "items": [
                                    "VMSTAT_CPU reads /proc/stat.",
                                    "VMSTAT_MEM reads /proc/meminfo and /proc/vmstat.",
                                    "VMSTAT_DISK reads /proc/diskstats."
                                ] 
                            }
                        ]
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-vmstat"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-process-info",
        "name": "PROCESS_INFO",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "Read-only INFORMATION_SCHEMA plugin that reports Linux /proc/self/task accounting for the MariaDB Server process.",
        "website": "https://github.com/lefred/mariadb-plugin-process-info",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About PROCESS_INFO",
                    "content": [
                            "PROCESS_INFO is a read-only INFORMATION_SCHEMA plugin that reports Linux /proc/self/task accounting for the MariaDB Server process.",
                            "Times are milliseconds and byte columns are bytes, including RSS_BYTES, which is converted from Linux /proc/[pid]/stat's resident-page count using the process's runtime page size. I/O counters are returned as zero if the kernel denies access to a task's io file. A task that exits while the table is being read is safely skipped.",
                            "The parser handles spaces and parentheses in Linux thread names, bounds all procfs reads, rejects malformed or overflowing numbers, follows no symlinks, and does not retain a shared cross-session snapshot. THREAD_NAME is stored with a binary charset so arbitrary bytes in a thread's Linux comm cannot trigger silent charset-conversion mangling."
                        ]
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-process-info"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-oom-info",
        "name": "OOM_INFO",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "`OOM_INFO` is a read-only MariaDB `INFORMATION_SCHEMA` plugin. It reports the Linux OOM-killer values for the MariaDB server process at query time.",
        "website": "https://github.com/lefred/mariadb-plugin-oom-info",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About OOM_INFO",
                    "content": [
                            "OOM_INFO is a read-only MariaDB INFORMATION_SCHEMA plugin. It reports the Linux OOM-killer values for the MariaDB server process at query time.",
                            "The table contains one row with the following information:",
                            "Column SCORE contains the current kernel OOM badness score (0..1000)",
                            "Column ADJ contains the legacy OOM adjustment (-17..15), or NULL if unavailable",
                            "Column SCORE_ADJ contains the current OOM adjustment (-1000..1000), or NULL if unavailable"
                        ]
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-oom-info"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-disk-size-info",
        "name": "disk_size_info",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "MariaDB Server `INFORMATION_SCHEMA` plugin reporting the free and total filesystem capacity for directories used by MariaDB",
        "website": "https://github.com/lefred/mariadb-plugin-disk-size-info",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About disk_size_info",
                    "content": [
                            "disk_size_info is a MariaDB Server INFORMATION_SCHEMA plugin based on mysql-component-disksize. It reports the free and total filesystem capacity for directories used by MariaDB Server.",
                            "The plugin checks MariaDB's data directory, temporary directories, binary and relay log locations, general/slow/error logs, replication metadata, and the Aria and InnoDB storage locations. It also recognizes paths exposed by Galera, RocksDB, DuckDB, the server-audit and SQL-error-log plugins, and AWS key management when those components are installed.",
                            "File-valued variables are converted to their parent directories. Relative paths are resolved against datadir, multiple tmpdir entries and InnoDB data-file specifications are parsed, and duplicate variable/directory pairs are suppressed. Variables unavailable in the running server and paths that cannot be inspected are skipped.",
                            "As filesystem and server path information can be sensitive, rows are returned only to users with the global FILE privilege, following MariaDB's existing INFORMATION_SCHEMA.DISKS plugin."
                        ]
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-disk-size-info"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-viruscan",
        "name": "viruscan",
        "logo": "/assets/logo_plugin_daemon.svg",
        "description": "Integrates ClamAV antivirus scanning into MariaDB Server, exposing SQL functions for scanning data and an Information Schema table for tracking detection history.",
        "website": "https://github.com/lefred/mariadb-plugin-viruscan",
        "type": "Daemon",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About viruscan",
                    "content": "Integrates ClamAV antivirus scanning into MariaDB Server, exposing SQL functions for scanning data and an Information Schema table for tracking detection history."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "Daemon manages the ClamAV engine in memory; functions call into it",
                            "VIRUS_SCAN() — scans a string value, returns detection result",
                            "VIRUS_RELOAD_ENGINE() — refreshes ClamAV signature database without restarting",
                            "INFORMATION_SCHEMA.VIRUSCAN_MATCHES — logs the ten most recent detections",
                            "Three status variables: signatures loaded, engine version, detection count"
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-viruscan"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-crypto-extra",
        "name": "crypto_extra",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Adds cryptographic SQL functions to MariaDB Server via OpenSSL, covering hashing, HMAC, key derivation, symmetric encryption, and secure random generation.",
        "website": "https://github.com/lefred/mariadb-plugin-crypto-extra",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About crypto_extra",
                    "content": [
                            "crypto_extra is a MariaDB Server function plugin providing cryptographic functions that are available in PostgreSQL's pgcrypto, together with a few modern utility primitives. It complements rather than replaces MariaDB's MySQL-compatible MD5(), SHA1(), SHA2(), AES_ENCRYPT(), AES_DECRYPT(), and RANDOM_BYTES().",
                            "crypto_extra's function names and argument order deliberately mirror PostgreSQL's pgcrypto, so most pgcrypto SQL ports over by just dropping the schema qualification and upper-casing the function name."
                        ]
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-crypto-extra"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-date-extra",
        "name": "date_extra",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Adds date and time utility functions to MariaDB Server, covering time bucketing, calendar rounding, business day arithmetic, and ISO week formatting.",
        "website": "https://github.com/lefred/mariadb-plugin-date-extra",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About date_extra",
                    "content": "date_extra is a MariaDB 13.1 function plugin. It adds date bucketing, rounding, business-day, and ISO week-date helpers that are not native MariaDB Server functions."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "DATE_BIN() / TIME_BUCKET() — floor a datetime into fixed-width time buckets with optional origin alignment, useful for time-series aggregations.",
                            "DATE_CEIL() — advance a datetime to the next calendar boundary for a given unit, or return it unchanged if already aligned.",
                            "DATE_ROUND() — round a datetime to the nearest calendar boundary, with midpoints rounded up.",
                            "BUSINESS_DAYS_BETWEEN() — count weekdays (Monday–Friday) in the range between two dates; reversing arguments negates the result.",
                            "ADD_BUSINESS_DAYS() — add or subtract a number of weekdays from a date, automatically skipping Saturday and Sunday.",
                            "ISO_WEEK_DATE() — format a date as YYYY-Www-D using ISO week-year rules, useful for international week numbering."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-date-extra"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-trigram",
        "name": "trigram",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Adds trigram-based string similarity functions to MariaDB Server for fuzzy matching, similarity scoring, and distance calculations.",
        "website": "https://github.com/lefred/mariadb-plugin-trigram",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About trigram",
                    "content": "This native MariaDB Server plugin provides case-insensitive, character-aware trigram matching. Words are padded with two spaces on the left and one on the right, following the convention used by PostgreSQL's pg_trgm."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "TRIGRAM_SIMILARITY() — returns a Jaccard similarity score between 0.0 and 1.0 for two strings.",
                            "TRIGRAM_WORD_SIMILARITY() — finds the greatest similarity between a string and any contiguous section of another, useful for partial matches.",
                            "TRIGRAM_STRICT_WORD_SIMILARITY() — like word similarity but restricts matches to whole word boundaries.",
                            "TRIGRAM_DISTANCE() — returns 1 minus the similarity score, expressing dissimilarity as a distance.",
                            "TRIGRAM_MATCH() — boolean test whether two strings meet a given similarity threshold.",
                            "TRIGRAMS() / TRIGRAM_COUNT() — return the distinct trigram set as a JSON array or its count, useful for inspection and indexing."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-trigram"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-dynamic-data-masking",
        "name": "dynamic_data_masking",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Adds SQL functions for masking sensitive column values at query time, with support for email, SSN, PAN, and custom masking formats.",
        "website": "https://github.com/lefred/mariadb-plugin-dynamic-data-masking",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About dynamic_data_masking",
                    "content": [
                            "This plugin provides transparent output-column policies and native SQL functions for masking sensitive values at query time. It does not modify stored data.",
                            "The transparent column-policy hook is not available in a stock MariaDB server. Building and loading this plugin requires a server tree that already implements the generic COLUMN POLICY plugin type and dispatch hook (new plugin type, st_mariadb_column_policy interface, and the resolver/SELECT * dispatch points). Please check the GitHub documentation for the Installation steps."
                        ]
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "MASK_INNER() / MASK_OUTER() — mask the middle or the outer characters of a value, with configurable mask character.",
                            "MASK_EMAIL() — masks an email address while preserving the first local-part character and the full domain.",
                            "MASK_SSN() / MASK_PAN() — mask Social Security Numbers and payment card numbers, preserving punctuation and trailing digits.",
                            "CURRENT_USER_IN() / CURRENT_ROLE_IN() — check if the current user or active role matches a given list, for conditional masking logic.",
                            "RELOAD_DATA_MASKING_POLICIES() — reload masking policy rules from file without restarting the server."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-dynamic-data-masking"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-type-email",
        "name": "type_email",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "Introduces a native EMAIL data type with RFC-compliant validation and utility functions for extracting and normalizing email address components.",
        "website": "https://github.com/lefred/mariadb-plugin-type-email",
        "type": "Data Type",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About type_email",
                    "content": "Introduces a native EMAIL data type with RFC-compliant validation and utility functions for extracting and normalizing email address components."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "Native EMAIL column type enforces RFC-compliant validation on storage, including local-part length, DNS label format, and IPv4/IPv6 literal addresses.",
                            "EMAIL_IS_VALID() — returns 1 or 0 for a given string, or NULL for SQL NULL input.",
                            "EMAIL_LOCAL_PART() / EMAIL_DOMAIN() — extract the local part or domain from a valid address, returning NULL for invalid input.",
                            "EMAIL_NORMALIZE() — normalizes an address by lowercasing the domain while preserving the original local part."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-type-email"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-levenshtein",
        "name": "levenshtein",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Adds Levenshtein and Damerau-Levenshtein edit distance functions for fuzzy string matching, similarity scoring, and edit operation analysis.",
        "website": "https://github.com/lefred/mariadb-plugin-levenshtein",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About levenshtein",
                    "content": "Adds Levenshtein and Damerau-Levenshtein edit distance functions for fuzzy string matching, similarity scoring, and edit operation analysis. All functions count characters according to each value's MariaDB character set, propagate NULL, and compare Unicode code points exactly. Invalid limits, thresholds, and costs return NULL."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "LEVENSHTEIN() / LEVENSHTEIN_RATIO() — compute the edit distance between two strings or its normalized 0.0-1.0 similarity score.",
                            "LEVENSHTEIN_WITH_LIMIT() — banded calculation that returns max_distance + 1 early when the actual distance exceeds a given threshold.",
                            "DAMERAU_LEVENSHTEIN() / DAMERAU_LEVENSHTEIN_RATIO() — like Levenshtein but counts adjacent transpositions as a single edit.",
                            "LEVENSHTEIN_SIMILAR() — boolean check whether two strings meet a given similarity threshold.",
                            "LEVENSHTEIN_EDITOPS() — returns a JSON array of the minimal sequence of insert, delete, and replace operations to transform one string into another.",
                            "LEVENSHTEIN_WEIGHTED() — calculates edit distance with configurable per-operation costs for insertion, deletion, and substitution."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-levenshtein"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-json-extra",
        "name": "json_extra",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Implements RFC 6902 JSON Patch and RFC 6901 JSON Pointer standards, enabling diff generation and atomic patch application for JSON documents.",
        "website": "https://github.com/lefred/mariadb-plugin-json-extra",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About json_extra",
                    "content": "Implements RFC 6902 JSON Patch and RFC 6901 JSON Pointer standards, enabling diff generation and atomic patch application for JSON documents."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "JSON_DIFF() — generates a deterministic RFC 6902 patch document describing the operations needed to transform one JSON document into another.",
                            "JSON_PATCH() — applies an RFC 6902 patch to a JSON document atomically; if any operation fails, the entire call returns NULL.",
                            "Supports all six RFC 6902 operations: add, remove, replace, move, copy, and test.",
                            "Useful for audit trails, change replay, and conditional JSON updates via the test operation."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-json-extra"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-type-url",
        "name": "type_url",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "Introduces a native URL data type with RFC 3986-compliant syntactic validation and utility functions for extracting URL components.",
        "website": "https://github.com/lefred/mariadb-plugin-type-url",
        "type": "Data Type",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About type_url",
                    "content": "Introduces a native URL data type with RFC 3986-compliant syntactic validation and utility functions for extracting URL components."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "Native URL column type enforces RFC 3986 validation on storage, rejecting malformed percent-escapes, invalid ports, and relative paths.",
                            "URL_SCHEME() — extracts the URI scheme component (e.g., https, ftp, mailto).",
                            "URL_HOST() — extracts the host, excluding userinfo, brackets, and port; returns NULL for schemes without an authority.",
                            "URL_PATH() — returns the path component, excluding query strings and fragments."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-type-url"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-statement-digest",
        "name": "statement_digest",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Exposes MariaDB's internal Performance Schema digest calculation as SQL functions, returning the digest hash and normalized statement text.",
        "website": "https://github.com/lefred/mariadb-plugin-statement-digest",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About statement_digest",
                    "content": "Exposes MariaDB's internal Performance Schema digest calculation as SQL functions, returning the digest hash and normalized statement text."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "STATEMENT_DIGEST() — generates the 32-character hexadecimal digest used by Performance Schema statement event tables.",
                            "STATEMENT_DIGEST_TEXT() — returns the normalized SQL text used by Performance Schema for statement grouping.",
                            "Both functions invoke MariaDB's native parser; they return NULL for NULL input and report syntax errors for invalid SQL.",
                            "Respects the max_digest_length server variable, matching the truncation behavior of normal statement processing."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-statement-digest"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-variable-owner",
        "name": "variable_owner",
        "logo": "/assets/logo_plugin_information_schema.svg",
        "description": "Adds an Information Schema table identifying which server component or plugin registered each system variable.",
        "website": "https://github.com/lefred/mariadb-plugin-variable-owner",
        "type": "Information Schema",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About variable_owner",
                    "content": "Adds an Information Schema table identifying which server component or plugin registered each system variable."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "INFORMATION_SCHEMA.VARIABLES_OWNER table exposes two columns: VARIABLE_NAME and VARIABLE_OWNER.",
                            "Reports ownership as either server (for core server variables) or the registering plugin name (storage engine, authentication plugin, etc.).",
                            "Covers all variables present in INFORMATION_SCHEMA.SYSTEM_VARIABLES, with full parity.",
                            "Useful for auditing plugin dependencies and understanding which variables belong to which component."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-variable-owner"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-gtid-info",
        "name": "gtid_info",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Adds SQL functions for GTID analysis and flashback operations, enabling transaction inspection, gap detection, and reversible DML generation from retained binary logs.",
        "website": "https://github.com/lefred/mariadb-plugin-gtid-info",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About gtid_info",
                    "content": "Adds SQL functions for GTID analysis and flashback operations, enabling transaction inspection, gap detection, and reversible DML generation from retained binary logs. The functions require binary logging. Both traditional file binary logs and --binlog-storage-engine=innodb are supported."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "GTID_INFO() — returns a JSON document with the binary log position, timestamps, and event composition for a specific GTID.",
                            "GTID_AT() — returns the GTID position visible at a specified point in time.",
                            "BINLOG_GTID_LIST() / BINLOG_GTID_LIST_GAPS() / BINLOG_GTID_LIST_RANGES() — list, gap-detect, or compress GTIDs within a retained binary log file.",
                            "GTID_LIST_BINLOGS() — returns a JSON array of every retained binary log file containing a given GTID list.",
                            "GTID_FLASHBACK() / GTID_FLASHBACK_TO() — generate or execute reverse row-DML scripts to undo one or more transactions within the same replication domain."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-gtid-info"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-datetime-tz-type",
        "name": "datetime_tz_type",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "Introduces a DATETIME_WITH_TIME_ZONE data type that stores values as UTC instants and renders them in the current session's time zone.",
        "website": "https://github.com/lefred/mariadb-plugin-datetime-tz-type",
        "type": "Data Type",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About datetime_tz_type",
                    "content": "Introduces a DATETIME_WITH_TIME_ZONE data type that stores values as UTC instants and renders them in the current session's time zone. This differs from DATETIME, which stores and returns the wall-clock value unchanged."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "Native DATETIME_WITH_TIME_ZONE column type stores timestamps as UTC, avoiding the wall-clock ambiguity of the standard DATETIME type.",
                            "Automatically converts stored UTC values to the session's active time zone on retrieval.",
                            "Accepts string literals with explicit numeric timezone offsets (e.g., +05:30, -05:00).",
                            "Supports fractional seconds with 0-6 decimal places of precision."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-datetime-tz-type"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-disabled-functions",
        "name": "disabled_functions",
        "logo": "/assets/logo_plugin_daemon.svg",
        "description": "A daemon plugin that removes selected built-in SQL functions from the server registry at startup, restricting access for security or operational reasons.",
        "website": "https://github.com/lefred/mariadb-plugin-disabled-functions",
        "type": "Daemon",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About disabled_functions",
                    "content": "A daemon plugin that removes selected built-in SQL functions from the server registry at startup, restricting access for security or operational reasons."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "Configured via the disabled_functions_list system variable, accepting a comma- or whitespace-separated list of function names.",
                            "Function name matching is case-insensitive.",
                            "Disabled functions return an error as if they do not exist; all other functions are unaffected.",
                            "Disabling is permanent for the server's lifetime — unloading the plugin does not restore functions until a server restart without the plugin."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-disabled-functions"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-extra-misc",
        "name": "extra_misc",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Adds miscellaneous utility SQL functions for text normalization, URL slug generation, elapsed time formatting, number formatting, and duration parsing.",
        "website": "https://github.com/lefred/mariadb-plugin-extra-misc",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About extra_misc",
                    "content": "Adds miscellaneous utility SQL functions for text normalization, URL slug generation, elapsed time formatting, number formatting, and duration parsing."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "unaccent() — strips common Latin diacritics from a string (e.g., é → e, ü → u).",
                            "slugify() — converts text to a URL-friendly slug by removing accents, lowercasing, and replacing separator sequences with hyphens.",
                            "age() — returns elapsed time between a date or datetime and the current statement timestamp as a human-readable string (e.g., 2y 3mo 4d).",
                            "human_number() — formats large numbers with SI-style suffixes (e.g., 1234567 → 1.23M).",
                            "parse_duration() — converts human-readable duration strings to seconds, supporting unit groups, HH:MM:SS notation, and ISO 8601 syntax."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-extra-misc"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-uuid-more",
        "name": "uuid_more",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Extends MariaDB's UUID handling with functions for metadata extraction, format normalization, sortability detection, and Base64 conversion.",
        "website": "https://github.com/lefred/mariadb-plugin-uuid-more",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About uuid_more",
                    "content": "Extends MariaDB's UUID handling with functions for metadata extraction, format normalization, sortability detection, and Base64 conversion."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "uuid_info() — returns comprehensive UUID metadata as JSON: version, variant, embedded timestamp, and sortability.",
                            "uuid_variant() — returns the UUID variant classification (RFC 4122, Microsoft, NCS, or Future).",
                            "uuid_is_ordered() — checks whether a UUID's layout preserves time-sortable ordering.",
                            "uuid_node() — extracts the node/MAC address from UUIDv1 and UUIDv6 values.",
                            "uuid_canonical() — normalizes UUID text to lowercase canonical format with hyphens.",
                            "uuid_to_base64() / base64_to_uuid() — convert between raw 16-byte UUID representation and Base64 encoding."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-uuid-more"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-uuid-time",
        "name": "uuid_time",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Extracts embedded timestamps from UUIDv1 and UUIDv7 values, returning formatted datetime, Unix time, and human-readable elapsed time.",
        "website": "https://github.com/lefred/mariadb-plugin-uuid-time",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About uuid_time",
                    "content": "Extracts embedded timestamps from UUIDv1 and UUIDv7 values, returning formatted datetime, Unix time, and human-readable elapsed time."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "uuid_to_timestamp() — extracts the embedded timestamp as YYYY-MM-DD HH:MM:SS.mmm.",
                            "uuid_to_timestamp_long() — renders the embedded timestamp using the server's locale and session time zone.",
                            "uuid_to_unixtime() — returns the embedded timestamp as a Unix time value in seconds.",
                            "uuid_age() — returns elapsed time since the UUID's timestamp as fractional seconds.",
                            "uuid_age_long() — returns elapsed time as a human-readable duration string (e.g., 3y 3mo 12d).",
                            "Returns NULL for valid UUIDs without embedded timestamps (e.g., UUIDv4); raises an error for invalid UUID strings."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-uuid-time"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-tcmalloc-profiler",
        "name": "tcmalloc_profiler",
        "logo": "/assets/logo_plugin_function.svg",
        "description": "Enables heap and CPU profiling of MariaDB Server via gperftools/tcmalloc, with profiling sessions controlled through SQL functions.",
        "website": "https://github.com/lefred/mariadb-plugin-tcmalloc-profiler",
        "type": "Function",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": false,
        "details": {
            "sections": [
                {
                    "title": "About tcmalloc_profiler",
                    "content": "Enables heap and CPU profiling of MariaDB Server via gperftools/tcmalloc, with profiling sessions controlled through SQL functions."
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "TCMALLOC_MEMPROF_START() / TCMALLOC_MEMPROF_STOP() — start and stop heap profiling sessions.",
                            "TCMALLOC_MEMPROF_DUMP() / TCMALLOC_MEMPROF_DIFF() — capture additional heap snapshots or compare two sequential dumps.",
                            "TCMALLOC_MEMPROF_REPORT() — generate a heap analysis report in text or DOT graph format via pprof.",
                            "TCMALLOC_CPUPROF_START() / TCMALLOC_CPUPROF_STOP() / TCMALLOC_CPUPROF_FLUSH() — control CPU profiling sessions with optional time limits.",
                            "TCMALLOC_CPUPROF_REPORT() — generate CPU usage analysis in text or DOT graph format.",
                            "TCMALLOC_PROFILER_CLEANUP() — remove generated profile files from disk."
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/mariadb-plugin-tcmalloc-profiler"
                }
            ]
        }
    },
    {
        "id": "mariadb-plugin-type-money",
        "name": "Code example type_money",
        "logo": "/assets/logo_plugin_data_type.svg",
        "description": "Example of Extending MariaDB with a new Data Type using Handler_Type Framework",
        "website": "https://github.com/lefred/type_money",
        "type": "Data Type",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": true,
        "details": {
            "sections": [
                {
                    "title": "About type_money",
                    "content": "This plugin serves as a coding example explaing by our Community Advocate, Frédéric (lefred) Descamps, over a 5 parts blog series. The goal of the entire series is to create a new plugin data type MONEY to store and display amounts with currency."
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/lefred/type_money"
                },
                {
                    "label": "lefred's blog",
                    "url": "https://lefred.be/content/adding-a-new-data-type-to-mariadb-with-type_handler-part-0/"
                },
                {
                    "label": "MariaDB Foundation blog",
                    "url": "https://mariadb.org/adding-a-new-data-type-to-mariadb-with-type_handler-part-0/"
                }
            ]
        }
    },
    {
        "id": "selective-trace",
        "name": "Selective_trace",
        "logo": "/assets/logo_selective_trace.jpg",
        "description": "A MariaDB plugin that traces only the queries you choose — by schema, table, command, or connection — with near-zero overhead.",
        "website": "https://github.com/Kevenny/mariadb-selective-trace-plugin",
        "type": "Audit",
        "maturity": "",
        "distribution": "",
        "tags": [],
        "sponsor": false,
        "contributor": true,
        "details": {
            "sections": [
                {
                    "title": "About Selective_trace",
                    "content": [
                            "selective_trace is an open-source (GPLv2) audit-API plugin for MariaDB 11.4 and 12.3+ that traces only the queries matching a configured filter, as a low-overhead alternative to the all-or-nothing general_log. It filters by schema, table (cross-schema), command type, transaction command, or connection id, and writes events as JSON lines or into a table.",
                            "It is hot-configurable via SET GLOBAL with no restart, masks credentials in DCL statements, and measured near-zero overhead in realistic workloads. The plugin is validated across MariaDB 11.4.x and 12.3.x on Ubuntu, Oracle Linux 8, and Oracle Linux 9."
                        ]
                },
                {
                    "title": "Key Features",
                    "content": {
                        "type": "ul",
                        "items": [
                            "Targeted tracing — capture only the schemas, tables, command types, transaction commands, or connections you care about, instead of logging everything",
                            "Low overhead — filters before writing; measured ~0% impact in realistic workloads versus roughly +10% for general_log",
                            "Flexible output — one JSON object per line to a file, or rows in mysql.selective_trace_events, with millisecond query duration",
                            "Safe by default — credential masking for DCL statements and hot reconfiguration via SET GLOBAL without a server restart",
                            "Broadly validated — 149 unit tests, MariaDB MTR suite, Valgrind (zero plugin leaks), and a 7/7 security battery across two server series and three Linux platforms"
                        ]
                    }
                }
            ],
            "links": [
                {
                    "label": "GitHub",
                    "url": "https://github.com/Kevenny/mariadb-selective-trace-plugin"
                }
            ]
        }
    }
]