⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Building Extensions

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

使用构建标志构建扩展

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

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

例如,要构建带有httpfs扩展的DuckDB,请运行以下脚本:

GEN=ninja CORE_EXTENSIONS='httpfs' make

特殊扩展标志

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