提交一个社区扩展
社区扩展必须是公开的、开源的,并且托管在 GitHub 上。 鼓励此类扩展的用户检查相关的扩展仓库以提供反馈、查看实现并报告问题。
要提交社区扩展,请向 社区扩展仓库 提交一个 pull request,其中包含一个单独的 description.yml
文件,位于 extensions/扩展名称
文件夹中。
YAML 描述符
YAML 描述符的结构如下:
字段 | 描述 |
---|---|
extension.name |
扩展的名称。 扩展名不区分大小写,因此只允许使用小写字母、数字以及 - 或 _ 。 |
extension.description |
扩展的简短描述 |
extension.version |
扩展的语义版本 |
extension.language |
C++ 、Rust & C++ 、C++ & SQL ,或扩展代码依赖的任何语言组合 |
extension.build |
扩展使用的构建系统,目前仅支持 cmake 。 |
extension.licence |
适用于扩展的许可证 |
extension.maintainers |
扩展的维护者列表 |
extension.excluded_platforms |
可选,允许指定某些平台不受支持 |
extension.requires_toolchains |
可选,允许指定是否需要额外的构建时依赖项 |
repo.github |
GitHub 托管的公共仓库的组织名称 '/' 仓库名称 |
repo.ref |
扩展的 Git 引用 |
这些字段用于构建、测试和部署扩展,也可能反映在文档中。
鼓励扩展维护者在描述符中提供两个可选字段,仅用于自动生成的文档中
字段 | 描述 |
---|---|
docs.hello_world |
一个 Hello, World! 代码片段,即扩展功能的自包含示例 |
docs.extended_description |
扩展的额外上下文、相关链接或扩展功能导览 |
托管的扩展文档页面
每个社区扩展都有一个文档页面,网址为 https://duckdb.org/community_extensions/extensions/扩展名称
。 例如,这是 quack 的页面。
文档页面是根据 YAML 描述符文件中提供的字段(该文件是 社区扩展仓库 的一部分)以及给定的扩展在 DuckDB 中引入的自动检测到的更改生成的。
该过程大致如下:
CREATE TABLE functions_pre AS SELECT ... FROM duckdb_functions();
LOAD extension_name;
CREATE TABLE functions_post AS SELECT ... FROM duckdb_functions();
SELECT * FROM functions_post EXCEPT (FROM functions_pre) ORDER BY ...;
这对于检测新函数、函数重载、新设置和新类型非常有效。
检测系统中的其他更改(例如,是否已注册额外的解析器或优化器回调)是可行的,但尚未实现。 建议将这些更改作为 docs.extended_description
字段的一部分提供。
扩展列表
所有可用的社区扩展都列在 “社区扩展列表” 页面中。