本页面包含DuckDB的C API参考。
已弃用 该参考包含多个弃用通知。这些通知涉及那些长期可用性无法保证的方法,因为它们可能在将来被移除。也就是说,DuckDB 的开发人员计划缓慢执行弃用,因为一些已弃用的方法尚未有完全功能的替代方案。因此,在替代方案可用之前,它们不会被移除,即使在那时,也会有几个小版本的宽限期才会移除它们。这些方法在 v1.0 中已被弃用的原因是表明它们不是 v1.0 稳定 API 的一部分,该 API 包含长期可用的方法。
API Reference Overview
Open Connect
duckdb_state duckdb_open(const char *path, duckdb_database *out_database);
duckdb_state duckdb_open_ext(const char *path, duckdb_database *out_database, duckdb_config config, char **out_error);
void duckdb_close(duckdb_database *database);
duckdb_state duckdb_connect(duckdb_database database, duckdb_connection *out_connection);
void duckdb_interrupt(duckdb_connection connection);
duckdb_query_progress_type duckdb_query_progress(duckdb_connection connection);
void duckdb_disconnect(duckdb_connection *connection);
const char *duckdb_library_version();
Configuration
duckdb_state duckdb_create_config(duckdb_config *out_config);
size_t duckdb_config_count();
duckdb_state duckdb_get_config_flag(size_t index, const char **out_name, const char **out_description);
duckdb_state duckdb_set_config(duckdb_config config, const char *name, const char *option);
void duckdb_destroy_config(duckdb_config *config);
Query Execution
duckdb_state duckdb_query(duckdb_connection connection, const char *query, duckdb_result *out_result);
void duckdb_destroy_result(duckdb_result *result);
const char *duckdb_column_name(duckdb_result *result, idx_t col);
duckdb_type duckdb_column_type(duckdb_result *result, idx_t col);
duckdb_statement_type duckdb_result_statement_type(duckdb_result result);
duckdb_logical_type duckdb_column_logical_type(duckdb_result *result, idx_t col);
idx_t duckdb_column_count(duckdb_result *result);
idx_t duckdb_row_count(duckdb_result *result);
idx_t duckdb_rows_changed(duckdb_result *result);
void *duckdb_column_data(duckdb_result *result, idx_t col);
bool *duckdb_nullmask_data(duckdb_result *result, idx_t col);
const char *duckdb_result_error(duckdb_result *result);
duckdb_error_type duckdb_result_error_type(duckdb_result *result);
结果函数
duckdb_data_chunk duckdb_result_get_chunk(duckdb_result result, idx_t chunk_index);
bool duckdb_result_is_streaming(duckdb_result result);
idx_t duckdb_result_chunk_count(duckdb_result result);
duckdb_result_type duckdb_result_return_type(duckdb_result result);
安全获取函数
bool duckdb_value_boolean(duckdb_result *result, idx_t col, idx_t row);
int8_t duckdb_value_int8(duckdb_result *result, idx_t col, idx_t row);
int16_t duckdb_value_int16(duckdb_result *result, idx_t col, idx_t row);
int32_t duckdb_value_int32(duckdb_result *result, idx_t col, idx_t row);
int64_t duckdb_value_int64(duckdb_result *result, idx_t col, idx_t row);
duckdb_hugeint duckdb_value_hugeint(duckdb_result *result, idx_t col, idx_t row);
duckdb_uhugeint duckdb_value_uhugeint(duckdb_result *result, idx_t col, idx_t row);
duckdb_decimal duckdb_value_decimal(duckdb_result *result, idx_t col, idx_t row);
uint8_t duckdb_value_uint8(duckdb_result *result, idx_t col, idx_t row);
uint16_t duckdb_value_uint16(duckdb_result *result, idx_t col, idx_t row);
uint32_t duckdb_value_uint32(duckdb_result *result, idx_t col, idx_t row);
uint64_t duckdb_value_uint64(duckdb_result *result, idx_t col, idx_t row);
float duckdb_value_float(duckdb_result *result, idx_t col, idx_t row);
double duckdb_value_double(duckdb_result *result, idx_t col, idx_t row);
duckdb_date duckdb_value_date(duckdb_result *result, idx_t col, idx_t row);
duckdb_time duckdb_value_time(duckdb_result *result, idx_t col, idx_t row);
duckdb_timestamp duckdb_value_timestamp(duckdb_result *result, idx_t col, idx_t row);
duckdb_interval duckdb_value_interval(duckdb_result *result, idx_t col, idx_t row);
char *duckdb_value_varchar(duckdb_result *result, idx_t col, idx_t row);
duckdb_string duckdb_value_string(duckdb_result *result, idx_t col, idx_t row);
char *duckdb_value_varchar_internal(duckdb_result *result, idx_t col, idx_t row);
duckdb_string duckdb_value_string_internal(duckdb_result *result, idx_t col, idx_t row);
duckdb_blob duckdb_value_blob(duckdb_result *result, idx_t col, idx_t row);
bool duckdb_value_is_null(duckdb_result *result, idx_t col, idx_t row);
Helpers
void *duckdb_malloc(size_t size);
void duckdb_free(void *ptr);
idx_t duckdb_vector_size();
bool duckdb_string_is_inlined(duckdb_string_t string);
uint32_t duckdb_string_t_length(duckdb_string_t string);
const char *duckdb_string_t_data(duckdb_string_t *string);
Date Time Timestamp Helpers
duckdb_date_struct duckdb_from_date(duckdb_date date);
duckdb_date duckdb_to_date(duckdb_date_struct date);
bool duckdb_is_finite_date(duckdb_date date);
duckdb_time_struct duckdb_from_time(duckdb_time time);
duckdb_time_tz duckdb_create_time_tz(int64_t micros, int32_t offset);
duckdb_time_tz_struct duckdb_from_time_tz(duckdb_time_tz micros);
duckdb_time duckdb_to_time(duckdb_time_struct time);
duckdb_timestamp_struct duckdb_from_timestamp(duckdb_timestamp ts);
duckdb_timestamp duckdb_to_timestamp(duckdb_timestamp_struct ts);
bool duckdb_is_finite_timestamp(duckdb_timestamp ts);
Hugeint Helpers
double duckdb_hugeint_to_double(duckdb_hugeint val);
duckdb_hugeint duckdb_double_to_hugeint(double val);
无符号大整数助手
double duckdb_uhugeint_to_double(duckdb_uhugeint val);
duckdb_uhugeint duckdb_double_to_uhugeint(double val);
Decimal Helpers
duckdb_decimal duckdb_double_to_decimal(double val, uint8_t width, uint8_t scale);
double duckdb_decimal_to_double(duckdb_decimal val);
Prepared Statements
duckdb_state duckdb_prepare(duckdb_connection connection, const char *query, duckdb_prepared_statement *out_prepared_statement);
void duckdb_destroy_prepare(duckdb_prepared_statement *prepared_statement);
const char *duckdb_prepare_error(duckdb_prepared_statement prepared_statement);
idx_t duckdb_nparams(duckdb_prepared_statement prepared_statement);
const char *duckdb_parameter_name(duckdb_prepared_statement prepared_statement, idx_t index);
duckdb_type duckdb_param_type(duckdb_prepared_statement prepared_statement, idx_t param_idx);
duckdb_state duckdb_clear_bindings(duckdb_prepared_statement prepared_statement);
duckdb_statement_type duckdb_prepared_statement_type(duckdb_prepared_statement statement);
绑定值到预处理语句
duckdb_state duckdb_bind_value(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_value val);
duckdb_state duckdb_bind_parameter_index(duckdb_prepared_statement prepared_statement, idx_t *param_idx_out, const char *name);
duckdb_state duckdb_bind_boolean(duckdb_prepared_statement prepared_statement, idx_t param_idx, bool val);
duckdb_state duckdb_bind_int8(duckdb_prepared_statement prepared_statement, idx_t param_idx, int8_t val);
duckdb_state duckdb_bind_int16(duckdb_prepared_statement prepared_statement, idx_t param_idx, int16_t val);
duckdb_state duckdb_bind_int32(duckdb_prepared_statement prepared_statement, idx_t param_idx, int32_t val);
duckdb_state duckdb_bind_int64(duckdb_prepared_statement prepared_statement, idx_t param_idx, int64_t val);
duckdb_state duckdb_bind_hugeint(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_hugeint val);
duckdb_state duckdb_bind_uhugeint(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_uhugeint val);
duckdb_state duckdb_bind_decimal(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_decimal val);
duckdb_state duckdb_bind_uint8(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint8_t val);
duckdb_state duckdb_bind_uint16(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint16_t val);
duckdb_state duckdb_bind_uint32(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint32_t val);
duckdb_state duckdb_bind_uint64(duckdb_prepared_statement prepared_statement, idx_t param_idx, uint64_t val);
duckdb_state duckdb_bind_float(duckdb_prepared_statement prepared_statement, idx_t param_idx, float val);
duckdb_state duckdb_bind_double(duckdb_prepared_statement prepared_statement, idx_t param_idx, double val);
duckdb_state duckdb_bind_date(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_date val);
duckdb_state duckdb_bind_time(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_time val);
duckdb_state duckdb_bind_timestamp(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_timestamp val);
duckdb_state duckdb_bind_timestamp_tz(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_timestamp val);
duckdb_state duckdb_bind_interval(duckdb_prepared_statement prepared_statement, idx_t param_idx, duckdb_interval val);
duckdb_state duckdb_bind_varchar(duckdb_prepared_statement prepared_statement, idx_t param_idx, const char *val);
duckdb_state duckdb_bind_varchar_length(duckdb_prepared_statement prepared_statement, idx_t param_idx, const char *val, idx_t length);
duckdb_state duckdb_bind_blob(duckdb_prepared_statement prepared_statement, idx_t param_idx, const void *data, idx_t length);
duckdb_state duckdb_bind_null(duckdb_prepared_statement prepared_statement, idx_t param_idx);
执行预编译语句
duckdb_state duckdb_execute_prepared(duckdb_prepared_statement prepared_statement, duckdb_result *out_result);
duckdb_state duckdb_execute_prepared_streaming(duckdb_prepared_statement prepared_statement, duckdb_result *out_result);
Extract Statements
idx_t duckdb_extract_statements(duckdb_connection connection, const char *query, duckdb_extracted_statements *out_extracted_statements);
duckdb_state duckdb_prepare_extracted_statement(duckdb_connection connection, duckdb_extracted_statements extracted_statements, idx_t index, duckdb_prepared_statement *out_prepared_statement);
const char *duckdb_extract_statements_error(duckdb_extracted_statements extracted_statements);
void duckdb_destroy_extracted(duckdb_extracted_statements *extracted_statements);
待处理结果接口
duckdb_state duckdb_pending_prepared(duckdb_prepared_statement prepared_statement, duckdb_pending_result *out_result);
duckdb_state duckdb_pending_prepared_streaming(duckdb_prepared_statement prepared_statement, duckdb_pending_result *out_result);
void duckdb_destroy_pending(duckdb_pending_result *pending_result);
const char *duckdb_pending_error(duckdb_pending_result pending_result);
duckdb_pending_state duckdb_pending_execute_task(duckdb_pending_result pending_result);
duckdb_pending_state duckdb_pending_execute_check_state(duckdb_pending_result pending_result);
duckdb_state duckdb_execute_pending(duckdb_pending_result pending_result, duckdb_result *out_result);
bool duckdb_pending_execution_is_finished(duckdb_pending_state pending_state);
Value Interface
void duckdb_destroy_value(duckdb_value *value);
duckdb_value duckdb_create_varchar(const char *text);
duckdb_value duckdb_create_varchar_length(const char *text, idx_t length);
duckdb_value duckdb_create_bool(bool input);
duckdb_value duckdb_create_int8(int8_t input);
duckdb_value duckdb_create_uint8(uint8_t input);
duckdb_value duckdb_create_int16(int16_t input);
duckdb_value duckdb_create_uint16(uint16_t input);
duckdb_value duckdb_create_int32(int32_t input);
duckdb_value duckdb_create_uint32(uint32_t input);
duckdb_value duckdb_create_uint64(uint64_t input);
duckdb_value duckdb_create_int64(int64_t val);
duckdb_value duckdb_create_hugeint(duckdb_hugeint input);
duckdb_value duckdb_create_uhugeint(duckdb_uhugeint input);
duckdb_value duckdb_create_float(float input);
duckdb_value duckdb_create_double(double input);
duckdb_value duckdb_create_date(duckdb_date input);
duckdb_value duckdb_create_time(duckdb_time input);
duckdb_value duckdb_create_time_tz_value(duckdb_time_tz value);
duckdb_value duckdb_create_timestamp(duckdb_timestamp input);
duckdb_value duckdb_create_interval(duckdb_interval input);
duckdb_value duckdb_create_blob(const uint8_t *data, idx_t length);
bool duckdb_get_bool(duckdb_value val);
int8_t duckdb_get_int8(duckdb_value val);
uint8_t duckdb_get_uint8(duckdb_value val);
int16_t duckdb_get_int16(duckdb_value val);
uint16_t duckdb_get_uint16(duckdb_value val);
int32_t duckdb_get_int32(duckdb_value val);
uint32_t duckdb_get_uint32(duckdb_value val);
int64_t duckdb_get_int64(duckdb_value val);
uint64_t duckdb_get_uint64(duckdb_value val);
duckdb_hugeint duckdb_get_hugeint(duckdb_value val);
duckdb_uhugeint duckdb_get_uhugeint(duckdb_value val);
float duckdb_get_float(duckdb_value val);
double duckdb_get_double(duckdb_value val);
duckdb_date duckdb_get_date(duckdb_value val);
duckdb_time duckdb_get_time(duckdb_value val);
duckdb_time_tz duckdb_get_time_tz(duckdb_value val);
duckdb_timestamp duckdb_get_timestamp(duckdb_value val);
duckdb_interval duckdb_get_interval(duckdb_value val);
duckdb_logical_type duckdb_get_value_type(duckdb_value val);
duckdb_blob duckdb_get_blob(duckdb_value val);
char *duckdb_get_varchar(duckdb_value value);
duckdb_value duckdb_create_struct_value(duckdb_logical_type type, duckdb_value *values);
duckdb_value duckdb_create_list_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count);
duckdb_value duckdb_create_array_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count);
idx_t duckdb_get_map_size(duckdb_value value);
duckdb_value duckdb_get_map_key(duckdb_value value, idx_t index);
duckdb_value duckdb_get_map_value(duckdb_value value, idx_t index);
Logical Type Interface
duckdb_logical_type duckdb_create_logical_type(duckdb_type type);
char *duckdb_logical_type_get_alias(duckdb_logical_type type);
void duckdb_logical_type_set_alias(duckdb_logical_type type, const char *alias);
duckdb_logical_type duckdb_create_list_type(duckdb_logical_type type);
duckdb_logical_type duckdb_create_array_type(duckdb_logical_type type, idx_t array_size);
duckdb_logical_type duckdb_create_map_type(duckdb_logical_type key_type, duckdb_logical_type value_type);
duckdb_logical_type duckdb_create_union_type(duckdb_logical_type *member_types, const char **member_names, idx_t member_count);
duckdb_logical_type duckdb_create_struct_type(duckdb_logical_type *member_types, const char **member_names, idx_t member_count);
duckdb_logical_type duckdb_create_enum_type(const char **member_names, idx_t member_count);
duckdb_logical_type duckdb_create_decimal_type(uint8_t width, uint8_t scale);
duckdb_type duckdb_get_type_id(duckdb_logical_type type);
uint8_t duckdb_decimal_width(duckdb_logical_type type);
uint8_t duckdb_decimal_scale(duckdb_logical_type type);
duckdb_type duckdb_decimal_internal_type(duckdb_logical_type type);
duckdb_type duckdb_enum_internal_type(duckdb_logical_type type);
uint32_t duckdb_enum_dictionary_size(duckdb_logical_type type);
char *duckdb_enum_dictionary_value(duckdb_logical_type type, idx_t index);
duckdb_logical_type duckdb_list_type_child_type(duckdb_logical_type type);
duckdb_logical_type duckdb_array_type_child_type(duckdb_logical_type type);
idx_t duckdb_array_type_array_size(duckdb_logical_type type);
duckdb_logical_type duckdb_map_type_key_type(duckdb_logical_type type);
duckdb_logical_type duckdb_map_type_value_type(duckdb_logical_type type);
idx_t duckdb_struct_type_child_count(duckdb_logical_type type);
char *duckdb_struct_type_child_name(duckdb_logical_type type, idx_t index);
duckdb_logical_type duckdb_struct_type_child_type(duckdb_logical_type type, idx_t index);
idx_t duckdb_union_type_member_count(duckdb_logical_type type);
char *duckdb_union_type_member_name(duckdb_logical_type type, idx_t index);
duckdb_logical_type duckdb_union_type_member_type(duckdb_logical_type type, idx_t index);
void duckdb_destroy_logical_type(duckdb_logical_type *type);
duckdb_state duckdb_register_logical_type(duckdb_connection con, duckdb_logical_type type, duckdb_create_type_info info);
数据块接口
duckdb_data_chunk duckdb_create_data_chunk(duckdb_logical_type *types, idx_t column_count);
void duckdb_destroy_data_chunk(duckdb_data_chunk *chunk);
void duckdb_data_chunk_reset(duckdb_data_chunk chunk);
idx_t duckdb_data_chunk_get_column_count(duckdb_data_chunk chunk);
duckdb_vector duckdb_data_chunk_get_vector(duckdb_data_chunk chunk, idx_t col_idx);
idx_t duckdb_data_chunk_get_size(duckdb_data_chunk chunk);
void duckdb_data_chunk_set_size(duckdb_data_chunk chunk, idx_t size);
向量接口
duckdb_logical_type duckdb_vector_get_column_type(duckdb_vector vector);
void *duckdb_vector_get_data(duckdb_vector vector);
uint64_t *duckdb_vector_get_validity(duckdb_vector vector);
void duckdb_vector_ensure_validity_writable(duckdb_vector vector);
void duckdb_vector_assign_string_element(duckdb_vector vector, idx_t index, const char *str);
void duckdb_vector_assign_string_element_len(duckdb_vector vector, idx_t index, const char *str, idx_t str_len);
duckdb_vector duckdb_list_vector_get_child(duckdb_vector vector);
idx_t duckdb_list_vector_get_size(duckdb_vector vector);
duckdb_state duckdb_list_vector_set_size(duckdb_vector vector, idx_t size);
duckdb_state duckdb_list_vector_reserve(duckdb_vector vector, idx_t required_capacity);
duckdb_vector duckdb_struct_vector_get_child(duckdb_vector vector, idx_t index);
duckdb_vector duckdb_array_vector_get_child(duckdb_vector vector);
Validity Mask Functions
bool duckdb_validity_row_is_valid(uint64_t *validity, idx_t row);
void duckdb_validity_set_row_validity(uint64_t *validity, idx_t row, bool valid);
void duckdb_validity_set_row_invalid(uint64_t *validity, idx_t row);
void duckdb_validity_set_row_valid(uint64_t *validity, idx_t row);
Scalar Functions
duckdb_scalar_function duckdb_create_scalar_function();
void duckdb_destroy_scalar_function(duckdb_scalar_function *scalar_function);
void duckdb_scalar_function_set_name(duckdb_scalar_function scalar_function, const char *name);
void duckdb_scalar_function_set_varargs(duckdb_scalar_function scalar_function, duckdb_logical_type type);
void duckdb_scalar_function_set_special_handling(duckdb_scalar_function scalar_function);
void duckdb_scalar_function_set_volatile(duckdb_scalar_function scalar_function);
void duckdb_scalar_function_add_parameter(duckdb_scalar_function scalar_function, duckdb_logical_type type);
void duckdb_scalar_function_set_return_type(duckdb_scalar_function scalar_function, duckdb_logical_type type);
void duckdb_scalar_function_set_extra_info(duckdb_scalar_function scalar_function, void *extra_info, duckdb_delete_callback_t destroy);
void duckdb_scalar_function_set_function(duckdb_scalar_function scalar_function, duckdb_scalar_function_t function);
duckdb_state duckdb_register_scalar_function(duckdb_connection con, duckdb_scalar_function scalar_function);
void *duckdb_scalar_function_get_extra_info(duckdb_function_info info);
void duckdb_scalar_function_set_error(duckdb_function_info info, const char *error);
duckdb_scalar_function_set duckdb_create_scalar_function_set(const char *name);
void duckdb_destroy_scalar_function_set(duckdb_scalar_function_set *scalar_function_set);
duckdb_state duckdb_add_scalar_function_to_set(duckdb_scalar_function_set set, duckdb_scalar_function function);
duckdb_state duckdb_register_scalar_function_set(duckdb_connection con, duckdb_scalar_function_set set);
Aggregate Functions
duckdb_aggregate_function duckdb_create_aggregate_function();
void duckdb_destroy_aggregate_function(duckdb_aggregate_function *aggregate_function);
void duckdb_aggregate_function_set_name(duckdb_aggregate_function aggregate_function, const char *name);
void duckdb_aggregate_function_add_parameter(duckdb_aggregate_function aggregate_function, duckdb_logical_type type);
void duckdb_aggregate_function_set_return_type(duckdb_aggregate_function aggregate_function, duckdb_logical_type type);
void duckdb_aggregate_function_set_functions(duckdb_aggregate_function aggregate_function, duckdb_aggregate_state_size state_size, duckdb_aggregate_init_t state_init, duckdb_aggregate_update_t update, duckdb_aggregate_combine_t combine, duckdb_aggregate_finalize_t finalize);
void duckdb_aggregate_function_set_destructor(duckdb_aggregate_function aggregate_function, duckdb_aggregate_destroy_t destroy);
duckdb_state duckdb_register_aggregate_function(duckdb_connection con, duckdb_aggregate_function aggregate_function);
void duckdb_aggregate_function_set_special_handling(duckdb_aggregate_function aggregate_function);
void duckdb_aggregate_function_set_extra_info(duckdb_aggregate_function aggregate_function, void *extra_info, duckdb_delete_callback_t destroy);
void *duckdb_aggregate_function_get_extra_info(duckdb_function_info info);
void duckdb_aggregate_function_set_error(duckdb_function_info info, const char *error);
duckdb_aggregate_function_set duckdb_create_aggregate_function_set(const char *name);
void duckdb_destroy_aggregate_function_set(duckdb_aggregate_function_set *aggregate_function_set);
duckdb_state duckdb_add_aggregate_function_to_set(duckdb_aggregate_function_set set, duckdb_aggregate_function function);
duckdb_state duckdb_register_aggregate_function_set(duckdb_connection con, duckdb_aggregate_function_set set);
Table Functions
duckdb_table_function duckdb_create_table_function();
void duckdb_destroy_table_function(duckdb_table_function *table_function);
void duckdb_table_function_set_name(duckdb_table_function table_function, const char *name);
void duckdb_table_function_add_parameter(duckdb_table_function table_function, duckdb_logical_type type);
void duckdb_table_function_add_named_parameter(duckdb_table_function table_function, const char *name, duckdb_logical_type type);
void duckdb_table_function_set_extra_info(duckdb_table_function table_function, void *extra_info, duckdb_delete_callback_t destroy);
void duckdb_table_function_set_bind(duckdb_table_function table_function, duckdb_table_function_bind_t bind);
void duckdb_table_function_set_init(duckdb_table_function table_function, duckdb_table_function_init_t init);
void duckdb_table_function_set_local_init(duckdb_table_function table_function, duckdb_table_function_init_t init);
void duckdb_table_function_set_function(duckdb_table_function table_function, duckdb_table_function_t function);
void duckdb_table_function_supports_projection_pushdown(duckdb_table_function table_function, bool pushdown);
duckdb_state duckdb_register_table_function(duckdb_connection con, duckdb_table_function function);
表函数绑定
void *duckdb_bind_get_extra_info(duckdb_bind_info info);
void duckdb_bind_add_result_column(duckdb_bind_info info, const char *name, duckdb_logical_type type);
idx_t duckdb_bind_get_parameter_count(duckdb_bind_info info);
duckdb_value duckdb_bind_get_parameter(duckdb_bind_info info, idx_t index);
duckdb_value duckdb_bind_get_named_parameter(duckdb_bind_info info, const char *name);
void duckdb_bind_set_bind_data(duckdb_bind_info info, void *bind_data, duckdb_delete_callback_t destroy);
void duckdb_bind_set_cardinality(duckdb_bind_info info, idx_t cardinality, bool is_exact);
void duckdb_bind_set_error(duckdb_bind_info info, const char *error);
表格函数初始化
void *duckdb_init_get_extra_info(duckdb_init_info info);
void *duckdb_init_get_bind_data(duckdb_init_info info);
void duckdb_init_set_init_data(duckdb_init_info info, void *init_data, duckdb_delete_callback_t destroy);
idx_t duckdb_init_get_column_count(duckdb_init_info info);
idx_t duckdb_init_get_column_index(duckdb_init_info info, idx_t column_index);
void duckdb_init_set_max_threads(duckdb_init_info info, idx_t max_threads);
void duckdb_init_set_error(duckdb_init_info info, const char *error);
Table Function
void *duckdb_function_get_extra_info(duckdb_function_info info);
void *duckdb_function_get_bind_data(duckdb_function_info info);
void *duckdb_function_get_init_data(duckdb_function_info info);
void *duckdb_function_get_local_init_data(duckdb_function_info info);
void duckdb_function_set_error(duckdb_function_info info, const char *error);
替换扫描
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_profiling_info duckdb_get_profiling_info(duckdb_connection connection);
duckdb_value duckdb_profiling_info_get_value(duckdb_profiling_info info, const char *key);
duckdb_value duckdb_profiling_info_get_metrics(duckdb_profiling_info info);
idx_t duckdb_profiling_info_get_child_count(duckdb_profiling_info info);
duckdb_profiling_info duckdb_profiling_info_get_child(duckdb_profiling_info info, idx_t index);
Appender
duckdb_state duckdb_appender_create(duckdb_connection connection, const char *schema, const char *table, duckdb_appender *out_appender);
idx_t duckdb_appender_column_count(duckdb_appender appender);
duckdb_logical_type duckdb_appender_column_type(duckdb_appender appender, idx_t col_idx);
const char *duckdb_appender_error(duckdb_appender appender);
duckdb_state duckdb_appender_flush(duckdb_appender appender);
duckdb_state duckdb_appender_close(duckdb_appender appender);
duckdb_state duckdb_appender_destroy(duckdb_appender *appender);
duckdb_state duckdb_appender_begin_row(duckdb_appender appender);
duckdb_state duckdb_appender_end_row(duckdb_appender appender);
duckdb_state duckdb_append_default(duckdb_appender appender);
duckdb_state duckdb_append_bool(duckdb_appender appender, bool value);
duckdb_state duckdb_append_int8(duckdb_appender appender, int8_t value);
duckdb_state duckdb_append_int16(duckdb_appender appender, int16_t value);
duckdb_state duckdb_append_int32(duckdb_appender appender, int32_t value);
duckdb_state duckdb_append_int64(duckdb_appender appender, int64_t value);
duckdb_state duckdb_append_hugeint(duckdb_appender appender, duckdb_hugeint value);
duckdb_state duckdb_append_uint8(duckdb_appender appender, uint8_t value);
duckdb_state duckdb_append_uint16(duckdb_appender appender, uint16_t value);
duckdb_state duckdb_append_uint32(duckdb_appender appender, uint32_t value);
duckdb_state duckdb_append_uint64(duckdb_appender appender, uint64_t value);
duckdb_state duckdb_append_uhugeint(duckdb_appender appender, duckdb_uhugeint value);
duckdb_state duckdb_append_float(duckdb_appender appender, float value);
duckdb_state duckdb_append_double(duckdb_appender appender, double value);
duckdb_state duckdb_append_date(duckdb_appender appender, duckdb_date value);
duckdb_state duckdb_append_time(duckdb_appender appender, duckdb_time value);
duckdb_state duckdb_append_timestamp(duckdb_appender appender, duckdb_timestamp value);
duckdb_state duckdb_append_interval(duckdb_appender appender, duckdb_interval value);
duckdb_state duckdb_append_varchar(duckdb_appender appender, const char *val);
duckdb_state duckdb_append_varchar_length(duckdb_appender appender, const char *val, idx_t length);
duckdb_state duckdb_append_blob(duckdb_appender appender, const void *data, idx_t length);
duckdb_state duckdb_append_null(duckdb_appender appender);
duckdb_state duckdb_append_data_chunk(duckdb_appender appender, duckdb_data_chunk chunk);
表格描述
duckdb_state duckdb_table_description_create(duckdb_connection connection, const char *schema, const char *table, duckdb_table_description *out);
void duckdb_table_description_destroy(duckdb_table_description *table_description);
const char *duckdb_table_description_error(duckdb_table_description table_description);
duckdb_state duckdb_column_has_default(duckdb_table_description table_description, idx_t index, bool *out);
Arrow Interface
duckdb_state duckdb_query_arrow(duckdb_connection connection, const char *query, duckdb_arrow *out_result);
duckdb_state duckdb_query_arrow_schema(duckdb_arrow result, duckdb_arrow_schema *out_schema);
duckdb_state duckdb_prepared_arrow_schema(duckdb_prepared_statement prepared, duckdb_arrow_schema *out_schema);
void duckdb_result_arrow_array(duckdb_result result, duckdb_data_chunk chunk, duckdb_arrow_array *out_array);
duckdb_state duckdb_query_arrow_array(duckdb_arrow result, duckdb_arrow_array *out_array);
idx_t duckdb_arrow_column_count(duckdb_arrow result);
idx_t duckdb_arrow_row_count(duckdb_arrow result);
idx_t duckdb_arrow_rows_changed(duckdb_arrow result);
const char *duckdb_query_arrow_error(duckdb_arrow result);
void duckdb_destroy_arrow(duckdb_arrow *result);
void duckdb_destroy_arrow_stream(duckdb_arrow_stream *stream_p);
duckdb_state duckdb_execute_prepared_arrow(duckdb_prepared_statement prepared_statement, duckdb_arrow *out_result);
duckdb_state duckdb_arrow_scan(duckdb_connection connection, const char *table_name, duckdb_arrow_stream arrow);
duckdb_state duckdb_arrow_array_scan(duckdb_connection connection, const char *table_name, duckdb_arrow_schema arrow_schema, duckdb_arrow_array arrow_array, duckdb_arrow_stream *out_stream);
线程信息
void duckdb_execute_tasks(duckdb_database database, idx_t max_tasks);
duckdb_task_state duckdb_create_task_state(duckdb_database database);
void duckdb_execute_tasks_state(duckdb_task_state state);
idx_t duckdb_execute_n_tasks_state(duckdb_task_state state, idx_t max_tasks);
void duckdb_finish_execution(duckdb_task_state state);
bool duckdb_task_state_is_finished(duckdb_task_state state);
void duckdb_destroy_task_state(duckdb_task_state state);
bool duckdb_execution_is_finished(duckdb_connection con);
流式结果接口
duckdb_data_chunk duckdb_stream_fetch_chunk(duckdb_result result);
duckdb_data_chunk duckdb_fetch_chunk(duckdb_result result);
转换函数
duckdb_cast_function duckdb_create_cast_function();
void duckdb_cast_function_set_source_type(duckdb_cast_function cast_function, duckdb_logical_type source_type);
void duckdb_cast_function_set_target_type(duckdb_cast_function cast_function, duckdb_logical_type target_type);
void duckdb_cast_function_set_implicit_cast_cost(duckdb_cast_function cast_function, int64_t cost);
void duckdb_cast_function_set_function(duckdb_cast_function cast_function, duckdb_cast_function_t function);
void duckdb_cast_function_set_extra_info(duckdb_cast_function cast_function, void *extra_info, duckdb_delete_callback_t destroy);
void *duckdb_cast_function_get_extra_info(duckdb_function_info info);
duckdb_cast_mode duckdb_cast_function_get_cast_mode(duckdb_function_info info);
void duckdb_cast_function_set_error(duckdb_function_info info, const char *error);
void duckdb_cast_function_set_row_error(duckdb_function_info info, const char *error, idx_t row, duckdb_vector output);
duckdb_state duckdb_register_cast_function(duckdb_connection con, duckdb_cast_function cast_function);
void duckdb_destroy_cast_function(duckdb_cast_function *cast_function);
duckdb_open
创建一个新的数据库或打开存储在给定路径的现有数据库文件。 如果没有给出路径,则会创建一个新的内存数据库。 实例化的数据库应使用'duckdb_close'关闭。
Syntax
duckdb_state duckdb_open(
const char *path,
duckdb_database *out_database
);
Parameters
path
: 磁盘上数据库文件的路径,或nullptr
或:memory:
以打开内存数据库。out_database
: 结果数据库对象。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_open_ext
duckdb_open 的扩展版本。创建一个新的数据库或打开存储在给定路径的现有数据库文件。 实例化的数据库应使用 'duckdb_close' 关闭。
Syntax
duckdb_state duckdb_open_ext(
const char *path,
duckdb_database *out_database,
duckdb_config config,
char **out_error
);
Parameters
path
: 磁盘上数据库文件的路径,或nullptr
或:memory:
以打开内存数据库。out_database
: 结果数据库对象。config
: (可选)用于启动数据库系统的配置。out_error
: 如果设置并且函数返回DuckDBError,这将包含启动失败的原因。 请注意,必须使用duckdb_free
来释放错误。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_close
Closes the specified database and de-allocates all memory allocated for that database.
This should be called after you are done with any database allocated through duckdb_open
or duckdb_open_ext
.
Note that failing to call duckdb_close
(in case of e.g., a program crash) will not cause data corruption.
Still, it is recommended to always correctly close a database object after you are done with it.
Syntax
void duckdb_close(
duckdb_database *database
);
Parameters
database
: 要关闭的数据库对象。
duckdb_connect
打开与数据库的连接。连接是查询数据库所必需的,并且存储与连接相关的事务状态。 实例化的连接应使用'duckdb_disconnect'关闭。
Syntax
duckdb_state duckdb_connect(
duckdb_database database,
duckdb_connection *out_connection
);
Parameters
database
: 要连接的数据库文件。out_connection
: 结果连接对象。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_interrupt
中断正在运行的查询
Syntax
void duckdb_interrupt(
duckdb_connection connection
);
Parameters
connection
: 要中断的连接
duckdb_query_progress
获取正在运行的查询的进度
Syntax
duckdb_query_progress_type duckdb_query_progress(
duckdb_connection connection
);
Parameters
connection
: 工作连接
Return Value
如果没有进度则为-1,否则为进度的百分比
duckdb_disconnect
关闭指定的连接并释放为该连接分配的所有内存。
Syntax
void duckdb_disconnect(
duckdb_connection *connection
);
Parameters
connection
: 要关闭的连接。
duckdb_library_version
返回链接的DuckDB版本,开发版本带有版本后缀
通常用于开发必须返回此值以进行兼容性检查的C扩展。
Syntax
const char *duckdb_library_version(
);
duckdb_create_config
Initializes an empty configuration object that can be used to provide start-up options for the DuckDB instance
through duckdb_open_ext
.
The duckdb_config must be destroyed using 'duckdb_destroy_config'
除非发生内存分配失败,否则这将始终成功。
Note that duckdb_destroy_config
should always be called on the resulting config, even if the function returns
DuckDBError
.
Syntax
duckdb_state duckdb_create_config(
duckdb_config *out_config
);
Parameters
out_config
: The result configuration object.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_config_count
This returns the total amount of configuration options available for usage with duckdb_get_config_flag
.
这不应该在循环中调用,因为它内部会循环遍历所有选项。
Return Value
可用的配置选项数量。
Syntax
size_t duckdb_config_count(
);
duckdb_get_config_flag
Obtains a human-readable name and description of a specific configuration option. This can be used to e.g.
display configuration options. This will succeed unless index
is out of range (i.e., >= duckdb_config_count
).
结果名称或描述不得被释放。
Syntax
duckdb_state duckdb_get_config_flag(
size_t index,
const char **out_name,
const char **out_description
);
Parameters
index
: The index of the configuration option (between 0 andduckdb_config_count
)out_name
: A name of the configuration flag.out_description
: A description of the configuration flag.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_set_config
Sets the specified option for the specified configuration. The configuration option is indicated by name.
To obtain a list of config options, see duckdb_get_config_flag
.
In the source code, configuration options are defined in config.cpp
.
如果名称无效,或者为选项提供的值无效,则可能会失败。
Syntax
duckdb_state duckdb_set_config(
duckdb_config config,
const char *name,
const char *option
);
Parameters
config
: The configuration object to set the option on.name
: The name of the configuration flag to set.option
: The value to set the configuration flag to.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_destroy_config
销毁指定的配置对象并释放为该对象分配的所有内存。
Syntax
void duckdb_destroy_config(
duckdb_config *config
);
Parameters
config
: The configuration object to destroy.
duckdb_query
Executes a SQL query within a connection and stores the full (materialized) result in the out_result pointer.
If the query fails to execute, DuckDBError is returned and the error message can be retrieved by calling
duckdb_result_error
.
Note that after running duckdb_query
, duckdb_destroy_result
must be called on the result object even if the
query fails, otherwise the error stored within the result will not be freed correctly.
Syntax
duckdb_state duckdb_query(
duckdb_connection connection,
const char *query,
duckdb_result *out_result
);
Parameters
connection
: The connection to perform the query in.query
: The SQL query to run.out_result
: The query result.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_destroy_result
关闭结果并释放为该连接分配的所有内存。
Syntax
void duckdb_destroy_result(
duckdb_result *result
);
Parameters
result
: The result to destroy.
duckdb_column_name
返回指定列的名称。结果不需要手动释放;当结果被销毁时,列名将自动销毁。
Returns NULL
if the column is out of range.
Syntax
const char *duckdb_column_name(
duckdb_result *result,
idx_t col
);
Parameters
result
: The result object to fetch the column name from.col
: The column index.
Return Value
指定列的名称。
duckdb_column_type
返回指定列的类型。
Returns DUCKDB_TYPE_INVALID
if the column is out of range.
Syntax
duckdb_type duckdb_column_type(
duckdb_result *result,
idx_t col
);
Parameters
result
: The result object to fetch the column type from.col
: The column index.
Return Value
指定列的类型。
duckdb_result_statement_type
返回已执行语句的语句类型
Syntax
duckdb_statement_type duckdb_result_statement_type(
duckdb_result result
);
Parameters
result
: The result object to fetch the statement type from.
Return Value
duckdb_statement_type 值或 DUCKDB_STATEMENT_TYPE_INVALID
duckdb_column_logical_type
返回指定列的逻辑列类型。
The return type of this call should be destroyed with duckdb_destroy_logical_type
.
Returns NULL
if the column is out of range.
Syntax
duckdb_logical_type duckdb_column_logical_type(
duckdb_result *result,
idx_t col
);
Parameters
result
: The result object to fetch the column type from.col
: The column index.
Return Value
指定列的逻辑列类型。
duckdb_column_count
返回结果对象中存在的列数。
Syntax
idx_t duckdb_column_count(
duckdb_result *result
);
Parameters
result
: The result object.
Return Value
结果对象中存在的列数。
duckdb_row_count
警告 弃用通知。此方法计划在未来的版本中移除。
返回结果对象中存在的行数。
Syntax
idx_t duckdb_row_count(
duckdb_result *result
);
Parameters
result
: The result object.
Return Value
结果对象中存在的行数。
duckdb_rows_changed
返回存储在结果中的查询更改的行数。这仅与INSERT/UPDATE/DELETE查询相关。对于其他查询,rows_changed将为0。
Syntax
idx_t duckdb_rows_changed(
duckdb_result *result
);
Parameters
result
: The result object.
Return Value
更改的行数。
duckdb_column_data
Deprecated This method has been deprecated. Prefer using
duckdb_result_get_chunk
instead.
返回结果中特定列的数据,以列格式显示。
The function returns a dense array which contains the result data. The exact type stored in the array depends on the
corresponding duckdb_type (as provided by duckdb_column_type
). For the exact type by which the data should be
accessed, see the comments in the types section or the DUCKDB_TYPE
enum.
For example, for a column of type DUCKDB_TYPE_INTEGER
, rows can be accessed in the following manner:
int32_t *data = (int32_t *) duckdb_column_data(&result, 0);
printf("Data for row %d: %d\n", row, data[row]);
Syntax
void *duckdb_column_data(
duckdb_result *result,
idx_t col
);
Parameters
result
: 从中获取列数据的结果对象。col
: The column index.
Return Value
指定列的列数据。
duckdb_nullmask_data
Deprecated This method has been deprecated. Prefer using
duckdb_result_get_chunk
instead.
返回以列格式表示的特定列结果的空值掩码。空值掩码指示每一行是否是对应的NULL
行。如果某一行是NULL
,则由duckdb_column_data
提供的数组中的值是未定义的。
int32_t *data = (int32_t *) duckdb_column_data(&result, 0);
bool *nullmask = duckdb_nullmask_data(&result, 0);
if (nullmask[row]) {
printf("Data for row %d: NULL\n", row);
} else {
printf("Data for row %d: %d\n", row, data[row]);
}
Syntax
bool *duckdb_nullmask_data(
duckdb_result *result,
idx_t col
);
Parameters
result
: 从中获取空掩码的结果对象。col
: The column index.
Return Value
指定列的空掩码。
duckdb_result_error
返回结果中包含的错误信息。只有在duckdb_query
返回DuckDBError
时,才会设置错误。
此函数的结果不能被释放。它将在调用duckdb_destroy_result
时被清理。
Syntax
const char *duckdb_result_error(
duckdb_result *result
);
Parameters
result
: The result object to fetch the error from.
Return Value
结果的错误。
duckdb_result_error_type
返回结果中包含的错误类型。只有在duckdb_query
返回DuckDBError
时,错误才会被设置。
Syntax
duckdb_error_type duckdb_result_error_type(
duckdb_result *result
);
Parameters
result
: The result object to fetch the error from.
Return Value
结果的错误类型。
duckdb_result_get_chunk
警告 弃用通知。此方法计划在未来的版本中移除。
从duckdb_result中获取一个数据块。此函数应重复调用,直到结果耗尽。
The result must be destroyed with duckdb_destroy_data_chunk
.
This function supersedes all duckdb_value
functions, as well as the duckdb_column_data
and duckdb_nullmask_data
functions. It results in significantly better performance, and should be preferred in newer code-bases.
如果使用此函数,则不能使用其他结果函数,反之亦然(即,此函数不能与旧的结果函数混合使用)。
Use duckdb_result_chunk_count
to figure out how many chunks there are in the result.
Syntax
duckdb_data_chunk duckdb_result_get_chunk(
duckdb_result result,
idx_t chunk_index
);
Parameters
result
: The result object to fetch the data chunk from.chunk_index
: The chunk index to fetch from.
Return Value
The resulting data chunk. Returns NULL
if the chunk index is out of bounds.
duckdb_result_is_streaming
警告 弃用通知。此方法计划在未来的版本中移除。
检查内部结果的类型是否为StreamQueryResult。
Syntax
bool duckdb_result_is_streaming(
duckdb_result result
);
Parameters
result
: The result object to check.
Return Value
结果对象是否为StreamQueryResult类型
duckdb_result_chunk_count
警告 弃用通知。此方法计划在未来的版本中移除。
返回结果中存在的数据块数量。
Syntax
idx_t duckdb_result_chunk_count(
duckdb_result result
);
Parameters
result
: The result object
Return Value
结果中存在的数据块数量。
duckdb_result_return_type
返回给定结果的return_type,或在错误时返回DUCKDB_RETURN_TYPE_INVALID
Syntax
duckdb_result_type duckdb_result_return_type(
duckdb_result result
);
Parameters
result
: The result object
Return Value
返回类型
duckdb_value_boolean
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的布尔值,如果无法转换该值,则为 false。
Syntax
bool duckdb_value_boolean(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_int8
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的int8_t值,如果无法转换该值,则为0。
Syntax
int8_t duckdb_value_int8(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_int16
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的int16_t值,如果无法转换该值,则为0。
Syntax
int16_t duckdb_value_int16(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_int32
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置处的int32_t值,如果无法转换该值,则为0。
Syntax
int32_t duckdb_value_int32(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_int64
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的int64_t值,如果无法转换该值,则为0。
Syntax
int64_t duckdb_value_int64(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_hugeint
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的duckdb_hugeint值,如果无法转换则为0。
Syntax
duckdb_hugeint duckdb_value_hugeint(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_uhugeint
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的duckdb_uhugeint值,如果无法转换则为0。
Syntax
duckdb_uhugeint duckdb_value_uhugeint(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_decimal
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的duckdb_decimal值,如果无法转换该值,则为0。
Syntax
duckdb_decimal duckdb_value_decimal(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_uint8
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的uint8_t值,如果无法转换该值,则为0。
Syntax
uint8_t duckdb_value_uint8(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_uint16
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的 uint16_t 值,如果无法转换该值,则为 0。
Syntax
uint16_t duckdb_value_uint16(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_uint32
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的 uint32_t 值,如果无法转换该值,则为 0。
Syntax
uint32_t duckdb_value_uint32(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_uint64
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的 uint64_t 值,如果无法转换该值,则为 0。
Syntax
uint64_t duckdb_value_uint64(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_float
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置处的浮点值,如果无法转换该值,则为0。
Syntax
float duckdb_value_float(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_double
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的双精度值,如果无法转换则为0。
Syntax
double duckdb_value_double(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_date
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的duckdb_date值,如果无法转换该值,则为0。
Syntax
duckdb_date duckdb_value_date(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_time
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的duckdb_time值,如果无法转换该值,则为0。
Syntax
duckdb_time duckdb_value_time(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_timestamp
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的duckdb_timestamp值,如果无法转换该值,则为0。
Syntax
duckdb_timestamp duckdb_value_timestamp(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_interval
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的duckdb_interval值,如果无法转换该值,则为0。
Syntax
duckdb_interval duckdb_value_interval(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_varchar
已弃用 此方法已被弃用。请改用duckdb_value_string。如果字符串包含空字节,此函数无法正常工作。
Return Value
指定位置的文本值作为以空字符结尾的字符串,如果无法转换该值,则为 nullptr。结果必须使用 duckdb_free
释放。
Syntax
char *duckdb_value_varchar(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_string
警告 弃用通知。此方法计划在未来的版本中移除。
不支持嵌套类型和其他复杂类型。
生成的字段 "string.data" 必须使用 duckdb_free
释放。
Return Value
指定位置的字符串值。尝试将结果值转换为字符串。
Syntax
duckdb_string duckdb_value_string(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_varchar_internal
已弃用 此方法已被弃用。请改用duckdb_value_string_internal。如果字符串包含空字节,此函数无法正常工作。
Return Value
指定位置的char*值。仅适用于VARCHAR列,且不会自动转换。 如果列不是VARCHAR列,此函数将返回NULL。
结果不得被释放。
Syntax
char *duckdb_value_varchar_internal(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_string_internal
已弃用 此方法已被弃用。请改用duckdb_value_string_internal。如果字符串包含空字节,此函数无法正常工作。
Return Value
指定位置的char*值。仅适用于VARCHAR列,且不会自动转换。 如果列不是VARCHAR列,此函数将返回NULL。
结果不得被释放。
Syntax
duckdb_string duckdb_value_string_internal(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_blob
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
指定位置的duckdb_blob值。如果该值无法转换,则返回一个blob,其blob.data设置为nullptr。生成的字段“blob.data”必须使用duckdb_free
释放。
Syntax
duckdb_blob duckdb_value_blob(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_value_is_null
警告 弃用通知。此方法计划在未来的版本中移除。
Return Value
如果指定索引处的值为NULL,则返回true,否则返回false。
Syntax
bool duckdb_value_is_null(
duckdb_result *result,
idx_t col,
idx_t row
);
duckdb_malloc
使用duckdb内部的malloc函数分配size
字节的内存。以这种方式分配的任何内存都应使用duckdb_free
释放。
Syntax
void *duckdb_malloc(
size_t size
);
Parameters
size
: 要分配的字节数。
Return Value
指向已分配内存区域的指针。
duckdb_free
释放从 duckdb_malloc
、duckdb_value_varchar
、duckdb_value_blob
或
duckdb_value_string
返回的值。
Syntax
void duckdb_free(
void *ptr
);
Parameters
ptr
: 要释放的内存区域。
duckdb_vector_size
DuckDB 使用的内部向量大小。
这是可以放入由 duckdb_create_data_chunk
创建的数据块中的元组数量。
Return Value
向量大小。
Syntax
idx_t duckdb_vector_size(
);
duckdb_string_is_inlined
duckdb_string_t 值是否内联。 这意味着字符串的数据没有单独分配。
Syntax
bool duckdb_string_is_inlined(
duckdb_string_t string
);
duckdb_string_t_length
获取字符串 string_t 的长度
Syntax
uint32_t duckdb_string_t_length(
duckdb_string_t string
);
Parameters
string
: 要获取长度的字符串。
Return Value
长度。
duckdb_string_t_data
获取指向 string_t 字符串数据的指针
Syntax
const char *duckdb_string_t_data(
duckdb_string_t *string
);
Parameters
string
: 获取指针的字符串。
Return Value
指针。
duckdb_from_date
Decompose a duckdb_date
object into year, month and date (stored as duckdb_date_struct
).
Syntax
duckdb_date_struct duckdb_from_date(
duckdb_date date
);
Parameters
date
: The date object, as obtained from aDUCKDB_TYPE_DATE
column.
Return Value
The duckdb_date_struct
with the decomposed elements.
duckdb_to_date
Re-compose a duckdb_date
from year, month and date (duckdb_date_struct
).
Syntax
duckdb_date duckdb_to_date(
duckdb_date_struct date
);
Parameters
date
: The year, month and date stored in aduckdb_date_struct
.
Return Value
The duckdb_date
element.
duckdb_is_finite_date
Test a duckdb_date
to see if it is a finite value.
Syntax
bool duckdb_is_finite_date(
duckdb_date date
);
Parameters
date
: The date object, as obtained from aDUCKDB_TYPE_DATE
column.
Return Value
如果日期是有限的则为True,如果它是±无穷大则为false。
duckdb_from_time
Decompose a duckdb_time
object into hour, minute, second and microsecond (stored as duckdb_time_struct
).
Syntax
duckdb_time_struct duckdb_from_time(
duckdb_time time
);
Parameters
time
: The time object, as obtained from aDUCKDB_TYPE_TIME
column.
Return Value
The duckdb_time_struct
with the decomposed elements.
duckdb_create_time_tz
Create a duckdb_time_tz
object from micros and a timezone offset.
Syntax
duckdb_time_tz duckdb_create_time_tz(
int64_t micros,
int32_t offset
);
Parameters
micros
: The microsecond component of the time.offset
: 时间的时区偏移量部分。
Return Value
The duckdb_time_tz
element.
duckdb_from_time_tz
将TIME_TZ对象分解为微秒和时区偏移量。
Use duckdb_from_time
to further decompose the micros into hour, minute, second and microsecond.
Syntax
duckdb_time_tz_struct duckdb_from_time_tz(
duckdb_time_tz micros
);
Parameters
micros
: 时间对象,从DUCKDB_TYPE_TIME_TZ
列中获取。
duckdb_to_time
Re-compose a duckdb_time
from hour, minute, second and microsecond (duckdb_time_struct
).
Syntax
duckdb_time duckdb_to_time(
duckdb_time_struct time
);
Parameters
time
: The hour, minute, second and microsecond in aduckdb_time_struct
.
Return Value
The duckdb_time
element.
duckdb_from_timestamp
Decompose a duckdb_timestamp
object into a duckdb_timestamp_struct
.
Syntax
duckdb_timestamp_struct duckdb_from_timestamp(
duckdb_timestamp ts
);
Parameters
ts
: ts对象,从DUCKDB_TYPE_TIMESTAMP
列中获取。
Return Value
The duckdb_timestamp_struct
with the decomposed elements.
duckdb_to_timestamp
Re-compose a duckdb_timestamp
from a duckdb_timestamp_struct.
Syntax
duckdb_timestamp duckdb_to_timestamp(
duckdb_timestamp_struct ts
);
Parameters
ts
: 分解后的元素在duckdb_timestamp_struct
中。
Return Value
The duckdb_timestamp
element.
duckdb_is_finite_timestamp
Test a duckdb_timestamp
to see if it is a finite value.
Syntax
bool duckdb_is_finite_timestamp(
duckdb_timestamp ts
);
Parameters
ts
: 时间戳对象,从DUCKDB_TYPE_TIMESTAMP
列中获取。
Return Value
如果时间戳是有限的则为True,如果它是±无穷大则为false。
duckdb_hugeint_to_double
Converts a duckdb_hugeint object (as obtained from a DUCKDB_TYPE_HUGEINT
column) into a double.
Syntax
double duckdb_hugeint_to_double(
duckdb_hugeint val
);
Parameters
val
: The hugeint value.
Return Value
The converted double
element.
duckdb_double_to_hugeint
将双精度值转换为duckdb_hugeint对象。
如果转换失败是因为双精度值太大,结果将为0。
Syntax
duckdb_hugeint duckdb_double_to_hugeint(
double val
);
Parameters
val
: The double value.
Return Value
The converted duckdb_hugeint
element.
duckdb_uhugeint_to_double
将duckdb_uhugeint对象(从DUCKDB_TYPE_UHUGEINT
列中获取)转换为double类型。
Syntax
double duckdb_uhugeint_to_double(
duckdb_uhugeint val
);
Parameters
val
: uhugeint 值。
Return Value
The converted double
element.
duckdb_double_to_uhugeint
将双精度值转换为duckdb_uhugeint对象。
如果转换失败是因为双精度值太大,结果将为0。
Syntax
duckdb_uhugeint duckdb_double_to_uhugeint(
double val
);
Parameters
val
: The double value.
Return Value
转换后的 duckdb_uhugeint
元素。
duckdb_double_to_decimal
将双精度值转换为duckdb_decimal对象。
如果由于双精度值过大或宽度/比例无效而导致转换失败,结果将为0。
Syntax
duckdb_decimal duckdb_double_to_decimal(
double val,
uint8_t width,
uint8_t scale
);
Parameters
val
: The double value.
Return Value
The converted duckdb_decimal
element.
duckdb_decimal_to_double
Converts a duckdb_decimal object (as obtained from a DUCKDB_TYPE_DECIMAL
column) into a double.
Syntax
double duckdb_decimal_to_double(
duckdb_decimal val
);
Parameters
val
: The decimal value.
Return Value
The converted double
element.
duckdb_prepare
从查询创建一个预处理语句对象。
Note that after calling duckdb_prepare
, the prepared statement should always be destroyed using
duckdb_destroy_prepare
, even if the prepare fails.
If the prepare fails, duckdb_prepare_error
can be called to obtain the reason why the prepare failed.
Syntax
duckdb_state duckdb_prepare(
duckdb_connection connection,
const char *query,
duckdb_prepared_statement *out_prepared_statement
);
Parameters
connection
: The connection objectquery
: The SQL query to prepareout_prepared_statement
: The resulting prepared statement object
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_destroy_prepare
关闭准备好的语句并释放为该语句分配的所有内存。
Syntax
void duckdb_destroy_prepare(
duckdb_prepared_statement *prepared_statement
);
Parameters
prepared_statement
: The prepared statement to destroy.
duckdb_prepare_error
Returns the error message associated with the given prepared statement.
If the prepared statement has no error message, this returns nullptr
instead.
The error message should not be freed. It will be de-allocated when duckdb_destroy_prepare
is called.
Syntax
const char *duckdb_prepare_error(
duckdb_prepared_statement prepared_statement
);
Parameters
prepared_statement
: The prepared statement to obtain the error from.
Return Value
The error message, or nullptr
if there is none.
duckdb_nparams
返回可以提供给给定预处理语句的参数数量。
如果查询未成功准备,则返回0。
Syntax
idx_t duckdb_nparams(
duckdb_prepared_statement prepared_statement
);
Parameters
prepared_statement
: The prepared statement to obtain the number of parameters for.
duckdb_parameter_name
Returns the name used to identify the parameter
The returned string should be freed using duckdb_free
.
如果索引超出提供的预处理语句的范围,则返回NULL。
Syntax
const char *duckdb_parameter_name(
duckdb_prepared_statement prepared_statement,
idx_t index
);
Parameters
prepared_statement
: The prepared statement for which to get the parameter name from.
duckdb_param_type
返回给定索引处参数的类型。
Returns DUCKDB_TYPE_INVALID
if the parameter index is out of range or the statement was not successfully prepared.
Syntax
duckdb_type duckdb_param_type(
duckdb_prepared_statement prepared_statement,
idx_t param_idx
);
Parameters
prepared_statement
: The prepared statement.param_idx
: The parameter index.
Return Value
参数类型
duckdb_clear_bindings
清除绑定到预处理语句的参数。
Syntax
duckdb_state duckdb_clear_bindings(
duckdb_prepared_statement prepared_statement
);
duckdb_prepared_statement_type
返回要执行的语句的语句类型
Syntax
duckdb_statement_type duckdb_prepared_statement_type(
duckdb_prepared_statement statement
);
Parameters
statement
: The prepared statement.
Return Value
duckdb_statement_type 值或 DUCKDB_STATEMENT_TYPE_INVALID
duckdb_bind_value
将值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_value(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
duckdb_value val
);
duckdb_bind_parameter_index
检索由名称标识的预处理语句参数的索引
Syntax
duckdb_state duckdb_bind_parameter_index(
duckdb_prepared_statement prepared_statement,
idx_t *param_idx_out,
const char *name
);
duckdb_bind_boolean
将布尔值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_boolean(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
bool val
);
duckdb_bind_int8
将int8_t值绑定到指定索引处的预处理语句。
Syntax
duckdb_state duckdb_bind_int8(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
int8_t val
);
duckdb_bind_int16
将int16_t值绑定到指定索引处的预处理语句。
Syntax
duckdb_state duckdb_bind_int16(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
int16_t val
);
duckdb_bind_int32
将int32_t值绑定到指定索引处的预处理语句。
Syntax
duckdb_state duckdb_bind_int32(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
int32_t val
);
duckdb_bind_int64
将int64_t值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_int64(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
int64_t val
);
duckdb_bind_hugeint
将duckdb_hugeint值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_hugeint(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
duckdb_hugeint val
);
duckdb_bind_uhugeint
将duckdb_uhugeint值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_uhugeint(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
duckdb_uhugeint val
);
duckdb_bind_decimal
将duckdb_decimal值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_decimal(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
duckdb_decimal val
);
duckdb_bind_uint8
将一个uint8_t值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_uint8(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
uint8_t val
);
duckdb_bind_uint16
将一个uint16_t值绑定到指定索引的预处理语句上。
Syntax
duckdb_state duckdb_bind_uint16(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
uint16_t val
);
duckdb_bind_uint32
将一个uint32_t值绑定到指定索引的预处理语句上。
Syntax
duckdb_state duckdb_bind_uint32(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
uint32_t val
);
duckdb_bind_uint64
将uint64_t值绑定到指定索引处的预处理语句。
Syntax
duckdb_state duckdb_bind_uint64(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
uint64_t val
);
duckdb_bind_float
将浮点数值绑定到指定索引的准备语句。
Syntax
duckdb_state duckdb_bind_float(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
float val
);
duckdb_bind_double
将双精度值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_double(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
double val
);
duckdb_bind_date
将duckdb_date值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_date(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
duckdb_date val
);
duckdb_bind_time
将duckdb_time值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_time(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
duckdb_time val
);
duckdb_bind_timestamp
将duckdb_timestamp值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_timestamp(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
duckdb_timestamp val
);
duckdb_bind_timestamp_tz
将duckdb_timestamp值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_timestamp_tz(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
duckdb_timestamp val
);
duckdb_bind_interval
将duckdb_interval值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_interval(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
duckdb_interval val
);
duckdb_bind_varchar
将空终止的varchar值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_varchar(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
const char *val
);
duckdb_bind_varchar_length
将varchar值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_varchar_length(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
const char *val,
idx_t length
);
duckdb_bind_blob
将blob值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_blob(
duckdb_prepared_statement prepared_statement,
idx_t param_idx,
const void *data,
idx_t length
);
duckdb_bind_null
将NULL值绑定到指定索引的预处理语句。
Syntax
duckdb_state duckdb_bind_null(
duckdb_prepared_statement prepared_statement,
idx_t param_idx
);
duckdb_execute_prepared
使用给定的绑定参数执行准备好的语句,并返回一个物化的查询结果。
此方法可以为每个准备好的语句多次调用,并且可以在调用此函数之间修改参数。
请注意,结果必须使用duckdb_destroy_result
释放。
Syntax
duckdb_state duckdb_execute_prepared(
duckdb_prepared_statement prepared_statement,
duckdb_result *out_result
);
Parameters
prepared_statement
: 要执行的预处理语句。out_result
: The query result.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_execute_prepared_streaming
警告 弃用通知。此方法计划在未来的版本中移除。
使用给定的绑定参数执行准备好的语句,并返回一个可选的流式查询结果。
要确定结果查询是否实际上是流式的,请使用 duckdb_result_is_streaming
此方法可以为每个准备好的语句多次调用,并且可以在调用此函数之间修改参数。
请注意,结果必须使用duckdb_destroy_result
释放。
Syntax
duckdb_state duckdb_execute_prepared_streaming(
duckdb_prepared_statement prepared_statement,
duckdb_result *out_result
);
Parameters
prepared_statement
: 要执行的预处理语句。out_result
: The query result.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_extract_statements
从查询中提取所有语句。
请注意,在调用duckdb_extract_statements
之后,提取的语句应始终使用
duckdb_destroy_extracted
销毁,即使没有提取到任何语句。
如果提取失败,可以调用duckdb_extract_statements_error
来获取提取失败的原因。
Syntax
idx_t duckdb_extract_statements(
duckdb_connection connection,
const char *query,
duckdb_extracted_statements *out_extracted_statements
);
Parameters
connection
: The connection objectquery
: 用于提取的SQL查询out_extracted_statements
: 生成的提取语句对象
Return Value
提取的语句数量或失败时为0。
duckdb_prepare_extracted_statement
准备一个提取的语句。
请注意,在调用duckdb_prepare_extracted_statement
之后,即使准备失败,也应始终使用duckdb_destroy_prepare
销毁准备好的语句。
If the prepare fails, duckdb_prepare_error
can be called to obtain the reason why the prepare failed.
Syntax
duckdb_state duckdb_prepare_extracted_statement(
duckdb_connection connection,
duckdb_extracted_statements extracted_statements,
idx_t index,
duckdb_prepared_statement *out_prepared_statement
);
Parameters
connection
: The connection objectextracted_statements
: 提取的语句对象index
: 要准备的提取语句的索引out_prepared_statement
: The resulting prepared statement object
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_extract_statements_error
返回包含在提取语句中的错误信息。
此函数的结果不得释放。它将在调用duckdb_destroy_extracted
时被清理。
Syntax
const char *duckdb_extract_statements_error(
duckdb_extracted_statements extracted_statements
);
Parameters
extracted_statements
: 用于从中获取错误的提取语句。
Return Value
提取语句的错误。
duckdb_destroy_extracted
释放为提取的语句分配的所有内存。
Syntax
void duckdb_destroy_extracted(
duckdb_extracted_statements *extracted_statements
);
Parameters
extracted_statements
: 要销毁的提取语句。
duckdb_pending_prepared
使用给定的绑定参数执行准备好的语句,并返回一个待处理的结果。 待处理的结果表示尚未完全执行的查询的中间结构。 待处理的结果可用于逐步执行查询,在任务之间将控制权返回给客户端。
请注意,在调用duckdb_pending_prepared
之后,即使此函数返回DuckDBError,也应始终使用duckdb_destroy_pending
销毁待处理的结果。
Syntax
duckdb_state duckdb_pending_prepared(
duckdb_prepared_statement prepared_statement,
duckdb_pending_result *out_result
);
Parameters
prepared_statement
: The prepared statement to execute.out_result
: 待处理的查询结果。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_pending_prepared_streaming
警告 弃用通知。此方法计划在未来的版本中移除。
使用给定的绑定参数执行准备好的语句,并返回一个待处理的结果。 这个待处理的结果在执行时将创建一个流式的duckdb_result。 待处理的结果表示一个尚未完全执行的查询的中间结构。
请注意,在调用duckdb_pending_prepared_streaming
之后,即使此函数返回DuckDBError,也应始终使用duckdb_destroy_pending
销毁挂起的结果。
Syntax
duckdb_state duckdb_pending_prepared_streaming(
duckdb_prepared_statement prepared_statement,
duckdb_pending_result *out_result
);
Parameters
prepared_statement
: The prepared statement to execute.out_result
: 待处理的查询结果。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_destroy_pending
关闭待处理的结果并释放为结果分配的所有内存。
Syntax
void duckdb_destroy_pending(
duckdb_pending_result *pending_result
);
Parameters
pending_result
: 要销毁的待处理结果。
duckdb_pending_error
返回包含在待处理结果中的错误消息。
此函数的结果不能被释放。它将在调用duckdb_destroy_pending
时被清理。
Syntax
const char *duckdb_pending_error(
duckdb_pending_result pending_result
);
Parameters
pending_result
: 用于获取错误的待处理结果。
Return Value
待处理结果的错误。
duckdb_pending_execute_task
执行查询中的单个任务,返回查询是否准备就绪。
如果返回 DUCKDB_PENDING_RESULT_READY,可以调用 duckdb_execute_pending 函数来获取结果。 如果返回 DUCKDB_PENDING_RESULT_NOT_READY,应再次调用 duckdb_pending_execute_task 函数。 如果返回 DUCKDB_PENDING_ERROR,表示执行过程中发生了错误。
错误信息可以通过在pending_result上调用duckdb_pending_error来获取。
Syntax
duckdb_pending_state duckdb_pending_execute_task(
duckdb_pending_result pending_result
);
Parameters
pending_result
: 用于执行任务的待处理结果。
Return Value
执行后待处理结果的状态。
duckdb_pending_execute_check_state
如果返回 DUCKDB_PENDING_RESULT_READY,可以调用 duckdb_execute_pending 函数来获取结果。 如果返回 DUCKDB_PENDING_RESULT_NOT_READY,应再次调用 duckdb_pending_execute_check_state 函数。 如果返回 DUCKDB_PENDING_ERROR,表示执行过程中发生了错误。
错误信息可以通过在pending_result上调用duckdb_pending_error来获取。
Syntax
duckdb_pending_state duckdb_pending_execute_check_state(
duckdb_pending_result pending_result
);
Parameters
pending_result
: 待处理的结果。
Return Value
待处理结果的状态。
duckdb_execute_pending
完全执行一个待处理的查询结果,返回最终的查询结果。
如果已经调用了duckdb_pending_execute_task直到返回DUCKDB_PENDING_RESULT_READY,这将快速返回。 否则,必须先执行所有剩余的任务。
Note that the result must be freed with duckdb_destroy_result
.
Syntax
duckdb_state duckdb_execute_pending(
duckdb_pending_result pending_result,
duckdb_result *out_result
);
Parameters
pending_result
: 要执行的待处理结果。out_result
: 结果对象。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_pending_execution_is_finished
返回一个duckdb_pending_state是否已完成执行。例如,如果pending_state
是DUCKDB_PENDING_RESULT_READY,此函数将返回true。
Syntax
bool duckdb_pending_execution_is_finished(
duckdb_pending_state pending_state
);
Parameters
pending_state
: 决定是否完成执行的待定状态。
Return Value
布尔值,表示待执行的执行应被视为已完成。
duckdb_destroy_value
销毁该值并释放为该类型分配的所有内存。
Syntax
void duckdb_destroy_value(
duckdb_value *value
);
Parameters
value
: The value to destroy.
duckdb_create_varchar
从以null结尾的字符串创建一个值
Syntax
duckdb_value duckdb_create_varchar(
const char *text
);
Parameters
text
: The null-terminated string
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_varchar_length
从字符串创建一个值
Syntax
duckdb_value duckdb_create_varchar_length(
const char *text,
idx_t length
);
Parameters
text
: The textlength
: The length of the text
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_bool
从布尔值创建一个值
Syntax
duckdb_value duckdb_create_bool(
bool input
);
Parameters
input
: The boolean value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_int8
从 int8_t(一个 tinyint)创建一个值
Syntax
duckdb_value duckdb_create_int8(
int8_t input
);
Parameters
input
: The tinyint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uint8
从uint8_t(一个utinyint)创建一个值
Syntax
duckdb_value duckdb_create_uint8(
uint8_t input
);
Parameters
input
: The utinyint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_int16
从 int16_t(一个小整数)创建一个值
Syntax
duckdb_value duckdb_create_int16(
int16_t input
);
Parameters
input
: The smallint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uint16
从 uint16_t(一个 usmallint)创建一个值
Syntax
duckdb_value duckdb_create_uint16(
uint16_t input
);
Parameters
input
: The usmallint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_int32
从 int32_t(一个整数)创建一个值
Syntax
duckdb_value duckdb_create_int32(
int32_t input
);
Parameters
input
: The integer value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uint32
从 uint32_t(一个无符号整数)创建一个值
Syntax
duckdb_value duckdb_create_uint32(
uint32_t input
);
Parameters
input
: The uinteger value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uint64
从 uint64_t(一个 ubigint)创建一个值
Syntax
duckdb_value duckdb_create_uint64(
uint64_t input
);
Parameters
input
: The ubigint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_int64
从int64创建一个值
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
Syntax
duckdb_value duckdb_create_int64(
int64_t val
);
duckdb_create_hugeint
从hugeint创建一个值
Syntax
duckdb_value duckdb_create_hugeint(
duckdb_hugeint input
);
Parameters
input
: The hugeint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_uhugeint
从uhugeint创建一个值
Syntax
duckdb_value duckdb_create_uhugeint(
duckdb_uhugeint input
);
Parameters
input
: The uhugeint value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_float
从浮点数创建一个值
Syntax
duckdb_value duckdb_create_float(
float input
);
Parameters
input
: The float value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_double
从双精度数创建一个值
Syntax
duckdb_value duckdb_create_double(
double input
);
Parameters
input
: The double value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_date
从日期创建一个值
Syntax
duckdb_value duckdb_create_date(
duckdb_date input
);
Parameters
input
: The date value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_time
从时间创建一个值
Syntax
duckdb_value duckdb_create_time(
duckdb_time input
);
Parameters
input
: The time value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_time_tz_value
Creates a value from a time_tz.
Not to be confused with duckdb_create_time_tz
, which creates a duckdb_time_tz_t.
Syntax
duckdb_value duckdb_create_time_tz_value(
duckdb_time_tz value
);
Parameters
value
: The time_tz value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_timestamp
从时间戳创建一个值
Syntax
duckdb_value duckdb_create_timestamp(
duckdb_timestamp input
);
Parameters
input
: The timestamp value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_interval
从间隔创建值
Syntax
duckdb_value duckdb_create_interval(
duckdb_interval input
);
Parameters
input
: The interval value
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_create_blob
从blob创建一个值
Syntax
duckdb_value duckdb_create_blob(
const uint8_t *data,
idx_t length
);
Parameters
data
: The blob datalength
: The length of the blob data
Return Value
The value. This must be destroyed with duckdb_destroy_value
.
duckdb_get_bool
返回给定值的布尔值。
Syntax
bool duckdb_get_bool(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a boolean
Return Value
一个布尔值,如果无法转换则为false
duckdb_get_int8
返回给定值的int8_t值。
Syntax
int8_t duckdb_get_int8(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a tinyint
Return Value
A int8_t, or MinValue
duckdb_get_uint8
返回给定值的uint8_t值。
Syntax
uint8_t duckdb_get_uint8(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a utinyint
Return Value
A uint8_t, or MinValue
duckdb_get_int16
返回给定值的int16_t值。
Syntax
int16_t duckdb_get_int16(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a smallint
Return Value
A int16_t, or MinValue
duckdb_get_uint16
返回给定值的 uint16_t 值。
Syntax
uint16_t duckdb_get_uint16(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a usmallint
Return Value
A uint16_t, or MinValue
duckdb_get_int32
返回给定值的 int32_t 值。
Syntax
int32_t duckdb_get_int32(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a integer
Return Value
A int32_t, or MinValue
duckdb_get_uint32
返回给定值的uint32_t值。
Syntax
uint32_t duckdb_get_uint32(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a uinteger
Return Value
A uint32_t, or MinValue
duckdb_get_int64
返回给定值的int64_t值。
Syntax
int64_t duckdb_get_int64(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a bigint
Return Value
A int64_t, or MinValue
duckdb_get_uint64
返回给定值的 uint64_t 值。
Syntax
uint64_t duckdb_get_uint64(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a ubigint
Return Value
A uint64_t, or MinValue
duckdb_get_hugeint
返回给定值的hugeint值。
Syntax
duckdb_hugeint duckdb_get_hugeint(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a hugeint
Return Value
A duckdb_hugeint, or MinValue
duckdb_get_uhugeint
返回给定值的uhugeint值。
Syntax
duckdb_uhugeint duckdb_get_uhugeint(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a uhugeint
Return Value
A duckdb_uhugeint, or MinValue
duckdb_get_float
返回给定值的浮点数值。
Syntax
float duckdb_get_float(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a float
Return Value
一个浮点数,如果无法转换则为NAN
duckdb_get_double
返回给定值的双精度值。
Syntax
double duckdb_get_double(
duckdb_value val
);
Parameters
val
: 一个包含双精度浮点数的 duckdb_value
Return Value
一个双精度浮点数,如果无法转换则为NAN
duckdb_get_date
返回给定值的日期值。
Syntax
duckdb_date duckdb_get_date(
duckdb_value val
);
Parameters
val
: A duckdb_value containing a date
Return Value
A duckdb_date, or MinValue
duckdb_get_time
返回给定值的时间值。
Syntax
duckdb_time duckdb_get_time(
duckdb_value val
);
Parameters
val
: 一个包含时间的 duckdb_value
Return Value
A duckdb_time, or MinValue
duckdb_get_time_tz
返回给定值的time_tz值。
Syntax
duckdb_time_tz duckdb_get_time_tz(
duckdb_value val
);
Parameters
val
: 一个包含 time_tz 的 duckdb_value
Return Value
A duckdb_time_tz, or MinValue
duckdb_get_timestamp
返回给定值的时间戳值。
Syntax
duckdb_timestamp duckdb_get_timestamp(
duckdb_value val
);
Parameters
val
: 一个包含时间戳的 duckdb_value
Return Value
A duckdb_timestamp, or MinValue
duckdb_get_interval
返回给定值的间隔值。
Syntax
duckdb_interval duckdb_get_interval(
duckdb_value val
);
Parameters
val
: 一个包含间隔的 duckdb_value
Return Value
A duckdb_interval, or MinValue
duckdb_get_value_type
返回给定值的类型。只要值未被销毁,类型就有效。 类型本身不能被销毁。
Syntax
duckdb_logical_type duckdb_get_value_type(
duckdb_value val
);
Parameters
val
: 一个 duckdb_value
Return Value
一个duckdb_logical_type。
duckdb_get_blob
返回给定值的blob值。
Syntax
duckdb_blob duckdb_get_blob(
duckdb_value val
);
Parameters
val
: 一个包含 blob 的 duckdb_value
Return Value
一个duckdb_blob
duckdb_get_varchar
Obtains a string representation of the given value.
The result must be destroyed with duckdb_free
.
Syntax
char *duckdb_get_varchar(
duckdb_value value
);
Parameters
value
: The value
Return Value
The string value. This must be destroyed with duckdb_free
.
duckdb_create_struct_value
Creates a struct value from a type and an array of values. Must be destroyed with duckdb_destroy_value
.
Syntax
duckdb_value duckdb_create_struct_value(
duckdb_logical_type type,
duckdb_value *values
);
Parameters
type
: 结构体的类型values
: 结构体字段的值
Return Value
The struct value, or nullptr, if any child type is DUCKDB_TYPE_ANY
or DUCKDB_TYPE_INVALID
.
duckdb_create_list_value
Creates a list value from a child (element) type and an array of values of length value_count
.
Must be destroyed with duckdb_destroy_value
.
Syntax
duckdb_value duckdb_create_list_value(
duckdb_logical_type type,
duckdb_value *values,
idx_t value_count
);
Parameters
type
: 列表的类型values
: 列表的值value_count
: 列表中值的数量
Return Value
The list value, or nullptr, if the child type is DUCKDB_TYPE_ANY
or DUCKDB_TYPE_INVALID
.
duckdb_create_array_value
Creates an array value from a child (element) type and an array of values of length value_count
.
Must be destroyed with duckdb_destroy_value
.
Syntax
duckdb_value duckdb_create_array_value(
duckdb_logical_type type,
duckdb_value *values,
idx_t value_count
);
Parameters
type
: 数组的类型values
: 数组的值value_count
: 数组中的值的数量
Return Value
The array value, or nullptr, if the child type is DUCKDB_TYPE_ANY
or DUCKDB_TYPE_INVALID
.
duckdb_get_map_size
返回MAP值中的元素数量。
Syntax
idx_t duckdb_get_map_size(
duckdb_value value
);
Parameters
value
: MAP 值。
Return Value
地图中的元素数量。
duckdb_get_map_key
返回索引处的MAP键作为duckdb_value。
Syntax
duckdb_value duckdb_get_map_key(
duckdb_value value,
idx_t index
);
Parameters
value
: The MAP value.index
: 键的索引。
Return Value
键作为 duckdb_value。
duckdb_get_map_value
返回索引处的MAP值作为duckdb_value。
Syntax
duckdb_value duckdb_get_map_value(
duckdb_value value,
idx_t index
);
Parameters
value
: The MAP value.index
: 值的索引。
Return Value
值作为duckdb_value。
duckdb_create_logical_type
Creates a duckdb_logical_type
from a primitive type.
The resulting logical type must be destroyed with duckdb_destroy_logical_type
.
Returns an invalid logical type, if type is: DUCKDB_TYPE_INVALID
, DUCKDB_TYPE_DECIMAL
, DUCKDB_TYPE_ENUM
,
DUCKDB_TYPE_LIST
, DUCKDB_TYPE_STRUCT
, DUCKDB_TYPE_MAP
, DUCKDB_TYPE_ARRAY
, or DUCKDB_TYPE_UNION
.
Syntax
duckdb_logical_type duckdb_create_logical_type(
duckdb_type type
);
Parameters
type
: The primitive type to create.
Return Value
逻辑类型。
duckdb_logical_type_get_alias
Returns the alias of a duckdb_logical_type, if set, else nullptr
.
The result must be destroyed with duckdb_free
.
Syntax
char *duckdb_logical_type_get_alias(
duckdb_logical_type type
);
Parameters
type
: The logical type
Return Value
The alias or nullptr
duckdb_logical_type_set_alias
设置duckdb_logical_type的别名。
Syntax
void duckdb_logical_type_set_alias(
duckdb_logical_type type,
const char *alias
);
Parameters
type
: The logical typealias
: The alias to set
duckdb_create_list_type
Creates a LIST type from its child type.
The return type must be destroyed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_create_list_type(
duckdb_logical_type type
);
Parameters
type
: The child type of the list
Return Value
逻辑类型。
duckdb_create_array_type
Creates an ARRAY type from its child type.
The return type must be destroyed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_create_array_type(
duckdb_logical_type type,
idx_t array_size
);
Parameters
type
: The child type of the array.array_size
: The number of elements in the array.
Return Value
逻辑类型。
duckdb_create_map_type
Creates a MAP type from its key type and value type.
The return type must be destroyed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_create_map_type(
duckdb_logical_type key_type,
duckdb_logical_type value_type
);
Parameters
key_type
: The map's key type.value_type
: The map's value type.
Return Value
逻辑类型。
duckdb_create_union_type
Creates a UNION type from the passed arrays.
The return type must be destroyed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_create_union_type(
duckdb_logical_type *member_types,
const char **member_names,
idx_t member_count
);
Parameters
member_types
: The array of union member types.member_names
: The union member names.member_count
: The number of union members.
Return Value
逻辑类型。
duckdb_create_struct_type
Creates a STRUCT type based on the member types and names.
The resulting type must be destroyed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_create_struct_type(
duckdb_logical_type *member_types,
const char **member_names,
idx_t member_count
);
Parameters
member_types
: The array of types of the struct members.member_names
: The array of names of the struct members.member_count
: The number of members of the struct.
Return Value
逻辑类型。
duckdb_create_enum_type
Creates an ENUM type from the passed member name array.
The resulting type should be destroyed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_create_enum_type(
const char **member_names,
idx_t member_count
);
Parameters
member_names
: The array of names that the enum should consist of.member_count
: The number of elements that were specified in the array.
Return Value
逻辑类型。
duckdb_create_decimal_type
Creates a DECIMAL type with the specified width and scale.
The resulting type should be destroyed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_create_decimal_type(
uint8_t width,
uint8_t scale
);
Parameters
width
: The width of the decimal typescale
: The scale of the decimal type
Return Value
逻辑类型。
duckdb_get_type_id
Retrieves the enum duckdb_type
of a duckdb_logical_type
.
Syntax
duckdb_type duckdb_get_type_id(
duckdb_logical_type type
);
Parameters
type
: The logical type.
Return Value
The duckdb_type
id.
duckdb_decimal_width
获取十进制类型的宽度。
Syntax
uint8_t duckdb_decimal_width(
duckdb_logical_type type
);
Parameters
type
: The logical type object
Return Value
十进制类型的宽度
duckdb_decimal_scale
获取小数类型的比例。
Syntax
uint8_t duckdb_decimal_scale(
duckdb_logical_type type
);
Parameters
type
: The logical type object
Return Value
十进制类型的规模
duckdb_decimal_internal_type
检索十进制类型的内部存储类型。
Syntax
duckdb_type duckdb_decimal_internal_type(
duckdb_logical_type type
);
Parameters
type
: The logical type object
Return Value
十进制类型的内部类型
duckdb_enum_internal_type
检索枚举类型的内部存储类型。
Syntax
duckdb_type duckdb_enum_internal_type(
duckdb_logical_type type
);
Parameters
type
: The logical type object
Return Value
枚举类型的内部类型
duckdb_enum_dictionary_size
获取枚举类型的字典大小。
Syntax
uint32_t duckdb_enum_dictionary_size(
duckdb_logical_type type
);
Parameters
type
: The logical type object
Return Value
枚举类型的字典大小
duckdb_enum_dictionary_value
从枚举中检索指定位置的字典值。
The result must be freed with duckdb_free
.
Syntax
char *duckdb_enum_dictionary_value(
duckdb_logical_type type,
idx_t index
);
Parameters
type
: The logical type objectindex
: The index in the dictionary
Return Value
The string value of the enum type. Must be freed with duckdb_free
.
duckdb_list_type_child_type
Retrieves the child type of the given LIST type. Also accepts MAP types.
The result must be freed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_list_type_child_type(
duckdb_logical_type type
);
Parameters
type
: The logical type, either LIST or MAP.
Return Value
LIST 或 MAP 类型的子类型。
duckdb_array_type_child_type
检索给定ARRAY类型的子类型。
The result must be freed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_array_type_child_type(
duckdb_logical_type type
);
Parameters
type
: 逻辑类型。必须是 ARRAY。
Return Value
ARRAY 类型的子类型。
duckdb_array_type_array_size
检索给定数组类型的数组大小。
Syntax
idx_t duckdb_array_type_array_size(
duckdb_logical_type type
);
Parameters
type
: The logical type object
Return Value
此数组类型的值可以存储的固定元素数量。
duckdb_map_type_key_type
检索给定映射类型的键类型。
The result must be freed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_map_type_key_type(
duckdb_logical_type type
);
Parameters
type
: The logical type object
Return Value
The key type of the map type. Must be destroyed with duckdb_destroy_logical_type
.
duckdb_map_type_value_type
检索给定映射类型的值类型。
The result must be freed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_map_type_value_type(
duckdb_logical_type type
);
Parameters
type
: The logical type object
Return Value
The value type of the map type. Must be destroyed with duckdb_destroy_logical_type
.
duckdb_struct_type_child_count
返回结构体类型的子元素数量。
Syntax
idx_t duckdb_struct_type_child_count(
duckdb_logical_type type
);
Parameters
type
: The logical type object
Return Value
结构体类型的子元素数量。
duckdb_struct_type_child_name
检索结构体子项的名称。
The result must be freed with duckdb_free
.
Syntax
char *duckdb_struct_type_child_name(
duckdb_logical_type type,
idx_t index
);
Parameters
type
: The logical type objectindex
: The child index
Return Value
The name of the struct type. Must be freed with duckdb_free
.
duckdb_struct_type_child_type
检索给定结构类型在指定索引处的子类型。
The result must be freed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_struct_type_child_type(
duckdb_logical_type type,
idx_t index
);
Parameters
type
: The logical type objectindex
: The child index
Return Value
The child type of the struct type. Must be destroyed with duckdb_destroy_logical_type
.
duckdb_union_type_member_count
返回联合类型拥有的成员数量。
Syntax
idx_t duckdb_union_type_member_count(
duckdb_logical_type type
);
Parameters
type
: The logical type (union) object
Return Value
联合类型的成员数量。
duckdb_union_type_member_name
检索联合成员的名称。
The result must be freed with duckdb_free
.
Syntax
char *duckdb_union_type_member_name(
duckdb_logical_type type,
idx_t index
);
Parameters
type
: The logical type objectindex
: The child index
Return Value
The name of the union member. Must be freed with duckdb_free
.
duckdb_union_type_member_type
检索指定索引处给定联合成员的子类型。
The result must be freed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_union_type_member_type(
duckdb_logical_type type,
idx_t index
);
Parameters
type
: The logical type objectindex
: The child index
Return Value
The child type of the union member. Must be destroyed with duckdb_destroy_logical_type
.
duckdb_destroy_logical_type
销毁逻辑类型并释放为该类型分配的所有内存。
Syntax
void duckdb_destroy_logical_type(
duckdb_logical_type *type
);
Parameters
type
: The logical type to destroy.
duckdb_register_logical_type
在给定的连接中注册一个自定义类型。 该类型必须有一个别名
Syntax
duckdb_state duckdb_register_logical_type(
duckdb_connection con,
duckdb_logical_type type,
duckdb_create_type_info info
);
Parameters
con
: The connection to usetype
: The custom type to register
Return Value
注册是否成功。
duckdb_create_data_chunk
Creates an empty data chunk with the specified column types.
The result must be destroyed with duckdb_destroy_data_chunk
.
Syntax
duckdb_data_chunk duckdb_create_data_chunk(
duckdb_logical_type *types,
idx_t column_count
);
Parameters
types
: An array of column types. Column types can not contain ANY and INVALID types.column_count
: The number of columns.
Return Value
数据块。
duckdb_destroy_data_chunk
销毁数据块并释放为该块分配的所有内存。
Syntax
void duckdb_destroy_data_chunk(
duckdb_data_chunk *chunk
);
Parameters
chunk
: The data chunk to destroy.
duckdb_data_chunk_reset
Resets a data chunk, clearing the validity masks and setting the cardinality of the data chunk to 0.
After calling this method, you must call duckdb_vector_get_validity
and duckdb_vector_get_data
to obtain current
data and validity pointers
Syntax
void duckdb_data_chunk_reset(
duckdb_data_chunk chunk
);
Parameters
chunk
: The data chunk to reset.
duckdb_data_chunk_get_column_count
检索数据块中的列数。
Syntax
idx_t duckdb_data_chunk_get_column_count(
duckdb_data_chunk chunk
);
Parameters
chunk
: The data chunk to get the data from
Return Value
数据块中的列数
duckdb_data_chunk_get_vector
检索数据块中指定列索引处的向量。
指向向量的指针在块存活期间有效。 它不需要被销毁。
Syntax
duckdb_vector duckdb_data_chunk_get_vector(
duckdb_data_chunk chunk,
idx_t col_idx
);
Parameters
chunk
: The data chunk to get the data from
Return Value
向量
duckdb_data_chunk_get_size
检索数据块中当前的元组数量。
Syntax
idx_t duckdb_data_chunk_get_size(
duckdb_data_chunk chunk
);
Parameters
chunk
: The data chunk to get the data from
Return Value
数据块中的元组数量
duckdb_data_chunk_set_size
设置数据块中当前元组的数量。
Syntax
void duckdb_data_chunk_set_size(
duckdb_data_chunk chunk,
idx_t size
);
Parameters
chunk
: The data chunk to set the size insize
: The number of tuples in the data chunk
duckdb_vector_get_column_type
检索指定向量的列类型。
The result must be destroyed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_vector_get_column_type(
duckdb_vector vector
);
Parameters
vector
: The vector get the data from
Return Value
向量的类型
duckdb_vector_get_data
检索向量的数据指针。
数据指针可用于从向量中读取或写入值。如何读取或写入值取决于向量的类型。
Syntax
void *duckdb_vector_get_data(
duckdb_vector vector
);
Parameters
vector
: The vector to get the data from
Return Value
数据指针
duckdb_vector_get_validity
检索指定向量的有效性掩码指针。
如果所有值都有效,此函数可能返回NULL!
有效性掩码是一个位集,表示数据块中的空值情况。 它是一系列uint64_t值,每个uint64_t值包含64个元组的有效性。 如果值为有效(即不为NULL),则位设置为1;如果值为无效(即为NULL),则位设置为0。
可以通过以下方式获取特定值的有效性:
idx_t entry_idx = row_idx / 64; idx_t idx_in_entry = row_idx % 64; bool is_valid = validity_mask[entry_idx] & (1 « idx_in_entry);
或者,可以使用(较慢的)duckdb_validity_row_is_valid函数。
Syntax
uint64_t *duckdb_vector_get_validity(
duckdb_vector vector
);
Parameters
vector
: The vector to get the data from
Return Value
指向有效性掩码的指针,如果没有有效性掩码则为NULL
duckdb_vector_ensure_validity_writable
通过分配确保有效性掩码是可写的。
调用此函数后,duckdb_vector_get_validity
将始终返回非NULL值。
这允许将空值写入向量,无论之前是否存在有效性掩码。
Syntax
void duckdb_vector_ensure_validity_writable(
duckdb_vector vector
);
Parameters
vector
: The vector to alter
duckdb_vector_assign_string_element
在向量的指定位置分配一个字符串元素。
Syntax
void duckdb_vector_assign_string_element(
duckdb_vector vector,
idx_t index,
const char *str
);
Parameters
vector
: The vector to alterindex
: The row position in the vector to assign the string tostr
: The null-terminated string
duckdb_vector_assign_string_element_len
在向量的指定位置分配一个字符串元素。你也可以使用此函数来分配BLOBs。
Syntax
void duckdb_vector_assign_string_element_len(
duckdb_vector vector,
idx_t index,
const char *str,
idx_t str_len
);
Parameters
vector
: The vector to alterindex
: The row position in the vector to assign the string tostr
: The stringstr_len
: The length of the string (in bytes)
duckdb_list_vector_get_child
检索列表向量的子向量。
只要父向量有效,生成的向量就有效。
Syntax
duckdb_vector duckdb_list_vector_get_child(
duckdb_vector vector
);
Parameters
vector
: The vector
Return Value
子向量
duckdb_list_vector_get_size
返回列表子向量的大小。
Syntax
idx_t duckdb_list_vector_get_size(
duckdb_vector vector
);
Parameters
vector
: The vector
Return Value
子列表的大小
duckdb_list_vector_set_size
设置列表向量的基础子向量的总大小。
Syntax
duckdb_state duckdb_list_vector_set_size(
duckdb_vector vector,
idx_t size
);
Parameters
vector
: The list vector.size
: The size of the child list.
Return Value
duckdb 状态。如果向量为 nullptr,则返回 DuckDBError。
duckdb_list_vector_reserve
设置列表底层子向量的总容量。
After calling this method, you must call duckdb_vector_get_validity
and duckdb_vector_get_data
to obtain current
data and validity pointers
Syntax
duckdb_state duckdb_list_vector_reserve(
duckdb_vector vector,
idx_t required_capacity
);
Parameters
vector
: The list vector.required_capacity
: the total capacity to reserve.
Return Value
duckdb 状态。如果向量为 nullptr,则返回 DuckDBError。
duckdb_struct_vector_get_child
检索结构向量的子向量。
只要父向量有效,生成的向量就有效。
Syntax
duckdb_vector duckdb_struct_vector_get_child(
duckdb_vector vector,
idx_t index
);
Parameters
vector
: The vectorindex
: The child index
Return Value
子向量
duckdb_array_vector_get_child
检索数组向量的子向量。
只要父向量有效,结果向量就有效。 结果向量的大小是父向量的大小乘以数组大小。
Syntax
duckdb_vector duckdb_array_vector_get_child(
duckdb_vector vector
);
Parameters
vector
: The vector
Return Value
子向量
duckdb_validity_row_is_valid
返回给定有效性掩码中的一行是否有效(即不为NULL)。
Syntax
bool duckdb_validity_row_is_valid(
uint64_t *validity,
idx_t row
);
Parameters
validity
: The validity mask, as obtained throughduckdb_vector_get_validity
row
: The row index
Return Value
如果行有效则为true,否则为false
duckdb_validity_set_row_validity
在有效性掩码中,将特定行设置为有效或无效。
Note that duckdb_vector_ensure_validity_writable
should be called before calling duckdb_vector_get_validity
,
to ensure that there is a validity mask to write to.
Syntax
void duckdb_validity_set_row_validity(
uint64_t *validity,
idx_t row,
bool valid
);
Parameters
validity
: The validity mask, as obtained throughduckdb_vector_get_validity
.row
: The row indexvalid
: Whether or not to set the row to valid, or invalid
duckdb_validity_set_row_invalid
在有效性掩码中,将特定行设置为无效。
Equivalent to duckdb_validity_set_row_validity
with valid set to false.
Syntax
void duckdb_validity_set_row_invalid(
uint64_t *validity,
idx_t row
);
Parameters
validity
: The validity maskrow
: The row index
duckdb_validity_set_row_valid
在有效性掩码中,将特定行设置为有效。
Equivalent to duckdb_validity_set_row_validity
with valid set to true.
Syntax
void duckdb_validity_set_row_valid(
uint64_t *validity,
idx_t row
);
Parameters
validity
: The validity maskrow
: The row index
duckdb_create_scalar_function
创建一个新的空标量函数。
返回值应使用duckdb_destroy_scalar_function
销毁。
Return Value
标量函数对象。
Syntax
duckdb_scalar_function duckdb_create_scalar_function(
);
duckdb_destroy_scalar_function
销毁给定的标量函数对象。
Syntax
void duckdb_destroy_scalar_function(
duckdb_scalar_function *scalar_function
);
Parameters
scalar_function
: 要销毁的标量函数
duckdb_scalar_function_set_name
设置给定标量函数的名称。
Syntax
void duckdb_scalar_function_set_name(
duckdb_scalar_function scalar_function,
const char *name
);
Parameters
scalar_function
: 标量函数name
: 标量函数的名称
duckdb_scalar_function_set_varargs
将给定标量函数的参数设置为可变参数。不需要使用duckdb_scalar_function_add_parameter添加参数。
Syntax
void duckdb_scalar_function_set_varargs(
duckdb_scalar_function scalar_function,
duckdb_logical_type type
);
Parameters
scalar_function
: 标量函数。type
: 参数的类型。
Return Value
参数类型。不能包含INVALID。
duckdb_scalar_function_set_special_handling
将给定标量函数的参数设置为可变参数。不需要使用duckdb_scalar_function_add_parameter添加参数。
Syntax
void duckdb_scalar_function_set_special_handling(
duckdb_scalar_function scalar_function
);
Parameters
scalar_function
: 标量函数。
duckdb_scalar_function_set_volatile
将标量函数的函数稳定性设置为VOLATILE,表示该函数应该为每一行重新运行。 这限制了可以为该函数执行的优化。
Syntax
void duckdb_scalar_function_set_volatile(
duckdb_scalar_function scalar_function
);
Parameters
scalar_function
: 标量函数。
duckdb_scalar_function_add_parameter
向标量函数添加一个参数。
Syntax
void duckdb_scalar_function_add_parameter(
duckdb_scalar_function scalar_function,
duckdb_logical_type type
);
Parameters
scalar_function
: 标量函数。type
: The parameter type. Cannot contain INVALID.
duckdb_scalar_function_set_return_type
设置标量函数的返回类型。
Syntax
void duckdb_scalar_function_set_return_type(
duckdb_scalar_function scalar_function,
duckdb_logical_type type
);
Parameters
scalar_function
: 标量函数type
: 不能包含 INVALID 或 ANY。
duckdb_scalar_function_set_extra_info
为标量函数分配额外的信息,这些信息可以在绑定等过程中获取。
Syntax
void duckdb_scalar_function_set_extra_info(
duckdb_scalar_function scalar_function,
void *extra_info,
duckdb_delete_callback_t destroy
);
Parameters
scalar_function
: 标量函数extra_info
: The extra informationdestroy
: The callback that will be called to destroy the bind data (if any)
duckdb_scalar_function_set_function
设置标量函数的主函数。
Syntax
void duckdb_scalar_function_set_function(
duckdb_scalar_function scalar_function,
duckdb_scalar_function_t function
);
Parameters
scalar_function
: 标量函数function
: The function
duckdb_register_scalar_function
在给定的连接中注册标量函数对象。
该函数至少需要一个名称、一个函数和一个返回类型。
如果函数不完整或已存在同名函数,则返回DuckDBError。
Syntax
duckdb_state duckdb_register_scalar_function(
duckdb_connection con,
duckdb_scalar_function scalar_function
);
Parameters
con
: The connection to register it in.scalar_function
: 函数指针
Return Value
注册是否成功。
duckdb_scalar_function_get_extra_info
检索在duckdb_scalar_function_set_extra_info
中设置的函数的额外信息。
Syntax
void *duckdb_scalar_function_get_extra_info(
duckdb_function_info info
);
Parameters
info
: 信息对象。
Return Value
额外信息。
duckdb_scalar_function_set_error
报告在执行标量函数时发生了错误。
Syntax
void duckdb_scalar_function_set_error(
duckdb_function_info info,
const char *error
);
Parameters
info
: 信息对象。error
: The error message
duckdb_create_scalar_function_set
创建一个新的空标量函数集。
返回值应使用duckdb_destroy_scalar_function_set
销毁。
Return Value
标量函数集对象。
Syntax
duckdb_scalar_function_set duckdb_create_scalar_function_set(
const char *name
);
duckdb_destroy_scalar_function_set
销毁给定的标量函数集对象。
Syntax
void duckdb_destroy_scalar_function_set(
duckdb_scalar_function_set *scalar_function_set
);
duckdb_add_scalar_function_to_set
将标量函数作为新的重载添加到标量函数集中。
如果无法添加函数,例如如果重载已经存在,则返回DuckDBError。
Syntax
duckdb_state duckdb_add_scalar_function_to_set(
duckdb_scalar_function_set set,
duckdb_scalar_function function
);
Parameters
set
: 标量函数集合function
: 要添加的函数
duckdb_register_scalar_function_set
在给定的连接中注册标量函数集。
集合至少需要一个有效的重载。
如果集合不完整或已存在具有此名称的函数,则返回DuckDBError。
Syntax
duckdb_state duckdb_register_scalar_function_set(
duckdb_connection con,
duckdb_scalar_function_set set
);
Parameters
con
: The connection to register it in.set
: 要注册的函数集
Return Value
注册是否成功。
duckdb_create_aggregate_function
创建一个新的空聚合函数。
返回值应使用duckdb_destroy_aggregate_function
销毁。
Return Value
聚合函数对象。
Syntax
duckdb_aggregate_function duckdb_create_aggregate_function(
);
duckdb_destroy_aggregate_function
销毁给定的聚合函数对象。
Syntax
void duckdb_destroy_aggregate_function(
duckdb_aggregate_function *aggregate_function
);
duckdb_aggregate_function_set_name
设置给定聚合函数的名称。
Syntax
void duckdb_aggregate_function_set_name(
duckdb_aggregate_function aggregate_function,
const char *name
);
Parameters
aggregate_function
: 聚合函数name
: 聚合函数的名称
duckdb_aggregate_function_add_parameter
向聚合函数添加一个参数。
Syntax
void duckdb_aggregate_function_add_parameter(
duckdb_aggregate_function aggregate_function,
duckdb_logical_type type
);
Parameters
aggregate_function
: 聚合函数。type
: The parameter type. Cannot contain INVALID.
duckdb_aggregate_function_set_return_type
设置聚合函数的返回类型。
Syntax
void duckdb_aggregate_function_set_return_type(
duckdb_aggregate_function aggregate_function,
duckdb_logical_type type
);
Parameters
aggregate_function
: 聚合函数。type
: 返回类型。不能包含 INVALID 或 ANY。
duckdb_aggregate_function_set_functions
设置聚合函数的主要功能。
Syntax
void duckdb_aggregate_function_set_functions(
duckdb_aggregate_function aggregate_function,
duckdb_aggregate_state_size state_size,
duckdb_aggregate_init_t state_init,
duckdb_aggregate_update_t update,
duckdb_aggregate_combine_t combine,
duckdb_aggregate_finalize_t finalize
);
Parameters
aggregate_function
: 聚合函数state_size
: 状态大小state_init
: 状态初始化函数update
: 更新状态combine
: 合并状态finalize
: 完成状态
duckdb_aggregate_function_set_destructor
设置聚合函数的状态析构回调(可选)
Syntax
void duckdb_aggregate_function_set_destructor(
duckdb_aggregate_function aggregate_function,
duckdb_aggregate_destroy_t destroy
);
Parameters
aggregate_function
: 聚合函数destroy
: 状态销毁回调
duckdb_register_aggregate_function
在给定的连接中注册聚合函数对象。
该函数至少需要一个名称、函数和返回类型。
如果函数不完整或已存在同名函数,则返回DuckDBError。
Syntax
duckdb_state duckdb_register_aggregate_function(
duckdb_connection con,
duckdb_aggregate_function aggregate_function
);
Parameters
con
: The connection to register it in.
Return Value
注册是否成功。
duckdb_aggregate_function_set_special_handling
将聚合函数的NULL处理设置为SPECIAL_HANDLING。
Syntax
void duckdb_aggregate_function_set_special_handling(
duckdb_aggregate_function aggregate_function
);
Parameters
aggregate_function
: The aggregate function
duckdb_aggregate_function_set_extra_info
为标量函数分配额外的信息,这些信息可以在绑定等过程中获取。
Syntax
void duckdb_aggregate_function_set_extra_info(
duckdb_aggregate_function aggregate_function,
void *extra_info,
duckdb_delete_callback_t destroy
);
Parameters
aggregate_function
: The aggregate functionextra_info
: The extra informationdestroy
: The callback that will be called to destroy the bind data (if any)
duckdb_aggregate_function_get_extra_info
检索在duckdb_aggregate_function_set_extra_info
中设置的函数的额外信息。
Syntax
void *duckdb_aggregate_function_get_extra_info(
duckdb_function_info info
);
Parameters
info
: The info object
Return Value
额外信息
duckdb_aggregate_function_set_error
报告在执行聚合函数时发生错误。
Syntax
void duckdb_aggregate_function_set_error(
duckdb_function_info info,
const char *error
);
Parameters
info
: The info objecterror
: The error message
duckdb_create_aggregate_function_set
创建一个新的空聚合函数集。
返回值应使用duckdb_destroy_aggregate_function_set
销毁。
Return Value
聚合函数集对象。
Syntax
duckdb_aggregate_function_set duckdb_create_aggregate_function_set(
const char *name
);
duckdb_destroy_aggregate_function_set
销毁给定的聚合函数集对象。
Syntax
void duckdb_destroy_aggregate_function_set(
duckdb_aggregate_function_set *aggregate_function_set
);
duckdb_add_aggregate_function_to_set
将聚合函数作为新的重载添加到聚合函数集中。
如果无法添加函数,例如如果重载已经存在,则返回DuckDBError。
Syntax
duckdb_state duckdb_add_aggregate_function_to_set(
duckdb_aggregate_function_set set,
duckdb_aggregate_function function
);
Parameters
set
: 聚合函数集合function
: The function to add
duckdb_register_aggregate_function_set
在给定的连接中注册聚合函数集。
集合至少需要一个有效的重载。
如果集合不完整或已存在具有此名称的函数,则返回DuckDBError。
Syntax
duckdb_state duckdb_register_aggregate_function_set(
duckdb_connection con,
duckdb_aggregate_function_set set
);
Parameters
con
: The connection to register it in.set
: The function set to register
Return Value
注册是否成功。
duckdb_create_table_function
创建一个新的空表函数。
The return value should be destroyed with duckdb_destroy_table_function
.
Return Value
表格函数对象。
Syntax
duckdb_table_function duckdb_create_table_function(
);
duckdb_destroy_table_function
销毁给定的表函数对象。
Syntax
void duckdb_destroy_table_function(
duckdb_table_function *table_function
);
Parameters
table_function
: The table function to destroy
duckdb_table_function_set_name
设置给定表函数的名称。
Syntax
void duckdb_table_function_set_name(
duckdb_table_function table_function,
const char *name
);
Parameters
table_function
: The table functionname
: The name of the table function
duckdb_table_function_add_parameter
向表函数添加一个参数。
Syntax
void duckdb_table_function_add_parameter(
duckdb_table_function table_function,
duckdb_logical_type type
);
Parameters
table_function
: The table function.type
: The parameter type. Cannot contain INVALID.
duckdb_table_function_add_named_parameter
向表函数添加一个命名参数。
Syntax
void duckdb_table_function_add_named_parameter(
duckdb_table_function table_function,
const char *name,
duckdb_logical_type type
);
Parameters
table_function
: The table function.name
: The parameter name.type
: The parameter type. Cannot contain INVALID.
duckdb_table_function_set_extra_info
为表函数分配额外的信息,这些信息可以在绑定等过程中获取。
Syntax
void duckdb_table_function_set_extra_info(
duckdb_table_function table_function,
void *extra_info,
duckdb_delete_callback_t destroy
);
Parameters
table_function
: The table functionextra_info
: The extra informationdestroy
: The callback that will be called to destroy the bind data (if any)
duckdb_table_function_set_bind
设置表函数的绑定函数。
Syntax
void duckdb_table_function_set_bind(
duckdb_table_function table_function,
duckdb_table_function_bind_t bind
);
Parameters
table_function
: The table functionbind
: The bind function
duckdb_table_function_set_init
设置表函数的初始化函数。
Syntax
void duckdb_table_function_set_init(
duckdb_table_function table_function,
duckdb_table_function_init_t init
);
Parameters
table_function
: The table functioninit
: The init function
duckdb_table_function_set_local_init
设置表函数的线程本地初始化函数。
Syntax
void duckdb_table_function_set_local_init(
duckdb_table_function table_function,
duckdb_table_function_init_t init
);
Parameters
table_function
: The table functioninit
: The init function
duckdb_table_function_set_function
设置表函数的主要功能。
Syntax
void duckdb_table_function_set_function(
duckdb_table_function table_function,
duckdb_table_function_t function
);
Parameters
table_function
: The table functionfunction
: The function
duckdb_table_function_supports_projection_pushdown
设置给定的表函数是否支持投影下推。
If this is set to true, the system will provide a list of all required columns in the init
stage through
the duckdb_init_get_column_count
and duckdb_init_get_column_index
functions.
If this is set to false (the default), the system will expect all columns to be projected.
Syntax
void duckdb_table_function_supports_projection_pushdown(
duckdb_table_function table_function,
bool pushdown
);
Parameters
table_function
: The table functionpushdown
: True if the table function supports projection pushdown, false otherwise.
duckdb_register_table_function
在给定的连接中注册表函数对象。
该函数至少需要一个名称、一个绑定函数、一个初始化函数和一个主函数。
如果函数不完整或已存在同名函数,则返回DuckDBError。
Syntax
duckdb_state duckdb_register_table_function(
duckdb_connection con,
duckdb_table_function function
);
Parameters
con
: The connection to register it in.function
: The function pointer
Return Value
注册是否成功。
duckdb_bind_get_extra_info
Retrieves the extra info of the function as set in duckdb_table_function_set_extra_info
.
Syntax
void *duckdb_bind_get_extra_info(
duckdb_bind_info info
);
Parameters
info
: The info object
Return Value
额外信息
duckdb_bind_add_result_column
向表函数的输出添加一个结果列。
Syntax
void duckdb_bind_add_result_column(
duckdb_bind_info info,
const char *name,
duckdb_logical_type type
);
Parameters
info
: The table function's bind info.name
: The column name.type
: The logical column type.
duckdb_bind_get_parameter_count
获取函数的常规(非命名)参数的数量。
Syntax
idx_t duckdb_bind_get_parameter_count(
duckdb_bind_info info
);
Parameters
info
: The info object
Return Value
参数的数量
duckdb_bind_get_parameter
检索给定索引处的参数。
The result must be destroyed with duckdb_destroy_value
.
Syntax
duckdb_value duckdb_bind_get_parameter(
duckdb_bind_info info,
idx_t index
);
Parameters
info
: The info objectindex
: The index of the parameter to get
Return Value
The value of the parameter. Must be destroyed with duckdb_destroy_value
.
duckdb_bind_get_named_parameter
检索具有给定名称的命名参数。
The result must be destroyed with duckdb_destroy_value
.
Syntax
duckdb_value duckdb_bind_get_named_parameter(
duckdb_bind_info info,
const char *name
);
Parameters
info
: The info objectname
: The name of the parameter
Return Value
The value of the parameter. Must be destroyed with duckdb_destroy_value
.
duckdb_bind_set_bind_data
在绑定对象中设置用户提供的绑定数据。此对象可以在执行期间再次检索。
Syntax
void duckdb_bind_set_bind_data(
duckdb_bind_info info,
void *bind_data,
duckdb_delete_callback_t destroy
);
Parameters
info
: The info objectbind_data
: The bind data object.destroy
: The callback that will be called to destroy the bind data (if any)
duckdb_bind_set_cardinality
设置表函数的基数估计,用于优化。
Syntax
void duckdb_bind_set_cardinality(
duckdb_bind_info info,
idx_t cardinality,
bool is_exact
);
Parameters
info
: The bind data object.is_exact
: Whether or not the cardinality estimate is exact, or an approximation
duckdb_bind_set_error
报告在调用bind时发生错误。
Syntax
void duckdb_bind_set_error(
duckdb_bind_info info,
const char *error
);
Parameters
info
: The info objecterror
: The error message
duckdb_init_get_extra_info
Retrieves the extra info of the function as set in duckdb_table_function_set_extra_info
.
Syntax
void *duckdb_init_get_extra_info(
duckdb_init_info info
);
Parameters
info
: The info object
Return Value
额外信息
duckdb_init_get_bind_data
Gets the bind data set by duckdb_bind_set_bind_data
during the bind.
请注意,绑定数据应被视为只读。 对于跟踪状态,请改用初始化数据。
Syntax
void *duckdb_init_get_bind_data(
duckdb_init_info info
);
Parameters
info
: The info object
Return Value
绑定数据对象
duckdb_init_set_init_data
在初始化对象中设置用户提供的初始化数据。此对象可以在执行期间再次检索。
Syntax
void duckdb_init_set_init_data(
duckdb_init_info info,
void *init_data,
duckdb_delete_callback_t destroy
);
Parameters
info
: The info objectinit_data
: The init data object.destroy
: The callback that will be called to destroy the init data (if any)
duckdb_init_get_column_count
返回投影列的数量。
如果启用了投影下推,必须使用此函数来确定要发出的列。
Syntax
idx_t duckdb_init_get_column_count(
duckdb_init_info info
);
Parameters
info
: The info object
Return Value
预计的列数。
duckdb_init_get_column_index
返回指定位置投影列的列索引。
如果启用了投影下推,必须使用此函数来确定要发出的列。
Syntax
idx_t duckdb_init_get_column_index(
duckdb_init_info info,
idx_t column_index
);
Parameters
info
: The info objectcolumn_index
: The index at which to get the projected column index, from 0..duckdb_init_get_column_count(info)
Return Value
投影列的列索引。
duckdb_init_set_max_threads
设置可以并行处理此表函数的线程数(默认值:1)
Syntax
void duckdb_init_set_max_threads(
duckdb_init_info info,
idx_t max_threads
);
Parameters
info
: The info objectmax_threads
: The maximum amount of threads that can process this table function
duckdb_init_set_error
报告在调用init时发生错误。
Syntax
void duckdb_init_set_error(
duckdb_init_info info,
const char *error
);
Parameters
info
: The info objecterror
: The error message
duckdb_function_get_extra_info
Retrieves the extra info of the function as set in duckdb_table_function_set_extra_info
.
Syntax
void *duckdb_function_get_extra_info(
duckdb_function_info info
);
Parameters
info
: The info object
Return Value
额外信息
duckdb_function_get_bind_data
Gets the bind data set by duckdb_bind_set_bind_data
during the bind.
请注意,绑定数据应被视为只读。 对于跟踪状态,请改用初始化数据。
Syntax
void *duckdb_function_get_bind_data(
duckdb_function_info info
);
Parameters
info
: The info object
Return Value
绑定数据对象
duckdb_function_get_init_data
Gets the init data set by duckdb_init_set_init_data
during the init.
Syntax
void *duckdb_function_get_init_data(
duckdb_function_info info
);
Parameters
info
: The info object
Return Value
初始化数据对象
duckdb_function_get_local_init_data
Gets the thread-local init data set by duckdb_init_set_init_data
during the local_init.
Syntax
void *duckdb_function_get_local_init_data(
duckdb_function_info info
);
Parameters
info
: The info object
Return Value
初始化数据对象
duckdb_function_set_error
报告在执行函数时发生了错误。
Syntax
void duckdb_function_set_error(
duckdb_function_info info,
const char *error
);
Parameters
info
: The info objecterror
: The error message
duckdb_add_replacement_scan
向指定的数据库添加替换扫描定义。
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 toreplacement
: The replacement scan callbackextra_data
: Extra data that is passed back into the specified callbackdelete_callback
: The delete callback to call on the extra data, if any
duckdb_replacement_scan_set_function_name
设置替换函数名称。如果在替换回调中调用此函数,则执行替换扫描。如果未调用,则不执行替换回调。
Syntax
void duckdb_replacement_scan_set_function_name(
duckdb_replacement_scan_info info,
const char *function_name
);
Parameters
info
: The info objectfunction_name
: The function name to substitute.
duckdb_replacement_scan_add_parameter
向替换扫描函数添加一个参数。
Syntax
void duckdb_replacement_scan_add_parameter(
duckdb_replacement_scan_info info,
duckdb_value parameter
);
Parameters
info
: The info objectparameter
: The parameter to add.
duckdb_replacement_scan_set_error
报告在执行替换扫描时发生错误。
Syntax
void duckdb_replacement_scan_set_error(
duckdb_replacement_scan_info info,
const char *error
);
Parameters
info
: The info objecterror
: The error message
duckdb_get_profiling_info
返回分析信息的根节点。如果未启用分析,则返回 nullptr。
Syntax
duckdb_profiling_info duckdb_get_profiling_info(
duckdb_connection connection
);
Parameters
connection
: 一个连接对象。
Return Value
一个性能分析信息对象。
duckdb_profiling_info_get_value
返回当前分析信息节点的度量值。如果度量不存在或未启用,则返回 nullptr。目前,该值包含一个字符串,您可以通过调用相应的函数来检索该字符串:char *duckdb_get_varchar(duckdb_value value)。
Syntax
duckdb_value duckdb_profiling_info_get_value(
duckdb_profiling_info info,
const char *key
);
Parameters
info
: 一个性能分析信息对象。key
: 请求的指标名称。
Return Value
指标的值。必须使用duckdb_destroy_value
释放
duckdb_profiling_info_get_metrics
返回此分析节点的键值度量映射作为MAP duckdb_value。 可以通过duckdb_value MAP函数访问各个元素。
Syntax
duckdb_value duckdb_profiling_info_get_metrics(
duckdb_profiling_info info
);
Parameters
info
: 一个性能分析信息对象。
Return Value
键值度量映射作为MAP duckdb_value。
duckdb_profiling_info_get_child_count
返回当前分析信息节点中的子节点数量。
Syntax
idx_t duckdb_profiling_info_get_child_count(
duckdb_profiling_info info
);
Parameters
info
: 一个分析信息对象。
Return Value
当前节点中的子节点数量。
duckdb_profiling_info_get_child
返回指定索引处的子节点。
Syntax
duckdb_profiling_info duckdb_profiling_info_get_child(
duckdb_profiling_info info,
idx_t index
);
Parameters
info
: 一个分析信息对象。index
: 子节点的索引。
Return Value
指定索引处的子节点。
duckdb_appender_create
创建一个附加器对象。
Note that the object must be destroyed with duckdb_appender_destroy
.
Syntax
duckdb_state duckdb_appender_create(
duckdb_connection connection,
const char *schema,
const char *table,
duckdb_appender *out_appender
);
Parameters
connection
: The connection context to create the appender in.schema
: The schema of the table to append to, ornullptr
for the default schema.table
: The table name to append to.out_appender
: The resulting appender object.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_appender_column_count
返回属于追加器的表中的列数。
Syntax
idx_t duckdb_appender_column_count(
duckdb_appender appender
);
Parameters
appender
: The appender to get the column count from.
Return Value
表中的列数。
duckdb_appender_column_type
返回指定索引处列的类型。
Note: The resulting type should be destroyed with duckdb_destroy_logical_type
.
Syntax
duckdb_logical_type duckdb_appender_column_type(
duckdb_appender appender,
idx_t col_idx
);
Parameters
appender
: The appender to get the column type from.col_idx
: The index of the column to get the type of.
Return Value
列的duckdb_logical_type。
duckdb_appender_error
Returns the error message associated with the given appender.
If the appender has no error message, this returns nullptr
instead.
The error message should not be freed. It will be de-allocated when duckdb_appender_destroy
is called.
Syntax
const char *duckdb_appender_error(
duckdb_appender appender
);
Parameters
appender
: The appender to get the error from.
Return Value
The error message, or nullptr
if there is none.
duckdb_appender_flush
将appender刷新到表中,强制清除appender的缓存。如果刷新数据时触发约束违规或任何其他错误,则所有数据都将失效,并且此函数返回DuckDBError。无法再追加更多值。调用duckdb_appender_error以获取错误消息,然后调用duckdb_appender_destroy以销毁失效的appender。
Syntax
duckdb_state duckdb_appender_flush(
duckdb_appender appender
);
Parameters
appender
: The appender to flush.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_appender_close
通过刷新所有中间状态并关闭它以进行进一步的追加来关闭appender。如果刷新数据触发约束违规或任何其他错误,则所有数据都将失效,并且此函数返回DuckDBError。调用duckdb_appender_error以获取错误消息,然后调用duckdb_appender_destroy以销毁失效的appender。
Syntax
duckdb_state duckdb_appender_close(
duckdb_appender appender
);
Parameters
appender
: The appender to flush and close.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_appender_destroy
通过将所有中间状态刷新到表并销毁它来关闭appender。通过销毁它,此函数释放与appender相关的所有内存。如果刷新数据触发约束违规,则所有数据都将失效,并且此函数返回DuckDBError。由于appender的销毁,不再可能通过duckdb_appender_error获取特定的错误消息。因此,如果您需要了解特定错误的详细信息,请在销毁appender之前调用duckdb_appender_close。
Syntax
duckdb_state duckdb_appender_destroy(
duckdb_appender *appender
);
Parameters
appender
: The appender to flush, close and destroy.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_appender_begin_row
A nop function, provided for backwards compatibility reasons. Does nothing. Only duckdb_appender_end_row
is required.
Syntax
duckdb_state duckdb_appender_begin_row(
duckdb_appender appender
);
duckdb_appender_end_row
完成当前行的追加。调用end_row后,可以追加下一行。
Syntax
duckdb_state duckdb_appender_end_row(
duckdb_appender appender
);
Parameters
appender
: The appender.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_append_default
向appender追加一个DEFAULT值(如果列不可用DEFAULT,则为NULL)。
Syntax
duckdb_state duckdb_append_default(
duckdb_appender appender
);
duckdb_append_bool
向appender追加一个布尔值。
Syntax
duckdb_state duckdb_append_bool(
duckdb_appender appender,
bool value
);
duckdb_append_int8
将一个int8_t值附加到appender。
Syntax
duckdb_state duckdb_append_int8(
duckdb_appender appender,
int8_t value
);
duckdb_append_int16
向appender追加一个int16_t值。
Syntax
duckdb_state duckdb_append_int16(
duckdb_appender appender,
int16_t value
);
duckdb_append_int32
向appender追加一个int32_t值。
Syntax
duckdb_state duckdb_append_int32(
duckdb_appender appender,
int32_t value
);
duckdb_append_int64
将一个int64_t值附加到appender。
Syntax
duckdb_state duckdb_append_int64(
duckdb_appender appender,
int64_t value
);
duckdb_append_hugeint
向appender添加一个duckdb_hugeint值。
Syntax
duckdb_state duckdb_append_hugeint(
duckdb_appender appender,
duckdb_hugeint value
);
duckdb_append_uint8
将一个uint8_t值附加到appender。
Syntax
duckdb_state duckdb_append_uint8(
duckdb_appender appender,
uint8_t value
);
duckdb_append_uint16
将一个uint16_t值附加到appender。
Syntax
duckdb_state duckdb_append_uint16(
duckdb_appender appender,
uint16_t value
);
duckdb_append_uint32
向appender追加一个uint32_t值。
Syntax
duckdb_state duckdb_append_uint32(
duckdb_appender appender,
uint32_t value
);
duckdb_append_uint64
将一个uint64_t值附加到appender。
Syntax
duckdb_state duckdb_append_uint64(
duckdb_appender appender,
uint64_t value
);
duckdb_append_uhugeint
向appender追加一个duckdb_uhugeint值。
Syntax
duckdb_state duckdb_append_uhugeint(
duckdb_appender appender,
duckdb_uhugeint value
);
duckdb_append_float
向追加器追加一个浮点值。
Syntax
duckdb_state duckdb_append_float(
duckdb_appender appender,
float value
);
duckdb_append_double
向appender追加一个双精度值。
Syntax
duckdb_state duckdb_append_double(
duckdb_appender appender,
double value
);
duckdb_append_date
向appender追加一个duckdb_date值。
Syntax
duckdb_state duckdb_append_date(
duckdb_appender appender,
duckdb_date value
);
duckdb_append_time
向appender追加一个duckdb_time值。
Syntax
duckdb_state duckdb_append_time(
duckdb_appender appender,
duckdb_time value
);
duckdb_append_timestamp
向appender追加一个duckdb_timestamp值。
Syntax
duckdb_state duckdb_append_timestamp(
duckdb_appender appender,
duckdb_timestamp value
);
duckdb_append_interval
向appender添加一个duckdb_interval值。
Syntax
duckdb_state duckdb_append_interval(
duckdb_appender appender,
duckdb_interval value
);
duckdb_append_varchar
将一个varchar值附加到appender。
Syntax
duckdb_state duckdb_append_varchar(
duckdb_appender appender,
const char *val
);
duckdb_append_varchar_length
将一个varchar值附加到appender。
Syntax
duckdb_state duckdb_append_varchar_length(
duckdb_appender appender,
const char *val,
idx_t length
);
duckdb_append_blob
向追加器追加一个blob值。
Syntax
duckdb_state duckdb_append_blob(
duckdb_appender appender,
const void *data,
idx_t length
);
duckdb_append_null
向appender追加一个NULL值(任何类型)。
Syntax
duckdb_state duckdb_append_null(
duckdb_appender appender
);
duckdb_append_data_chunk
将预填充的数据块附加到指定的附加器。
数据块的类型必须与表的类型完全匹配,不执行类型转换。 如果类型不匹配或appender处于无效状态,则返回DuckDBError。 如果追加成功,则返回DuckDBSuccess。
Syntax
duckdb_state duckdb_append_data_chunk(
duckdb_appender appender,
duckdb_data_chunk chunk
);
Parameters
appender
: The appender to append to.chunk
: The data chunk to append.
Return Value
返回状态。
duckdb_table_description_create
创建一个表描述对象。请注意,即使函数返回DuckDBError
,也应始终在生成的table_description上调用duckdb_table_description_destroy
。
Syntax
duckdb_state duckdb_table_description_create(
duckdb_connection connection,
const char *schema,
const char *table,
duckdb_table_description *out
);
Parameters
connection
: 连接上下文。schema
: 表的模式,或使用nullptr
表示默认模式。table
: 表名。out
: 结果表描述对象。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_table_description_destroy
销毁TableDescription对象。
Syntax
void duckdb_table_description_destroy(
duckdb_table_description *table_description
);
Parameters
table_description
: 要销毁的table_description。
duckdb_table_description_error
返回与给定表描述相关的错误信息。
如果表描述没有错误信息,则返回nullptr
。
错误信息不应被释放。它将在调用duckdb_table_description_destroy
时被释放。
Syntax
const char *duckdb_table_description_error(
duckdb_table_description table_description
);
Parameters
table_description
: 获取错误的表描述。
Return Value
The error message, or nullptr
if there is none.
duckdb_column_has_default
检查表格中位于'index'索引处的列是否具有DEFAULT表达式。
Syntax
duckdb_state duckdb_column_has_default(
duckdb_table_description table_description,
idx_t index,
bool *out
);
Parameters
table_description
: 要查询的table_description。index
: 要查询的列的索引。out
: 用于存储结果的输出参数。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_query_arrow
警告 弃用通知。此方法计划在未来的版本中移除。
在连接中执行SQL查询,并将完整(物化)的结果存储在箭头结构中。
如果查询执行失败,将返回DuckDBError,并且可以通过调用
duckdb_query_arrow_error
来检索错误消息。
请注意,在运行duckdb_query_arrow
之后,即使查询失败,也必须在结果对象上调用duckdb_destroy_arrow
,否则结果中存储的错误将无法正确释放。
Syntax
duckdb_state duckdb_query_arrow(
duckdb_connection connection,
const char *query,
duckdb_arrow *out_result
);
Parameters
connection
: The connection to perform the query in.query
: The SQL query to run.out_result
: The query result.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_query_arrow_schema
警告 弃用通知。此方法计划在未来的版本中移除。
从箭头结果中获取内部箭头模式。记得在相应的ArrowSchema对象上调用release。
Syntax
duckdb_state duckdb_query_arrow_schema(
duckdb_arrow result,
duckdb_arrow_schema *out_schema
);
Parameters
result
: 从中获取模式的结果。out_schema
: 输出模式。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_prepared_arrow_schema
警告 弃用通知。此方法计划在未来的版本中移除。
从准备好的语句中获取内部的箭头模式。记得在相应的ArrowSchema对象上调用release。
Syntax
duckdb_state duckdb_prepared_arrow_schema(
duckdb_prepared_statement prepared,
duckdb_arrow_schema *out_schema
);
Parameters
prepared
: 用于获取模式的预处理语句。out_schema
: 输出模式。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_result_arrow_array
警告 弃用通知。此方法计划在未来的版本中移除。
将数据块转换为箭头结构数组。记得在相应的ArrowArray对象上调用release。
Syntax
void duckdb_result_arrow_array(
duckdb_result result,
duckdb_data_chunk chunk,
duckdb_arrow_array *out_array
);
Parameters
result
: 数据块已从中获取的结果对象。chunk
: 要转换的数据块。out_array
: 输出数组。
duckdb_query_arrow_array
警告 弃用通知。此方法计划在未来的版本中移除。
从箭头结果中获取一个内部的箭头结构数组。记得在相应的ArrowArray对象上调用release。
此函数可以多次调用以获取下一个数据块,这将释放之前的out_array。 因此,在再次调用此函数之前,请使用out_array。
Syntax
duckdb_state duckdb_query_arrow_array(
duckdb_arrow result,
duckdb_arrow_array *out_array
);
Parameters
result
: 从中获取数组的结果。out_array
: 输出数组。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_arrow_column_count
警告 弃用通知。此方法计划在未来的版本中移除。
返回箭头结果对象中存在的列数。
Syntax
idx_t duckdb_arrow_column_count(
duckdb_arrow result
);
Parameters
result
: The result object.
Return Value
结果对象中存在的列数。
duckdb_arrow_row_count
警告 弃用通知。此方法计划在未来的版本中移除。
返回箭头结果对象中存在的行数。
Syntax
idx_t duckdb_arrow_row_count(
duckdb_arrow result
);
Parameters
result
: The result object.
Return Value
结果对象中存在的行数。
duckdb_arrow_rows_changed
警告 弃用通知。此方法计划在未来的版本中移除。
返回存储在箭头结果中的查询更改的行数。这仅与INSERT/UPDATE/DELETE查询相关。对于其他查询,rows_changed将为0。
Syntax
idx_t duckdb_arrow_rows_changed(
duckdb_arrow result
);
Parameters
result
: The result object.
Return Value
更改的行数。
duckdb_query_arrow_error
警告 弃用通知。此方法计划在未来的版本中移除。
返回结果中包含的错误信息。只有在duckdb_query_arrow
返回DuckDBError
时,错误信息才会被设置。
错误信息不应被释放。当调用duckdb_destroy_arrow
时,它将被释放。
Syntax
const char *duckdb_query_arrow_error(
duckdb_arrow result
);
Parameters
result
: The result object to fetch the error from.
Return Value
结果的错误。
duckdb_destroy_arrow
警告 弃用通知。此方法计划在未来的版本中移除。
关闭结果并释放为箭头结果分配的所有内存。
Syntax
void duckdb_destroy_arrow(
duckdb_arrow *result
);
Parameters
result
: The result to destroy.
duckdb_destroy_arrow_stream
警告 弃用通知。此方法计划在未来的版本中移除。
释放箭头数组流并释放其内存。
Syntax
void duckdb_destroy_arrow_stream(
duckdb_arrow_stream *stream_p
);
Parameters
stream_p
: 要销毁的箭头数组流。
duckdb_execute_prepared_arrow
警告 弃用通知。此方法计划在未来的版本中移除。
使用给定的绑定参数执行准备好的语句,并返回一个箭头查询结果。
请注意,在运行duckdb_execute_prepared_arrow
之后,必须在结果对象上调用duckdb_destroy_arrow
。
Syntax
duckdb_state duckdb_execute_prepared_arrow(
duckdb_prepared_statement prepared_statement,
duckdb_arrow *out_result
);
Parameters
prepared_statement
: The prepared statement to execute.out_result
: The query result.
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_arrow_scan
警告 弃用通知。此方法计划在未来的版本中移除。
扫描Arrow流并使用给定的名称创建视图。
Syntax
duckdb_state duckdb_arrow_scan(
duckdb_connection connection,
const char *table_name,
duckdb_arrow_stream arrow
);
Parameters
connection
: 执行扫描的连接。table_name
: 要创建的临时视图的名称。arrow
: Arrow 流包装器。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_arrow_array_scan
警告 弃用通知。此方法计划在未来的版本中移除。
扫描Arrow数组并使用给定的名称创建视图。
请注意,在运行duckdb_arrow_array_scan
之后,必须在输出流上调用duckdb_destroy_arrow_stream
。
Syntax
duckdb_state duckdb_arrow_array_scan(
duckdb_connection connection,
const char *table_name,
duckdb_arrow_schema arrow_schema,
duckdb_arrow_array arrow_array,
duckdb_arrow_stream *out_stream
);
Parameters
connection
: 执行扫描的连接。table_name
: 要创建的临时视图的名称。arrow_schema
: Arrow 模式包装器。arrow_array
: Arrow 数组包装器。out_stream
: 输出数组流,用于包装传递的模式,完成后释放/删除。
Return Value
DuckDBSuccess
on success or DuckDBError
on failure.
duckdb_execute_tasks
在此线程上执行DuckDB任务。
将在执行了max_tasks
后返回,或者如果没有更多任务存在时返回。
Syntax
void duckdb_execute_tasks(
duckdb_database database,
idx_t max_tasks
);
Parameters
database
: 用于执行任务的数据库对象max_tasks
: 要执行的最大任务数量
duckdb_create_task_state
创建一个任务状态,可以与duckdb_execute_tasks_state一起使用,以执行任务,直到在该状态上调用duckdb_finish_execution
。
duckdb_destroy_state
必须在结果上调用。
Syntax
duckdb_task_state duckdb_create_task_state(
duckdb_database database
);
Parameters
database
: 用于创建任务状态的数据库对象
Return Value
可以与duckdb_execute_tasks_state一起使用的任务状态。
duckdb_execute_tasks_state
在此线程上执行DuckDB任务。
线程将持续执行任务,直到在状态上调用duckdb_finish_execution。 多个线程可以共享相同的duckdb_task_state。
Syntax
void duckdb_execute_tasks_state(
duckdb_task_state state
);
Parameters
state
: 执行器的任务状态
duckdb_execute_n_tasks_state
在此线程上执行DuckDB任务。
线程将继续执行任务,直到在状态上调用duckdb_finish_execution,执行了max_tasks个任务或没有更多任务要执行。
多个线程可以共享同一个duckdb_task_state。
Syntax
idx_t duckdb_execute_n_tasks_state(
duckdb_task_state state,
idx_t max_tasks
);
Parameters
state
: 执行器的任务状态max_tasks
: 要执行的最大任务数量
Return Value
实际已执行的任务数量
duckdb_finish_execution
在特定任务上完成执行。
Syntax
void duckdb_finish_execution(
duckdb_task_state state
);
Parameters
state
: 完成任务执行的状态
duckdb_task_state_is_finished
检查提供的duckdb_task_state是否已完成执行
Syntax
bool duckdb_task_state_is_finished(
duckdb_task_state state
);
Parameters
state
: 要检查的任务状态
Return Value
是否已在任务状态上调用了duckdb_finish_execution
duckdb_destroy_task_state
销毁从duckdb_create_task_state返回的任务状态。
请注意,当任务状态上有一个活动的 duckdb_execute_tasks_state 运行时,不应调用此函数。
Syntax
void duckdb_destroy_task_state(
duckdb_task_state state
);
Parameters
state
: 要清理的任务状态
duckdb_execution_is_finished
如果当前查询的执行已完成,则返回 true。
Syntax
bool duckdb_execution_is_finished(
duckdb_connection con
);
Parameters
con
: 检查的连接
duckdb_stream_fetch_chunk
警告 弃用通知。此方法计划在未来的版本中移除。
从(流式)duckdb_result 中获取数据块。此函数应重复调用,直到结果耗尽。
The result must be destroyed with duckdb_destroy_data_chunk
.
此函数只能用于使用 'duckdb_pending_prepared_streaming' 创建的 duckdb_results
如果使用此函数,则不能使用其他结果函数,反之亦然(即,此函数不能与旧版结果函数或物化结果函数混合使用)。
事先不知道这个结果会返回多少个块。
Syntax
duckdb_data_chunk duckdb_stream_fetch_chunk(
duckdb_result result
);
Parameters
result
: The result object to fetch the data chunk from.
Return Value
生成的数据块。如果结果有错误,则返回 NULL
。
duckdb_fetch_chunk
从duckdb_result中获取一个数据块。此函数应重复调用,直到结果耗尽。
The result must be destroyed with duckdb_destroy_data_chunk
.
事先不知道这个结果会返回多少个块。
Syntax
duckdb_data_chunk duckdb_fetch_chunk(
duckdb_result result
);
Parameters
result
: The result object to fetch the data chunk from.
Return Value
生成的数据块。如果结果有错误,则返回NULL
。
duckdb_create_cast_function
创建一个新的类型转换函数对象。
Return Value
转换函数对象。
Syntax
duckdb_cast_function duckdb_create_cast_function(
);
duckdb_cast_function_set_source_type
设置转换函数的源类型。
Syntax
void duckdb_cast_function_set_source_type(
duckdb_cast_function cast_function,
duckdb_logical_type source_type
);
Parameters
cast_function
: 转换函数对象。source_type
: 要设置的源类型。
duckdb_cast_function_set_target_type
设置转换函数的目标类型。
Syntax
void duckdb_cast_function_set_target_type(
duckdb_cast_function cast_function,
duckdb_logical_type target_type
);
Parameters
cast_function
: 转换函数对象。target_type
: 要设置的目标类型。
duckdb_cast_function_set_implicit_cast_cost
设置使用此函数将源类型隐式转换为目标类型的“成本”。
Syntax
void duckdb_cast_function_set_implicit_cast_cost(
duckdb_cast_function cast_function,
int64_t cost
);
Parameters
cast_function
: 转换函数对象。cost
: 要设置的成本。
duckdb_cast_function_set_function
设置要使用的实际转换函数。
Syntax
void duckdb_cast_function_set_function(
duckdb_cast_function cast_function,
duckdb_cast_function_t function
);
Parameters
cast_function
: 转换函数对象。function
: 要设置的函数。
duckdb_cast_function_set_extra_info
为可以在执行期间获取的cast函数分配额外信息,等等。
Syntax
void duckdb_cast_function_set_extra_info(
duckdb_cast_function cast_function,
void *extra_info,
duckdb_delete_callback_t destroy
);
Parameters
extra_info
: The extra informationdestroy
: 将调用的回调函数,用于销毁额外信息(如果有的话)
duckdb_cast_function_get_extra_info
检索在duckdb_cast_function_set_extra_info
中设置的函数的额外信息。
Syntax
void *duckdb_cast_function_get_extra_info(
duckdb_function_info info
);
Parameters
info
: The info object.
Return Value
额外信息。
duckdb_cast_function_get_cast_mode
从给定的函数信息中获取强制转换执行模式。
Syntax
duckdb_cast_mode duckdb_cast_function_get_cast_mode(
duckdb_function_info info
);
Parameters
info
: The info object.
Return Value
转换模式。
duckdb_cast_function_set_error
报告在执行cast函数时发生了错误。
Syntax
void duckdb_cast_function_set_error(
duckdb_function_info info,
const char *error
);
Parameters
info
: The info object.error
: 错误信息。
duckdb_cast_function_set_row_error
报告在执行cast函数时发生错误,将相应的输出行设置为NULL。
Syntax
void duckdb_cast_function_set_row_error(
duckdb_function_info info,
const char *error,
idx_t row,
duckdb_vector output
);
Parameters
info
: The info object.error
: 错误信息。row
: 输出向量中要设置为NULL的行的索引。output
: 输出向量。
duckdb_register_cast_function
在给定的连接中注册一个转换函数。
Syntax
duckdb_state duckdb_register_cast_function(
duckdb_connection con,
duckdb_cast_function cast_function
);
Parameters
con
: 使用的连接。cast_function
: 要注册的转换函数。
Return Value
注册是否成功。
duckdb_destroy_cast_function
销毁转换函数对象。
Syntax
void duckdb_destroy_cast_function(
duckdb_cast_function *cast_function
);
Parameters
cast_function
: The cast function object.