⌘+k ctrl+k
1.4 (LTS)
搜索快捷键 cmd + k | ctrl + k
替换扫描

替换扫描 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

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

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


duckdb_replacement_scan_set_error

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

语法
void duckdb_replacement_scan_set_error(
  duckdb_replacement_scan_info info,
  const char *error
);
参数
  • info:信息对象
  • error:错误消息


© 2025 DuckDB 基金会,阿姆斯特丹,荷兰
行为准则 商标使用指南