Spec-Zone.ru › DuckDB

Создание расширений

Расширения можно создать из исходного кода и установить из полученного локального двоичного файла.

Создание расширений с использованием флагов сборки

Для создания с использованием флагов расширения, установите флаг CORE_EXTENSIONS в список расширений, которые вы хотите создать.

В большинстве случаев расширения будут напрямую связаны с результируемым исполняемым файлом DuckDB.

Например, чтобы создать DuckDB с расширением httpfs, выполните следующую команду:

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

© Copyright 2018–2024 Stichting DuckDB Foundation
Licensed under the MIT License.
https://duckdb.org/docs/dev/building/building_extensions.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API