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 wirdreplacement: Der Replacement-Scan-Callbackextra_data: Extra-Daten, die an den angegebenen Callback zurückgegeben werdendelete_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-Objektfunction_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-Objektparameter: 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-Objekterror: Die Fehlermeldung