The replacement scan API can be used to register a callback that is called when a table is read that does not exist in the catalog. For example, when a query such as SELECT * FROM my_table
is executed and my_table
does not exist, the replacement scan callback will be called with my_table
as parameter. The replacement scan can then insert a table function with a specific parameter to replace the read of the table.
API Reference
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);
duckdb_add_replacement_scan
Add a replacement scan definition to the specified database
Syntax
void duckdb_add_replacement_scan(
duckdb_database db,
duckdb_replacement_callback_t replacement,
void *extra_data,
duckdb_delete_callback_t delete_callback
);
Parameters
db
The database object to add the replacement scan to
replacement
The replacement scan callback
extra_data
Extra data that is passed back into the specified callback
delete_callback
The delete callback to call on the extra data, if any
duckdb_replacement_scan_set_function_name
Sets the replacement function name to use. If this function is called in the replacement callback, the replacement scan is performed. If it is not called, the replacement callback is not performed.
Syntax
void duckdb_replacement_scan_set_function_name(
duckdb_replacement_scan_info info,
const char *function_name
);
Parameters
info
The info object
function_name
The function name to substitute.
duckdb_replacement_scan_add_parameter
Adds a parameter to the replacement scan function.
Syntax
void duckdb_replacement_scan_add_parameter(
duckdb_replacement_scan_info info,
duckdb_value parameter
);
Parameters
info
The info object
parameter
The parameter to add.