扩展 MySQL 9.0  /  MySQL 插件 API  /  编写插件

4.4 编写插件

要创建插件库,您必须提供所需的描述符信息,这些信息指示库文件包含哪些插件,并为每个插件编写接口函数。

每个服务器插件都必须有一个通用描述符,用于向插件 API 提供信息,以及一个特定于类型的描述符,用于提供有关给定类型插件的插件接口的信息。通用描述符的结构对于所有插件类型都是相同的。特定于类型的描述符的结构因插件类型而异,并由插件需要执行的操作的要求决定。服务器插件接口还允许插件公开状态和系统变量。这些变量可以通过 SHOW STATUSSHOW VARIABLES 语句以及相应的 INFORMATION_SCHEMA 表查看。

对于客户端插件,架构略有不同。每个插件都必须有一个描述符,但没有分为单独的通用和特定于类型的描述符。相反,描述符以所有客户端插件类型共有的固定成员集开头,并且通用成员之后是实现特定插件类型所需的任何其他成员。

服务器插件包含成为正在运行的服务器一部分的代码,因此在编写插件时,您受限于所有其他适用于编写服务器代码的约束。例如,如果您尝试使用 libstdc++ 库中的函数,则可能会遇到问题。这些约束在未来版本的服务器中可能会发生变化,因此最初为旧服务器编写的插件可能需要修改才能升级服务器。有关这些约束的信息,请参阅 MySQL 源配置选项处理编译 MySQL 时出现的问题

客户端插件编写者应避免依赖于调用应用程序具有的符号,因为您无法确定哪些应用程序将使用该插件。