系统视图
INFORMATION_SCHEMA.EXTENSIONS
列出所有当前安装的 VillageSQL 扩展。INSTALL EXTENSION 和 UNINSTALL EXTENSION 是 VillageSQL SQL 扩展。
它们不是 MySQL 8.4 标准语法的组成部分。
示例:
EXTENSION_NAME 值均为小写,与传递给 make_extension() 的名称匹配。
该视图反映当前的安装状态。
这四个 PENDING_* 列跟踪已计划的 ALTER EXTENSION ... AT RESTART
版本更改。有关工作流程,请参阅 管理扩展。
INFORMATION_SCHEMA.COLUMNS(自定义类型)
使用自定义扩展类型的列可以通过标准的INFORMATION_SCHEMA.COLUMNS 视图查看。自定义类型在 DATA_TYPE 和 COLUMN_TYPE 列中显示为 extension_name.type_name(例如,vsql_complex.COMPLEX)。
示例:
INFORMATION_SCHEMA.EXTENSION_REGISTRATION
将每个已加载扩展的内存中 VEF 注册结构作为 JSON 文档公开。使用它来验证服务器是否在INSTALL EXTENSION 之后正确解析了扩展的函数、类型和系统变量。
常用查询
查找扩展依赖项
在卸载扩展之前,查找哪些列使用了特定扩展的类型:列出所有扩展及其自定义类型列
查找使用扩展类型的表
系统变量
veb_dir
运行时只读。服务器查找.veb 扩展包文件的目录路径。在 my.cnf 的 [mysqld] 下设置;无法在不重新启动服务器的情况下更改。
my.cnf 中配置:
villagesql_server_version
只读全局变量。返回编译到服务器二进制文件中的 VillageSQL 版本字符串。格式为{codebase}_{major}.{minor}.{patch}[-prerelease],其中 codebase 指明此构建
所派生的上游分叉(此处为 mysql-8.4)。这与 villagesql_schema_version 不同,
后者以相同的 {codebase}_{version} 格式报告内部元数据目录上标记的版本。
villagesql_vef_server_protocol
只读全局变量。返回此服务器构建支持的最高 VEF 协议版本。扩展作者可以将此值与types.h 中的协议常量进行比较,以确定在注册期间哪些 ABI 功能可用。
协议 V4 新增内容
协商
VEF_PROTOCOL_4 或更高版本的扩展可以访问 vef_type_desc_t 上的
variable_length 字段。当设置为 true 时,该类型的持久化大小按值确定,
而不是单一的固定占用空间。变长类型还必须将 max_persisted_length 声明为
上限。使用 TypeBuilder 上的 variable_length_type() 构建器方法来设置此
标志——不要直接写入 variable_length。仅当协商的协议为 VEF_PROTOCOL_4
或更高版本时,服务器才会读取该字段。
VEF_PROTOCOL_4 还在 vef_func_desc_t 上新增了 max_result_length 字段。
函数可以声明其 STRING 结果的最大长度(以字符为单位),使得物化结果——
GROUP BY/DISTINCT 临时表、CREATE TABLE ... SELECT、UNION——保留完整值,
而不是在参数宽度处截断。0 会回退到参数宽度;它仅适用于 STRING,且上限为
VEF_MAX_RESULT_LENGTH(16 MiB / 16777216 字节)。声明的较大值会被限制到该上限。
使用 FuncBuilder 上的 max_result_length() 构建器方法来设置它。
协议 V4 正在积极开发中。选择加入的扩展必须使用 -DVSQL_USE_DEV_ABI=ON
构建,并且应预期它在稳定之前会发生 ABI 更改。
有关完整的 vef_type_desc_t 和 vef_func_desc_t 定义,请参阅 abi/types.h;
有关 variable_length_type(),请参阅 type_builder.h;有关 max_result_length(),
请参阅 func_builder.h。
该值反映了编译时常量 vef_server_protocol_version,并且无法在运行时更改。
villagesql_build_info
只读全局变量。返回一个 JSON 对象,其中包含有关此服务器二进制文件如何构建的 元数据:源提交、工作树状态和构建环境。
**作用域:**全局,只读。无法在运行时设置。
干净的发布构建的
is_dirty 为 false,且所有三个文件计数字段均为零。
从修改过的工作树构建时,会在 files_added、files_deleted 或 files_modified
中显示非零计数。
后续步骤
管理扩展
监控和排除扩展故障
安装扩展
添加新的扩展
扩展架构
了解内部结构
可用扩展
浏览扩展目录

