Skip to main content
VillageSQL 是 MySQL 的一个跟踪分支,并且可以作为直接替代品使用。MySQL 插件和组件接口在 VillageSQL 中与在 MySQL 中一样工作。VillageSQL 提供了 VillageSQL 扩展框架 (VEF)。对于添加新功能(自定义 SQL 函数、自定义类型、集成等),VEF 扩展是正确的模型。

应该放在哪里

如果您要构建新的东西,请在您自己的仓库中构建 VEF 扩展。插件和组件也可以工作,但 VEF 是正确的模型——请参阅为什么使用扩展而不是插件和组件 应该放在 VillageSQL Server 仓库中的贡献:

为什么使用扩展而不是插件和组件

MySQL 插件和组件在 VillageSQL 中可以工作。VEF 扩展可以提供更多功能:
  • 自定义类型——定义新的列类型,插件和 UDF 无法做到这一点
  • 打包——以 .veb 文件形式分发,使用 INSTALL EXTENSION 安装
  • 无需重启——扩展在运行时加载和卸载
  • 版本控制——在扩展清单中声明,由服务器强制执行

创建新扩展

VEF 有两个 SDK,两者都通过同一框架进行注册: C++ SDK 目前更为完整(聚合、prerun、变长参数、系统变量和状态变量、keyring、列存储);Rust SDK 涵盖纯函数扩展和自定义类型。

如果 VEF 不支持您需要的功能

VEF 仍在不断发展。如果您需要一个尚未存在的钩子或功能:
  • 提交一个 Issueserver 仓库,描述您需要的内容
  • 对已有的 Issue 点赞,如果该请求已经存在
  • 提交一个 PR,将钩子添加到 VEF 中——欢迎在 server 仓库中进行框架改进