Zum Inhalt springen

PostgreSQL-Erweiterungsfunktionen

pg_clear_cache

pg_clear_cache() -> TABLE

Löscht gecachte Schema-Einträge (wie Tabellennamen mit Spaltenlisten) für alle angehängten PostgreSQL-Kataloge. Das angehängte Schema wird beim nächsten Zugriff erneut gelesen.

Parameter

Keine.

Rückgabe

Eine Tabelle mit den folgenden Spalten:

  • Success (BOOLEAN): ein Flag, ob das Leeren des Caches erfolgreich war

Derzeit wird das Tabellenergebnis immer mit null Zeilen zurückgegeben, sodass der Flag-Wert nicht verfügbar ist.

Beispiel

CALL pg_clear_cache()

postgres_attach

Warning Diese Funktion ist veraltet und soll in zukünftigen Versionen entfernt werden. Stattdessen soll die Anweisung ATTACH verwendet werden.

postgres_attach(connection_string VARCHAR [, ⟨optional named parameters⟩]) -> TABLE

postgres_configure_pool

FROM postgres_configure_pool([⟨optional named parameters⟩]) -> TABLE

Wenn eine PostgreSQL-Datenbank angehängt wird, wird für diese Datenbank ein Verbindungspool erstellt. Diese Funktion erlaubt es, die Konfigurationsoptionen eines Verbindungspools für die angegebene angehängte Datenbank zu ändern. Sie erlaubt außerdem, die aktuell wirksamen Konfigurationsoptionen und die gesammelten Laufzeitstatistiken eines Verbindungspools aufzulisten.

Parameter

  • catalog_name (VARCHAR): der Name (Alias) der angehängten Postgres-Datenbank, auf deren Pool die Konfigurationsänderung angewendet wird und deren Details zurückgegeben werden. Bei NULL (Standard) wird der aktuelle Zustand der Pools für alle angehängten Kataloge zurückgegeben, ohne deren Konfiguration zu ändern. Muss angegeben und nicht-NULL sein, wenn eine andere Option angegeben wird.
  • acquire_mode (VARCHAR, Standard: 'force'): wie Verbindungen aus dem Pool geholt werden: 'force' (immer verbinden, Pool-Limit ignorieren), 'wait' (blockieren, bis verfügbar), 'try' (sofort fehlschlagen, wenn nicht verfügbar)
  • max_connections (UBIGINT): maximale Anzahl von Verbindungen, die in einem Verbindungspool für jede angehängte Postgres-Datenbank gecacht werden dürfen. Diese Zahl kann bei parallelen Scans vorübergehend überschritten werden.
  • wait_timeout_millis (UBIGINT): maximale Anzahl von Millisekunden, die gewartet werden soll, wenn eine Verbindung aus einem Pool geholt wird, in dem alle verfügbaren Verbindungen bereits belegt sind.
  • enable_thread_local_cache (BOOLEAN): ob das Cachen von Verbindungen im thread-lokalen Cache aktiviert werden soll. Solche Verbindungen werden an die Threads gebunden und anderen Threads nicht zur Verfügung gestellt, belegen aber weiterhin einen Platz im Pool.
  • max_lifetime_millis (UBIGINT): maximale Anzahl von Millisekunden, die die Verbindung offen gehalten werden kann. Diese Zahl wird geprüft, wenn die Verbindung aus dem Pool genommen und in den Pool zurückgegeben wird. Wenn der Connection-Pool-Reaper-Thread aktiviert ist (Argument 'enable_reaper_thread'), wird diese Zahl regelmäßig im Hintergrund geprüft.
  • idle_timeout_millis (UBIGINT): maximale Anzahl von Millisekunden, die die Verbindung im Pool idle gehalten werden kann. Diese Zahl wird geprüft, wenn die Verbindung aus dem Pool genommen wird. Wenn der Connection-Pool-Reaper-Thread aktiviert ist (Option 'enable_reaper_thread'), wird diese Zahl regelmäßig im Hintergrund geprüft.
  • enable_reaper_thread (BOOLEAN): ob der Connection-Pool-Reaper-Thread aktiviert werden soll, der den Pool regelmäßig prüft, um 'max_lifetime_millis' und 'idle_timeout_millis' zu kontrollieren und Verbindungen zu schließen, die die angegebenen Werte überschreiten. Entweder 'max_lifetime_millis' oder 'idle_timeout_millis' muss auf einen Wert ungleich null gesetzt sein, damit diese Option wirksam ist.
  • health_check_query (VARCHAR): die Abfrage, mit der geprüft wird, ob die Verbindung gesund ist. Das Setzen dieser Option auf einen leeren String deaktiviert die Gesundheitsprüfung.

Rückgabe

Eine Tabelle mit den folgenden Spalten:

  • catalog_name (VARCHAR): der Name (Alias) der angehängten Postgres-Datenbank
  • acquire_mode (VARCHAR): wie Verbindungen aus dem Pool geholt werden: 'force' (immer verbinden, Pool-Limit ignorieren), 'wait' (blockieren, bis verfügbar), 'try' (sofort fehlschlagen, wenn nicht verfügbar)
  • available_connections (UBIGINT): die Anzahl idle Verbindungen, die derzeit im Pool verfügbar sind
  • max_connections (UBIGINT): maximale Anzahl von Verbindungen, die im Pool gecacht werden dürfen.
  • wait_timeout_millis (UBIGINT): maximale Anzahl von Millisekunden, die gewartet werden soll, wenn eine Verbindung aus einem Pool geholt wird, in dem alle verfügbaren Verbindungen bereits belegt sind; gilt nur für den Acquire-Modus wait
  • cache_hits (UBIGINT): Anzahl der Male, die eine gecachte Verbindung erfolgreich aus dem Pool zurückgegeben wurde
  • cache_misses (UBIGINT): Anzahl der Male, die eine neue Verbindung vom Pool erstellt wurde
  • try_failures (UBIGINT): Anzahl der Male, die eine Verbindung vom Pool im Acquire-Modus try angefordert wurde und zu diesem Zeitpunkt keine Verbindung verfügbar war – sodass der Pool keine Verbindung bereitgestellt hat; beachten Sie, dass Worker-Threads bei parallelen Scans durch die Postgres-Erweiterung immer den Acquire-Modus try verwenden; wenn SET threads = ⟨number_higher_then_pool_size⟩{:.language-sql .highlight} verwendet wird, können einige Worker-Threads keine Verbindung erhalten – sie kehren zurück, ohne Arbeit zu leisten und ohne einen Fehler zu werfen
  • thread_local_cache_enabled (BOOLEAN): ob das Cachen der Verbindungen im thread-lokalen Cache aktiviert ist; thread-lokale Verbindungen werden vom Reaper-Thread NICHT geleert
  • thread_local_cache_hits (UBIGINT): die Anzahl der Male, die Verbindungen erfolgreich aus einem thread-lokalen Cache geholt wurden, ohne den Hauptpool zu verwenden
  • thread_local_cache_misses (UBIGINT): die Anzahl der Male, die Verbindungen im thread-lokalen Cache nicht verfügbar waren und stattdessen aus dem Hauptpool genommen wurden
  • max_lifetime_millis (UBIGINT): maximale Anzahl von Millisekunden, die eine Verbindung offen gehalten werden kann
  • idle_timeout_millis (UBIGINT): maximale Anzahl von Millisekunden, die eine Verbindung im Pool idle gehalten werden kann
  • reaper_thread_running (BOOLEAN): ob der Pool-Reaper-Thread läuft; dieser Thread prüft den Pool regelmäßig auf 'max_lifetime_millis' und 'idle_timeout_millis' und schließt Verbindungen, die die angegebenen Werte überschreiten
  • reaper_thread_period_millis (UBIGINT): der Zeitraum, in dem ein Reaper-Thread die Prüfungen durchführt
  • health_check_query (VARCHAR): die Abfrage, mit der geprüft wird, ob die Verbindung gesund ist

Beispiele

Die aktuell wirksamen Konfigurationsoptionen und die gesammelten Laufzeitstatistiken aller Verbindungspools (für alle angehängten Datenbanken) auflisten:

FROM postgres_configure_pool()

Eine oder mehrere Konfigurationsoptionen für den Verbindungspool der angegebenen angehängten Datenbank ändern:

FROM postgres_configure_pool(catalog_name = 'db1', acquire_mode = 'wait', max_connections = 42)

postgres_execute

postgres_execute(attached_db_name VARCHAR, sql_query VARCHAR[, ⟨optional named parameters⟩]) -> TABLE

Führt die ⟨sql_query⟩{:.language-sql .highlight} in der angegebenen entfernten Postgres-Instanz aus, die zuvor mit ATTACH ... AS ⟨attached_db_name⟩{:.language-sql .highlight} angehängt wurde. Diese Funktion gibt ein leeres Ergebnis zurück.

Parameter

  • attached_db_name (VARCHAR): der Name der angehängten PostgreSQL-Datenbank
  • sql_query (VARCHAR): Abfrage, die zur Ausführung an PostgreSQL übergeben wird; DuckDB führt keine Transformation oder Analyse dieser Abfrage durch

Optionale benannte Parameter:

  • use_transaction (BOOLEAN, Standard: TRUE): ob eine PostgreSQL-Transaktion gestartet werden soll, falls sie zuvor nicht gestartet wurde.

Rückgabe

Eine Tabelle mit den folgenden Spalten:

  • Success (BOOLEAN): ein Flag, ob das Leeren des Caches erfolgreich war

Derzeit wird das Tabellenergebnis immer mit null Zeilen zurückgegeben, sodass der Flag-Wert nicht verfügbar ist.

Beispiel

CALL postgres_execute('db1', 'VACUUM ANALYZE', use_transaction = false)

postgres_hstore_get

postgres_hstore_get(hstore_string VARCHAR, hstore_key VARCHAR) -> VARCHAR

Parst die externe Darstellung einer PostgreSQL-hstore-Spalte und gibt den Wert des angegebenen hstore-Schlüssels zurück.

Parameter

  • hstore_string (VARCHAR): PostgreSQL-hstore-Wert in der Form key => value.
  • hstore_kay (VARCHAR): Schlüsselname, für den der Wert zurückgegeben werden soll.

Rückgabe

Der Wert für den angegebenen Schlüssel. NULL, wenn der Schlüssel nicht gefunden wird.

Beispiel

SELECT postgres_hstore_get('a=>b, c=>d', 'a')

postgres_hstore_to_json

postgres_hstore_to_json(hstore_string VARCHAR) -> JSON

Konvertiert die externe Darstellung einer PostgreSQL-hstore-Spalte in JSON.

Parameter

  • hstore_string (VARCHAR): PostgreSQL-hstore-Wert in der Form key => value.

Rückgabe

JSON-Dictionary mit denselben Schlüssel/Wert-Paaren wie der Eingabe-hstore-String. Alle Werte werden als Strings zurückgegeben.

Beispiel

SELECT postgres_hstore_to_json('z=>1, a=>2, m=>3')

postgres_query

postgres_query(attached_db_name VARCHAR, sql_query VARCHAR[, ⟨optional named parameters⟩]) -> TABLE

Führt die Abfrage in der angegebenen entfernten DB aus, die zuvor mit ATTACH .. AS ⟨attached_db_name⟩{:.language-sql .highlight} angehängt wurde, und gibt das Abfrageergebnis als Tabelle zurück.

Parameter

  • attached_db_name (VARCHAR): der Name der angehängten PostgreSQL-Datenbank
  • sql_query (VARCHAR): Abfrage, die zur Ausführung an PostgreSQL übergeben wird; DuckDB führt keine Transformation oder Analyse dieser Abfrage durch

Optionale benannte Parameter:

  • use_transaction (BOOLEAN, Standard: TRUE): ob eine PostgreSQL-Transaktion gestartet werden soll, falls sie zuvor nicht gestartet wurde.
  • params (STRUCT): Abfrageparameter, die an den PostgreSQL-Server übergeben werden; nur unterstützt, wenn das Textprotokoll verwendet wird

Rückgabe

Eine Tabelle mit dem Abfrageergebnis.

Beispiel

FROM postgres_query('db11', 'SELECT $1::INTEGER, $2::TEXT', params=row(42::INTEGER, 'foo'::VARCHAR))

postgres_scan

Warning Diese Funktion ist veraltet und soll in zukünftigen Versionen entfernt werden. Stattdessen sollen direkte SQL-Abfragen über die angehängte PostgreSQL-Datenbank verwendet werden.

postgres_scan(connection_string VARCHAR, schema_name VARCHAR, table_name VARCHAR) -> TABLE

postgres_scan_pushdown

Warning Diese Funktion ist veraltet und soll in zukünftigen Versionen entfernt werden. Stattdessen sollen direkte SQL-Abfragen über die angehängte PostgreSQL-Datenbank verwendet werden.

postgres_scan_pushdown(connection_string VARCHAR, schema_name VARCHAR, table_name VARCHAR) -> TABLE

read_postgres_binary

FROM read_postgres_binary(file_path VARCHAR[, ⟨optional named parameters⟩]) -> TABLE

Liest binäre PostgreSQL-Dump-Dateien vom Dateisystem.

Parameter

  • file_path (VARCHAR): Dateisystempfad zur binären Dump-Datei im PostgreSQL-Format.

Optionale benannte Parameter:

  • columns (STRUCT): Typzuordnung in Form der Struktur column_name -> column_type.
  • buffer_size (UBIGINT, Standard: 32KB): Größe des Lesepuffers in Bytes.

Rückgabe

Inhalt der binären Dump-Datei als Tabelle.

Beispiel

COPY (SELECT 42::INTEGER AS a, 'foo'::VARCHAR AS b) TO 'path/to/test.bin' (FORMAT postgres_binary);
FROM read_postgres_binary('path/to/test.bin', columns = {a: 'INTEGER', b: 'VARCHAR'});