Dokumentation
Eine Community-Erweiterung einreichen
Community-Erweiterungen müssen öffentlich, Open Source und auf GitHub gehostet sein. Nutzer solcher Erweiterungen sind eingeladen, das jeweilige Erweiterungs-Repository zu prüfen, Feedback zu geben, die Implementierung anzusehen und Probleme zu melden.
Um eine Community-Erweiterung einzureichen, öffnen Sie bitte einen Pull Request im Community-Extensions-Repository mit einer einzelnen Datei description.yml im Ordner extensions/⟨name_of_the_extension⟩{:.language-sql .highlight}.
YAML-Deskriptor
Die Struktur des YAML-Deskriptors ist wie folgt:
| Feld | Beschreibung |
|---|---|
extension.name |
Name der Erweiterung. Erweiterungsnamen unterscheiden nicht zwischen Groß- und Kleinschreibung, daher sind nur Kleinbuchstaben, Ziffern sowie - oder _ erlaubt |
extension.description |
Kurze Beschreibung der Erweiterung |
extension.version |
Semantische Versionierung der Erweiterung |
extension.language |
C++, Rust & C++, C++ & SQL oder jede andere Sprachkombination, auf der der Erweiterungscode basiert |
extension.build |
Build-System, das die Erweiterung verwendet; derzeit wird nur cmake unterstützt |
extension.licence |
Lizenz, die für die Erweiterung gilt |
extension.maintainers |
Eine Liste der Maintainer der Erweiterung |
extension.excluded_platforms |
Optional, erlaubt anzugeben, ob bestimmte Plattformen nicht unterstützt werden |
extension.requires_toolchains |
Optional, erlaubt anzugeben, ob zusätzliche Build-Zeit-Abhängigkeiten erforderlich sind |
repo.github |
Organisationsname ‘/’ Repository-Name des öffentlichen, auf GitHub gehosteten Repositorys |
repo.ref |
Git-Ref für die Erweiterung |
Diese Felder werden verwendet, um die Erweiterung zu bauen, zu testen und bereitzustellen, und können sich auch in der Dokumentation widerspiegeln.
Maintainer von Erweiterungen werden ermutigt, zwei optionale Felder im Deskriptor anzugeben, die nur in der automatisch erzeugten Dokumentation verwendet werden:
| Feld | Beschreibung |
|---|---|
docs.hello_world |
Ein Hello, World!-Codebeispiel, also ein in sich geschlossenes Beispiel der Fähigkeiten einer Erweiterung |
docs.extended_description |
Zusätzlicher Kontext zur Erweiterung, relevante Links oder ein Rundgang durch die Fähigkeiten der Erweiterung |
Gehostete Dokumentationsseite der Erweiterung
Jede Community-Erweiterung hat eine Dokumentationsseite unter https://duckdb.org/community_extensions/extensions/⟨extension_name⟩{:.language-sql .highlight}. Das ist zum Beispiel die Seite für h3.
Dokumentationsseiten werden aus den Feldern in der YAML-Deskriptordatei erzeugt, die Teil des Community-Extensions-Repositorys ist, sowie aus den automatisch erkannten Änderungen, die eine gegebene Erweiterung in DuckDB einführt.
Der Ablauf ist grob wie folgt:
CREATE TABLE functions_pre AS SELECT ... FROM duckdb_functions();LOAD extension_name;CREATE TABLE functions_post AS SELECT ... FROM duckdb_functions();SELECT * FROM functions_post EXCEPT (FROM functions_pre) ORDER BY ...;Das funktioniert gut, um neue Funktionen, Funktionsüberladungen, neue Einstellungen und neue Typen zu erkennen.
Die Erkennung anderer Änderungen am System (z. B. ob ein zusätzlicher Parser- oder Optimizer-Callback registriert wurde) ist machbar, aber noch nicht implementiert. Solche Angaben sollten im Feld docs.extended_description bereitgestellt werden.
Liste der Erweiterungen
Alle verfügbaren Community-Erweiterungen sind auf der Seite „Liste der Community-Erweiterungen“ aufgeführt.