This module implements high-level API for DuckDB in Nim, providing convenient functions for opening databases, executing queries, and retrieving results.
Note: This is a work in progress and currently only supports some basic operations
Types
DuckDBConnection = duckdb_connection
- Represents a connection to a DuckDB database.
DuckDBConnectionError = object of CatchableError
DuckDBInstance = duckdb_database
- Represents a DuckDB database instance.
DuckDBQueryError = object of CatchableError
DuckDBResult = tuple[columns: seq[string], ## A sequence of column names in the result set. rows: seq[Row]]
- Represents the result of a DuckDB query.
DuckDBValue = object case kind*: DuckDBType of DUCKDB_TYPE_BOOLEAN: booleanValue*: bool of DUCKDB_TYPE_TINYINT: tinyIntValue*: int8 of DUCKDB_TYPE_SMALLINT: smallIntValue*: int16 of DUCKDB_TYPE_INTEGER: integerValue*: int32 of DUCKDB_TYPE_BIGINT: bigIntValue*: int64 of DUCKDB_TYPE_UTINYINT: uTinyIntValue*: uint8 of DUCKDB_TYPE_USMALLINT: uSmallIntValue*: uint16 of DUCKDB_TYPE_UINTEGER: uIntegerValue*: uint32 of DUCKDB_TYPE_UBIGINT: uBigIntValue*: uint64 of DUCKDB_TYPE_FLOAT: floatValue*: float32 of DUCKDB_TYPE_DOUBLE: doubleValue*: float64 of DUCKDB_TYPE_TIMESTAMP, DUCKDB_TYPE_DATE, DUCKDB_TYPE_TIME: dateValue*: string of DUCKDB_TYPE_INTERVAL: intervalValue*: string of DUCKDB_TYPE_HUGEINT: hugeIntValue*: BigInt of DUCKDB_TYPE_UHUGEINT: uHugeIntValue*: BigInt of DUCKDB_TYPE_VARCHAR, DUCKDB_TYPE_BLOB: stringValue*: string of DUCKDB_TYPE_DECIMAL: decimalValue*: string of DUCKDB_TYPE_ENUM: enumValue*: string of DUCKDB_TYPE_LIST, DUCKDB_TYPE_STRUCT, DUCKDB_TYPE_MAP: listValue*: seq[DuckDBValue] of DUCKDB_TYPE_ARRAY: arrayValue*: seq[DuckDBValue] of DUCKDB_TYPE_UUID: uuidValue*: string of DUCKDB_TYPE_UNION: unionValue*: seq[DuckDBValue] of DUCKDB_TYPE_BIT: bitValue*: seq[bool] of DUCKDB_TYPE_TIME_TZ, DUCKDB_TYPE_TIMESTAMP_TZ: timeValue*: string else: nil
- Represents a value in a DuckDB row.
Row = seq[DuckDBValue]
- Represents a single row of data returned from a query.
Consts
DuckDBError = -1
- Indicates an error occurred during an operation.
DuckDBSuccess = 0
- Indicates a successful operation.
Procs
proc `$`(value: DuckDBValue): string {....raises: [], tags: [], forbids: [].}
- Convert a DuckDBValue to a string representation.
proc close(db: var DuckDBConnection) {....raises: [], tags: [], forbids: [].}
- Close a database
proc connect(db: DuckDBInstance): DuckDBConnection {. ...raises: [DuckDBConnectionError], tags: [], forbids: [].}
- Connect to the DuckDB database instance.
proc disconnect(conn: var DuckDBConnection) {....raises: [], tags: [], forbids: [].}
- Disconnect from the DuckDB connection.
proc exec(conn: DuckDBConnection; sql: SqlQuery) {....raises: [DuckDBQueryError], tags: [], forbids: [].}
- Execute a SQL query on the DuckDB connection.
proc getAllRows(conn: DuckDBConnection; sql: SqlQuery): DuckDBResult {. ...raises: [DuckDBQueryError], tags: [], forbids: [].}
- Execute a SQL query and return all rows as a sequence of Row objects.
proc getDuckDBValue(res: ptr duckdb_result; j, i: idx_t): DuckDBValue {. ...raises: [DuckDBQueryError], tags: [], forbids: [].}
- Get a DuckDBValue from the result set.
proc open(path: string): DuckDBInstance {....raises: [DuckDBConnectionError], tags: [], forbids: [].}
- Open a database at the specified path.
proc toString(value: DuckDBValue): string {....raises: [], tags: [], forbids: [].}
- Convert a DuckDBValue to a string representation.
proc tryExec(conn: DuckDBConnection; sql: SqlQuery): bool {....raises: [], tags: [], forbids: [].}
- Try to execute a SQL query and return true if successful, false otherwise.
Exports
-
duckdb_get_date, duckdb_init_get_extra_info, duckdb_aggregate_function_set_extra_info, duckdb_state, duckdb_destroy_selection_vector, duckdb_bind_boolean, duckdb_bind_uint16, duckdb_query_progress_type, duckdb_scalar_function_set_function, duckdb_table_function, duckdb_profiling_info_get_child, duckdb_append_timestamp, duckdb_table_description_create_ext, duckdb_init_get_column_index, duckdb_profiling_info, duckdb_hugeint, duckdb_get_hugeint, duckdb_to_time, duckdb_bind_float, duckdb_append_int16, duckdb_cast_function_set_implicit_cast_cost, duckdb_cast_function_set_error, duckdb_disconnect, duckdb_replacement_callback_t, duckdb_create_timestamp_s, duckdb_init_set_error, duckdb_create_selection_vector, duckdb_scalar_function_set_error, duckdb_library_version, duckdb_create_uint64, duckdb_replacement_scan_add_parameter, duckdb_bind_time, duckdb_aggregate_function_set_destructor, duckdb_validity_set_row_invalid, duckdb_get_uint8, duckdb_register_aggregate_function_set, duckdb_get_uuid, duckdb_from_time_tz, duckdb_column_name, duckdb_value_uhugeint, duckdb_row_count, duckdb_open_ext, duckdb_create_uint16, duckdb_scalar_function_add_parameter, duckdb_scalar_function_set_bind_data, duckdb_destroy_value, duckdb_get_timestamp_s, duckdb_table_description_create, duckdb_column_type, duckdb_config, duckdb_decimal, duckdb_aggregate_combine_t, duckdb_value_time, duckdb_bind_uint8, duckdb_create_union_value, duckdb_destroy_table_function, duckdb_destroy_aggregate_function, duckdb_execution_is_finished, duckdb_aggregate_state_size, duckdb_init_set_init_data, duckdb_get_or_create_from_cache, duckdb_create_hugeint, duckdb_pending_error, duckdb_is_finite_timestamp_ns, duckdb_string_t_data, duckdb_uhugeint_to_double, duckdb_register_aggregate_function, duckdb_get_int16, duckdb_table_function_supports_projection_pushdown, duckdb_destroy_extracted, duckdb_logical_type, duckdb_bind_blob, duckdb_table_function_set_bind, duckdb_result_error, duckdb_scalar_function_set_extra_info, duckdb_value_varchar_internal, duckdb_create_instance_cache, duckdb_interrupt, duckdb_string_is_inlined, duckdb_to_timestamp, duckdb_value_to_string, duckdb_append_uhugeint, duckdb_register_scalar_function_set, duckdb_from_date, duckdb_arrow_stream, duckdb_bind_int8, duckdb_profiling_info_get_child_count, duckdb_appender_column_count, duckdb_value, duckdb_scalar_function_bind_t, duckdb_scalar_function_get_bind_data, duckdb_scalar_function_get_extra_info, duckdb_destroy_aggregate_function_set, duckdb_appender_create, duckdb_table_function_set_local_init, duckdb_pending_state, duckdb_append_interval, duckdb_bind_timestamp_tz, duckdb_value_uint16, duckdb_destroy_result, duckdb_append_default, duckdb_arrow_row_count, duckdb_extracted_statements, duckdb_double_to_hugeint, duckdb_param_logical_type, duckdb_query_arrow, duckdb_value_float, duckdb_append_varchar, duckdb_append_double, duckdb_add_scalar_function_to_set, duckdb_clear_bindings, duckdb_appender_end_row, duckdb_get_uint32, duckdb_create_varchar, duckdb_get_bool, duckdb_create_uint32, duckdb_bind_hugeint, duckdb_get_float, duckdb_string_t, duckdb_append_default_to_chunk, duckdb_validity_set_row_valid, duckdb_execute_tasks_state, duckdb_bind_varchar_length, duckdb_append_uint32, duckdb_bind_uhugeint, duckdb_table_function_set_init, duckdb_cast_function_set_row_error, duckdb_scalar_function_set_bind, duckdb_profiling_info_get_value, duckdb_prepare, duckdb_create_interval, duckdb_parameter_name, duckdb_function_info, duckdb_register_cast_function, duckdb_bind_timestamp, duckdb_get_time_tz, duckdb_table_function_set_function, duckdb_append_value, duckdb_value_int64, duckdb_create_timestamp, duckdb_value_date, duckdb_append_date, duckdb_create_decimal, duckdb_config_count, duckdb_add_aggregate_function_to_set, duckdb_string, duckdb_bind_null, duckdb_arrow_schema, duckdb_cast_mode, duckdb_validity_set_row_validity, duckdb_aggregate_function_set_functions, duckdb_append_uint16, duckdb_aggregate_update_t, duckdb_result_chunk_count, duckdb_aggregate_finalize_t, duckdb_create_uhugeint, duckdb_query_arrow_array, duckdb_function_get_init_data, duckdb_error_type, duckdb_create_aggregate_function_set, duckdb_aggregate_function_add_parameter, duckdb_query_arrow_error, duckdb_append_uint64, duckdb_from_timestamp, duckdb_value_int32, duckdb_bind_decimal, duckdb_create_table_function, duckdb_time_tz, duckdb_get_varint, duckdb_replacement_scan_info, duckdb_create_scalar_function, duckdb_create_varchar_length, duckdb_get_int32, duckdb_destroy_cast_function, duckdb_appender_begin_row, duckdb_bind_get_parameter, duckdb_pending_execute_check_state, duckdb_interval, duckdb_create_cast_function, duckdb_create_timestamp_tz, duckdb_prepare_error, duckdb_scalar_function_set_special_handling, duckdb_data_chunk, duckdb_destroy_scalar_function_set, duckdb_init_info, duckdb_appender_column_type, duckdb_bind_info, duckdb_cast_function_t, duckdb_value_interval, duckdb_connection, duckdb_append_null, duckdb_is_finite_timestamp_ms, duckdb_bind_value, duckdb_malloc, duckdb_appender_flush, duckdb_arrow_array, duckdb_appender_destroy, duckdb_get_table_names, duckdb_arrow, duckdb_create_enum_value, duckdb_hugeint_to_double, duckdb_table_description, duckdb_bind_interval, duckdb_function_get_extra_info, duckdb_table_description_error, duckdb_appender, duckdb_query_arrow_schema, duckdb_bind_int32, duckdb_column_logical_type, duckdb_varint, duckdb_double_to_uhugeint, duckdb_init_set_max_threads, duckdb_date_struct, duckdb_aggregate_function_set, duckdb_append_float, duckdb_prepared_statement, duckdb_destroy_task_state, duckdb_is_finite_timestamp_s, duckdb_get_int8, duckdb_append_hugeint, duckdb_value_decimal, duckdb_get_uhugeint, duckdb_pending_execution_is_finished, duckdb_is_finite_date, duckdb_cast_function_set_target_type, duckdb_finish_execution, duckdb_value_string, duckdb_bind_set_bind_data, duckdb_timestamp_ns, duckdb_vector, duckdb_create_task_state, duckdb_connection_get_client_context, duckdb_append_blob, duckdb_stream_fetch_chunk, duckdb_create_bool, duckdb_bind_double, duckdb_value_uint64, duckdb_create_null_value, duckdb_bind_varchar, duckdb_arrow_scan, duckdb_get_enum_value, duckdb_create_map_value, duckdb_timestamp_ms, duckdb_to_date, duckdb_result, duckdb_result_error_type, duckdb_uhugeint, duckdb_arrow_array_scan, duckdb_vector_size, DuckDBType, duckdb_cast_function_get_cast_mode, duckdb_extract_statements_error, duckdb_get_map_value, duckdb_value_double, duckdb_value_hugeint, duckdb_replacement_scan_set_function_name, duckdb_delete_callback_t, duckdb_register_table_function, duckdb_create_timestamp_ms, duckdb_result_arrow_array, duckdb_create_int8, duckdb_timestamp, duckdb_create_time, duckdb_free, duckdb_destroy_scalar_function, duckdb_scalar_function_set_name, duckdb_arrow_rows_changed, duckdb_date, duckdb_cast_function, duckdb_prepared_statement_type, duckdb_create_int32, duckdb_value_int16, duckdb_task_state_is_finished, duckdb_prepared_arrow_schema, duckdb_destroy_arrow, duckdb_execute_prepared_arrow, duckdb_scalar_function_bind_set_error, duckdb_open, duckdb_bind_get_extra_info, duckdb_aggregate_function_set_return_type, duckdb_get_varchar, duckdb_bit, duckdb_bind_set_error, duckdb_create_array_value, duckdb_get_map_key, duckdb_cast_function_set_function, duckdb_get_time, duckdb_statement_type, duckdb_string_t_length, duckdb_init_get_bind_data, duckdb_create_int16, duckdb_aggregate_init_t, duckdb_value_blob, duckdb_scalar_function_set_varargs, duckdb_get_int64, duckdb_append_int32, duckdb_column_count, duckdb_get_profiling_info, duckdb_scalar_function_get_client_context, duckdb_extract_statements, duckdb_get_decimal, duckdb_function_get_bind_data, duckdb_appender_clear_columns, duckdb_result_get_chunk, duckdb_create_struct_value, duckdb_appender_close, duckdb_aggregate_function_get_extra_info, duckdb_from_time, duckdb_pending_result, duckdb_is_finite_timestamp, duckdb_create_scalar_function_set, duckdb_validity_row_is_valid, duckdb_append_data_chunk, duckdb_bind_int16, duckdb_destroy_client_context, duckdb_result_return_type, duckdb_column_has_default, duckdb_pending_prepared, sel_t, duckdb_appender_create_ext, duckdb_execute_n_tasks_state, duckdb_value_uint32, duckdb_aggregate_function_set_name, duckdb_table_description_get_column_name, duckdb_pending_execute_task, duckdb_replacement_scan_set_error, duckdb_destroy_instance_cache, duckdb_nullmask_data, duckdb_database, duckdb_function_set_error, duckdb_create_varint, duckdb_destroy_arrow_stream, duckdb_create_aggregate_function, duckdb_value_is_null, duckdb_value_varchar, duckdb_create_time_tz, duckdb_append_bool, duckdb_get_bit, duckdb_destroy_config, duckdb_selection_vector_get_data_ptr, duckdb_get_config_flag, duckdb_result_is_streaming, duckdb_instance_cache, duckdb_bind_parameter_index, duckdb_query_progress, duckdb_cast_function_set_extra_info, duckdb_get_timestamp, duckdb_close, duckdb_create_double, duckdb_query, duckdb_create_date, duckdb_get_list_size, duckdb_selection_vector, duckdb_register_scalar_function, duckdb_double_to_decimal, duckdb_create_blob, duckdb_appender_add_column, duckdb_destroy_pending, duckdb_aggregate_function, duckdb_execute_prepared_streaming, duckdb_create_timestamp_ns, duckdb_scalar_function_set_return_type, duckdb_column_data, duckdb_time_tz_struct, duckdb_get_map_size, duckdb_rows_changed, duckdb_param_type, duckdb_result_statement_type, duckdb_arrow_column_count, duckdb_type, duckdb_client_context_get_connection_id, duckdb_scalar_function, duckdb_client_context, duckdb_scalar_function_t, duckdb_get_interval, duckdb_set_config, duckdb_aggregate_destroy_t, duckdb_get_timestamp_ms, duckdb_timestamp_struct, duckdb_get_timestamp_ns, duckdb_append_int8, duckdb_bind_date, duckdb_create_int64, duckdb_get_list_child, duckdb_nparams, duckdb_value_string_internal, duckdb_time_struct, duckdb_get_uint16, duckdb_prepare_extracted_statement, duckdb_aggregate_function_set_special_handling, duckdb_append_int64, duckdb_fetch_chunk, duckdb_bind_get_named_parameter, duckdb_execute_tasks, duckdb_value_boolean, duckdb_timestamp_s, duckdb_create_list_value, duckdb_get_value_type, duckdb_create_uint8, duckdb_get_uint64, duckdb_init_get_column_count, duckdb_blob, duckdb_add_replacement_scan, duckdb_bind_int64, duckdb_append_varchar_length, duckdb_function_get_local_init_data, duckdb_bind_uint64, duckdb_append_uint8, duckdb_bind_add_result_column, duckdb_value_timestamp, duckdb_get_blob, duckdb_cast_function_set_source_type, duckdb_value_uint8, duckdb_get_struct_child, duckdb_table_function_add_named_parameter, duckdb_create_time_tz_value, duckdb_create_bit, duckdb_value_int8, duckdb_table_function_set_extra_info, duckdb_aggregate_function_set_error, duckdb_bind_set_cardinality, duckdb_table_function_set_name, duckdb_is_null_value, duckdb_appender_error, duckdb_get_timestamp_tz, duckdb_table_description_destroy, duckdb_task_state, duckdb_append_time, duckdb_bind_get_parameter_count, duckdb_profiling_info_get_metrics, duckdb_get_double, duckdb_bind_uint32, duckdb_execute_pending, duckdb_scalar_function_set, duckdb_execute_prepared, duckdb_pending_prepared_streaming, duckdb_create_float, duckdb_scalar_function_set_volatile, duckdb_cast_function_get_extra_info, duckdb_decimal_to_double, duckdb_create_config, duckdb_connect, idx_t, duckdb_table_function_add_parameter, duckdb_result_type, duckdb_destroy_prepare, duckdb_create_uuid, duckdb_time