搜索快捷键 cmd + k | ctrl + k
文档

提交一个社区扩展

社区扩展必须是公开的、开源的,并且托管在 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 字段的一部分提供。

扩展列表

所有可用的社区扩展都列在 “社区扩展列表” 页面中。