You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
MDBF-1224: fix the structure of the plugin MD file
This requires moxygen 2.1.16! Added a check
Implemented a structure for the plugin API documentation.
On the top there's a main page to give top level overview and
concepts.
It eventually references the Moxygen documentation.
The moxygen documentation is a series of nested doxygen groups
that define the structure for the whole Plugin API documentation.
There are top levels like "server plugin API" and "client plugin API".
These branch into futher subgroups as needed.
The MariaDB plugin API allows development of plugins that can extend the basic server functionality.
4
+
MariaDB Server Plugin API is a C-based extensibility framework
5
+
(largely compatible with MySQL’s but extended) that allows dynamic or
6
+
static loading of modules to add or modify server behavior without
7
+
recompiling the core server.
5
8
6
-
- Concepts
9
+
- @subpage concepts
7
10
- Get started: Building a plugin
8
11
- Plugin types
9
12
- Plugin services
10
13
- [API reference](api.md#)
11
-
*/
14
+
*/
15
+
16
+
/**
17
+
@page concepts Plugin API Concepts
18
+
19
+
@section concept_big_picture The Big Bicture: The server, Plugins and Interfaces
20
+
21
+
The server does, at certain stages of its execution, call plugin APIs when it
22
+
needs certain operation performed: e.g. authenticate a user, log a message,
23
+
read and write from/to a database table etc.
24
+
25
+
These API are like written functionality contracts.
26
+
They allow separating the server functionality from the actual API
27
+
implementations themselves. And, since the API implementions are a dynamic set,
28
+
adding new implementations extends the server functionality
29
+
(e.g. adds new ways a user can be authenticated or message be logged)
30
+
without having to re-compile and even re-start the server itself.
31
+
32
+
The MariaDB plugin infrastructure uses the following logical terms:
33
+
34
+
@subsection concept_plugin_api Plugin API
35
+
36
+
A well defined, versioned and stable interface specification.
37
+
It's also abstract, as it's not tied to any one specific implementation.
38
+
39
+
@subsection concept_plugin Plugin
40
+
41
+
A named and versioned implementation of a specific @ref concept_plugin_api.
42
+
43
+
@subsection concept_plugin_library Plugin Library
44
+
45
+
(habitually abbreviated as a plugin)
46
+
An executable binary that contains one or more @ref concept_plugin that can
47
+
be accessed by the server when it needs to call plugin API implementations.
48
+
49
+
50
+
@sa @ref implementation on how the above concepts are implemented.
51
+
*/
52
+
53
+
/**
54
+
@page implementation Plugin API Implementation
55
+
56
+
This is how the individual abstract concepts are implemented and
57
+
interact with each other.
58
+
59
+
@section impl_server The Server Plugin API implementation
60
+
61
+
The server is the bedrock of the plugin infrastructure and contains the
62
+
base implementation to make use of it.
63
+
Plugins can theoretically be loaded into other binaries, but chances are
64
+
that they won't operate all that well (if at all) in this case since they
65
+
heavily depend on server's infrastructure.
66
+
67
+
Here's what the server implements to support plugins:
68
+
69
+
@subsection impl_server_global_plugin_list The global plugin list
70
+
71
+
The server maintains a global in-memory list of all available plugins (plugin_array), mirrored into a set of hash tables (plugin_hash) and guarded by LOCK_plugin.
72
+
73
+
The plugin libraries containing the available plugins can be:
74
+
- statically linked into the server binary
75
+
- dynamically loaded at startup via the --plugin-load... command line arguments
76
+
- dynamically loaded just prior to the server's commencement of normal operations from the mysql.plugins table.
77
+
- dynamically loaded at runtime via the INSTALL PLUGIN SQL command.
78
+
- unloaded at runtime via the UNINSTALL PLUGIN SQL command
79
+
- unloaded at server shutdown
80
+
81
+
The server implements all of the above possibilities in its code.
82
+
83
+
It also implements and provides a list of interfaces the plugins can use to call back and interact with the server.
84
+
These are called @ref impl_server_plugin_services.
0 commit comments