Создание расширений
Расширения можно создать из исходного кода и установить из полученного локального двоичного файла.
Создание расширений с использованием флагов сборки
Для создания с использованием флагов расширения, установите флаг 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