Zum Inhalt springen

Replacement Scans

Die Replacement-Scan-API kann verwendet werden, um einen Callback zu registrieren, der aufgerufen wird, wenn eine Tabelle gelesen wird, die nicht im Katalog existiert. Wenn beispielsweise eine Abfrage wie SELECT * FROM my_table ausgeführt wird und my_table nicht existiert, wird der Replacement-Scan-Callback mit my_table als Parameter aufgerufen. Der Replacement Scan kann dann eine Tabellenfunktion mit einem bestimmten Parameter einfügen, um das Lesen der Tabelle zu ersetzen.

API-Referenz im Überblick

void duckdb_add_replacement_scan(duckdb_database db, duckdb_replacement_callback_t replacement, void *extra_data, duckdb_delete_callback_t delete_callback);
void duckdb_replacement_scan_set_function_name(duckdb_replacement_scan_info info, const char *function_name);
void duckdb_replacement_scan_add_parameter(duckdb_replacement_scan_info info, duckdb_value parameter);
void duckdb_replacement_scan_set_error(duckdb_replacement_scan_info info, const char *error);

duckdb_add_replacement_scan

Fügt der angegebenen Datenbank eine Replacement-Scan-Definition hinzu.

Syntax
void duckdb_add_replacement_scan(
  duckdb_database db,
  duckdb_replacement_callback_t replacement,
  void *extra_data,
  duckdb_delete_callback_t delete_callback
);
Parameter
  • db: Das Datenbankobjekt, dem der Replacement Scan hinzugefügt wird
  • replacement: Der Replacement-Scan-Callback
  • extra_data: Extra-Daten, die an den angegebenen Callback zurückgegeben werden
  • delete_callback: Der Delete-Callback, der für die Extra-Daten aufgerufen wird, falls vorhanden

duckdb_replacement_scan_set_function_name

Setzt den Namen der Replacement-Funktion. Wenn diese Funktion im Replacement-Callback aufgerufen wird, wird der Replacement Scan ausgeführt. Wird sie nicht aufgerufen, wird der Replacement-Callback nicht ausgeführt.

Syntax
void duckdb_replacement_scan_set_function_name(
  duckdb_replacement_scan_info info,
  const char *function_name
);
Parameter
  • info: Das Info-Objekt
  • function_name: Der Funktionsname, der eingesetzt werden soll.

duckdb_replacement_scan_add_parameter

Fügt der Replacement-Scan-Funktion einen Parameter hinzu.

Syntax
void duckdb_replacement_scan_add_parameter(
  duckdb_replacement_scan_info info,
  duckdb_value parameter
);
Parameter
  • info: Das Info-Objekt
  • parameter: Der hinzuzufügende Parameter.

duckdb_replacement_scan_set_error

Meldet, dass beim Ausführen des Replacement Scans ein Fehler aufgetreten ist.

Syntax
void duckdb_replacement_scan_set_error(
  duckdb_replacement_scan_info info,
  const char *error
);
Parameter
  • info: Das Info-Objekt
  • error: Die Fehlermeldung