Erweiterungen bauen
Erweiterungen können aus dem Quellcode gebaut und aus der entstehenden lokalen Binärdatei installiert werden.
Erweiterungen bauen
Um mit Erweiterungs-Flags zu bauen, setzen Sie das Flag BUILD_EXTENSIONS auf die Liste der Erweiterungen, die gebaut werden sollen. Zum Beispiel:
BUILD_EXTENSIONS='autocomplete;httpfs;icu;json;tpch' GEN=ninja makeDiese Option akzeptiert auch Out-of-Tree-Erweiterungen wie delta:
BUILD_EXTENSIONS='autocomplete;httpfs;icu;json;tpch;delta' GEN=ninja makeIn den meisten Fällen werden Erweiterungen direkt in die entstehende DuckDB-Executable gelinkt.
Spezielle Erweiterungs-Flags
BUILD_JEMALLOC
Ist dieses Flag gesetzt, wird jemalloc gebaut.
BUILD_TPCE
Ist dieses Flag gesetzt, wird die TPCE-Bibliothek gebaut. Anders als TPC-H und TPC-DS ist das keine echte Erweiterung und wird auch nicht als solche verteilt. Damit werden TPC-E-fähige Abfragen über unsere Testsuite möglich.
Debug-Flags
CRASH_ON_ASSERT
D_ASSERT(condition) wird im gesamten Code verwendet; in Debug-Builds wirft das eine InternalException.
Mit diesem Flag führt das Auslösen der Assertion stattdessen direkt zu einem Absturz.
DISABLE_STRING_INLINE
In unserem Ausführungsformat kann string_t Zeichenketten unter einer bestimmten Länge (12 Bytes) „inlinen“, das heißt, sie brauchen keine eigene Allokation.
Ist dieses Flag gesetzt, deaktivieren wir das und inlinen kleine Zeichenketten nicht.
DISABLE_MEMORY_SAFETY
Unsere Datenstrukturen, die im nicht leistungskritischen Code umfangreich genutzt werden, haben zusätzliche Prüfungen für Speichersicherheit. Dazu gehören:
- Sicherstellen, dass
nullptrniemals dereferenziert wird. - Sicherstellen, dass Zugriffe außerhalb der Grenzen keinen Absturz auslösen.
Mit diesem Flag entfernen wir diese Prüfungen, vor allem um zu prüfen, dass der Leistungsnachteil dieser Prüfungen vernachlässigbar ist.
DESTROY_UNPINNED_BLOCKS
Wenn zuvor gepinnte Blöcke im BufferManager entpinnt werden, zerstören wir sie mit diesem Flag sofort, um sicherzustellen, dass es keine Situationen gibt, in denen dieser Speicher noch verwendet wird, obwohl er nicht mehr gepinnt ist.
DEBUG_STACKTRACE
Wenn in einem Test ein Absturz oder eine Assertion auftritt, wird ein Stack Trace ausgegeben. Das ist nützlich, wenn ein Absturz schwer mit angehängtem Debugger einzugrenzen ist.
Eine CMake-Konfigurationsdatei verwenden
Um mit einer CMake-Konfigurationsdatei zu bauen, legen Sie eine Erweiterungs-Konfigurationsdatei namens extension_config.cmake an, zum Beispiel mit folgendem Inhalt:
duckdb_extension_load(autocomplete)duckdb_extension_load(fts)duckdb_extension_load(inet)duckdb_extension_load(icu)duckdb_extension_load(json)duckdb_extension_load(parquet)Bauen Sie DuckDB wie folgt:
GEN=ninja EXTENSION_CONFIGS="extension_config.cmake" makeUm die Erweiterungen anschließend in einem Rutsch zu installieren, führen Sie aus:
# for release buildscd build/release/extension/# for debug buildscd build/debug/extension/# install extensionsfor EXTENSION in *; do ../duckdb -c "INSTALL '${EXTENSION}/${EXTENSION}.duckdb_extension';"done