Referenz
Diese Seite listet jede Funktion, Einstellung und jeden Log-Typ der quack-Erweiterung. Einen Überblick über das Protokoll finden Sie im Überblick.
Funktionsreferenz
Serververwaltung
| Funktion | Beschreibung |
|---|---|
quack_serve(uri, token := 'token_value', allow_other_hostname := false, disable_ssl := false) |
Startet einen Server auf uri. Standardmäßig nur auf Localhost. Übergeben Sie token, um das Authentifizierungstoken des Servers explizit zu setzen (mindestens 4 Zeichen), andernfalls wird eines erzeugt. Liefert Listen-URI, URL und das Auth-Token. |
quack_stop(uri) |
Stoppt den Server, der auf uri lauscht. |
quack_identify(name, provider, hostname, region, meta) |
Setzt die whoami-Identitätsfelder dieses Knotens. Es kann eine beliebige Teilmenge übergeben werden. |
whoami() |
Tabellenmakro, das Identitäts- und Laufzeitinformationen für den aktuellen Knoten zurückgibt. |
Client-Abfragen
| Funktion | Beschreibung |
|---|---|
quack_query(uri, query, token := 'token_value', disable_ssl := false) |
Führt query auf der Remote-uri aus und streamt das Ergebnis zurück. Übergeben Sie token, um ein passendes Quack-Secret auf der Clientseite zu überschreiben. |
quack_query_by_name(catalog, query) |
Führt query gegen einen bereits angehängten Quack-Katalog aus (verwendet von ⟨catalog⟩.query(){:.language-sql .highlight}). |
Hilfsfunktionen
| Funktion | Beschreibung |
|---|---|
quack_uri_parser(uri, ssl) |
Parst eine Quack-URI in einen Eintrag STRUCT(host, port, ipv6, ssl, url) |
quack_check_token(sid, client_token, server_token) |
Standard-Authentifizierungs-Callback, vergleicht das vom Client gelieferte Token mit dem gespeicherten Token des Servers. |
quack_nop_authorization(sid, query) |
Standard-Autorisierungs-Callback, erlaubt immer. |
ATTACH-Optionen
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
TOKEN |
VARCHAR |
(nicht gesetzt) | Authentifizierungstoken. Überschreibt ein passendes Quack-Secret auf der Clientseite. |
DISABLE_SSL |
BOOLEAN |
true für lokal, sonst false |
Erzwingt den Client-Transport. Lokale URIs nutzen standardmäßig einfaches HTTP. |
TYPE |
VARCHAR |
abgeleitet | Legt den Secret-Typ fest, der zur Token-Auflösung verwendet wird (z. B. quack). |
Einstellungen
Alle Einstellungen sind reguläre DuckDB-Sitzungs- / globale Optionen. Setzen Sie sie mit SET ⟨name⟩ = ⟨value⟩{:.language-sql .highlight} oder SET GLOBAL{:.language-sql .highlight}.
Authentifizierung / Autorisierung
Die Auth-Callbacks werden jedes Mal auf einer frischen serverseitigen Verbindung ausgewertet, daher sind die beiden folgenden Einstellungen global gültig (SET GLOBAL). Ein einfaches SET auf diesen Einstellungen wird automatisch an den globalen Slot weitergeleitet. Nutzen Sie RESET GLOBAL, um den Standard wiederherzustellen; ein einfaches RESET löscht nur die Sitzungssicht, und der Auth-Pfad liest weiterhin den veralteten globalen Wert.
| Einstellung | Typ | Standard | Beschreibung |
|---|---|---|---|
quack_authentication_function |
VARCHAR |
quack_check_token |
Name einer 3-argumentigen Skalarfunktion (sid, client_token, server_token) -> BOOLEAN, mit der der Server Clients authentifiziert. |
quack_authorization_function |
VARCHAR |
quack_nop_authorization |
Name einer 2-argumentigen Skalarfunktion (sid, query) -> BOOLEAN, mit der der Server jede Abfrage autorisiert. |
Sie können eigene Auth einbinden, indem Sie eine beliebige Skalarfunktion mit der erwarteten Signatur anlegen und die Einstellung darauf zeigen. Beispiele finden Sie unter Sicherheit.
FETCH-Batching (serverseitig)
Der Server fasst mehrere DataChunks in jeder FETCH-Antwort zusammen, um den Overhead pro Chunk zu senken.
| Einstellung | Typ | Standard | Beschreibung |
|---|---|---|---|
quack_fetch_batch_chunks |
UBIGINT |
12 |
Maximale Anzahl DataChunks, die pro FETCH-Antwort gesendet werden. |
Knotenidentität
Diese Einstellungen speisen das Makro whoami(). quack_identify(...) ist syntaktischer Zucker, der sie aktualisiert.
| Einstellung | Typ | Standard | Beschreibung |
|---|---|---|---|
whoami_name |
VARCHAR |
(leer) | Menschenlesbarer Knotenname. |
whoami_provider |
VARCHAR |
(leer) | Deployment-Anbieter (ec2, docker, local, …). |
whoami_hostname |
VARCHAR |
(leer) | Netzwerk-Hostname / öffentliche Adresse. |
whoami_region |
VARCHAR |
(leer) | Deployment-Region. |
whoami_started_at |
VARCHAR |
(leer) | Startzeit des Knotens (ISO-8601-Zeitstempel). Ankert uptime. |
whoami_meta |
VARCHAR |
{} |
Anbieter-spezifische Metadaten als JSON. |
quack_loaded_at_us |
BIGINT |
Epochenmikrosekunden beim Laden der Erweiterung | Fallback-Uptime-Anker, wenn whoami_started_at leer ist. |
Logging
Die Erweiterung registriert zwei Log-Typen. Aktivieren Sie sie, um Konnektivität zu debuggen oder Request-Timing zu messen.
Quack-Log
Strukturiertes Log jeder Quack-Nachricht (client- und serverseitig):
CALL enable_logging('Quack');
FROM quack_query('quack:localhost', 'SELECT 42');
SELECT * FROM duckdb_logs_parsed('Quack');| context_id | scope | connection_id | transaction_id | query_id | thread_id | timestamp | type | log_level | message_type | quack_connection_id | client_query_id | query | server | duration_ms | response_type | error |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 60 | CONNECTION | 2 | 18 | 18 | NULL | 2026-05-10 09:06:19.841623+02 | Quack | DEBUG | CONNECTION_REQUEST | 18 | NULL | http://localhost:9494 | 41 | CONNECTION_RESPONSE | NULL | |
| 60 | CONNECTION | 2 | 18 | 18 | NULL | 2026-05-10 09:06:19.842407+02 | Quack | DEBUG | PREPARE_REQUEST | 091A003553E7E67B615B73D6BE81FD2E | 18 | SELECT 42 | http://localhost:9494 | 0 | PREPARE_RESPONSE | NULL |
Felder jedes Eintrags:
| Feld | Beschreibung |
|---|---|
message_type |
Anfragetyp: PREPARE_REQUEST, FETCH_REQUEST usw. |
quack_connection_id |
Vom Server vergebene Verbindungs-ID (stabil über Anfragen in einem ATTACH). |
client_query_id |
Vom Client vergebene monotone ID, korreliert Client- / Server-Logs. |
query |
SQL-Nutzlast für PREPARE_REQUESTs. |
server |
HTTP-URL in clientseitigen Logs, NULL in serverseitigen Logs. |
duration_ms |
Roundtrip-Zeit (Client) oder Bearbeitungszeit (Server). |
response_type |
Antworttyp oder ERROR. |
error |
Fehlermeldung, wenn die Anfrage fehlgeschlagen ist. |
Um eine Clientanfrage mit ihrer serverseitigen Verarbeitung zu korrelieren, joinen Sie auf (quack_connection_id, client_query_id).
HTTP-Log
Der zugrunde liegende HTTP-Transport kann separat geloggt werden:
CALL enable_logging('HTTP');FROM quack_query('quack:localhost', 'SELECT 1');SELECT request.type, request.url, response.statusFROM duckdb_logs_parsed('HTTP');| type | url | status |
|---|---|---|
| POST | http://localhost:9494/quack | OK_200 |
| POST | http://localhost:9494/quack | OK_200 |
Anfragen sind POSTs an einen Endpunkt /quack.
Logs zum Abfragen persistieren
duckdb_logs_parsed liest aus DuckDBs In-Memory-Log-Puffer. Für nicht-triviale Sitzungen sollten Sie Logs persistieren:
CALL enable_logging( 'Quack', storage => 'file', storage_config => {'path': '/tmp/duckdb-rpc-logs'});Um das Log zwischen Läufen zu leeren, nutzen Sie:
CALL truncate_duckdb_logs();Um das Logging auszuschalten, führen Sie aus:
CALL disable_logging();