⌘+k ctrl+k
1.1.3 (stable)
Search Shortcut cmd + k | ctrl + k
Replacement Scans

替换扫描API可用于注册一个回调函数,当读取的表中不存在于目录中时,将调用该回调函数。例如,当执行诸如SELECT * FROM my_table的查询并且my_table不存在时,将使用my_table作为参数调用替换扫描回调函数。然后,替换扫描可以插入一个带有特定参数的表函数来替换表的读取。

API 参考概览

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

向指定的数据库添加替换扫描定义。

语法
void duckdb_add_replacement_scan(
  duckdb_database db,
  duckdb_replacement_callback_t replacement,
  void *extra_data,
  duckdb_delete_callback_t delete_callback
);
参数
  • db: 要添加替换扫描的数据库对象
  • replacement: 替换扫描回调函数
  • extra_data: 传递回指定回调函数的额外数据
  • delete_callback: 如果有额外数据,则调用删除回调函数


duckdb_replacement_scan_set_function_name

设置替换函数名称。如果在替换回调中调用此函数,则执行替换扫描。如果未调用,则不执行替换回调。

语法
void duckdb_replacement_scan_set_function_name(
  duckdb_replacement_scan_info info,
  const char *function_name
);
参数
  • info: 信息对象
  • function_name: 要替换的函数名称。


duckdb_replacement_scan_add_parameter

向替换扫描函数添加一个参数。

Syntax
void duckdb_replacement_scan_add_parameter(
  duckdb_replacement_scan_info info,
  duckdb_value parameter
);
Parameters
  • info: 信息对象
  • parameter: 要添加的参数。


duckdb_replacement_scan_set_error

报告在执行替换扫描时发生错误。

Syntax
void duckdb_replacement_scan_set_error(
  duckdb_replacement_scan_info info,
  const char *error
);
Parameters
  • info: 信息对象
  • error: 错误信息