The MySQL server currently provides two different APIs
that allow to extend its functionality dynamicly at
runtime: User Defined Functions (UDFs) since MySQL 3.23
and Plugins starting with MySQL 5.1.
Both APIs require require quite a bit of knowledge
to get started with, e.g. required include files,
compiler and linker options, the actual API,
required helper functions …
The code generator approach tries to shield you
from these infrastructural details as much as
possible so that you can start to implement and
test the actual plugin functionality almost
There are actually two different code generators
named CodeGen_MySQL_UDF and CodeGen_MySQL_Plugin
that generate project code for the two different
The generator input files consist of a mix of
XML tags for the plugin specification and embedded
code snippets for the actual functionality.
A very minimalistic UDF extension specification file
looks like this for example:
return val * 2;
and a working UDF extension can be created from
it with just the four simple commands:
Both code generators are derived from the same
code generator framework packages (that is also used by
the pecl-gen code generator for PHP extensions).
Currently the two generators cover the following
types of pluggable extensions:
- User Defined Functions
- Daemon Plugins
- Fulltext Parser Plugins
- Information Schema Table Plugins
- Storage Engine Plugins (work in Progress)
The code generators take care of
- autotool input files to generate proper
“configure” and “Makefile” files
- ready-to-compile code and header files
- integration of additional source files,
including e.g. flex and bison parser sources
- a mysqltest based test framework
- docbook based documentation skeletons
- windows build support (work in progress)
Preliminary information on both code generators is available here:
Some examples of MySQL UDFs created with this tools:
Hartmut studied electric engineering and computer sciense with biology as a sub topic in Germany. He has been part of the PHP development and documentation team since late 1999.
He joined the MySQL support team in 2004 and is now a principal support engineer with a focus on MySQL Cluster.
View a complete list of MySQL contacts.