Replacement Scans
Replacement Scans (대체 스캔)
replacement scan API는 카탈로그에 존재하지 않는 테이블을 읽을 때 호출되는 콜백을 등록하는 데 사용할 수 있어요. 예를 들어 SELECT * FROM my_table 같은 쿼리가 실행되고 my_table이 존재하지 않으면, my_table을 파라미터로 replacement scan 콜백이 호출돼요. 그런 다음 replacement scan은 특정 파라미터를 가진 테이블 함수를 삽입해 테이블 읽기를 대체할 수 있어요.
출처: 문서
본문
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
지정된 데이터베이스에 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 scan을 추가할 데이터베이스 객체replacement: replacement scan 콜백extra_data: 지정된 콜백으로 다시 전달되는 추가 데이터delete_callback: 있는 경우 extra data에 대해 호출할 delete 콜백
duckdb_replacement_scan_set_function_name
대체 함수 이름을 설정해요. 이 함수가 replacement 콜백에서 호출되면 replacement scan이 수행돼요. 호출되지 않으면 replacement 콜백이 수행되지 않아요.
문법
void duckdb_replacement_scan_set_function_name(
duckdb_replacement_scan_info info,
const char *function_name
);
파라미터
info: info 객체function_name: 대체할 함수 이름.
duckdb_replacement_scan_add_parameter
replacement scan 함수에 파라미터를 추가해요.
문법
void duckdb_replacement_scan_add_parameter(
duckdb_replacement_scan_info info,
duckdb_value parameter
);
파라미터
info: info 객체parameter: 추가할 파라미터.
duckdb_replacement_scan_set_error
replacement scan 실행 중 오류가 발생했음을 보고해요.
문법
void duckdb_replacement_scan_set_error(
duckdb_replacement_scan_info info,
const char *error
);
파라미터
info: info 객체error: 오류 메시지
더 알아보기 (Learn more)
C API 전반에 대한 자세한 내용은 [C API]({% link docs/current/clients/c/api.md %}) 문서를 참고해요.