扩展 MySQL 8.0  / 第 4 章 MySQL 插件 API  / 4.4 编写插件  /  4.4.1 插件编写概述

4.4.1 插件编写概述

这些条件适用于插件编写:

  • 插件使用的 MySQL 头文件包含 C++ 代码,因此插件必须编译为 C++ 代码。

  • 您必须在存在整个服务器源代码的情况下编译插件,而不仅仅是库和头文件。

  • 编译的插件在服务器版本之间不兼容。针对 MySQL 8.0 编译的插件。X, 不能保证它能与 MySQL 8.0 一起工作。Y服务器无需为 MySQL 8.0 重新编译。Y.

  • 插件是动态加载和卸载的,因此您的操作系统必须支持动态加载,并且您必须动态(而非静态)编译调用应用程序。对于服务器插件,这意味着 mysqld必须动态链接。

以下过程概述了创建插件库所需的步骤。接下来的部分提供了有关设置插件数据结构和编写特定类型插件的更多详细信息。

  1. 在插件源文件中,包含插件库需要的头文件。该 plugin.h文件是必需的,库可能还需要其他文件。例如:

    #include <stdlib.h>
    #include <ctype.h>
    #include <mysql/plugin.h>
  2. 设置插件库文件的描述符信息。对于服务器插件,编写库描述符,它必须包含文件中每个服务器插件的通用插件描述符。有关详细信息,请参阅 第 4.4.2.1 节,“服务器插件库和插件描述符”。此外,为库中的每个服务器插件设置类型特定的描述符。每个插件的通用描述符都指向其特定类型的描述符。

    对于客户端插件,编写客户端描述符。有关详细信息,请参阅 第 4.4.2.3 节,“客户端插件描述符”

  3. 为每个插件编写插件接口函数。例如,每个插件的通用插件描述符指向服务器在加载和卸载插件时应调用的初始化和取消初始化函数。插件的类型特定描述也可能指向接口函数。

  4. 对于服务器插件,设置状态和系统变量(如果有)。

  5. 将插件库编译为共享库,安装到插件目录下。有关详细信息,请参阅 第 4.4.3 节,“编译和安装插件库”

  6. 对于服务器插件,向服务器注册插件。有关详细信息,请参阅 安装和卸载插件

  7. 测试插件以验证它是否正常工作。