⌘+k ctrl+k
1.3 (稳定版)
搜索快捷键 cmd + k | ctrl + k
完整 API

本页包含 DuckDB C API 的参考。

该参考包含若干弃用通知。 这些通知涉及长期可用性无法保证的方法,因为这些方法将来可能会被删除。 也就是说,DuckDB 的开发人员计划缓慢地进行弃用,因为一些弃用的方法尚未具有完全可用的替代方法。 因此,它们不会在替代方法可用之前被删除,即使那样,在删除它们之前也会有几个小版本的宽限期。 这些方法已经在 v1.0 中被弃用的原因是表明它们不是 v1.0 稳定 API 的一部分,该 API 包含长期可用的方法。

API参考概览

打开连接

duckdb_instance_cache duckdb_create_instance_cache();
duckdb_state duckdb_get_or_create_from_cache(duckdb_instance_cache instance_cache, const char *path, duckdb_database *out_database, duckdb_config config, char **out_error);
void duckdb_destroy_instance_cache(duckdb_instance_cache *instance_cache);
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);
void duckdb_connection_get_client_context(duckdb_connection connection, duckdb_client_context *out_context);
idx_t duckdb_client_context_get_connection_id(duckdb_client_context context);
void duckdb_destroy_client_context(duckdb_client_context *context);
const char *duckdb_library_version();
duckdb_value duckdb_get_table_names(duckdb_connection connection, const char *query, bool qualified);

配置

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);

查询执行

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);

助手

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);

日期时间时间戳助手

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);
bool duckdb_is_finite_timestamp_s(duckdb_timestamp_s ts);
bool duckdb_is_finite_timestamp_ms(duckdb_timestamp_ms ts);
bool duckdb_is_finite_timestamp_ns(duckdb_timestamp_ns ts);

Hugeint 助手

double duckdb_hugeint_to_double(duckdb_hugeint val);
duckdb_hugeint duckdb_double_to_hugeint(double val);

无符号 Hugeint 助手

double duckdb_uhugeint_to_double(duckdb_uhugeint val);
duckdb_uhugeint duckdb_double_to_uhugeint(double val);

十进制助手

duckdb_decimal duckdb_double_to_decimal(double val, uint8_t width, uint8_t scale);
double duckdb_decimal_to_double(duckdb_decimal val);

预处理语句

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_logical_type duckdb_param_logical_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);

提取语句

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);

值接口

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_varint(duckdb_varint input);
duckdb_value duckdb_create_decimal(duckdb_decimal 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_timestamp_tz(duckdb_timestamp input);
duckdb_value duckdb_create_timestamp_s(duckdb_timestamp_s input);
duckdb_value duckdb_create_timestamp_ms(duckdb_timestamp_ms input);
duckdb_value duckdb_create_timestamp_ns(duckdb_timestamp_ns input);
duckdb_value duckdb_create_interval(duckdb_interval input);
duckdb_value duckdb_create_blob(const uint8_t *data, idx_t length);
duckdb_value duckdb_create_bit(duckdb_bit input);
duckdb_value duckdb_create_uuid(duckdb_uhugeint input);
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);
duckdb_varint duckdb_get_varint(duckdb_value val);
duckdb_decimal duckdb_get_decimal(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_timestamp duckdb_get_timestamp_tz(duckdb_value val);
duckdb_timestamp_s duckdb_get_timestamp_s(duckdb_value val);
duckdb_timestamp_ms duckdb_get_timestamp_ms(duckdb_value val);
duckdb_timestamp_ns duckdb_get_timestamp_ns(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);
duckdb_bit duckdb_get_bit(duckdb_value val);
duckdb_uhugeint duckdb_get_uuid(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);
duckdb_value duckdb_create_map_value(duckdb_logical_type map_type, duckdb_value *keys, duckdb_value *values, idx_t entry_count);
duckdb_value duckdb_create_union_value(duckdb_logical_type union_type, idx_t tag_index, duckdb_value value);
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);
bool duckdb_is_null_value(duckdb_value value);
duckdb_value duckdb_create_null_value();
idx_t duckdb_get_list_size(duckdb_value value);
duckdb_value duckdb_get_list_child(duckdb_value value, idx_t index);
duckdb_value duckdb_create_enum_value(duckdb_logical_type type, uint64_t value);
uint64_t duckdb_get_enum_value(duckdb_value value);
duckdb_value duckdb_get_struct_child(duckdb_value value, idx_t index);
char *duckdb_value_to_string(duckdb_value value);

逻辑类型接口

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_vector duckdb_create_vector(duckdb_logical_type type, idx_t capacity);
void duckdb_destroy_vector(duckdb_vector *vector);
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);
void duckdb_slice_vector(duckdb_vector vector, duckdb_selection_vector selection, idx_t len);
void duckdb_vector_reference_value(duckdb_vector vector, duckdb_value value);
void duckdb_vector_reference_vector(duckdb_vector to_vector, duckdb_vector from_vector);

有效性掩码函数

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);

标量函数

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_bind(duckdb_scalar_function scalar_function, duckdb_scalar_function_bind_t bind);
void duckdb_scalar_function_set_bind_data(duckdb_bind_info info, void *bind_data, duckdb_delete_callback_t destroy);
void duckdb_scalar_function_bind_set_error(duckdb_bind_info info, const char *error);
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_get_bind_data(duckdb_function_info info);
void duckdb_scalar_function_get_client_context(duckdb_bind_info info, duckdb_client_context *out_context);
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);

选择向量接口

duckdb_selection_vector duckdb_create_selection_vector(idx_t size);
void duckdb_destroy_selection_vector(duckdb_selection_vector vector);
sel_t *duckdb_selection_vector_get_data_ptr(duckdb_selection_vector vector);

聚合函数

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);

表函数

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);

表函数

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);
duckdb_state duckdb_appender_create_ext(duckdb_connection connection, const char *catalog, 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_add_column(duckdb_appender appender, const char *name);
duckdb_state duckdb_appender_clear_columns(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_default_to_chunk(duckdb_appender appender, duckdb_data_chunk chunk, idx_t col, idx_t row);
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_value(duckdb_appender appender, duckdb_value value);
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);
duckdb_state duckdb_table_description_create_ext(duckdb_connection connection, const char *catalog, 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);
char *duckdb_table_description_get_column_name(duckdb_table_description table_description, idx_t index);

Arrow 接口

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_create_instance_cache

创建一个新的数据库实例缓存。 如果客户端/程序在同一进程中(重新)打开多个到同一文件的数据库,则实例缓存是必需的。 必须使用“duckdb_destroy_instance_cache”销毁。

返回值

数据库实例缓存。

语法
duckdb_instance_cache duckdb_create_instance_cache(
  
);


duckdb_get_or_create_from_cache

在实例缓存中创建一个新的数据库实例,或检索现有数据库实例。 必须使用“duckdb_close”关闭。

语法
duckdb_state duckdb_get_or_create_from_cache(
  duckdb_instance_cache instance_cache,
  const char *path,
  duckdb_database *out_database,
  duckdb_config config,
  char **out_error
);
参数
  • instance_cache:在其中创建数据库或从中获取数据库的实例缓存。
  • path:磁盘上数据库文件的路径。 nullptr:memory: 都打开或检索内存数据库。
  • out_database:生成的缓存数据库。
  • config:(可选)用于创建数据库的配置。
  • out_error:如果设置且函数返回 DuckDBError,则此字段包含错误消息。 请注意,错误消息必须使用 duckdb_free 释放。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_destroy_instance_cache

销毁现有的数据库实例缓存并释放其内存。

语法
void duckdb_destroy_instance_cache(
  duckdb_instance_cache *instance_cache
);
参数
  • instance_cache:要销毁的实例缓存。


duckdb_open

创建一个新数据库或打开存储在给定路径中的现有数据库文件。 如果未给出路径,则会创建一个新的内存数据库。 数据库必须使用“duckdb_close”关闭。

语法
duckdb_state duckdb_open(
  const char *path,
  duckdb_database *out_database
);
参数
  • path:磁盘上数据库文件的路径。 nullptr:memory: 都打开内存数据库。
  • out_database:结果数据库对象。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_open_ext

duckdb_open 的扩展版本。 创建一个新数据库或打开存储在给定路径中的现有数据库文件。 数据库必须使用“duckdb_close”关闭。

语法
duckdb_state duckdb_open_ext(
  const char *path,
  duckdb_database *out_database,
  duckdb_config config,
  char **out_error
);
参数
  • path:磁盘上数据库文件的路径。 nullptr:memory: 都打开内存数据库。
  • out_database:结果数据库对象。
  • config:(可选)用于启动数据库的配置。
  • out_error:如果设置且函数返回 DuckDBError,则此字段包含错误消息。 请注意,错误消息必须使用 duckdb_free 释放。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_close

关闭指定的数据库并释放为该数据库分配的所有内存。 在完成通过 duckdb_openduckdb_open_ext 分配的任何数据库后,应调用此方法。 请注意,未能调用 duckdb_close(例如,在程序崩溃的情况下)不会导致数据损坏。 但是,建议在完成数据库对象后始终正确关闭它。

语法
void duckdb_close(
  duckdb_database *database
);
参数
  • database:要关闭的数据库对象。


duckdb_connect

打开与数据库的连接。 连接是查询数据库所必需的,并存储与连接关联的事务状态。 实例化的连接应使用“duckdb_disconnect”关闭。

语法
duckdb_state duckdb_connect(
  duckdb_database database,
  duckdb_connection *out_connection
);
参数
  • database:要连接到的数据库文件。
  • out_connection:结果连接对象。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_interrupt

中断正在运行的查询

语法
void duckdb_interrupt(
  duckdb_connection connection
);
参数
  • connection:要中断的连接


duckdb_query_progress

获取正在运行的查询的进度

语法
duckdb_query_progress_type duckdb_query_progress(
  duckdb_connection connection
);
参数
  • connection:工作连接
返回值

如果无进度,则为 -1,否则为进度的百分比


duckdb_disconnect

关闭指定的连接并释放为该连接分配的所有内存。

语法
void duckdb_disconnect(
  duckdb_connection *connection
);
参数
  • connection:要关闭的连接。


duckdb_connection_get_client_context

检索连接的客户端上下文。

语法
void duckdb_connection_get_client_context(
  duckdb_connection connection,
  duckdb_client_context *out_context
);
参数
  • connection:连接。
  • out_context:连接的客户端上下文。 必须使用 duckdb_destroy_client_context 销毁。


duckdb_client_context_get_connection_id

返回客户端上下文的连接 ID。

语法
idx_t duckdb_client_context_get_connection_id(
  duckdb_client_context context
);
参数
  • context:客户端上下文。
返回值

客户端上下文的连接 ID。


duckdb_destroy_client_context

销毁客户端上下文并释放其内存。

语法
void duckdb_destroy_client_context(
  duckdb_client_context *context
);
参数
  • context:要销毁的客户端上下文。


duckdb_library_version

返回链接的 DuckDB 的版本,以及开发版本的版本后缀

通常用于开发必须为其返回此值的 C 扩展以进行兼容性检查。

语法
const char *duckdb_library_version(
  
);


duckdb_get_table_names

获取查询的(完全限定的)表名称列表。

语法
duckdb_value duckdb_get_table_names(
  duckdb_connection connection,
  const char *query,
  bool qualified
);
参数
  • connection:从中获取表名称的连接。
  • query:从中获取表名称的查询。
  • qualified:如果设置为 true,则返回完全限定的表名称 (catalog.schema.table),否则仅返回(未转义的)表名称。
返回值

一个类型为 VARCHAR[] 的 duckdb_value,其中包含查询的(完全限定的)表名称。 必须使用 duckdb_destroy_value 销毁。


duckdb_create_config

初始化一个空配置对象,该对象可用于通过 duckdb_open_ext 为 DuckDB 实例提供启动选项。 duckdb_config 必须使用“duckdb_destroy_config”销毁

除非发生 malloc 失败,否则这始终会成功。

请注意,即使函数返回 DuckDBError,也应始终对生成配置调用 duckdb_destroy_config

语法
duckdb_state duckdb_create_config(
  duckdb_config *out_config
);
参数
  • out_config:结果配置对象。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_config_count

这返回可用于 duckdb_get_config_flag 的配置选项总数。

不应在循环中调用此函数,因为它在内部循环所有选项。

返回值

可用的配置选项数量。

语法
size_t duckdb_config_count(
  
);


duckdb_get_config_flag

获取特定配置选项的可读名称和描述。 这可用于例如显示配置选项。 除非 index 超出范围(即,>= duckdb_config_count),否则这将会成功。

结果名称或描述不得释放。

语法
duckdb_state duckdb_get_config_flag(
  size_t index,
  const char **out_name,
  const char **out_description
);
参数
  • index:配置选项的索引(介于 0 和 duckdb_config_count 之间)
  • out_name:配置标志的名称。
  • out_description:配置标志的描述。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_set_config

为指定的配置设置指定的选项。 配置选项由名称指示。 要获取配置选项列表,请参阅 duckdb_get_config_flag

在源代码中,配置选项在 config.cpp 中定义。

如果名称无效或为选项提供的值无效,则这可能会失败。

语法
duckdb_state duckdb_set_config(
  duckdb_config config,
  const char *name,
  const char *option
);
参数
  • config:要在其上设置选项的配置对象。
  • name:要设置的配置标志的名称。
  • option:要将配置标志设置为的值。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_destroy_config

销毁指定的配置对象并释放为该对象分配的所有内存。

语法
void duckdb_destroy_config(
  duckdb_config *config
);
参数
  • config:要销毁的配置对象。


duckdb_query

在连接中执行 SQL 查询并将完整(物化)结果存储在 out_result 指针中。 如果查询执行失败,则返回 DuckDBError,并且可以通过调用 duckdb_result_error 检索错误消息。

请注意,在运行 duckdb_query 后,即使查询失败,也必须对结果对象调用 duckdb_destroy_result,否则结果中存储的错误将无法正确释放。

语法
duckdb_state duckdb_query(
  duckdb_connection connection,
  const char *query,
  duckdb_result *out_result
);
参数
  • connection:要在其中执行查询的连接。
  • query:要运行的 SQL 查询。
  • out_result:查询结果。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_destroy_result

关闭结果并释放为该结果分配的所有内存。

语法
void duckdb_destroy_result(
  duckdb_result *result
);
参数
  • result:要销毁的结果。


duckdb_column_name

返回指定列的列名。 结果应不需要释放;列名将在销毁结果时自动销毁。

如果列超出范围,则返回 NULL

语法
const char *duckdb_column_name(
  duckdb_result *result,
  idx_t col
);
参数
  • result:从中获取列名的结果对象。
  • col:列索引。
返回值

指定列的列名。


duckdb_column_type

返回指定列的列类型。

如果列超出范围,则返回 DUCKDB_TYPE_INVALID

语法
duckdb_type duckdb_column_type(
  duckdb_result *result,
  idx_t col
);
参数
  • result:从中获取列类型的结果对象。
  • col:列索引。
返回值

指定列的列类型。


duckdb_result_statement_type

返回已执行语句的语句类型

语法
duckdb_statement_type duckdb_result_statement_type(
  duckdb_result result
);
参数
  • result:从中获取语句类型的结果对象。
返回值

duckdb_statement_type 值或 DUCKDB_STATEMENT_TYPE_INVALID


duckdb_column_logical_type

返回指定列的逻辑列类型。

此调用的返回类型应使用 duckdb_destroy_logical_type 销毁。

如果列超出范围,则返回 NULL

语法
duckdb_logical_type duckdb_column_logical_type(
  duckdb_result *result,
  idx_t col
);
参数
  • result:从中获取列类型的结果对象。
  • col:列索引。
返回值

指定列的逻辑列类型。


duckdb_column_count

返回结果对象中存在的列数。

语法
idx_t duckdb_column_count(
  duckdb_result *result
);
参数
  • result:结果对象。
返回值

结果对象中存在的列数。


duckdb_row_count

警告:弃用通知。此方法计划在未来版本中移除。

返回结果对象中存在的行数。

语法
idx_t duckdb_row_count(
  duckdb_result *result
);
参数
  • result:结果对象。
返回值

结果对象中存在的行数。


duckdb_rows_changed

返回结果中存储的查询更改的行数。 这仅与 INSERT/UPDATE/DELETE 查询相关。 对于其他查询,rows_changed 将为 0。

语法
idx_t duckdb_rows_changed(
  duckdb_result *result
);
参数
  • result:结果对象。
返回值

更改的行数。


duckdb_column_data

已弃用此方法已弃用。 建议改用 duckdb_result_get_chunk

以列格式返回结果特定列的数据。

该函数返回一个包含结果数据的密集数组。 存储在数组中的确切类型取决于相应的 duckdb_type(由 duckdb_column_type 提供)。 有关应访问数据的确切类型,请参阅类型部分DUCKDB_TYPE 枚举中的注释。

例如,对于 DUCKDB_TYPE_INTEGER 类型的列,可以通过以下方式访问行

int32_t *data = (int32_t *) duckdb_column_data(&result, 0);
printf("Data for row %d: %d\n", row, data[row]);
语法
void *duckdb_column_data(
  duckdb_result *result,
  idx_t col
);
参数
  • result:从中获取列数据的结果对象。
  • col:列索引。
返回值

指定列的列数据。


duckdb_nullmask_data

已弃用此方法已弃用。 建议改用 duckdb_result_get_chunk

以列格式返回结果特定列的 nullmask。 nullmask 指示对于每一行,相应的行是否为 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]);
}
语法
bool *duckdb_nullmask_data(
  duckdb_result *result,
  idx_t col
);
参数
  • result:从中获取 nullmask 的结果对象。
  • col:列索引。
返回值

指定列的 nullmask。


duckdb_result_error

返回结果中包含的错误消息。 仅当 duckdb_query 返回 DuckDBError 时,才会设置该错误。

此函数的结果不得释放。 它将在调用 duckdb_destroy_result 时被清除。

语法
const char *duckdb_result_error(
  duckdb_result *result
);
参数
  • result:从中获取错误的结果对象。
返回值

结果的错误。


duckdb_result_error_type

返回结果中包含的结果错误类型。 仅当 duckdb_query 返回 DuckDBError 时,才会设置该错误。

语法
duckdb_error_type duckdb_result_error_type(
  duckdb_result *result
);
参数
  • result:从中获取错误的结果对象。
返回值

结果的错误类型。


duckdb_result_get_chunk

警告:弃用通知。此方法计划在未来版本中移除。

从 duckdb_result 中获取数据块。 应重复调用此函数,直到结果耗尽。

结果必须使用 duckdb_destroy_data_chunk 销毁。

此函数取代所有 duckdb_value 函数,以及 duckdb_column_dataduckdb_nullmask_data 函数。 它会带来显著更好的性能,应在新代码库中优先使用。

如果使用此函数,则不能使用其他任何结果函数,反之亦然(即,此函数不能与旧结果函数混合使用)。

使用 duckdb_result_chunk_count 来确定结果中有多少块。

语法
duckdb_data_chunk duckdb_result_get_chunk(
  duckdb_result result,
  idx_t chunk_index
);
参数
  • result:从中获取数据块的结果对象。
  • chunk_index:从中获取的块索引。
返回值

生成的数据块。 如果块索引超出范围,则返回 NULL


duckdb_result_is_streaming

警告:弃用通知。此方法计划在未来版本中移除。

检查内部结果的类型是否为 StreamQueryResult。

语法
bool duckdb_result_is_streaming(
  duckdb_result result
);
参数
  • result:要检查的结果对象。
返回值

结果对象是否为 StreamQueryResult 类型


duckdb_result_chunk_count

警告:弃用通知。此方法计划在未来版本中移除。

返回结果中存在的数据块数量。

语法
idx_t duckdb_result_chunk_count(
  duckdb_result result
);
参数
  • result:结果对象
返回值

结果中存在的数据块数量。


duckdb_result_return_type

返回给定结果的 return_type,如果出错,则返回 DUCKDB_RETURN_TYPE_INVALID

语法
duckdb_result_type duckdb_result_return_type(
  duckdb_result result
);
参数
  • result:结果对象
返回值

return_type


duckdb_value_boolean

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的布尔值,如果该值无法转换,则为 false。

语法
bool duckdb_value_boolean(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_int8

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 int8_t 值,如果该值无法转换,则为 0。

语法
int8_t duckdb_value_int8(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_int16

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 int16_t 值,如果该值无法转换,则为 0。

语法
int16_t duckdb_value_int16(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_int32

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 int32_t 值,如果该值无法转换,则为 0。

语法
int32_t duckdb_value_int32(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_int64

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 int64_t 值,如果该值无法转换,则为 0。

语法
int64_t duckdb_value_int64(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_hugeint

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 duckdb_hugeint 值,如果该值无法转换,则为 0。

语法
duckdb_hugeint duckdb_value_hugeint(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_uhugeint

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 duckdb_uhugeint 值,如果该值无法转换,则为 0。

语法
duckdb_uhugeint duckdb_value_uhugeint(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_decimal

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 duckdb_decimal 值,如果该值无法转换,则为 0。

语法
duckdb_decimal duckdb_value_decimal(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_uint8

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 uint8_t 值,如果该值无法转换,则为 0。

语法
uint8_t duckdb_value_uint8(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_uint16

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 uint16_t 值,如果该值无法转换,则为 0。

语法
uint16_t duckdb_value_uint16(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_uint32

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 uint32_t 值,如果该值无法转换,则为 0。

语法
uint32_t duckdb_value_uint32(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_uint64

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 uint64_t 值,如果该值无法转换,则为 0。

语法
uint64_t duckdb_value_uint64(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_float

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 float 值,如果该值无法转换,则为 0。

语法
float duckdb_value_float(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_double

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 double 值,如果该值无法转换,则为 0。

语法
double duckdb_value_double(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_date

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 duckdb_date 值,如果该值无法转换,则为 0。

语法
duckdb_date duckdb_value_date(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_time

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 duckdb_time 值,如果该值无法转换,则为 0。

语法
duckdb_time duckdb_value_time(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_timestamp

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 duckdb_timestamp 值,如果该值无法转换,则为 0。

语法
duckdb_timestamp duckdb_value_timestamp(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_interval

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 duckdb_interval 值,如果该值无法转换,则为 0。

语法
duckdb_interval duckdb_value_interval(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_varchar

已弃用此方法已弃用。 请改用 duckdb_value_string。 如果字符串包含 null 字节,则此函数无法正常工作。

返回值

指定位置的文本值,作为以 null 结尾的字符串,如果该值无法转换,则为 nullptr。 结果必须使用 duckdb_free 释放。

语法
char *duckdb_value_varchar(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_string

警告:弃用通知。此方法计划在未来版本中移除。

不支持嵌套类型和其他复杂类型。 生成的字段“string.data”必须使用 duckdb_free 释放。

返回值

指定位置的字符串值。 尝试将结果值强制转换为字符串。

语法
duckdb_string duckdb_value_string(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_varchar_internal

已弃用此方法已弃用。 请改用 duckdb_value_string_internal。 如果字符串包含 null 字节,则此函数无法正常工作。

返回值

指定位置的 char* 值。 仅适用于 VARCHAR 列,并且不会自动强制转换。 如果该列不是 VARCHAR 列,则此函数将返回 NULL。

结果不得释放。

语法
char *duckdb_value_varchar_internal(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_string_internal

已弃用此方法已弃用。 请改用 duckdb_value_string_internal。 如果字符串包含 null 字节,则此函数无法正常工作。

返回值

指定位置的 char* 值。 仅适用于 VARCHAR 列,并且不会自动强制转换。 如果该列不是 VARCHAR 列,则此函数将返回 NULL。

结果不得释放。

语法
duckdb_string duckdb_value_string_internal(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_blob

警告:弃用通知。此方法计划在未来版本中移除。

返回值

指定位置的 duckdb_blob 值。 如果该值无法转换,则返回 blob.data 设置为 nullptr 的 blob。 生成的字段“blob.data”必须使用 duckdb_free 释放。

语法
duckdb_blob duckdb_value_blob(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_value_is_null

警告:弃用通知。此方法计划在未来版本中移除。

返回值

如果指定索引处的值为 NULL,则返回 true;否则返回 false。

语法
bool duckdb_value_is_null(
  duckdb_result *result,
  idx_t col,
  idx_t row
);


duckdb_malloc

使用 duckdb 内部 malloc 函数分配 size 字节的内存。 以这种方式分配的任何内存都应使用 duckdb_free 释放。

语法
void *duckdb_malloc(
  size_t size
);
参数
  • size:要分配的字节数。
返回值

指向已分配内存区域的指针。


duckdb_free

释放从 duckdb_mallocduckdb_value_varcharduckdb_value_blobduckdb_value_string 返回的值。

语法
void duckdb_free(
  void *ptr
);
参数
  • ptr:要释放分配的内存区域。


duckdb_vector_size

DuckDB 使用的内部向量大小。 这是将放入 duckdb_create_data_chunk 创建的数据块中的元组数。

返回值

向量大小。

语法
idx_t duckdb_vector_size(
  
);


duckdb_string_is_inlined

duckdb_string_t 值是否为内联。 这意味着字符串的数据没有单独的分配。

语法
bool duckdb_string_is_inlined(
  duckdb_string_t string
);


duckdb_string_t_length

获取 string_t 的字符串长度

语法
uint32_t duckdb_string_t_length(
  duckdb_string_t string
);
参数
  • string:要获取长度的字符串。
返回值

长度。


duckdb_string_t_data

获取指向 string_t 的字符串数据的指针

语法
const char *duckdb_string_t_data(
  duckdb_string_t *string
);
参数
  • string:要获取指针的字符串。
返回值

指针。


duckdb_from_date

duckdb_date 对象分解为年、月和日(存储为 duckdb_date_struct)。

语法
duckdb_date_struct duckdb_from_date(
  duckdb_date date
);
参数
  • date:日期对象,从 DUCKDB_TYPE_DATE 列中获得。
返回值

具有分解元素的 duckdb_date_struct


duckdb_to_date

从年、月和日 (duckdb_date_struct) 重新组合 duckdb_date

语法
duckdb_date duckdb_to_date(
  duckdb_date_struct date
);
参数
  • date:以 duckdb_date_struct 存储的年、月和日。
返回值

duckdb_date 元素。


duckdb_is_finite_date

测试 duckdb_date 以查看它是否为有限值。

语法
bool duckdb_is_finite_date(
  duckdb_date date
);
参数
  • date:日期对象,从 DUCKDB_TYPE_DATE 列中获得。
返回值

如果日期是有限的,则为 True;如果它是 ±infinity,则为 false。


duckdb_from_time

duckdb_time 对象分解为小时、分钟、秒和微秒(存储为 duckdb_time_struct)。

语法
duckdb_time_struct duckdb_from_time(
  duckdb_time time
);
参数
  • time:时间对象,从 DUCKDB_TYPE_TIME 列中获得。
返回值

具有分解元素的 duckdb_time_struct


duckdb_create_time_tz

从微秒和时区偏移量创建 duckdb_time_tz 对象。

语法
duckdb_time_tz duckdb_create_time_tz(
  int64_t micros,
  int32_t offset
);
参数
  • micros:时间的微秒部分。
  • offset:时间的时区偏移量部分。
返回值

duckdb_time_tz 元素。


duckdb_from_time_tz

将 TIME_TZ 对象分解为微秒和时区偏移量。

使用 duckdb_from_time 将微秒进一步分解为小时、分钟、秒和微秒。

语法
duckdb_time_tz_struct duckdb_from_time_tz(
  duckdb_time_tz micros
);
参数
  • micros:时间对象,从 DUCKDB_TYPE_TIME_TZ 列中获得。


duckdb_to_time

从小时、分钟、秒和微秒 (duckdb_time_struct) 重新组合 duckdb_time

语法
duckdb_time duckdb_to_time(
  duckdb_time_struct time
);
参数
  • timeduckdb_time_struct 中的小时、分钟、秒和微秒。
返回值

duckdb_time 元素。


duckdb_from_timestamp

duckdb_timestamp 对象分解为 duckdb_timestamp_struct

语法
duckdb_timestamp_struct duckdb_from_timestamp(
  duckdb_timestamp ts
);
参数
  • ts:ts 对象,从 DUCKDB_TYPE_TIMESTAMP 列中获得。
返回值

具有分解元素的 duckdb_timestamp_struct


duckdb_to_timestamp

从 duckdb_timestamp_struct 重新组合 duckdb_timestamp

语法
duckdb_timestamp duckdb_to_timestamp(
  duckdb_timestamp_struct ts
);
参数
  • tsduckdb_timestamp_struct 中的分解元素。
返回值

duckdb_timestamp 元素。


duckdb_is_finite_timestamp

测试 duckdb_timestamp 以查看它是否为有限值。

语法
bool duckdb_is_finite_timestamp(
  duckdb_timestamp ts
);
参数
  • ts:duckdb_timestamp 对象,从 DUCKDB_TYPE_TIMESTAMP 列中获得。
返回值

如果时间戳是有限的,则为 True;如果它是 ±infinity,则为 false。


duckdb_is_finite_timestamp_s

测试 duckdb_timestamp_s 以查看它是否为有限值。

语法
bool duckdb_is_finite_timestamp_s(
  duckdb_timestamp_s ts
);
参数
  • ts:duckdb_timestamp_s 对象,从 DUCKDB_TYPE_TIMESTAMP_S 列中获得。
返回值

如果时间戳是有限的,则为 True;如果它是 ±infinity,则为 false。


duckdb_is_finite_timestamp_ms

测试 duckdb_timestamp_ms 以查看它是否为有限值。

语法
bool duckdb_is_finite_timestamp_ms(
  duckdb_timestamp_ms ts
);
参数
  • ts:duckdb_timestamp_ms 对象,从 DUCKDB_TYPE_TIMESTAMP_MS 列中获得。
返回值

如果时间戳是有限的,则为 True;如果它是 ±infinity,则为 false。


duckdb_is_finite_timestamp_ns

测试 duckdb_timestamp_ns 以查看它是否为有限值。

语法
bool duckdb_is_finite_timestamp_ns(
  duckdb_timestamp_ns ts
);
参数
  • ts:duckdb_timestamp_ns 对象,从 DUCKDB_TYPE_TIMESTAMP_NS 列中获得。
返回值

如果时间戳是有限的,则为 True;如果它是 ±infinity,则为 false。


duckdb_hugeint_to_double

将 duckdb_hugeint 对象(从 DUCKDB_TYPE_HUGEINT 列中获得)转换为 double。

语法
double duckdb_hugeint_to_double(
  duckdb_hugeint val
);
参数
  • val:hugeint 值。
返回值

转换后的 double 元素。


duckdb_double_to_hugeint

将 double 值转换为 duckdb_hugeint 对象。

如果转换失败,因为 double 值太大,则结果将为 0。

语法
duckdb_hugeint duckdb_double_to_hugeint(
  double val
);
参数
  • val:double 值。
返回值

转换后的 duckdb_hugeint 元素。


duckdb_uhugeint_to_double

将 duckdb_uhugeint 对象(从 DUCKDB_TYPE_UHUGEINT 列中获得)转换为 double。

语法
double duckdb_uhugeint_to_double(
  duckdb_uhugeint val
);
参数
  • val:uhugeint 值。
返回值

转换后的 double 元素。


duckdb_double_to_uhugeint

将 double 值转换为 duckdb_uhugeint 对象。

如果转换失败,因为 double 值太大,则结果将为 0。

语法
duckdb_uhugeint duckdb_double_to_uhugeint(
  double val
);
参数
  • val:double 值。
返回值

转换后的 duckdb_uhugeint 元素。


duckdb_double_to_decimal

将 double 值转换为 duckdb_decimal 对象。

如果转换失败,因为 double 值太大,或者宽度/比例无效,则结果将为 0。

语法
duckdb_decimal duckdb_double_to_decimal(
  double val,
  uint8_t width,
  uint8_t scale
);
参数
  • val:double 值。
返回值

转换后的 duckdb_decimal 元素。


duckdb_decimal_to_double

将 duckdb_decimal 对象(从 DUCKDB_TYPE_DECIMAL 列获取)转换为 double。

语法
double duckdb_decimal_to_double(
  duckdb_decimal val
);
参数
  • val: 十进制值。
返回值

转换后的 double 元素。


duckdb_prepare

从查询创建一个预处理语句对象。

请注意,在调用 duckdb_prepare 之后,即使准备失败,也应始终使用 duckdb_destroy_prepare 销毁预处理语句。

如果准备失败,可以调用 duckdb_prepare_error 来获取准备失败的原因。

语法
duckdb_state duckdb_prepare(
  duckdb_connection connection,
  const char *query,
  duckdb_prepared_statement *out_prepared_statement
);
参数
  • connection: 连接对象
  • query: 要准备的 SQL 查询
  • out_prepared_statement: 生成的预处理语句对象
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_destroy_prepare

关闭预处理语句并释放为该语句分配的所有内存。

语法
void duckdb_destroy_prepare(
  duckdb_prepared_statement *prepared_statement
);
参数
  • prepared_statement: 要销毁的预处理语句。


duckdb_prepare_error

返回与给定预处理语句关联的错误消息。如果预处理语句没有错误消息,则返回 nullptr

错误消息不应被释放。它将在调用 duckdb_destroy_prepare 时被释放。

语法
const char *duckdb_prepare_error(
  duckdb_prepared_statement prepared_statement
);
参数
  • prepared_statement: 要从中获取错误的预处理语句。
返回值

错误消息,如果没有则为 nullptr


duckdb_nparams

返回可以提供给给定预处理语句的参数数量。

如果查询未成功准备,则返回 0。

语法
idx_t duckdb_nparams(
  duckdb_prepared_statement prepared_statement
);
参数
  • prepared_statement: 要获取参数数量的预处理语句。


duckdb_parameter_name

返回用于标识参数的名称。返回的字符串应使用 duckdb_free 释放。

如果索引超出提供的预处理语句的范围,则返回 NULL。

语法
const char *duckdb_parameter_name(
  duckdb_prepared_statement prepared_statement,
  idx_t index
);
参数
  • prepared_statement: 要从中获取参数名称的预处理语句。


duckdb_param_type

返回给定索引处参数的参数类型。

如果参数索引超出范围或语句未成功准备,则返回 DUCKDB_TYPE_INVALID

语法
duckdb_type duckdb_param_type(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx
);
参数
  • prepared_statement: 预处理语句。
  • param_idx: 参数索引。
返回值

参数类型


duckdb_param_logical_type

返回给定索引处参数的逻辑类型。

如果参数索引超出范围或语句未成功准备,则返回 nullptr

此调用的返回类型应使用 duckdb_destroy_logical_type 销毁。

语法
duckdb_logical_type duckdb_param_logical_type(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx
);
参数
  • prepared_statement: 预处理语句。
  • param_idx: 参数索引。
返回值

参数的逻辑类型


duckdb_clear_bindings

清除绑定到预处理语句的参数。

语法
duckdb_state duckdb_clear_bindings(
  duckdb_prepared_statement prepared_statement
);


duckdb_prepared_statement_type

返回要执行的语句的语句类型

语法
duckdb_statement_type duckdb_prepared_statement_type(
  duckdb_prepared_statement statement
);
参数
  • statement: 预处理语句。
返回值

duckdb_statement_type 值或 DUCKDB_STATEMENT_TYPE_INVALID


duckdb_bind_value

在指定索引处将值绑定到预处理语句。

语法
duckdb_state duckdb_bind_value(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  duckdb_value val
);


duckdb_bind_parameter_index

检索由名称标识的预处理语句的参数索引

语法
duckdb_state duckdb_bind_parameter_index(
  duckdb_prepared_statement prepared_statement,
  idx_t *param_idx_out,
  const char *name
);


duckdb_bind_boolean

在指定索引处将 bool 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_boolean(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  bool val
);


duckdb_bind_int8

在指定索引处将 int8_t 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_int8(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  int8_t val
);


duckdb_bind_int16

在指定索引处将 int16_t 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_int16(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  int16_t val
);


duckdb_bind_int32

在指定索引处将 int32_t 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_int32(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  int32_t val
);


duckdb_bind_int64

在指定索引处将 int64_t 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_int64(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  int64_t val
);


duckdb_bind_hugeint

在指定索引处将 duckdb_hugeint 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_hugeint(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  duckdb_hugeint val
);


duckdb_bind_uhugeint

在指定索引处将 duckdb_uhugeint 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_uhugeint(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  duckdb_uhugeint val
);


duckdb_bind_decimal

在指定索引处将 duckdb_decimal 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_decimal(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  duckdb_decimal val
);


duckdb_bind_uint8

在指定索引处将 uint8_t 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_uint8(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  uint8_t val
);


duckdb_bind_uint16

在指定索引处将 uint16_t 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_uint16(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  uint16_t val
);


duckdb_bind_uint32

在指定索引处将 uint32_t 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_uint32(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  uint32_t val
);


duckdb_bind_uint64

在指定索引处将 uint64_t 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_uint64(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  uint64_t val
);


duckdb_bind_float

在指定索引处将 float 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_float(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  float val
);


duckdb_bind_double

在指定索引处将 double 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_double(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  double val
);


duckdb_bind_date

在指定索引处将 duckdb_date 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_date(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  duckdb_date val
);


duckdb_bind_time

在指定索引处将 duckdb_time 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_time(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  duckdb_time val
);


duckdb_bind_timestamp

在指定索引处将 duckdb_timestamp 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_timestamp(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  duckdb_timestamp val
);


duckdb_bind_timestamp_tz

在指定索引处将 duckdb_timestamp 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_timestamp_tz(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  duckdb_timestamp val
);


duckdb_bind_interval

在指定索引处将 duckdb_interval 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_interval(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  duckdb_interval val
);


duckdb_bind_varchar

在指定索引处将空终止 varchar 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_varchar(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  const char *val
);


duckdb_bind_varchar_length

在指定索引处将 varchar 值绑定到预处理语句。

语法
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 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_blob(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx,
  const void *data,
  idx_t length
);


duckdb_bind_null

在指定索引处将 NULL 值绑定到预处理语句。

语法
duckdb_state duckdb_bind_null(
  duckdb_prepared_statement prepared_statement,
  idx_t param_idx
);


duckdb_execute_prepared

使用给定的绑定参数执行预处理语句,并返回具体化的查询结果。

对于每个预处理语句,可以多次调用此方法,并且可以在对此函数的调用之间修改参数。

请注意,结果必须使用 duckdb_destroy_result 释放。

语法
duckdb_state duckdb_execute_prepared(
  duckdb_prepared_statement prepared_statement,
  duckdb_result *out_result
);
参数
  • prepared_statement: 要执行的预处理语句。
  • out_result:查询结果。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_execute_prepared_streaming

警告:弃用通知。此方法计划在未来版本中移除。

使用给定的绑定参数执行预处理语句,并返回一个可选的流式查询结果。要确定生成的查询是否实际上是流式的,请使用 duckdb_result_is_streaming

对于每个预处理语句,可以多次调用此方法,并且可以在对此函数的调用之间修改参数。

请注意,结果必须使用 duckdb_destroy_result 释放。

语法
duckdb_state duckdb_execute_prepared_streaming(
  duckdb_prepared_statement prepared_statement,
  duckdb_result *out_result
);
参数
  • prepared_statement: 要执行的预处理语句。
  • out_result:查询结果。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_extract_statements

从查询中提取所有语句。请注意,在调用 duckdb_extract_statements 之后,即使没有提取任何语句,也应始终使用 duckdb_destroy_extracted 销毁提取的语句。

如果提取失败,可以调用 duckdb_extract_statements_error 来获取提取失败的原因。

语法
idx_t duckdb_extract_statements(
  duckdb_connection connection,
  const char *query,
  duckdb_extracted_statements *out_extracted_statements
);
参数
  • connection: 连接对象
  • query: 要提取的 SQL 查询
  • out_extracted_statements: 生成的提取语句对象
返回值

提取的语句数量,如果失败则为 0。


duckdb_prepare_extracted_statement

准备提取的语句。请注意,在调用 duckdb_prepare_extracted_statement 之后,即使准备失败,也应始终使用 duckdb_destroy_prepare 销毁预处理语句。

如果准备失败,可以调用 duckdb_prepare_error 来获取准备失败的原因。

语法
duckdb_state duckdb_prepare_extracted_statement(
  duckdb_connection connection,
  duckdb_extracted_statements extracted_statements,
  idx_t index,
  duckdb_prepared_statement *out_prepared_statement
);
参数
  • connection: 连接对象
  • extracted_statements: 提取的语句对象
  • index: 要准备的提取语句的索引
  • out_prepared_statement: 生成的预处理语句对象
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_extract_statements_error

返回提取的语句中包含的错误消息。此函数的结果不得释放。它将在调用 duckdb_destroy_extracted 时被清理。

语法
const char *duckdb_extract_statements_error(
  duckdb_extracted_statements extracted_statements
);
参数
  • extracted_statements: 要从中获取错误的提取语句。
返回值

提取语句的错误。


duckdb_destroy_extracted

释放为提取的语句分配的所有内存。

语法
void duckdb_destroy_extracted(
  duckdb_extracted_statements *extracted_statements
);
参数
  • extracted_statements: 要销毁的提取语句。


duckdb_pending_prepared

使用给定的绑定参数执行预处理语句,并返回挂起的结果。挂起的结果表示尚未完全执行的查询的中间结构。挂起的结果可用于增量执行查询,并在任务之间将控制权返回给客户端。

请注意,在调用 duckdb_pending_prepared 之后,即使此函数返回 DuckDBError,也应始终使用 duckdb_destroy_pending 销毁挂起的结果。

语法
duckdb_state duckdb_pending_prepared(
  duckdb_prepared_statement prepared_statement,
  duckdb_pending_result *out_result
);
参数
  • prepared_statement: 要执行的预处理语句。
  • out_result: 挂起的查询结果。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_pending_prepared_streaming

警告:弃用通知。此方法计划在未来版本中移除。

使用给定的绑定参数执行预处理语句,并返回挂起的结果。此挂起的结果将在执行时创建一个流式 duckdb_result。挂起的结果表示尚未完全执行的查询的中间结构。

请注意,在调用 duckdb_pending_prepared_streaming 之后,即使此函数返回 DuckDBError,也应始终使用 duckdb_destroy_pending 销毁挂起的结果。

语法
duckdb_state duckdb_pending_prepared_streaming(
  duckdb_prepared_statement prepared_statement,
  duckdb_pending_result *out_result
);
参数
  • prepared_statement: 要执行的预处理语句。
  • out_result: 挂起的查询结果。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_destroy_pending

关闭挂起的结果并释放为结果分配的所有内存。

语法
void duckdb_destroy_pending(
  duckdb_pending_result *pending_result
);
参数
  • pending_result: 要销毁的挂起结果。


duckdb_pending_error

返回挂起的结果中包含的错误消息。

此函数的结果不得释放。它将在调用 duckdb_destroy_pending 时被清理。

语法
const char *duckdb_pending_error(
  duckdb_pending_result pending_result
);
参数
  • pending_result: 要从中获取错误的挂起结果。
返回值

挂起结果的错误。


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 获得。

语法
duckdb_pending_state duckdb_pending_execute_task(
  duckdb_pending_result pending_result
);
参数
  • pending_result: 要在其中执行任务的挂起结果。
返回值

执行后挂起结果的状态。


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 获得。

语法
duckdb_pending_state duckdb_pending_execute_check_state(
  duckdb_pending_result pending_result
);
参数
  • pending_result: 挂起结果。
返回值

挂起结果的状态。


duckdb_execute_pending

完全执行挂起的查询结果,返回最终查询结果。

如果已调用 duckdb_pending_execute_task 直到返回 DUCKDB_PENDING_RESULT_READY,这将快速返回。否则,必须首先执行所有剩余任务。

请注意,结果必须使用 duckdb_destroy_result 释放。

语法
duckdb_state duckdb_execute_pending(
  duckdb_pending_result pending_result,
  duckdb_result *out_result
);
参数
  • pending_result: 要执行的挂起结果。
  • out_result: 结果对象。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_pending_execution_is_finished

返回 duckdb_pending_state 是否已完成执行。例如,如果 pending_state 是 DUCKDB_PENDING_RESULT_READY,则此函数将返回 true。

语法
bool duckdb_pending_execution_is_finished(
  duckdb_pending_state pending_state
);
参数
  • pending_state: 用于确定是否完成执行的挂起状态。
返回值

指示应认为挂起执行已完成的布尔值。


duckdb_destroy_value

销毁值并释放为该类型分配的所有内存。

语法
void duckdb_destroy_value(
  duckdb_value *value
);
参数
  • value: 要销毁的值。


duckdb_create_varchar

从空终止字符串创建一个值

语法
duckdb_value duckdb_create_varchar(
  const char *text
);
参数
  • text: 空终止字符串
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_varchar_length

从字符串创建一个值

语法
duckdb_value duckdb_create_varchar_length(
  const char *text,
  idx_t length
);
参数
  • text: 文本
  • length: 文本的长度
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_bool

从布尔值创建一个值

语法
duckdb_value duckdb_create_bool(
  bool input
);
参数
  • input: 布尔值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_int8

从 int8_t(一个 tinyint)创建一个值

语法
duckdb_value duckdb_create_int8(
  int8_t input
);
参数
  • input: tinyint 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_uint8

从 uint8_t(一个 utinyint)创建一个值

语法
duckdb_value duckdb_create_uint8(
  uint8_t input
);
参数
  • input: utinyint 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_int16

从 int16_t(一个 smallint)创建一个值

语法
duckdb_value duckdb_create_int16(
  int16_t input
);
参数
  • input: smallint 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_uint16

从 uint16_t(一个 usmallint)创建一个值

语法
duckdb_value duckdb_create_uint16(
  uint16_t input
);
参数
  • input: usmallint 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_int32

从 int32_t(一个整数)创建一个值

语法
duckdb_value duckdb_create_int32(
  int32_t input
);
参数
  • input: 整数值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_uint32

从 uint32_t(一个 uinteger)创建一个值

语法
duckdb_value duckdb_create_uint32(
  uint32_t input
);
参数
  • input: uinteger 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_uint64

从 uint64_t(一个 ubigint)创建一个值

语法
duckdb_value duckdb_create_uint64(
  uint64_t input
);
参数
  • input: ubigint 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_int64

从 int64 创建一个值

返回值

该值。必须使用 duckdb_destroy_value 销毁它。

语法
duckdb_value duckdb_create_int64(
  int64_t val
);


duckdb_create_hugeint

从 hugeint 创建一个值

语法
duckdb_value duckdb_create_hugeint(
  duckdb_hugeint input
);
参数
  • input: hugeint 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_uhugeint

从 uhugeint 创建一个值

语法
duckdb_value duckdb_create_uhugeint(
  duckdb_uhugeint input
);
参数
  • input: uhugeint 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_varint

从 duckdb_varint 创建一个 VARINT 值

语法
duckdb_value duckdb_create_varint(
  duckdb_varint input
);
参数
  • input: duckdb_varint 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_decimal

从 duckdb_decimal 创建一个 DECIMAL 值

语法
duckdb_value duckdb_create_decimal(
  duckdb_decimal input
);
参数
  • input: duckdb_decimal 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_float

从 float 创建一个值

语法
duckdb_value duckdb_create_float(
  float input
);
参数
  • input: float 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_double

从 double 创建一个值

语法
duckdb_value duckdb_create_double(
  double input
);
参数
  • input: double 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_date

从日期创建一个值

语法
duckdb_value duckdb_create_date(
  duckdb_date input
);
参数
  • input: 日期值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_time

从时间创建一个值

语法
duckdb_value duckdb_create_time(
  duckdb_time input
);
参数
  • input: 时间值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_time_tz_value

从 time_tz 创建一个值。不要与 duckdb_create_time_tz 混淆,后者创建 duckdb_time_tz_t。

语法
duckdb_value duckdb_create_time_tz_value(
  duckdb_time_tz value
);
参数
  • value: time_tz 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_timestamp

从 duckdb_timestamp 创建一个 TIMESTAMP 值

语法
duckdb_value duckdb_create_timestamp(
  duckdb_timestamp input
);
参数
  • input: duckdb_timestamp 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_timestamp_tz

从 duckdb_timestamp 创建一个 TIMESTAMP_TZ 值

语法
duckdb_value duckdb_create_timestamp_tz(
  duckdb_timestamp input
);
参数
  • input: duckdb_timestamp 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_timestamp_s

从 duckdb_timestamp_s 创建一个 TIMESTAMP_S 值

语法
duckdb_value duckdb_create_timestamp_s(
  duckdb_timestamp_s input
);
参数
  • input: duckdb_timestamp_s 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_timestamp_ms

从 duckdb_timestamp_ms 创建一个 TIMESTAMP_MS 值

语法
duckdb_value duckdb_create_timestamp_ms(
  duckdb_timestamp_ms input
);
参数
  • input: duckdb_timestamp_ms 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_timestamp_ns

从 duckdb_timestamp_ns 创建一个 TIMESTAMP_NS 值

语法
duckdb_value duckdb_create_timestamp_ns(
  duckdb_timestamp_ns input
);
参数
  • input: duckdb_timestamp_ns 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_interval

从 interval 创建一个值

语法
duckdb_value duckdb_create_interval(
  duckdb_interval input
);
参数
  • input: interval 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_blob

从 blob 创建一个值

语法
duckdb_value duckdb_create_blob(
  const uint8_t *data,
  idx_t length
);
参数
  • data: blob 数据
  • length: blob 数据的长度
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_bit

从 duckdb_bit 创建一个 BIT 值

语法
duckdb_value duckdb_create_bit(
  duckdb_bit input
);
参数
  • input: duckdb_bit 值
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_create_uuid

从 uhugeint 创建一个 UUID 值

语法
duckdb_value duckdb_create_uuid(
  duckdb_uhugeint input
);
参数
  • input: 包含 UUID 的 duckdb_uhugeint
返回值

该值。必须使用 duckdb_destroy_value 销毁它。


duckdb_get_bool

返回给定值的布尔值。

语法
bool duckdb_get_bool(
  duckdb_value val
);
参数
  • val: 包含布尔值的 duckdb_value
返回值

一个布尔值,如果该值无法转换,则为 false


duckdb_get_int8

返回给定值的 int8_t 值。

语法
int8_t duckdb_get_int8(
  duckdb_value val
);
参数
  • val: 包含 tinyint 的 duckdb_value
返回值

一个 int8_t,或 MinValue如果该值无法转换


duckdb_get_uint8

返回给定值的 uint8_t 值。

语法
uint8_t duckdb_get_uint8(
  duckdb_value val
);
参数
  • val: 包含 utinyint 的 duckdb_value
返回值

一个 uint8_t,或 MinValue如果该值无法转换


duckdb_get_int16

返回给定值的 int16_t 值。

语法
int16_t duckdb_get_int16(
  duckdb_value val
);
参数
  • val: 包含 smallint 的 duckdb_value
返回值

一个 int16_t,或 MinValue如果该值无法转换


duckdb_get_uint16

返回给定值的 uint16_t 值。

语法
uint16_t duckdb_get_uint16(
  duckdb_value val
);
参数
  • val: 包含 usmallint 的 duckdb_value
返回值

一个 uint16_t,或 MinValue如果该值无法转换


duckdb_get_int32

返回给定值的 int32_t 值。

语法
int32_t duckdb_get_int32(
  duckdb_value val
);
参数
  • val: 包含整数的 duckdb_value
返回值

一个 int32_t,或 MinValue如果该值无法转换


duckdb_get_uint32

返回给定值的 uint32_t 值。

语法
uint32_t duckdb_get_uint32(
  duckdb_value val
);
参数
  • val: 包含 uinteger 的 duckdb_value
返回值

一个 uint32_t,或 MinValue如果该值无法转换


duckdb_get_int64

返回给定值的 int64_t 值。

语法
int64_t duckdb_get_int64(
  duckdb_value val
);
参数
  • val: 包含 bigint 的 duckdb_value
返回值

一个 int64_t,或 MinValue如果该值无法转换


duckdb_get_uint64

返回给定值的 uint64_t 值。

语法
uint64_t duckdb_get_uint64(
  duckdb_value val
);
参数
  • val: 包含 ubigint 的 duckdb_value
返回值

一个 uint64_t,或 MinValue如果该值无法转换


duckdb_get_hugeint

返回给定值的 hugeint 值。

语法
duckdb_hugeint duckdb_get_hugeint(
  duckdb_value val
);
参数
  • val: 包含 hugeint 的 duckdb_value
返回值

一个 duckdb_hugeint,或 MinValue如果该值无法转换


duckdb_get_uhugeint

返回给定值的 uhugeint 值。

语法
duckdb_uhugeint duckdb_get_uhugeint(
  duckdb_value val
);
参数
  • val: 包含 uhugeint 的 duckdb_value
返回值

一个 duckdb_uhugeint,或 MinValue如果该值无法转换


duckdb_get_varint

返回给定值的 duckdb_varint 值。 data 字段必须使用 duckdb_free 销毁。

语法
duckdb_varint duckdb_get_varint(
  duckdb_value val
);
参数
  • val: 包含 VARINT 的 duckdb_value
返回值

一个 duckdb_varint。data 字段必须使用 duckdb_free 销毁。


duckdb_get_decimal

返回给定值的 duckdb_decimal 值。

语法
duckdb_decimal duckdb_get_decimal(
  duckdb_value val
);
参数
  • val: 包含 DECIMAL 的 duckdb_value
返回值

一个 duckdb_decimal,或 MinValue如果该值无法转换


duckdb_get_float

返回给定值的 float 值。

语法
float duckdb_get_float(
  duckdb_value val
);
参数
  • val: 包含 float 的 duckdb_value
返回值

一个 float,如果该值无法转换,则为 NAN


duckdb_get_double

返回给定值的 double 值。

语法
double duckdb_get_double(
  duckdb_value val
);
参数
  • val: 包含 double 的 duckdb_value
返回值

一个 double,如果该值无法转换,则为 NAN


duckdb_get_date

返回给定值的日期值。

语法
duckdb_date duckdb_get_date(
  duckdb_value val
);
参数
  • val: 包含日期的 duckdb_value
返回值

一个 duckdb_date,或 MinValue如果该值无法转换


duckdb_get_time

返回给定值的时间值。

语法
duckdb_time duckdb_get_time(
  duckdb_value val
);
参数
  • val: 包含时间的 duckdb_value
返回值

一个 duckdb_time,或 MinValue


duckdb_get_time_tz

返回给定值的 time_tz 值。

语法
duckdb_time_tz duckdb_get_time_tz(
  duckdb_value val
);
参数
  • val: 包含 time_tz 的 duckdb_value
返回值

一个 duckdb_time_tz,或 MinValue如果该值无法转换


duckdb_get_timestamp

返回给定值的 TIMESTAMP 值。

语法
duckdb_timestamp duckdb_get_timestamp(
  duckdb_value val
);
参数
  • val: 包含 TIMESTAMP 的 duckdb_value
返回值

一个 duckdb_timestamp,或 MinValue如果该值无法转换


duckdb_get_timestamp_tz

返回给定值的 TIMESTAMP_TZ 值。

语法
duckdb_timestamp duckdb_get_timestamp_tz(
  duckdb_value val
);
参数
  • val: 包含 TIMESTAMP_TZ 的 duckdb_value
返回值

一个 duckdb_timestamp,或 MinValue如果该值无法转换


duckdb_get_timestamp_s

返回给定值的 duckdb_timestamp_s 值。

语法
duckdb_timestamp_s duckdb_get_timestamp_s(
  duckdb_value val
);
参数
  • val: 包含 TIMESTAMP_S 的 duckdb_value
返回值

一个 duckdb_timestamp_s,或 MinValue如果该值无法转换


duckdb_get_timestamp_ms

返回给定值的 duckdb_timestamp_ms 值。

语法
duckdb_timestamp_ms duckdb_get_timestamp_ms(
  duckdb_value val
);
参数
  • val: 包含 TIMESTAMP_MS 的 duckdb_value
返回值

一个 duckdb_timestamp_ms,或 MinValue如果该值无法转换


duckdb_get_timestamp_ns

返回给定值的 duckdb_timestamp_ns 值。

语法
duckdb_timestamp_ns duckdb_get_timestamp_ns(
  duckdb_value val
);
参数
  • val: 包含 TIMESTAMP_NS 的 duckdb_value
返回值

一个 duckdb_timestamp_ns,或 MinValue如果该值无法转换


duckdb_get_interval

返回给定值的 interval 值。

语法
duckdb_interval duckdb_get_interval(
  duckdb_value val
);
参数
  • val: 包含 interval 的 duckdb_value
返回值

一个 duckdb_interval,或 MinValue如果该值无法转换


duckdb_get_value_type

返回给定值的类型。只要值未被销毁,该类型就有效。类型本身不得被销毁。

语法
duckdb_logical_type duckdb_get_value_type(
  duckdb_value val
);
参数
  • val: 一个 duckdb_value
返回值

一个 duckdb_logical_type。


duckdb_get_blob

返回给定值的 blob 值。

语法
duckdb_blob duckdb_get_blob(
  duckdb_value val
);
参数
  • val: 包含 blob 的 duckdb_value
返回值

一个 duckdb_blob


duckdb_get_bit

返回给定值的 duckdb_bit 值。data 字段必须使用 duckdb_free 销毁。

语法
duckdb_bit duckdb_get_bit(
  duckdb_value val
);
参数
  • val: 包含 BIT 的 duckdb_value
返回值

一个 duckdb_bit


duckdb_get_uuid

返回一个 duckdb_uhugeint,表示给定值的 UUID 值。

语法
duckdb_uhugeint duckdb_get_uuid(
  duckdb_value val
);
参数
  • val: 包含 UUID 的 duckdb_value
返回值

一个 duckdb_uhugeint,表示 UUID 值


duckdb_get_varchar

获取给定值的字符串表示形式。结果必须使用 duckdb_free 销毁。

语法
char *duckdb_get_varchar(
  duckdb_value value
);
参数
  • value: 值
返回值

字符串值。必须使用 duckdb_free 销毁它。


duckdb_create_struct_value

从类型和值数组创建一个 struct 值。必须使用 duckdb_destroy_value 销毁。

语法
duckdb_value duckdb_create_struct_value(
  duckdb_logical_type type,
  duckdb_value *values
);
参数
  • type: struct 的类型
  • values: struct 字段的值
返回值

struct 值,如果任何子类型是 DUCKDB_TYPE_ANYDUCKDB_TYPE_INVALID,则为 nullptr。


duckdb_create_list_value

从子(元素)类型和长度为 value_count 的值数组创建一个 list 值。必须使用 duckdb_destroy_value 销毁。

语法
duckdb_value duckdb_create_list_value(
  duckdb_logical_type type,
  duckdb_value *values,
  idx_t value_count
);
参数
  • type: list 的类型
  • values: list 的值
  • value_count: list 中的值数量
返回值

list 值,如果子类型是 DUCKDB_TYPE_ANYDUCKDB_TYPE_INVALID,则为 nullptr。


duckdb_create_array_value

从子(元素)类型和长度为 value_count 的值数组创建一个 array 值。必须使用 duckdb_destroy_value 销毁。

语法
duckdb_value duckdb_create_array_value(
  duckdb_logical_type type,
  duckdb_value *values,
  idx_t value_count
);
参数
  • type: array 的类型
  • values: array 的值
  • value_count: array 中的值数量
返回值

array 值,如果子类型是 DUCKDB_TYPE_ANYDUCKDB_TYPE_INVALID,则为 nullptr。


duckdb_create_map_value

从 map 类型和两个数组创建一个 map 值,一个用于键,一个用于值,每个数组的长度为 entry_count。必须使用 duckdb_destroy_value 销毁。

语法
duckdb_value duckdb_create_map_value(
  duckdb_logical_type map_type,
  duckdb_value *keys,
  duckdb_value *values,
  idx_t entry_count
);
参数
  • map_type: map 类型
  • keys: map 的键
  • values: map 的值
  • entry_count: map 中的条目(键值对)数量
返回值

map 值,如果参数无效,则为 nullptr。


duckdb_create_union_value

从 union 类型、标签索引和一个值创建一个 union 值。必须使用 duckdb_destroy_value 销毁。

语法
duckdb_value duckdb_create_union_value(
  duckdb_logical_type union_type,
  idx_t tag_index,
  duckdb_value value
);
参数
  • union_type: union 类型
  • tag_index: union 的标签索引
  • value: union 的值
返回值

union 值,如果参数无效,则为 nullptr。


duckdb_get_map_size

返回 MAP 值中的元素数量。

语法
idx_t duckdb_get_map_size(
  duckdb_value value
);
参数
  • value: MAP 值。
返回值

map 中的元素数量。


duckdb_get_map_key

返回索引处的 MAP 键作为 duckdb_value。

语法
duckdb_value duckdb_get_map_key(
  duckdb_value value,
  idx_t index
);
参数
  • value: MAP 值。
  • index: 键的索引。
返回值

作为 duckdb_value 的键。


duckdb_get_map_value

返回索引处的 MAP 值作为 duckdb_value。

语法
duckdb_value duckdb_get_map_value(
  duckdb_value value,
  idx_t index
);
参数
  • value: MAP 值。
  • index: 值的索引。
返回值

作为 duckdb_value 的值。


duckdb_is_null_value

返回值的类型是否为 SQLNULL。

语法
bool duckdb_is_null_value(
  duckdb_value value
);
参数
  • value: 要检查的值。
返回值

True,如果值的类型是 SQLNULL,否则为 false。


duckdb_create_null_value

创建 SQLNULL 类型的值。

返回值

表示 SQLNULL 的 duckdb_value。必须使用 duckdb_destroy_value 销毁它。

语法
duckdb_value duckdb_create_null_value(
  
);


duckdb_get_list_size

返回 LIST 值中的元素数量。

语法
idx_t duckdb_get_list_size(
  duckdb_value value
);
参数
  • value: LIST 值。
返回值

list 中的元素数量。


duckdb_get_list_child

返回索引处的 LIST 子项作为 duckdb_value。

语法
duckdb_value duckdb_get_list_child(
  duckdb_value value,
  idx_t index
);
参数
  • value: LIST 值。
  • index: 子项的索引。
返回值

作为 duckdb_value 的子项。


duckdb_create_enum_value

从类型和一个值创建一个 enum 值。必须使用 duckdb_destroy_value 销毁。

语法
duckdb_value duckdb_create_enum_value(
  duckdb_logical_type type,
  uint64_t value
);
参数
  • type: enum 的类型
  • value: enum 的值
返回值

enum 值,或 nullptr。


duckdb_get_enum_value

返回给定值的 enum 值。

语法
uint64_t duckdb_get_enum_value(
  duckdb_value value
);
参数
  • value: 包含 enum 的 duckdb_value
返回值

一个 uint64_t,或 MinValue如果该值无法转换


duckdb_get_struct_child

返回索引处的 STRUCT 子项作为 duckdb_value。

语法
duckdb_value duckdb_get_struct_child(
  duckdb_value value,
  idx_t index
);
参数
  • value: STRUCT 值。
  • index: 子项的索引。
返回值

作为 duckdb_value 的子项。


duckdb_value_to_string

返回给定值的 SQL 字符串表示形式。

语法
char *duckdb_value_to_string(
  duckdb_value value
);
参数
  • value: 一个 duckdb_value。
返回值

作为空终止字符串的 SQL 字符串表示形式。结果必须使用 duckdb_free 释放。


duckdb_create_logical_type

从原始类型创建 duckdb_logical_type。生成的逻辑类型必须使用 duckdb_destroy_logical_type 销毁。

如果类型是:DUCKDB_TYPE_INVALIDDUCKDB_TYPE_DECIMALDUCKDB_TYPE_ENUMDUCKDB_TYPE_LISTDUCKDB_TYPE_STRUCTDUCKDB_TYPE_MAPDUCKDB_TYPE_ARRAYDUCKDB_TYPE_UNION,则返回无效的逻辑类型。

语法
duckdb_logical_type duckdb_create_logical_type(
  duckdb_type type
);
参数
  • type: 要创建的原始类型。
返回值

逻辑类型。


duckdb_logical_type_get_alias

返回 duckdb_logical_type 的别名(如果已设置),否则返回 nullptr。结果必须使用 duckdb_free 销毁。

语法
char *duckdb_logical_type_get_alias(
  duckdb_logical_type type
);
参数
  • type: 逻辑类型
返回值

别名或 nullptr


duckdb_logical_type_set_alias

设置 duckdb_logical_type 的别名。

语法
void duckdb_logical_type_set_alias(
  duckdb_logical_type type,
  const char *alias
);
参数
  • type: 逻辑类型
  • alias: 要设置的别名


duckdb_create_list_type

从其子类型创建一个 LIST 类型。返回类型必须使用 duckdb_destroy_logical_type 销毁。

语法
duckdb_logical_type duckdb_create_list_type(
  duckdb_logical_type type
);
参数
  • type: list 的子类型
返回值

逻辑类型。


duckdb_create_array_type

从其子类型创建一个 ARRAY 类型。返回类型必须使用 duckdb_destroy_logical_type 销毁。

语法
duckdb_logical_type duckdb_create_array_type(
  duckdb_logical_type type,
  idx_t array_size
);
参数
  • type: array 的子类型。
  • array_size: array 中的元素数量。
返回值

逻辑类型。


duckdb_create_map_type

从其键类型和值类型创建一个 MAP 类型。返回类型必须使用 duckdb_destroy_logical_type 销毁。

语法
duckdb_logical_type duckdb_create_map_type(
  duckdb_logical_type key_type,
  duckdb_logical_type value_type
);
参数
  • key_type: map 的键类型。
  • value_type: map 的值类型。
返回值

逻辑类型。


duckdb_create_union_type

从传递的数组创建一个 UNION 类型。返回类型必须使用 duckdb_destroy_logical_type 销毁。

语法
duckdb_logical_type duckdb_create_union_type(
  duckdb_logical_type *member_types,
  const char **member_names,
  idx_t member_count
);
参数
  • member_types: union 成员类型的数组。
  • member_names:联合体成员的名称。
  • member_count:联合体成员的数量。
返回值

逻辑类型。


duckdb_create_struct_type

基于成员类型和名称创建一个 STRUCT 类型。生成的类型必须使用 duckdb_destroy_logical_type 销毁。

语法
duckdb_logical_type duckdb_create_struct_type(
  duckdb_logical_type *member_types,
  const char **member_names,
  idx_t member_count
);
参数
  • member_types:结构体成员的类型数组。
  • member_names:结构体成员的名称数组。
  • member_count:结构体的成员数量。
返回值

逻辑类型。


duckdb_create_enum_type

从传递的成员名称数组创建一个 ENUM 类型。生成的类型应使用 duckdb_destroy_logical_type 销毁。

语法
duckdb_logical_type duckdb_create_enum_type(
  const char **member_names,
  idx_t member_count
);
参数
  • member_names:枚举应包含的名称数组。
  • member_count:数组中指定的元素数量。
返回值

逻辑类型。


duckdb_create_decimal_type

创建一个具有指定宽度和小数的 DECIMAL 类型。生成的类型应使用 duckdb_destroy_logical_type 销毁。

语法
duckdb_logical_type duckdb_create_decimal_type(
  uint8_t width,
  uint8_t scale
);
参数
  • width:decimal 类型的宽度
  • scale:decimal 类型的小数位数
返回值

逻辑类型。


duckdb_get_type_id

检索 duckdb_logical_type 的枚举 duckdb_type

语法
duckdb_type duckdb_get_type_id(
  duckdb_logical_type type
);
参数
  • type:逻辑类型。
返回值

duckdb_type id。


duckdb_decimal_width

检索 decimal 类型的宽度。

语法
uint8_t duckdb_decimal_width(
  duckdb_logical_type type
);
参数
  • type:逻辑类型对象
返回值

decimal 类型的宽度


duckdb_decimal_scale

检索 decimal 类型的小数位数。

语法
uint8_t duckdb_decimal_scale(
  duckdb_logical_type type
);
参数
  • type:逻辑类型对象
返回值

decimal 类型的小数位数


duckdb_decimal_internal_type

检索 decimal 类型的内部存储类型。

语法
duckdb_type duckdb_decimal_internal_type(
  duckdb_logical_type type
);
参数
  • type:逻辑类型对象
返回值

decimal 类型的内部类型


duckdb_enum_internal_type

检索 enum 类型的内部存储类型。

语法
duckdb_type duckdb_enum_internal_type(
  duckdb_logical_type type
);
参数
  • type:逻辑类型对象
返回值

enum 类型的内部类型


duckdb_enum_dictionary_size

检索 enum 类型的字典大小。

语法
uint32_t duckdb_enum_dictionary_size(
  duckdb_logical_type type
);
参数
  • type:逻辑类型对象
返回值

enum 类型的字典大小


duckdb_enum_dictionary_value

从 enum 检索指定位置的字典值。

结果必须使用 duckdb_free 释放。

语法
char *duckdb_enum_dictionary_value(
  duckdb_logical_type type,
  idx_t index
);
参数
  • type:逻辑类型对象
  • index:字典中的索引
返回值

enum 类型的字符串值。必须使用 duckdb_free 释放。


duckdb_list_type_child_type

检索给定 LIST 类型的子类型。也接受 MAP 类型。结果必须使用 duckdb_destroy_logical_type 释放。

语法
duckdb_logical_type duckdb_list_type_child_type(
  duckdb_logical_type type
);
参数
  • type:逻辑类型,可以是 LIST 或 MAP。
返回值

LIST 或 MAP 类型的子类型。


duckdb_array_type_child_type

检索给定 ARRAY 类型的子类型。

结果必须使用 duckdb_destroy_logical_type 释放。

语法
duckdb_logical_type duckdb_array_type_child_type(
  duckdb_logical_type type
);
参数
  • type:逻辑类型。必须是 ARRAY。
返回值

ARRAY 类型的子类型。


duckdb_array_type_array_size

检索给定 array 类型的数组大小。

语法
idx_t duckdb_array_type_array_size(
  duckdb_logical_type type
);
参数
  • type:逻辑类型对象
返回值

此数组类型的值可以存储的固定元素数量。


duckdb_map_type_key_type

检索给定 map 类型的键类型。

结果必须使用 duckdb_destroy_logical_type 释放。

语法
duckdb_logical_type duckdb_map_type_key_type(
  duckdb_logical_type type
);
参数
  • type:逻辑类型对象
返回值

map 类型的键类型。必须使用 duckdb_destroy_logical_type 销毁。


duckdb_map_type_value_type

检索给定 map 类型的值类型。

结果必须使用 duckdb_destroy_logical_type 释放。

语法
duckdb_logical_type duckdb_map_type_value_type(
  duckdb_logical_type type
);
参数
  • type:逻辑类型对象
返回值

map 类型的值类型。必须使用 duckdb_destroy_logical_type 销毁。


duckdb_struct_type_child_count

返回 struct 类型的子节点数量。

语法
idx_t duckdb_struct_type_child_count(
  duckdb_logical_type type
);
参数
  • type:逻辑类型对象
返回值

struct 类型的子节点数量。


duckdb_struct_type_child_name

检索 struct 子节点的名称。

结果必须使用 duckdb_free 释放。

语法
char *duckdb_struct_type_child_name(
  duckdb_logical_type type,
  idx_t index
);
参数
  • type:逻辑类型对象
  • index:子索引
返回值

struct 类型的名称。必须使用 duckdb_free 释放。


duckdb_struct_type_child_type

检索指定索引处给定 struct 类型的子类型。

结果必须使用 duckdb_destroy_logical_type 释放。

语法
duckdb_logical_type duckdb_struct_type_child_type(
  duckdb_logical_type type,
  idx_t index
);
参数
  • type:逻辑类型对象
  • index:子索引
返回值

struct 类型的子类型。必须使用 duckdb_destroy_logical_type 销毁。


duckdb_union_type_member_count

返回联合类型具有的成员数量。

语法
idx_t duckdb_union_type_member_count(
  duckdb_logical_type type
);
参数
  • type:逻辑类型(联合)对象
返回值

联合类型的成员数量。


duckdb_union_type_member_name

检索联合体成员的名称。

结果必须使用 duckdb_free 释放。

语法
char *duckdb_union_type_member_name(
  duckdb_logical_type type,
  idx_t index
);
参数
  • type:逻辑类型对象
  • index:子索引
返回值

联合体成员的名称。必须使用 duckdb_free 释放。


duckdb_union_type_member_type

检索指定索引处给定联合体成员的子类型。

结果必须使用 duckdb_destroy_logical_type 释放。

语法
duckdb_logical_type duckdb_union_type_member_type(
  duckdb_logical_type type,
  idx_t index
);
参数
  • type:逻辑类型对象
  • index:子索引
返回值

联合体成员的子类型。必须使用 duckdb_destroy_logical_type 销毁。


duckdb_destroy_logical_type

销毁逻辑类型并释放为该类型分配的所有内存。

语法
void duckdb_destroy_logical_type(
  duckdb_logical_type *type
);
参数
  • type:要销毁的逻辑类型。


duckdb_register_logical_type

在给定的连接中注册自定义类型。该类型必须具有别名

语法
duckdb_state duckdb_register_logical_type(
  duckdb_connection con,
  duckdb_logical_type type,
  duckdb_create_type_info info
);
参数
  • con:要使用的连接
  • type:要注册的自定义类型
返回值

注册是否成功。


duckdb_create_data_chunk

创建具有指定列类型的空数据块。结果必须使用 duckdb_destroy_data_chunk 销毁。

语法
duckdb_data_chunk duckdb_create_data_chunk(
  duckdb_logical_type *types,
  idx_t column_count
);
参数
  • types:列类型的数组。列类型不能包含 ANY 和 INVALID 类型。
  • column_count:列数。
返回值

数据块。


duckdb_destroy_data_chunk

销毁数据块并释放为该块分配的所有内存。

语法
void duckdb_destroy_data_chunk(
  duckdb_data_chunk *chunk
);
参数
  • chunk:要销毁的数据块。


duckdb_data_chunk_reset

重置数据块,清除有效性掩码并将数据块的基数设置为 0。调用此方法后,必须调用 duckdb_vector_get_validityduckdb_vector_get_data 以获取当前数据和有效性指针

语法
void duckdb_data_chunk_reset(
  duckdb_data_chunk chunk
);
参数
  • chunk:要重置的数据块。


duckdb_data_chunk_get_column_count

检索数据块中的列数。

语法
idx_t duckdb_data_chunk_get_column_count(
  duckdb_data_chunk chunk
);
参数
  • chunk:从中获取数据的数据块
返回值

数据块中的列数


duckdb_data_chunk_get_vector

检索数据块中指定列索引处的向量。

指向向量的指针在块存在期间有效。它不需要被销毁。

语法
duckdb_vector duckdb_data_chunk_get_vector(
  duckdb_data_chunk chunk,
  idx_t col_idx
);
参数
  • chunk:从中获取数据的数据块
返回值

向量


duckdb_data_chunk_get_size

检索数据块中当前的元组数量。

语法
idx_t duckdb_data_chunk_get_size(
  duckdb_data_chunk chunk
);
参数
  • chunk:从中获取数据的数据块
返回值

数据块中的元组数量


duckdb_data_chunk_set_size

设置数据块中当前的元组数量。

语法
void duckdb_data_chunk_set_size(
  duckdb_data_chunk chunk,
  idx_t size
);
参数
  • chunk:要在其中设置大小的数据块
  • size:数据块中的元组数量


duckdb_create_vector

创建一个扁平向量。

语法
duckdb_vector duckdb_create_vector(
  duckdb_logical_type type,
  idx_t capacity
);


duckdb_destroy_vector

销毁向量并释放为该向量分配的所有内存(如果在其他地方未使用)。

语法
void duckdb_destroy_vector(
  duckdb_vector *vector
);


duckdb_vector_get_column_type

检索指定向量的列类型。

结果必须使用 duckdb_destroy_logical_type 销毁。

语法
duckdb_logical_type duckdb_vector_get_column_type(
  duckdb_vector vector
);
参数
  • vector:从中获取数据的向量
返回值

向量的类型


duckdb_vector_get_data

检索向量的数据指针。

数据指针可用于从向量读取或写入值。如何读取或写入值取决于向量的类型。

语法
void *duckdb_vector_get_data(
  duckdb_vector vector
);
参数
  • vector:从中获取数据的向量
返回值

数据指针


duckdb_vector_get_validity

检索指定向量的有效性掩码指针。

如果所有值都有效,则此函数 * 可能 * 返回 NULL!

有效性掩码是一个位集,表示数据块中的 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 函数。

语法
uint64_t *duckdb_vector_get_validity(
  duckdb_vector vector
);
参数
  • vector:从中获取数据的向量
返回值

指向有效性掩码的指针,如果没有有效性掩码,则为 NULL


duckdb_vector_ensure_validity_writable

通过分配有效性掩码来确保其可写。

调用此函数后,duckdb_vector_get_validity 将 * 始终 * 返回非 NULL。这允许将 NULL 值写入向量,无论之前是否存在有效性掩码。

语法
void duckdb_vector_ensure_validity_writable(
  duckdb_vector vector
);
参数
  • vector:要更改的向量


duckdb_vector_assign_string_element

在指定位置将字符串元素分配给向量。

语法
void duckdb_vector_assign_string_element(
  duckdb_vector vector,
  idx_t index,
  const char *str
);
参数
  • vector:要更改的向量
  • index:向量中要将字符串分配到的行位置
  • str:以 null 结尾的字符串


duckdb_vector_assign_string_element_len

在指定位置将字符串元素分配给向量。您也可以使用此函数来分配 BLOB。

语法
void duckdb_vector_assign_string_element_len(
  duckdb_vector vector,
  idx_t index,
  const char *str,
  idx_t str_len
);
参数
  • vector:要更改的向量
  • index:向量中要将字符串分配到的行位置
  • str:字符串
  • str_len:字符串的长度(以字节为单位)


duckdb_list_vector_get_child

检索列表向量的子向量。

只要父向量有效,生成的向量就有效。

语法
duckdb_vector duckdb_list_vector_get_child(
  duckdb_vector vector
);
参数
  • vector:向量
返回值

子向量


duckdb_list_vector_get_size

返回列表的子向量的大小。

语法
idx_t duckdb_list_vector_get_size(
  duckdb_vector vector
);
参数
  • vector:向量
返回值

子列表的大小


duckdb_list_vector_set_size

设置列表向量的底层子向量的总大小。

语法
duckdb_state duckdb_list_vector_set_size(
  duckdb_vector vector,
  idx_t size
);
参数
  • vector:列表向量。
  • size:子列表的大小。
返回值

duckdb 状态。如果向量为 nullptr,则返回 DuckDBError。


duckdb_list_vector_reserve

设置列表的底层子向量的总容量。

调用此方法后,必须调用 duckdb_vector_get_validityduckdb_vector_get_data 以获取当前数据和有效性指针

语法
duckdb_state duckdb_list_vector_reserve(
  duckdb_vector vector,
  idx_t required_capacity
);
参数
  • vector:列表向量。
  • required_capacity:要保留的总容量。
返回值

duckdb 状态。如果向量为 nullptr,则返回 DuckDBError。


duckdb_struct_vector_get_child

检索 struct 向量的子向量。

只要父向量有效,生成的向量就有效。

语法
duckdb_vector duckdb_struct_vector_get_child(
  duckdb_vector vector,
  idx_t index
);
参数
  • vector:向量
  • index:子索引
返回值

子向量


duckdb_array_vector_get_child

检索 array 向量的子向量。

只要父向量有效,生成的向量就有效。生成的向量的大小是父向量乘以数组大小。

语法
duckdb_vector duckdb_array_vector_get_child(
  duckdb_vector vector
);
参数
  • vector:向量
返回值

子向量


duckdb_slice_vector

使用选择向量切片向量。

选择向量中的最大值必须小于向量的长度

生成的向量恰好是一个字典向量。

语法
void duckdb_slice_vector(
  duckdb_vector vector,
  duckdb_selection_vector selection,
  idx_t len
);
参数
  • vector:要成为字典的向量
  • selection:选择向量
  • len:选择向量的长度


duckdb_vector_reference_value

将值从 value 复制到 vector

语法
void duckdb_vector_reference_value(
  duckdb_vector vector,
  duckdb_value value
);


duckdb_vector_reference_vector

to 向量中引用 from 向量,这会使向量共享值缓冲区的拥有权

语法
void duckdb_vector_reference_vector(
  duckdb_vector to_vector,
  duckdb_vector from_vector
);


duckdb_validity_row_is_valid

返回给定有效性掩码中的行是否有效(即,非 NULL)。

语法
bool duckdb_validity_row_is_valid(
  uint64_t *validity,
  idx_t row
);
参数
  • validity:有效性掩码,通过 duckdb_vector_get_validity 获得
  • row:行索引
返回值

如果行有效,则为 true;否则为 false


duckdb_validity_set_row_validity

在有效性掩码中,将特定行设置为有效或无效。

请注意,在调用 duckdb_vector_get_validity 之前应调用 duckdb_vector_ensure_validity_writable,以确保存在可写入的有效性掩码。

语法
void duckdb_validity_set_row_validity(
  uint64_t *validity,
  idx_t row,
  bool valid
);
参数
  • validity:有效性掩码,通过 duckdb_vector_get_validity 获得。
  • row:行索引
  • valid:是否将行设置为有效或无效


duckdb_validity_set_row_invalid

在有效性掩码中,将特定行设置为无效。

等效于将 valid 设置为 false 的 duckdb_validity_set_row_validity

语法
void duckdb_validity_set_row_invalid(
  uint64_t *validity,
  idx_t row
);
参数
  • validity:有效性掩码
  • row:行索引


duckdb_validity_set_row_valid

在有效性掩码中,将特定行设置为有效。

等效于将 valid 设置为 true 的 duckdb_validity_set_row_validity

语法
void duckdb_validity_set_row_valid(
  uint64_t *validity,
  idx_t row
);
参数
  • validity:有效性掩码
  • row:行索引


duckdb_create_scalar_function

创建一个新的空标量函数。

返回值必须使用 duckdb_destroy_scalar_function 销毁。

返回值

标量函数对象。

语法
duckdb_scalar_function duckdb_create_scalar_function(
  
);


duckdb_destroy_scalar_function

销毁给定的标量函数对象。

语法
void duckdb_destroy_scalar_function(
  duckdb_scalar_function *scalar_function
);
参数
  • scalar_function:要销毁的标量函数


duckdb_scalar_function_set_name

设置给定标量函数的名称。

语法
void duckdb_scalar_function_set_name(
  duckdb_scalar_function scalar_function,
  const char *name
);
参数
  • scalar_function:标量函数
  • name:标量函数的名称


duckdb_scalar_function_set_varargs

将给定标量函数的参数设置为 varargs。不需要使用 duckdb_scalar_function_add_parameter 添加参数。

语法
void duckdb_scalar_function_set_varargs(
  duckdb_scalar_function scalar_function,
  duckdb_logical_type type
);
参数
  • scalar_function:标量函数。
  • type:参数的类型。
返回值

参数类型。不能包含 INVALID。


duckdb_scalar_function_set_special_handling

将标量函数的 null 处理行为设置为 special。

语法
void duckdb_scalar_function_set_special_handling(
  duckdb_scalar_function scalar_function
);
参数
  • scalar_function:标量函数。


duckdb_scalar_function_set_volatile

将标量函数的功能稳定性设置为 VOLATILE,表示应为每一行重新运行该函数。这限制了可以为该函数执行的优化。

语法
void duckdb_scalar_function_set_volatile(
  duckdb_scalar_function scalar_function
);
参数
  • scalar_function:标量函数。


duckdb_scalar_function_add_parameter

向标量函数添加参数。

语法
void duckdb_scalar_function_add_parameter(
  duckdb_scalar_function scalar_function,
  duckdb_logical_type type
);
参数
  • scalar_function:标量函数。
  • type:参数类型。不能包含 INVALID。


duckdb_scalar_function_set_return_type

设置标量函数的返回类型。

语法
void duckdb_scalar_function_set_return_type(
  duckdb_scalar_function scalar_function,
  duckdb_logical_type type
);
参数
  • scalar_function:标量函数
  • type:不能包含 INVALID 或 ANY。


duckdb_scalar_function_set_extra_info

将额外信息分配给标量函数,可以在绑定等期间获取。

语法
void duckdb_scalar_function_set_extra_info(
  duckdb_scalar_function scalar_function,
  void *extra_info,
  duckdb_delete_callback_t destroy
);
参数
  • scalar_function:标量函数
  • extra_info:额外信息
  • destroy:将调用以销毁额外信息的回调(如果有)


duckdb_scalar_function_set_bind

设置标量函数的(可选)绑定函数。

语法
void duckdb_scalar_function_set_bind(
  duckdb_scalar_function scalar_function,
  duckdb_scalar_function_bind_t bind
);
参数
  • scalar_function:标量函数
  • bind:绑定函数


duckdb_scalar_function_set_bind_data

在标量函数的绑定对象中设置用户提供的绑定数据。可以在执行期间再次检索此对象。

语法
void duckdb_scalar_function_set_bind_data(
  duckdb_bind_info info,
  void *bind_data,
  duckdb_delete_callback_t destroy
);
参数
  • info:标量函数的绑定信息。
  • bind_data:绑定数据对象。
  • destroy:销毁绑定数据的回调(如果有)。


duckdb_scalar_function_bind_set_error

报告在对标量函数调用 bind 时发生了错误。

语法
void duckdb_scalar_function_bind_set_error(
  duckdb_bind_info info,
  const char *error
);
参数
  • info:绑定信息对象
  • error:错误消息


duckdb_scalar_function_set_function

设置标量函数的主函数。

语法
void duckdb_scalar_function_set_function(
  duckdb_scalar_function scalar_function,
  duckdb_scalar_function_t function
);
参数
  • scalar_function:标量函数
  • function:函数


duckdb_register_scalar_function

在给定连接中注册标量函数对象。

该函数至少需要一个名称、一个函数和一个返回类型。

如果函数不完整或已存在具有此名称的函数,则返回 DuckDBError。

语法
duckdb_state duckdb_register_scalar_function(
  duckdb_connection con,
  duckdb_scalar_function scalar_function
);
参数
  • con:要在其中注册的连接。
  • scalar_function:函数指针
返回值

注册是否成功。


duckdb_scalar_function_get_extra_info

检索函数在 duckdb_scalar_function_set_extra_info 中设置的额外信息。

语法
void *duckdb_scalar_function_get_extra_info(
  duckdb_function_info info
);
参数
  • info:信息对象。
返回值

额外信息。


duckdb_scalar_function_get_bind_data

获取 duckdb_scalar_function_set_bind_data 设置的标量函数的绑定数据。

请注意,绑定数据是只读的。

语法
void *duckdb_scalar_function_get_bind_data(
  duckdb_function_info info
);
参数
  • info:函数信息。
返回值

绑定数据对象。


duckdb_scalar_function_get_client_context

检索标量函数的绑定信息的客户端上下文。

语法
void duckdb_scalar_function_get_client_context(
  duckdb_bind_info info,
  duckdb_client_context *out_context
);
参数
  • info:标量函数的绑定信息对象。
  • out_context:绑定信息的客户端上下文。必须使用 duckdb_destroy_client_context 销毁。


duckdb_scalar_function_set_error

报告在执行标量函数时发生了错误。

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


duckdb_create_scalar_function_set

创建一个新的空标量函数集合。

返回值必须使用 duckdb_destroy_scalar_function_set 销毁。

返回值

标量函数集合对象。

语法
duckdb_scalar_function_set duckdb_create_scalar_function_set(
  const char *name
);


duckdb_destroy_scalar_function_set

销毁给定的标量函数集合对象。

语法
void duckdb_destroy_scalar_function_set(
  duckdb_scalar_function_set *scalar_function_set
);


duckdb_add_scalar_function_to_set

将标量函数作为新的重载添加到标量函数集合。

如果无法添加函数,则返回 DuckDBError,例如,如果重载已存在。

语法
duckdb_state duckdb_add_scalar_function_to_set(
  duckdb_scalar_function_set set,
  duckdb_scalar_function function
);
参数
  • set:标量函数集合
  • function:要添加的函数


duckdb_register_scalar_function_set

在给定连接中注册标量函数集合。

该集合至少需要一个有效的重载。

如果集合不完整或已存在具有此名称的函数,则返回 DuckDBError。

语法
duckdb_state duckdb_register_scalar_function_set(
  duckdb_connection con,
  duckdb_scalar_function_set set
);
参数
  • con:要在其中注册的连接。
  • set:要注册的函数集合
返回值

注册是否成功。


duckdb_create_selection_vector

创建一个新的大小为 size 的选择向量。

语法
duckdb_selection_vector duckdb_create_selection_vector(
  idx_t size
);


duckdb_destroy_selection_vector

销毁选择向量。

语法
void duckdb_destroy_selection_vector(
  duckdb_selection_vector vector
);


duckdb_selection_vector_get_data_ptr

访问选择向量的数据指针。

语法
sel_t *duckdb_selection_vector_get_data_ptr(
  duckdb_selection_vector vector
);


duckdb_create_aggregate_function

创建一个新的空聚合函数。

返回值应使用 duckdb_destroy_aggregate_function 销毁。

返回值

聚合函数对象。

语法
duckdb_aggregate_function duckdb_create_aggregate_function(
  
);


duckdb_destroy_aggregate_function

销毁给定的聚合函数对象。

语法
void duckdb_destroy_aggregate_function(
  duckdb_aggregate_function *aggregate_function
);


duckdb_aggregate_function_set_name

设置给定聚合函数的名称。

语法
void duckdb_aggregate_function_set_name(
  duckdb_aggregate_function aggregate_function,
  const char *name
);
参数
  • aggregate_function:聚合函数
  • name:聚合函数的名称


duckdb_aggregate_function_add_parameter

向聚合函数添加参数。

语法
void duckdb_aggregate_function_add_parameter(
  duckdb_aggregate_function aggregate_function,
  duckdb_logical_type type
);
参数
  • aggregate_function:聚合函数。
  • type:参数类型。不能包含 INVALID。


duckdb_aggregate_function_set_return_type

设置聚合函数的返回类型。

语法
void duckdb_aggregate_function_set_return_type(
  duckdb_aggregate_function aggregate_function,
  duckdb_logical_type type
);
参数
  • aggregate_function:聚合函数。
  • type:返回类型。不能包含 INVALID 或 ANY。


duckdb_aggregate_function_set_functions

设置聚合函数的主函数。

语法
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
);
参数
  • aggregate_function:聚合函数
  • state_size:状态大小
  • state_init:状态初始化函数
  • update:更新状态
  • combine:合并状态
  • finalize:完成状态


duckdb_aggregate_function_set_destructor

设置聚合函数的状态析构函数回调(可选)

语法
void duckdb_aggregate_function_set_destructor(
  duckdb_aggregate_function aggregate_function,
  duckdb_aggregate_destroy_t destroy
);
参数
  • aggregate_function:聚合函数
  • destroy:状态销毁回调


duckdb_register_aggregate_function

在给定连接中注册聚合函数对象。

该函数至少需要一个名称、函数和一个返回类型。

如果函数不完整或已存在具有此名称的函数,则返回 DuckDBError。

语法
duckdb_state duckdb_register_aggregate_function(
  duckdb_connection con,
  duckdb_aggregate_function aggregate_function
);
参数
  • con:要在其中注册的连接。
返回值

注册是否成功。


duckdb_aggregate_function_set_special_handling

将聚合函数的 NULL 处理设置为 SPECIAL_HANDLING。

语法
void duckdb_aggregate_function_set_special_handling(
  duckdb_aggregate_function aggregate_function
);
参数
  • aggregate_function:聚合函数


duckdb_aggregate_function_set_extra_info

将额外信息分配给标量函数,可以在绑定等期间获取。

语法
void duckdb_aggregate_function_set_extra_info(
  duckdb_aggregate_function aggregate_function,
  void *extra_info,
  duckdb_delete_callback_t destroy
);
参数
  • aggregate_function:聚合函数
  • extra_info:额外信息
  • destroy:将调用以销毁额外信息的回调(如果有)


duckdb_aggregate_function_get_extra_info

检索函数在 duckdb_aggregate_function_set_extra_info 中设置的额外信息。

语法
void *duckdb_aggregate_function_get_extra_info(
  duckdb_function_info info
);
参数
  • info:信息对象
返回值

额外信息


duckdb_aggregate_function_set_error

报告在执行聚合函数时发生了错误。

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


duckdb_create_aggregate_function_set

创建一个新的空聚合函数集合。

返回值应使用 duckdb_destroy_aggregate_function_set 销毁。

返回值

聚合函数集合对象。

语法
duckdb_aggregate_function_set duckdb_create_aggregate_function_set(
  const char *name
);


duckdb_destroy_aggregate_function_set

销毁给定的聚合函数集合对象。

语法
void duckdb_destroy_aggregate_function_set(
  duckdb_aggregate_function_set *aggregate_function_set
);


duckdb_add_aggregate_function_to_set

将聚合函数作为新的重载添加到聚合函数集合。

如果无法添加函数,则返回 DuckDBError,例如,如果重载已存在。

语法
duckdb_state duckdb_add_aggregate_function_to_set(
  duckdb_aggregate_function_set set,
  duckdb_aggregate_function function
);
参数
  • set:聚合函数集合
  • function:要添加的函数


duckdb_register_aggregate_function_set

在给定连接中注册聚合函数集合。

该集合至少需要一个有效的重载。

如果集合不完整或已存在具有此名称的函数,则返回 DuckDBError。

语法
duckdb_state duckdb_register_aggregate_function_set(
  duckdb_connection con,
  duckdb_aggregate_function_set set
);
参数
  • con:要在其中注册的连接。
  • set:要注册的函数集合
返回值

注册是否成功。


duckdb_create_table_function

创建一个新的空表函数。

返回值应使用 duckdb_destroy_table_function 销毁。

返回值

表函数对象。

语法
duckdb_table_function duckdb_create_table_function(
  
);


duckdb_destroy_table_function

销毁给定的表函数对象。

语法
void duckdb_destroy_table_function(
  duckdb_table_function *table_function
);
参数
  • table_function:要销毁的表函数


duckdb_table_function_set_name

设置给定表函数的名称。

语法
void duckdb_table_function_set_name(
  duckdb_table_function table_function,
  const char *name
);
参数
  • table_function:表函数
  • name:表函数的名称


duckdb_table_function_add_parameter

向表函数添加参数。

语法
void duckdb_table_function_add_parameter(
  duckdb_table_function table_function,
  duckdb_logical_type type
);
参数
  • table_function:表函数。
  • type:参数类型。不能包含 INVALID。


duckdb_table_function_add_named_parameter

向表函数添加命名参数。

语法
void duckdb_table_function_add_named_parameter(
  duckdb_table_function table_function,
  const char *name,
  duckdb_logical_type type
);
参数
  • table_function:表函数。
  • name:参数名称。
  • type:参数类型。不能包含 INVALID。


duckdb_table_function_set_extra_info

将额外信息分配给表函数,可以在绑定等期间获取。

语法
void duckdb_table_function_set_extra_info(
  duckdb_table_function table_function,
  void *extra_info,
  duckdb_delete_callback_t destroy
);
参数
  • table_function:表函数
  • extra_info:额外信息
  • destroy:将调用以销毁额外信息的回调(如果有)


duckdb_table_function_set_bind

设置表函数的绑定函数。

语法
void duckdb_table_function_set_bind(
  duckdb_table_function table_function,
  duckdb_table_function_bind_t bind
);
参数
  • table_function:表函数
  • bind:绑定函数


duckdb_table_function_set_init

设置表函数的初始化函数。

语法
void duckdb_table_function_set_init(
  duckdb_table_function table_function,
  duckdb_table_function_init_t init
);
参数
  • table_function:表函数
  • init:初始化函数


duckdb_table_function_set_local_init

设置表函数的线程本地初始化函数。

语法
void duckdb_table_function_set_local_init(
  duckdb_table_function table_function,
  duckdb_table_function_init_t init
);
参数
  • table_function:表函数
  • init:初始化函数


duckdb_table_function_set_function

设置表函数的主函数。

语法
void duckdb_table_function_set_function(
  duckdb_table_function table_function,
  duckdb_table_function_t function
);
参数
  • table_function:表函数
  • function:函数


duckdb_table_function_supports_projection_pushdown

设置给定的表函数是否支持投影下推。

如果设置为 true,则系统将在 init 阶段通过 duckdb_init_get_column_countduckdb_init_get_column_index 函数提供所有必需的列的列表。如果设置为 false(默认),则系统将期望投影所有列。

语法
void duckdb_table_function_supports_projection_pushdown(
  duckdb_table_function table_function,
  bool pushdown
);
参数
  • table_function:表函数
  • pushdown:如果表函数支持投影下推,则为 True;否则为 false。


duckdb_register_table_function

在给定连接中注册表函数对象。

该函数至少需要一个名称、一个绑定函数、一个初始化函数和一个主函数。

如果函数不完整或已存在具有此名称的函数,则返回 DuckDBError。

语法
duckdb_state duckdb_register_table_function(
  duckdb_connection con,
  duckdb_table_function function
);
参数
  • con:要在其中注册的连接。
  • function:函数指针
返回值

注册是否成功。


duckdb_bind_get_extra_info

检索函数在 duckdb_table_function_set_extra_info 中设置的额外信息。

语法
void *duckdb_bind_get_extra_info(
  duckdb_bind_info info
);
参数
  • info:信息对象
返回值

额外信息


duckdb_bind_add_result_column

向表函数的输出添加结果列。

语法
void duckdb_bind_add_result_column(
  duckdb_bind_info info,
  const char *name,
  duckdb_logical_type type
);
参数
  • info:表函数的绑定信息。
  • name:列名。
  • type:逻辑列类型。


duckdb_bind_get_parameter_count

检索函数的常规(非命名)参数的数量。

语法
idx_t duckdb_bind_get_parameter_count(
  duckdb_bind_info info
);
参数
  • info:信息对象
返回值

参数的数量


duckdb_bind_get_parameter

检索给定索引处的参数。

结果必须使用 duckdb_destroy_value 销毁。

语法
duckdb_value duckdb_bind_get_parameter(
  duckdb_bind_info info,
  idx_t index
);
参数
  • info:信息对象
  • index:要获取的参数的索引
返回值

参数的值。必须使用 duckdb_destroy_value 销毁。


duckdb_bind_get_named_parameter

检索具有给定名称的命名参数。

结果必须使用 duckdb_destroy_value 销毁。

语法
duckdb_value duckdb_bind_get_named_parameter(
  duckdb_bind_info info,
  const char *name
);
参数
  • info:信息对象
  • name:参数名称
返回值

参数的值。必须使用 duckdb_destroy_value 销毁。


duckdb_bind_set_bind_data

在表函数的绑定对象中设置用户提供的绑定数据。可以在执行期间再次检索此对象。

语法
void duckdb_bind_set_bind_data(
  duckdb_bind_info info,
  void *bind_data,
  duckdb_delete_callback_t destroy
);
参数
  • info:表函数的绑定信息。
  • bind_data:绑定数据对象。
  • destroy:销毁绑定数据的回调(如果有)。


duckdb_bind_set_cardinality

设置表函数的基数估计值,用于优化。

语法
void duckdb_bind_set_cardinality(
  duckdb_bind_info info,
  idx_t cardinality,
  bool is_exact
);
参数
  • info:绑定数据对象。
  • is_exact:基数估计是否准确或近似


duckdb_bind_set_error

报告在对表函数调用 bind 时发生了错误。

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


duckdb_init_get_extra_info

检索函数在 duckdb_table_function_set_extra_info 中设置的额外信息。

语法
void *duckdb_init_get_extra_info(
  duckdb_init_info info
);
参数
  • info:信息对象
返回值

额外信息


duckdb_init_get_bind_data

获取在绑定期间由 duckdb_bind_set_bind_data 设置的绑定数据。

请注意,绑定数据应被视为只读。对于跟踪状态,请改用初始化数据。

语法
void *duckdb_init_get_bind_data(
  duckdb_init_info info
);
参数
  • info:信息对象
返回值

绑定数据对象


duckdb_init_set_init_data

在初始化对象中设置用户提供的初始化数据。可以在执行期间再次检索此对象。

语法
void duckdb_init_set_init_data(
  duckdb_init_info info,
  void *init_data,
  duckdb_delete_callback_t destroy
);
参数
  • info:信息对象
  • init_data:初始化数据对象。
  • destroy:将调用以销毁初始化数据的回调(如果有)


duckdb_init_get_column_count

返回投影列的数量。

如果启用了投影下推,则必须使用此函数来确定要发出的列。

语法
idx_t duckdb_init_get_column_count(
  duckdb_init_info info
);
参数
  • info:信息对象
返回值

投影列的数量。


duckdb_init_get_column_index

返回指定位置的投影列的列索引。

如果启用了投影下推,则必须使用此函数来确定要发出的列。

语法
idx_t duckdb_init_get_column_index(
  duckdb_init_info info,
  idx_t column_index
);
参数
  • info:信息对象
  • column_index:从中获取投影列索引的索引,从 0..duckdb_init_get_column_count(info)
返回值

投影列的列索引。


duckdb_init_set_max_threads

设置可以并行处理此表函数的线程数(默认值:1)

语法
void duckdb_init_set_max_threads(
  duckdb_init_info info,
  idx_t max_threads
);
参数
  • info:信息对象
  • max_threads:可以处理此表函数的最大线程数


duckdb_init_set_error

报告在调用 init 时发生了错误。

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


duckdb_function_get_extra_info

检索函数在 duckdb_table_function_set_extra_info 中设置的额外信息。

语法
void *duckdb_function_get_extra_info(
  duckdb_function_info info
);
参数
  • info:信息对象
返回值

额外信息


duckdb_function_get_bind_data

获取由 duckdb_bind_set_bind_data 设置的表函数的绑定数据。

请注意,绑定数据是只读的。对于跟踪状态,请改用初始化数据。

语法
void *duckdb_function_get_bind_data(
  duckdb_function_info info
);
参数
  • info:函数 info 对象。
返回值

绑定数据对象。


duckdb_function_get_init_data

获取由 duckdb_init_set_init_data 在初始化期间设置的初始化数据。

语法
void *duckdb_function_get_init_data(
  duckdb_function_info info
);
参数
  • info:信息对象
返回值

初始化数据对象


duckdb_function_get_local_init_data

获取由 duckdb_init_set_init_data 在 local_init 期间设置的线程本地初始化数据。

语法
void *duckdb_function_get_local_init_data(
  duckdb_function_info info
);
参数
  • info:信息对象
返回值

初始化数据对象


duckdb_function_set_error

报告执行函数时发生错误。

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


duckdb_add_replacement_scan

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

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


duckdb_replacement_scan_set_function_name

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

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


duckdb_replacement_scan_add_parameter

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

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


duckdb_replacement_scan_set_error

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

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


duckdb_get_profiling_info

返回性能分析信息的根节点。如果未启用性能分析,则返回 nullptr。

语法
duckdb_profiling_info duckdb_get_profiling_info(
  duckdb_connection connection
);
参数
  • connection:连接对象。
返回值

性能分析信息对象。


duckdb_profiling_info_get_value

返回当前性能分析信息节点的指标值。如果指标不存在或未启用,则返回 nullptr。当前,该值包含一个字符串,您可以通过调用相应的函数检索该字符串:char *duckdb_get_varchar(duckdb_value value)。

语法
duckdb_value duckdb_profiling_info_get_value(
  duckdb_profiling_info info,
  const char *key
);
参数
  • info:性能分析信息对象。
  • key:请求的指标的名称。
返回值

指标的值。必须使用 duckdb_destroy_value 释放


duckdb_profiling_info_get_metrics

将此性能分析节点的键值指标映射作为 MAP duckdb_value 返回。可以通过 duckdb_value MAP 函数访问各个元素。

语法
duckdb_value duckdb_profiling_info_get_metrics(
  duckdb_profiling_info info
);
参数
  • info:性能分析信息对象。
返回值

键值指标映射作为 MAP duckdb_value。


duckdb_profiling_info_get_child_count

返回当前性能分析信息节点中的子节点数。

语法
idx_t duckdb_profiling_info_get_child_count(
  duckdb_profiling_info info
);
参数
  • info:性能分析信息对象。
返回值

当前节点中的子节点数。


duckdb_profiling_info_get_child

返回指定索引处的子节点。

语法
duckdb_profiling_info duckdb_profiling_info_get_child(
  duckdb_profiling_info info,
  idx_t index
);
参数
  • info:性能分析信息对象。
  • index:子节点的索引。
返回值

指定索引处的子节点。


duckdb_appender_create

创建 appender 对象。

请注意,必须使用 duckdb_appender_destroy 销毁该对象。

语法
duckdb_state duckdb_appender_create(
  duckdb_connection connection,
  const char *schema,
  const char *table,
  duckdb_appender *out_appender
);
参数
  • connection:要在其中创建 appender 的连接上下文。
  • schema:要追加到的表的 schema,如果使用默认 schema,则为 nullptr
  • table:要追加到的表名。
  • out_appender:生成的 appender 对象。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_appender_create_ext

创建 appender 对象。

请注意,必须使用 duckdb_appender_destroy 销毁该对象。

语法
duckdb_state duckdb_appender_create_ext(
  duckdb_connection connection,
  const char *catalog,
  const char *schema,
  const char *table,
  duckdb_appender *out_appender
);
参数
  • connection:要在其中创建 appender 的连接上下文。
  • catalog:要追加到的表的 catalog,如果使用默认 catalog,则为 nullptr
  • schema:要追加到的表的 schema,如果使用默认 schema,则为 nullptr
  • table:要追加到的表名。
  • out_appender:生成的 appender 对象。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_appender_column_count

返回属于 appender 的列数。如果没有活动的列列表,则此值等于表的物理列数。

语法
idx_t duckdb_appender_column_count(
  duckdb_appender appender
);
参数
  • appender:要从中获取列数的 appender。
返回值

数据块中的列数。


duckdb_appender_column_type

返回指定索引处列的类型。这可以是活动列列表中的类型,也可以是接收表中列的相同类型。

注意:必须使用 duckdb_destroy_logical_type 销毁结果类型。

语法
duckdb_logical_type duckdb_appender_column_type(
  duckdb_appender appender,
  idx_t col_idx
);
参数
  • appender:要从中获取列类型的 appender。
  • col_idx:要获取类型的列的索引。
返回值

列的 duckdb_logical_type


duckdb_appender_error

返回与给定 appender 关联的错误消息。如果 appender 没有错误消息,则返回 nullptr

不应释放错误消息。它将在调用 duckdb_appender_destroy 时释放。

语法
const char *duckdb_appender_error(
  duckdb_appender appender
);
参数
  • appender:要从中获取错误的 appender。
返回值

错误消息,如果没有则为 nullptr


duckdb_appender_flush

将 appender 刷新到表中,强制清除 appender 的缓存。如果刷新数据触发约束冲突或任何其他错误,则所有数据都将失效,并且此函数返回 DuckDBError。无法追加更多值。调用 duckdb_appender_error 获取错误消息,然后调用 duckdb_appender_destroy 销毁失效的 appender。

语法
duckdb_state duckdb_appender_flush(
  duckdb_appender appender
);
参数
  • appender:要刷新的 appender。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_appender_close

通过刷新所有中间状态并关闭以进行进一步追加来关闭 appender。如果刷新数据触发约束冲突或任何其他错误,则所有数据都将失效,并且此函数返回 DuckDBError。调用 duckdb_appender_error 获取错误消息,然后调用 duckdb_appender_destroy 销毁失效的 appender。

语法
duckdb_state duckdb_appender_close(
  duckdb_appender appender
);
参数
  • appender:要刷新和关闭的 appender。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_appender_destroy

通过将所有中间状态刷新到表并销毁它来关闭 appender。通过销毁它,此函数会释放与 appender 关联的所有内存。如果刷新数据触发约束冲突,则所有数据都将失效,并且此函数返回 DuckDBError。由于 appender 的销毁,不再可以使用 duckdb_appender_error 获取特定错误消息。因此,如果您需要了解特定错误,请在销毁 appender 之前调用 duckdb_appender_close。

语法
duckdb_state duckdb_appender_destroy(
  duckdb_appender *appender
);
参数
  • appender:要刷新、关闭和销毁的 appender。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_appender_add_column

将列追加到 appender 的活动列列表中。立即刷新所有先前的数据。

活动列列表指定刷新数据时期望的所有列。任何非活动列都将填充其默认值或 NULL。

语法
duckdb_state duckdb_appender_add_column(
  duckdb_appender appender,
  const char *name
);
参数
  • appender:要向其添加列的 appender。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_appender_clear_columns

从 appender 的活动列列表中删除所有列,重置 appender 以将所有列视为活动列。立即刷新所有先前的数据。

语法
duckdb_state duckdb_appender_clear_columns(
  duckdb_appender appender
);
参数
  • appender:要从中清除列的 appender。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_appender_begin_row

一个 nop 函数,提供用于向后兼容性原因。什么也不做。仅需要 duckdb_appender_end_row

语法
duckdb_state duckdb_appender_begin_row(
  duckdb_appender appender
);


duckdb_appender_end_row

完成当前追加行。调用 end_row 后,可以追加下一行。

语法
duckdb_state duckdb_appender_end_row(
  duckdb_appender appender
);
参数
  • appender:appender。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_append_default

将 DEFAULT 值(如果列的 DEFAULT 不可用,则为 NULL)追加到 appender。

语法
duckdb_state duckdb_append_default(
  duckdb_appender appender
);


duckdb_append_default_to_chunk

在指定的行和列处,将 DEFAULT 值(如果列的 DEFAULT 不可用,则为 NULL)追加到从指定的 appender 创建的块。列的默认值必须是一个常量值。不支持非确定性表达式,例如 nextval('seq') 或 random()。

语法
duckdb_state duckdb_append_default_to_chunk(
  duckdb_appender appender,
  duckdb_data_chunk chunk,
  idx_t col,
  idx_t row
);
参数
  • appender:要从中获取默认值的 appender。
  • chunk:要将默认值追加到的数据块。
  • col:要将默认值追加到的块列索引。
  • row:要将默认值追加到的块行索引。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_append_bool

将布尔值追加到 appender。

语法
duckdb_state duckdb_append_bool(
  duckdb_appender appender,
  bool value
);


duckdb_append_int8

将 int8_t 值追加到 appender。

语法
duckdb_state duckdb_append_int8(
  duckdb_appender appender,
  int8_t value
);


duckdb_append_int16

将 int16_t 值追加到 appender。

语法
duckdb_state duckdb_append_int16(
  duckdb_appender appender,
  int16_t value
);


duckdb_append_int32

将 int32_t 值追加到 appender。

语法
duckdb_state duckdb_append_int32(
  duckdb_appender appender,
  int32_t value
);


duckdb_append_int64

将 int64_t 值追加到 appender。

语法
duckdb_state duckdb_append_int64(
  duckdb_appender appender,
  int64_t value
);


duckdb_append_hugeint

将 duckdb_hugeint 值追加到 appender。

语法
duckdb_state duckdb_append_hugeint(
  duckdb_appender appender,
  duckdb_hugeint value
);


duckdb_append_uint8

将 uint8_t 值追加到 appender。

语法
duckdb_state duckdb_append_uint8(
  duckdb_appender appender,
  uint8_t value
);


duckdb_append_uint16

将 uint16_t 值追加到 appender。

语法
duckdb_state duckdb_append_uint16(
  duckdb_appender appender,
  uint16_t value
);


duckdb_append_uint32

将 uint32_t 值追加到 appender。

语法
duckdb_state duckdb_append_uint32(
  duckdb_appender appender,
  uint32_t value
);


duckdb_append_uint64

将 uint64_t 值追加到 appender。

语法
duckdb_state duckdb_append_uint64(
  duckdb_appender appender,
  uint64_t value
);


duckdb_append_uhugeint

将 duckdb_uhugeint 值追加到 appender。

语法
duckdb_state duckdb_append_uhugeint(
  duckdb_appender appender,
  duckdb_uhugeint value
);


duckdb_append_float

将浮点值追加到 appender。

语法
duckdb_state duckdb_append_float(
  duckdb_appender appender,
  float value
);


duckdb_append_double

将双精度值追加到 appender。

语法
duckdb_state duckdb_append_double(
  duckdb_appender appender,
  double value
);


duckdb_append_date

将 duckdb_date 值追加到 appender。

语法
duckdb_state duckdb_append_date(
  duckdb_appender appender,
  duckdb_date value
);


duckdb_append_time

将 duckdb_time 值追加到 appender。

语法
duckdb_state duckdb_append_time(
  duckdb_appender appender,
  duckdb_time value
);


duckdb_append_timestamp

将 duckdb_timestamp 值追加到 appender。

语法
duckdb_state duckdb_append_timestamp(
  duckdb_appender appender,
  duckdb_timestamp value
);


duckdb_append_interval

将 duckdb_interval 值追加到 appender。

语法
duckdb_state duckdb_append_interval(
  duckdb_appender appender,
  duckdb_interval value
);


duckdb_append_varchar

将 varchar 值追加到 appender。

语法
duckdb_state duckdb_append_varchar(
  duckdb_appender appender,
  const char *val
);


duckdb_append_varchar_length

将 varchar 值追加到 appender。

语法
duckdb_state duckdb_append_varchar_length(
  duckdb_appender appender,
  const char *val,
  idx_t length
);


duckdb_append_blob

将 blob 值追加到 appender。

语法
duckdb_state duckdb_append_blob(
  duckdb_appender appender,
  const void *data,
  idx_t length
);


duckdb_append_null

将 NULL 值(任何类型)追加到 appender。

语法
duckdb_state duckdb_append_null(
  duckdb_appender appender
);


duckdb_append_value

将 duckdb_value 追加到 appender。

语法
duckdb_state duckdb_append_value(
  duckdb_appender appender,
  duckdb_value value
);


duckdb_append_data_chunk

将预填充的数据块追加到指定的 appender。如果数据块类型与活动 appender 类型不匹配,则尝试强制转换。

语法
duckdb_state duckdb_append_data_chunk(
  duckdb_appender appender,
  duckdb_data_chunk chunk
);
参数
  • appender:要追加到的 appender。
  • chunk:要追加的数据块。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_table_description_create

创建表描述对象。请注意,应始终对生成的 table_description 调用 duckdb_table_description_destroy,即使函数返回 DuckDBError

语法
duckdb_state duckdb_table_description_create(
  duckdb_connection connection,
  const char *schema,
  const char *table,
  duckdb_table_description *out
);
参数
  • connection:连接上下文。
  • schema:表的 schema,如果使用默认 schema,则为 nullptr
  • table:表名。
  • out:生成的表描述对象。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_table_description_create_ext

创建表描述对象。请注意,即使函数返回 DuckDBError,也必须对生成的 table_description 调用 duckdb_table_description_destroy

语法
duckdb_state duckdb_table_description_create_ext(
  duckdb_connection connection,
  const char *catalog,
  const char *schema,
  const char *table,
  duckdb_table_description *out
);
参数
  • connection:连接上下文。
  • catalog:表的 catalog(数据库)名称,如果使用默认 catalog,则为 nullptr
  • schema:表的 schema,如果使用默认 schema,则为 nullptr
  • table:表名。
  • out:生成的表描述对象。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_table_description_destroy

销毁 TableDescription 对象。

语法
void duckdb_table_description_destroy(
  duckdb_table_description *table_description
);
参数
  • table_description:要销毁的 table_description。


duckdb_table_description_error

返回与给定 table_description 关联的错误消息。如果 table_description 没有错误消息,则返回 nullptr。不应释放错误消息。它将在调用 duckdb_table_description_destroy 时释放。

语法
const char *duckdb_table_description_error(
  duckdb_table_description table_description
);
参数
  • table_description:要从中获取错误的 table_description。
返回值

错误消息,如果没有则为 nullptr


duckdb_column_has_default

检查表的“index”索引处的列是否具有 DEFAULT 表达式。

语法
duckdb_state duckdb_column_has_default(
  duckdb_table_description table_description,
  idx_t index,
  bool *out
);
参数
  • table_description:要查询的 table_description。
  • index:要查询的列的索引。
  • out:用于存储结果的 out-parameter。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_table_description_get_column_name

获取“index”处的列名。必须使用 duckdb_free 销毁 out 结果。

语法
char *duckdb_table_description_get_column_name(
  duckdb_table_description table_description,
  idx_t index
);
参数
  • table_description:要查询的 table_description。
  • index:要查询的列的索引。
返回值

列名。


duckdb_query_arrow

警告:弃用通知。此方法计划在未来版本中移除。

在连接中执行 SQL 查询,并将完整(物化)结果存储在 arrow 结构中。如果查询执行失败,则返回 DuckDBError,并且可以通过调用 duckdb_query_arrow_error 检索错误消息。

请注意,运行 duckdb_query_arrow 后,即使查询失败,也必须对结果对象调用 duckdb_destroy_arrow,否则存储在结果中的错误将无法正确释放。

语法
duckdb_state duckdb_query_arrow(
  duckdb_connection connection,
  const char *query,
  duckdb_arrow *out_result
);
参数
  • connection:要在其中执行查询的连接。
  • query:要运行的 SQL 查询。
  • out_result:查询结果。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_query_arrow_schema

警告:弃用通知。此方法计划在未来版本中移除。

从 arrow 结果中获取内部 arrow schema。请记住对相应的 ArrowSchema 对象调用 release。

语法
duckdb_state duckdb_query_arrow_schema(
  duckdb_arrow result,
  duckdb_arrow_schema *out_schema
);
参数
  • result:要从中获取 schema 的结果。
  • out_schema:输出 schema。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_prepared_arrow_schema

警告:弃用通知。此方法计划在未来版本中移除。

从预处理语句中获取内部 arrow schema。请记住对相应的 ArrowSchema 对象调用 release。

语法
duckdb_state duckdb_prepared_arrow_schema(
  duckdb_prepared_statement prepared,
  duckdb_arrow_schema *out_schema
);
参数
  • prepared:要从中获取 schema 的预处理语句。
  • out_schema:输出 schema。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_result_arrow_array

警告:弃用通知。此方法计划在未来版本中移除。

将数据块转换为 arrow 结构数组。请记住对相应的 ArrowArray 对象调用 release。

语法
void duckdb_result_arrow_array(
  duckdb_result result,
  duckdb_data_chunk chunk,
  duckdb_arrow_array *out_array
);
参数
  • result:从中获取数据块的结果对象。
  • chunk:要转换的数据块。
  • out_array:输出数组。


duckdb_query_arrow_array

警告:弃用通知。此方法计划在未来版本中移除。

从 arrow 结果中获取内部 arrow 结构数组。请记住对相应的 ArrowArray 对象调用 release。

可以多次调用此函数以获取下一个块,这将释放先前的 out_array。因此,在再次调用此函数之前,请使用 out_array。

语法
duckdb_state duckdb_query_arrow_array(
  duckdb_arrow result,
  duckdb_arrow_array *out_array
);
参数
  • result:要从中获取数组的结果。
  • out_array:输出数组。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_arrow_column_count

警告:弃用通知。此方法计划在未来版本中移除。

返回 arrow 结果对象中存在的列数。

语法
idx_t duckdb_arrow_column_count(
  duckdb_arrow result
);
参数
  • result:结果对象。
返回值

结果对象中存在的列数。


duckdb_arrow_row_count

警告:弃用通知。此方法计划在未来版本中移除。

返回 arrow 结果对象中存在的行数。

语法
idx_t duckdb_arrow_row_count(
  duckdb_arrow result
);
参数
  • result:结果对象。
返回值

结果对象中存在的行数。


duckdb_arrow_rows_changed

警告:弃用通知。此方法计划在未来版本中移除。

返回 arrow 结果中存储的查询更改的行数。这仅与 INSERT/UPDATE/DELETE 查询相关。对于其他查询,rows_changed 将为 0。

语法
idx_t duckdb_arrow_rows_changed(
  duckdb_arrow result
);
参数
  • result:结果对象。
返回值

更改的行数。


duckdb_query_arrow_error

警告:弃用通知。此方法计划在未来版本中移除。

返回结果中包含的错误消息。仅当 duckdb_query_arrow 返回 DuckDBError 时才设置错误。

不应释放错误消息。它将在调用 duckdb_destroy_arrow 时释放。

语法
const char *duckdb_query_arrow_error(
  duckdb_arrow result
);
参数
  • result:从中获取错误的结果对象。
返回值

结果的错误。


duckdb_destroy_arrow

警告:弃用通知。此方法计划在未来版本中移除。

关闭结果并释放为 arrow 结果分配的所有内存。

语法
void duckdb_destroy_arrow(
  duckdb_arrow *result
);
参数
  • result:要销毁的结果。


duckdb_destroy_arrow_stream

警告:弃用通知。此方法计划在未来版本中移除。

释放 arrow 数组流并释放其内存。

语法
void duckdb_destroy_arrow_stream(
  duckdb_arrow_stream *stream_p
);
参数
  • stream_p:要销毁的 arrow 数组流。


duckdb_execute_prepared_arrow

警告:弃用通知。此方法计划在未来版本中移除。

使用给定的绑定参数执行预处理语句,并返回 arrow 查询结果。请注意,运行 duckdb_execute_prepared_arrow 后,必须对结果对象调用 duckdb_destroy_arrow

语法
duckdb_state duckdb_execute_prepared_arrow(
  duckdb_prepared_statement prepared_statement,
  duckdb_arrow *out_result
);
参数
  • prepared_statement: 要执行的预处理语句。
  • out_result:查询结果。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_arrow_scan

警告:弃用通知。此方法计划在未来版本中移除。

扫描 Arrow 流并创建具有给定名称的视图。

语法
duckdb_state duckdb_arrow_scan(
  duckdb_connection connection,
  const char *table_name,
  duckdb_arrow_stream arrow
);
参数
  • connection:要在其上执行扫描的连接。
  • table_name:要创建的临时视图的名称。
  • arrow:Arrow 流包装器。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_arrow_array_scan

警告:弃用通知。此方法计划在未来版本中移除。

扫描 Arrow 数组并创建具有给定名称的视图。请注意,运行 duckdb_arrow_array_scan 后,必须对 out 流调用 duckdb_destroy_arrow_stream

语法
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
);
参数
  • connection:要在其上执行扫描的连接。
  • table_name:要创建的临时视图的名称。
  • arrow_schema:Arrow schema 包装器。
  • arrow_array:Arrow 数组包装器。
  • out_stream:输出数组流,围绕传递的 schema 包装,用于在完成后释放/删除。
返回值

成功时返回 DuckDBSuccess,失败时返回 DuckDBError


duckdb_execute_tasks

在此线程上执行 DuckDB 任务。

将在执行 max_tasks 个任务后返回,或者如果没有更多任务存在。

语法
void duckdb_execute_tasks(
  duckdb_database database,
  idx_t max_tasks
);
参数
  • database:要执行任务的数据库对象
  • max_tasks:要执行的最大任务数


duckdb_create_task_state

创建一个任务状态,该状态可以与 duckdb_execute_tasks_state 一起使用来执行任务,直到在状态上调用 duckdb_finish_execution

必须对结果调用 duckdb_destroy_state

语法
duckdb_task_state duckdb_create_task_state(
  duckdb_database database
);
参数
  • database:要为其创建任务状态的数据库对象
返回值

可与 duckdb_execute_tasks_state 一起使用的任务状态。


duckdb_execute_tasks_state

在此线程上执行 DuckDB 任务。

线程将永远执行任务,直到在状态上调用 duckdb_finish_execution。多个线程可以共享同一个 duckdb_task_state。

语法
void duckdb_execute_tasks_state(
  duckdb_task_state state
);
参数
  • state:执行器的任务状态


duckdb_execute_n_tasks_state

在此线程上执行 DuckDB 任务。

线程将继续执行任务,直到在状态上调用 duckdb_finish_execution、已执行 max_tasks 个任务或没有更多任务要执行。

多个线程可以共享同一个 duckdb_task_state。

语法
idx_t duckdb_execute_n_tasks_state(
  duckdb_task_state state,
  idx_t max_tasks
);
参数
  • state:执行器的任务状态
  • max_tasks:要执行的最大任务数
返回值

实际已执行的任务数


duckdb_finish_execution

完成特定任务的执行。

语法
void duckdb_finish_execution(
  duckdb_task_state state
);
参数
  • state:要完成执行的任务状态


duckdb_task_state_is_finished

检查是否已对提供的 duckdb_task_state 完成执行

语法
bool duckdb_task_state_is_finished(
  duckdb_task_state state
);
参数
  • state:要检查的任务状态
返回值

是否已在任务状态上调用 duckdb_finish_execution


duckdb_destroy_task_state

销毁从 duckdb_create_task_state 返回的任务状态。

请注意,不应在任务状态上运行活动的 duckdb_execute_tasks_state 时调用此函数。

语法
void duckdb_destroy_task_state(
  duckdb_task_state state
);
参数
  • state:要清理的任务状态


duckdb_execution_is_finished

如果当前查询的执行已完成,则返回 true。

语法
bool duckdb_execution_is_finished(
  duckdb_connection con
);
参数
  • con:要检查的连接


duckdb_stream_fetch_chunk

警告:弃用通知。此方法计划在未来版本中移除。

从(流式)duckdb_result 中获取数据块。应重复调用此函数,直到结果耗尽。

结果必须使用 duckdb_destroy_data_chunk 销毁。

此函数只能用于使用“duckdb_pending_prepared_streaming”创建的 duckdb_results

如果使用此函数,则不能使用任何其他结果函数,反之亦然(即,此函数不能与旧结果函数或物化结果函数混合使用)。

事先不知道此结果将返回多少个块。

语法
duckdb_data_chunk duckdb_stream_fetch_chunk(
  duckdb_result result
);
参数
  • result:从中获取数据块的结果对象。
返回值

生成的数据块。如果结果有错误,则返回 NULL


duckdb_fetch_chunk

从 duckdb_result 中获取数据块。应重复调用此函数,直到结果耗尽。

结果必须使用 duckdb_destroy_data_chunk 销毁。

事先不知道此结果将返回多少个块。

语法
duckdb_data_chunk duckdb_fetch_chunk(
  duckdb_result result
);
参数
  • result:从中获取数据块的结果对象。
返回值

生成的数据块。如果结果有错误,则返回 NULL


duckdb_create_cast_function

创建一个新的强制转换函数对象。

返回值

强制转换函数对象。

语法
duckdb_cast_function duckdb_create_cast_function(
  
);


duckdb_cast_function_set_source_type

设置强制转换函数的源类型。

语法
void duckdb_cast_function_set_source_type(
  duckdb_cast_function cast_function,
  duckdb_logical_type source_type
);
参数
  • cast_function:强制转换函数对象。
  • source_type:要设置的源类型。


duckdb_cast_function_set_target_type

设置强制转换函数的目标类型。

语法
void duckdb_cast_function_set_target_type(
  duckdb_cast_function cast_function,
  duckdb_logical_type target_type
);
参数
  • cast_function:强制转换函数对象。
  • target_type:要设置的目标类型。


duckdb_cast_function_set_implicit_cast_cost

设置使用此函数将源类型隐式强制转换为目标类型的“成本”。

语法
void duckdb_cast_function_set_implicit_cast_cost(
  duckdb_cast_function cast_function,
  int64_t cost
);
参数
  • cast_function:强制转换函数对象。
  • cost:要设置的成本。


duckdb_cast_function_set_function

设置要使用的实际强制转换函数。

语法
void duckdb_cast_function_set_function(
  duckdb_cast_function cast_function,
  duckdb_cast_function_t function
);
参数
  • cast_function:强制转换函数对象。
  • function:要设置的函数。


duckdb_cast_function_set_extra_info

将额外信息分配给强制转换函数,可以在执行期间等获取。

语法
void duckdb_cast_function_set_extra_info(
  duckdb_cast_function cast_function,
  void *extra_info,
  duckdb_delete_callback_t destroy
);
参数
  • extra_info:额外信息
  • destroy:将调用以销毁额外信息的回调(如果有)


duckdb_cast_function_get_extra_info

检索在 duckdb_cast_function_set_extra_info 中设置的函数的额外信息。

语法
void *duckdb_cast_function_get_extra_info(
  duckdb_function_info info
);
参数
  • info:信息对象。
返回值

额外信息。


duckdb_cast_function_get_cast_mode

从给定的函数信息中获取强制转换执行模式。

语法
duckdb_cast_mode duckdb_cast_function_get_cast_mode(
  duckdb_function_info info
);
参数
  • info:信息对象。
返回值

强制转换模式。


duckdb_cast_function_set_error

报告执行强制转换函数时发生错误。

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


duckdb_cast_function_set_row_error

报告执行强制转换函数时发生错误,并将相应的输出行设置为 NULL。

语法
void duckdb_cast_function_set_row_error(
  duckdb_function_info info,
  const char *error,
  idx_t row,
  duckdb_vector output
);
参数
  • info:信息对象。
  • error:错误消息。
  • row:输出向量中要设置为 NULL 的行的索引。
  • output:输出向量。


duckdb_register_cast_function

在给定的连接中注册强制转换函数。

语法
duckdb_state duckdb_register_cast_function(
  duckdb_connection con,
  duckdb_cast_function cast_function
);
参数
  • con:要使用的连接。
  • cast_function:要注册的强制转换函数。
返回值

注册是否成功。


duckdb_destroy_cast_function

销毁强制转换函数对象。

语法
void duckdb_destroy_cast_function(
  duckdb_cast_function *cast_function
);
参数
  • cast_function:强制转换函数对象。