⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
构建扩展

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

构建扩展

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

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

此选项还支持非核心扩展,例如 delta

CORE_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 中先前固定的块被取消固定时,启用此标志后,我们将立即销毁它们,以确保不会出现尽管未固定但此内存仍在使用的情况。

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