⌘+k ctrl+k
1.4 (LTS)
搜索快捷键 cmd + k | ctrl + k
构建扩展

扩展可以从源代码构建,并从生成的本地二进制文件中安装。

构建扩展

要使用扩展标志进行构建,请将 BUILD_EXTENSIONS 标志设置为您想要构建的扩展列表。例如

BUILD_EXTENSIONS='autocomplete;httpfs;icu;json;tpch' GEN=ninja make

此选项也接受树外(out-of-tree)扩展,例如 delta

BUILD_EXTENSIONS='autocomplete;httpfs;icu;json;tpch;delta' GEN=ninja make

在大多数情况下,扩展将直接链接到生成的 DuckDB 可执行文件中。

特殊扩展标志

BUILD_JEMALLOC

设置此标志时,将构建 jemalloc 扩展

BUILD_TPCE

设置此标志时,将构建 TPCE 库。与 TPC-H 和 TPC-DS 不同,它不是一个正式的扩展,也不会作为扩展分发。启用此功能允许通过我们的测试套件运行支持 TPC-E 的查询。

调试标志

CRASH_ON_ASSERT

D_ASSERT(condition) 在整个代码中被广泛使用,它们在调试版本中会抛出 InternalException。启用此标志后,当触发断言时,它将直接导致程序崩溃。

DISABLE_STRING_INLINE

在我们的执行格式中,string_t 具有“内联”短字符串(小于 12 字节)的功能,这意味着它们不需要单独的内存分配。设置此标志后,我们将禁用此功能,不再内联小字符串。

DISABLE_MEMORY_SAFETY

我们在非性能关键代码中广泛使用的数据结构包含额外的检查以确保内存安全,这些检查包括:

  • 确保从不解引用 nullptr
  • 确保索引越界访问不会触发崩溃。

启用此标志后,我们将移除这些检查,这主要是为了验证这些检查所带来的性能损耗是否可以忽略不计。

DESTROY_UNPINNED_BLOCKS

当 BufferManager 中先前固定的块被解除固定(unpinned)时,启用此标志后,我们将立即销毁它们,以确保不会出现即使未被固定但仍在使用该内存的情况。

DEBUG_STACKTRACE

当测试中发生崩溃或断言命中时,打印堆栈跟踪。这对于调试难以通过调试器定位的崩溃非常有用。

使用 CMake 配置文件

要使用 CMake 配置文件进行构建,请创建一个名为 extension_config.cmake 的扩展配置文件,例如,内容如下:

duckdb_extension_load(autocomplete)
duckdb_extension_load(fts)
duckdb_extension_load(inet)
duckdb_extension_load(icu)
duckdb_extension_load(json)
duckdb_extension_load(parquet)

按如下方式构建 DuckDB:

GEN=ninja EXTENSION_CONFIGS="extension_config.cmake" make

然后,要一次性安装这些扩展,请运行:

# for release builds
cd build/release/extension/
# for debug builds
cd build/debug/extension/
# install extensions
for EXTENSION in *; do
    ../duckdb -c "INSTALL '${EXTENSION}/${EXTENSION}.duckdb_extension';"
done
© 2025 DuckDB 基金会,阿姆斯特丹,荷兰
行为准则 商标使用指南