duckdb 0.9.3-dev0.0 → 0.9.3-dev12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/binding.gyp +32 -7
- package/package.json +1 -1
- package/src/connection.cpp +6 -6
- package/src/database.cpp +11 -10
- package/src/duckdb/extension/icu/icu-datefunc.cpp +22 -10
- package/src/duckdb/extension/icu/icu-datepart.cpp +42 -22
- package/src/duckdb/extension/icu/icu-datetrunc.cpp +40 -7
- package/src/duckdb/extension/icu/icu-strptime.cpp +14 -8
- package/src/duckdb/extension/icu/icu-table-range.cpp +1 -1
- package/src/duckdb/extension/icu/icu-timezone.cpp +43 -16
- package/src/duckdb/extension/icu/icu_extension.cpp +1 -1
- package/src/duckdb/extension/icu/include/icu-datefunc.hpp +3 -0
- package/src/duckdb/extension/icu/third_party/icu/stubdata/stubdata.cpp +1 -1
- package/src/duckdb/extension/json/buffered_json_reader.cpp +78 -62
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +11 -7
- package/src/duckdb/extension/json/include/json_common.hpp +0 -14
- package/src/duckdb/extension/json/include/json_deserializer.hpp +1 -0
- package/src/duckdb/extension/json/include/json_functions.hpp +1 -0
- package/src/duckdb/extension/json/include/json_scan.hpp +19 -5
- package/src/duckdb/extension/json/include/json_serializer.hpp +2 -1
- package/src/duckdb/extension/json/include/json_structure.hpp +12 -10
- package/src/duckdb/extension/json/json_common.cpp +1 -0
- package/src/duckdb/extension/json/json_deserializer.cpp +13 -0
- package/src/duckdb/extension/json/json_extension.cpp +3 -3
- package/src/duckdb/extension/json/json_functions/copy_json.cpp +8 -4
- package/src/duckdb/extension/json/json_functions/json_array_length.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_contains.cpp +3 -3
- package/src/duckdb/extension/json/json_functions/json_create.cpp +53 -8
- package/src/duckdb/extension/json/json_functions/json_extract.cpp +10 -6
- package/src/duckdb/extension/json/json_functions/json_keys.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +2 -3
- package/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp +210 -0
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +22 -19
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +71 -43
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +105 -8
- package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_valid.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/read_json.cpp +43 -18
- package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +1 -1
- package/src/duckdb/extension/json/json_functions.cpp +9 -5
- package/src/duckdb/extension/json/json_scan.cpp +147 -125
- package/src/duckdb/extension/json/json_serializer.cpp +9 -0
- package/src/duckdb/extension/json/serialize_json.cpp +6 -0
- package/src/duckdb/extension/parquet/column_reader.cpp +53 -18
- package/src/duckdb/extension/parquet/column_writer.cpp +29 -6
- package/src/duckdb/extension/parquet/include/column_reader.hpp +0 -1
- package/src/duckdb/extension/parquet/include/decode_utils.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_crypto.hpp +87 -0
- package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -3
- package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +16 -3
- package/src/duckdb/extension/parquet/include/parquet_metadata.hpp +10 -0
- package/src/duckdb/extension/parquet/include/parquet_reader.hpp +34 -6
- package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +3 -2
- package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +2 -0
- package/src/duckdb/extension/parquet/include/parquet_writer.hpp +21 -1
- package/src/duckdb/extension/parquet/parquet_crypto.cpp +370 -0
- package/src/duckdb/extension/parquet/parquet_extension.cpp +254 -24
- package/src/duckdb/extension/parquet/parquet_metadata.cpp +204 -16
- package/src/duckdb/extension/parquet/parquet_reader.cpp +108 -34
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +75 -30
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +15 -8
- package/src/duckdb/extension/parquet/parquet_writer.cpp +62 -10
- package/src/duckdb/extension/parquet/serialize_parquet.cpp +60 -0
- package/src/duckdb/src/catalog/catalog.cpp +23 -25
- package/src/duckdb/src/catalog/catalog_entry/column_dependency_manager.cpp +1 -0
- package/src/duckdb/src/catalog/catalog_entry/dependency/dependency_dependent_entry.cpp +31 -0
- package/src/duckdb/src/catalog/catalog_entry/dependency/dependency_entry.cpp +44 -0
- package/src/duckdb/src/catalog/catalog_entry/dependency/dependency_subject_entry.cpp +31 -0
- package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +35 -10
- package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +22 -6
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +110 -33
- package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +33 -17
- package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +16 -0
- package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +7 -6
- package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +88 -14
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +6 -15
- package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +20 -20
- package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +4 -0
- package/src/duckdb/src/catalog/catalog_entry.cpp +29 -0
- package/src/duckdb/src/catalog/catalog_set.cpp +358 -343
- package/src/duckdb/src/catalog/catalog_transaction.cpp +4 -0
- package/src/duckdb/src/catalog/default/default_functions.cpp +13 -4
- package/src/duckdb/src/catalog/default/default_schemas.cpp +5 -1
- package/src/duckdb/src/catalog/default/default_views.cpp +6 -2
- package/src/duckdb/src/catalog/dependency_catalog_set.cpp +51 -0
- package/src/duckdb/src/catalog/dependency_manager.cpp +510 -114
- package/src/duckdb/src/catalog/duck_catalog.cpp +4 -4
- package/src/duckdb/src/common/adbc/adbc.cpp +73 -53
- package/src/duckdb/src/common/adbc/driver_manager.cpp +1101 -268
- package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +20 -9
- package/src/duckdb/src/common/bind_helpers.cpp +1 -0
- package/src/duckdb/src/common/box_renderer.cpp +52 -1
- package/src/duckdb/src/common/compressed_file_system.cpp +1 -0
- package/src/duckdb/src/common/constants.cpp +0 -1
- package/src/duckdb/src/common/enum_util.cpp +522 -107
- package/src/duckdb/src/common/enums/catalog_type.cpp +64 -1
- package/src/duckdb/src/common/enums/compression_type.cpp +14 -0
- package/src/duckdb/src/common/enums/date_part_specifier.cpp +1 -0
- package/src/duckdb/src/common/enums/expression_type.cpp +4 -0
- package/src/duckdb/src/common/enums/file_compression_type.cpp +1 -0
- package/src/duckdb/src/common/enums/join_type.cpp +33 -0
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +5 -3
- package/src/duckdb/src/common/enums/optimizer_type.cpp +9 -1
- package/src/duckdb/src/common/enums/physical_operator_type.cpp +8 -4
- package/src/duckdb/src/common/enums/statement_type.cpp +2 -2
- package/src/duckdb/src/common/error_data.cpp +113 -0
- package/src/duckdb/src/common/exception/binder_exception.cpp +47 -0
- package/src/duckdb/src/common/exception/catalog_exception.cpp +55 -0
- package/src/duckdb/src/common/exception/parser_exception.cpp +19 -0
- package/src/duckdb/src/common/exception.cpp +110 -121
- package/src/duckdb/src/common/exception_format_value.cpp +9 -1
- package/src/duckdb/src/common/extra_type_info.cpp +48 -0
- package/src/duckdb/src/common/file_system.cpp +12 -7
- package/src/duckdb/src/common/gzip_file_system.cpp +18 -18
- package/src/duckdb/src/common/hive_partitioning.cpp +5 -1
- package/src/duckdb/src/common/http_state.cpp +20 -3
- package/src/duckdb/src/common/local_file_system.cpp +214 -15
- package/src/duckdb/src/common/multi_file_reader.cpp +20 -7
- package/src/duckdb/src/common/operator/cast_operators.cpp +397 -414
- package/src/duckdb/src/common/operator/convert_to_string.cpp +4 -0
- package/src/duckdb/src/common/operator/string_cast.cpp +5 -0
- package/src/duckdb/src/common/progress_bar/progress_bar.cpp +61 -12
- package/src/duckdb/src/common/progress_bar/terminal_progress_bar_display.cpp +13 -4
- package/src/duckdb/src/common/radix_partitioning.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_aggregate.cpp +2 -1
- package/src/duckdb/src/common/row_operations/row_gather.cpp +7 -1
- package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +78 -12
- package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +222 -61
- package/src/duckdb/src/common/row_operations/row_matcher.cpp +6 -1
- package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +51 -0
- package/src/duckdb/src/common/row_operations/row_scatter.cpp +8 -1
- package/src/duckdb/src/common/serializer/binary_deserializer.cpp +6 -0
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +5 -0
- package/src/duckdb/src/common/serializer/serializer.cpp +19 -0
- package/src/duckdb/src/common/sort/comparators.cpp +126 -0
- package/src/duckdb/src/common/sort/partition_state.cpp +17 -17
- package/src/duckdb/src/common/sort/radix_sort.cpp +2 -1
- package/src/duckdb/src/common/sort/sort_state.cpp +10 -5
- package/src/duckdb/src/common/sort/sorted_block.cpp +7 -6
- package/src/duckdb/src/common/string_util.cpp +302 -24
- package/src/duckdb/src/common/tree_renderer.cpp +8 -6
- package/src/duckdb/src/common/types/cast_helpers.cpp +6 -0
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +1 -1
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +58 -0
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +8 -1
- package/src/duckdb/src/common/types/data_chunk.cpp +9 -0
- package/src/duckdb/src/common/types/date.cpp +2 -2
- package/src/duckdb/src/common/types/hash.cpp +9 -1
- package/src/duckdb/src/common/types/hugeint.cpp +229 -51
- package/src/duckdb/src/common/types/hyperloglog.cpp +10 -3
- package/src/duckdb/src/common/types/interval.cpp +67 -12
- package/src/duckdb/src/common/types/list_segment.cpp +98 -4
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +11 -1
- package/src/duckdb/src/common/types/row/row_data_collection.cpp +1 -1
- package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +2 -2
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +3 -2
- package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +63 -3
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +331 -127
- package/src/duckdb/src/common/types/time.cpp +47 -75
- package/src/duckdb/src/common/types/timestamp.cpp +16 -3
- package/src/duckdb/src/common/types/uhugeint.cpp +746 -0
- package/src/duckdb/src/common/types/validity_mask.cpp +6 -2
- package/src/duckdb/src/common/types/value.cpp +183 -27
- package/src/duckdb/src/common/types/vector.cpp +331 -30
- package/src/duckdb/src/common/types/vector_buffer.cpp +29 -1
- package/src/duckdb/src/common/types/vector_cache.cpp +22 -1
- package/src/duckdb/src/common/types.cpp +606 -90
- package/src/duckdb/src/common/value_operations/comparison_operations.cpp +21 -1
- package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +5 -0
- package/src/duckdb/src/common/vector_operations/generators.cpp +2 -2
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +131 -2
- package/src/duckdb/src/common/vector_operations/vector_copy.cpp +26 -4
- package/src/duckdb/src/common/vector_operations/vector_hash.cpp +41 -0
- package/src/duckdb/src/common/vector_operations/vector_storage.cpp +7 -0
- package/src/duckdb/src/common/virtual_file_system.cpp +0 -1
- package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +2 -1
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +144 -56
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +2 -0
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +27 -0
- package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +4 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +25 -5
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +100 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -1
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +9 -1
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +83 -52
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +485 -289
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +34 -37
- package/src/duckdb/src/core_functions/function_list.cpp +30 -1
- package/src/duckdb/src/core_functions/lambda_functions.cpp +416 -0
- package/src/duckdb/src/core_functions/scalar/array/array_functions.cpp +294 -0
- package/src/duckdb/src/core_functions/scalar/array/array_value.cpp +87 -0
- package/src/duckdb/src/core_functions/scalar/blob/create_sort_key.cpp +686 -0
- package/src/duckdb/src/core_functions/scalar/blob/encode.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/date/current.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +295 -20
- package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +8 -7
- package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +84 -23
- package/src/duckdb/src/core_functions/scalar/generic/error.cpp +4 -4
- package/src/duckdb/src/core_functions/scalar/generic/least.cpp +7 -8
- package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +17 -6
- package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +8 -0
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +28 -14
- package/src/duckdb/src/core_functions/scalar/list/list_filter.cpp +49 -0
- package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +230 -0
- package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +85 -16
- package/src/duckdb/src/core_functions/scalar/list/list_transform.cpp +41 -0
- package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +21 -2
- package/src/duckdb/src/core_functions/scalar/map/map.cpp +6 -5
- package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/map/map_from_entries.cpp +1 -2
- package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +24 -4
- package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +6 -0
- package/src/duckdb/src/core_functions/scalar/random/random.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/random/setseed.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/secret/which_secret.cpp +28 -0
- package/src/duckdb/src/core_functions/scalar/string/bar.cpp +9 -4
- package/src/duckdb/src/core_functions/scalar/string/format_bytes.cpp +7 -2
- package/src/duckdb/src/core_functions/scalar/string/hex.cpp +63 -4
- package/src/duckdb/src/core_functions/scalar/string/pad.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/string/parse_path.cpp +348 -0
- package/src/duckdb/src/core_functions/scalar/string/regexp_escape.cpp +22 -0
- package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +6 -5
- package/src/duckdb/src/core_functions/scalar/struct/struct_insert.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/struct/struct_pack.cpp +1 -1
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +9 -2
- package/src/duckdb/src/execution/column_binding_resolver.cpp +44 -10
- package/src/duckdb/src/execution/expression_executor/execute_between.cpp +4 -0
- package/src/duckdb/src/execution/expression_executor/execute_case.cpp +4 -0
- package/src/duckdb/src/execution/expression_executor/execute_comparison.cpp +4 -0
- package/src/duckdb/src/execution/expression_executor.cpp +2 -1
- package/src/duckdb/src/execution/index/art/art.cpp +202 -53
- package/src/duckdb/src/execution/index/art/art_key.cpp +20 -27
- package/src/duckdb/src/execution/index/fixed_size_allocator.cpp +52 -17
- package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +14 -8
- package/src/duckdb/src/execution/index/index_type_set.cpp +32 -0
- package/src/duckdb/src/execution/index/unknown_index.cpp +65 -0
- package/src/duckdb/src/execution/join_hashtable.cpp +151 -174
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -0
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +4 -0
- package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +2 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +82 -36
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +58 -32
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +35 -19
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +90 -0
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +124 -0
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +97 -0
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +71 -0
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +98 -0
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/scanner_boundary.cpp +105 -0
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/skip_scanner.cpp +63 -0
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +1091 -0
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +124 -26
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +117 -129
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +46 -22
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +83 -199
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +21 -122
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +18 -17
- package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine.cpp +22 -0
- package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +201 -0
- package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +221 -0
- package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +204 -0
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +186 -0
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +532 -0
- package/src/duckdb/src/execution/operator/helper/physical_buffered_collector.cpp +85 -0
- package/src/duckdb/src/execution/operator/helper/physical_create_secret.cpp +21 -0
- package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +1 -1
- package/src/duckdb/src/execution/operator/helper/physical_pragma.cpp +2 -2
- package/src/duckdb/src/execution/operator/helper/physical_reservoir_sample.cpp +34 -9
- package/src/duckdb/src/execution/operator/helper/physical_result_collector.cpp +10 -0
- package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +1 -0
- package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +25 -10
- package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +7 -8
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +5 -2
- package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +5 -127
- package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +221 -61
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +18 -21
- package/src/duckdb/src/execution/operator/join/physical_join.cpp +10 -5
- package/src/duckdb/src/execution/operator/join/physical_left_delim_join.cpp +137 -0
- package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +11 -4
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +19 -4
- package/src/duckdb/src/execution/operator/join/physical_right_delim_join.cpp +121 -0
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +3 -2
- package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +59 -0
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +132 -92
- package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +54 -54
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +4 -0
- package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +21 -3
- package/src/duckdb/src/execution/operator/schema/physical_alter.cpp +1 -0
- package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +61 -43
- package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +15 -13
- package/src/duckdb/src/execution/operator/schema/physical_create_schema.cpp +1 -0
- package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +10 -0
- package/src/duckdb/src/execution/operator/set/physical_cte.cpp +44 -90
- package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +3 -0
- package/src/duckdb/src/execution/operator/set/physical_union.cpp +8 -4
- package/src/duckdb/src/execution/physical_operator.cpp +3 -1
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +30 -143
- package/src/duckdb/src/execution/physical_plan/plan_copy_database.cpp +12 -0
- package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +11 -4
- package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +8 -8
- package/src/duckdb/src/execution/physical_plan/plan_create_secret.cpp +11 -0
- package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +9 -8
- package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +5 -3
- package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +15 -6
- package/src/duckdb/src/execution/physical_plan/plan_positional_join.cpp +1 -0
- package/src/duckdb/src/execution/physical_plan/plan_pragma.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +3 -1
- package/src/duckdb/src/execution/physical_plan/plan_set_operation.cpp +90 -12
- package/src/duckdb/src/execution/physical_plan/plan_window.cpp +67 -22
- package/src/duckdb/src/execution/physical_plan_generator.cpp +6 -3
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +163 -32
- package/src/duckdb/src/execution/reservoir_sample.cpp +112 -32
- package/src/duckdb/src/execution/window_executor.cpp +291 -26
- package/src/duckdb/src/execution/window_segment_tree.cpp +958 -114
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +18 -16
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +11 -4
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +303 -131
- package/src/duckdb/src/function/cast/array_casts.cpp +226 -0
- package/src/duckdb/src/function/cast/bit_cast.cpp +2 -0
- package/src/duckdb/src/function/cast/cast_function_set.cpp +13 -2
- package/src/duckdb/src/function/cast/decimal_cast.cpp +2 -0
- package/src/duckdb/src/function/cast/default_casts.cpp +4 -1
- package/src/duckdb/src/function/cast/list_casts.cpp +151 -6
- package/src/duckdb/src/function/cast/numeric_casts.cpp +4 -0
- package/src/duckdb/src/function/cast/string_cast.cpp +95 -5
- package/src/duckdb/src/function/cast/struct_cast.cpp +53 -19
- package/src/duckdb/src/function/cast/time_casts.cpp +23 -1
- package/src/duckdb/src/function/cast/union/from_struct.cpp +1 -0
- package/src/duckdb/src/function/cast/union_casts.cpp +4 -3
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +8 -4
- package/src/duckdb/src/function/cast_rules.cpp +197 -31
- package/src/duckdb/src/function/compression_config.cpp +4 -0
- package/src/duckdb/src/function/function.cpp +15 -9
- package/src/duckdb/src/function/function_binder.cpp +80 -29
- package/src/duckdb/src/function/function_set.cpp +6 -6
- package/src/duckdb/src/function/pragma/pragma_functions.cpp +10 -8
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +34 -38
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +12 -0
- package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +10 -1
- package/src/duckdb/src/function/scalar/list/list_concat.cpp +11 -1
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +14 -3
- package/src/duckdb/src/function/scalar/list/list_resize.cpp +4 -0
- package/src/duckdb/src/function/scalar/list/list_select.cpp +176 -0
- package/src/duckdb/src/function/scalar/list/list_zip.cpp +165 -0
- package/src/duckdb/src/function/scalar/nested_functions.cpp +33 -0
- package/src/duckdb/src/function/scalar/operators/add.cpp +53 -6
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +48 -14
- package/src/duckdb/src/function/scalar/operators/multiply.cpp +9 -1
- package/src/duckdb/src/function/scalar/operators/subtract.cpp +19 -4
- package/src/duckdb/src/function/scalar/sequence/nextval.cpp +28 -55
- package/src/duckdb/src/function/scalar/strftime_format.cpp +242 -19
- package/src/duckdb/src/function/scalar/string/caseconvert.cpp +2 -2
- package/src/duckdb/src/function/scalar/string/concat.cpp +16 -6
- package/src/duckdb/src/function/scalar/string/length.cpp +124 -24
- package/src/duckdb/src/function/scalar/string/regexp.cpp +27 -27
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +64 -15
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +4 -3
- package/src/duckdb/src/function/scalar_function.cpp +8 -7
- package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +12 -0
- package/src/duckdb/src/function/table/arrow.cpp +20 -27
- package/src/duckdb/src/function/table/arrow_conversion.cpp +433 -150
- package/src/duckdb/src/function/table/copy_csv.cpp +62 -62
- package/src/duckdb/src/function/table/range.cpp +6 -3
- package/src/duckdb/src/function/table/read_csv.cpp +107 -759
- package/src/duckdb/src/function/table/read_file.cpp +242 -0
- package/src/duckdb/src/function/table/sniff_csv.cpp +275 -0
- package/src/duckdb/src/function/table/system/duckdb_columns.cpp +15 -3
- package/src/duckdb/src/function/table/system/duckdb_databases.cpp +5 -0
- package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +9 -13
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +67 -14
- package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +12 -15
- package/src/duckdb/src/function/table/system/duckdb_memory.cpp +63 -0
- package/src/duckdb/src/function/table/system/duckdb_optimizers.cpp +57 -0
- package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +5 -0
- package/src/duckdb/src/function/table/system/duckdb_secrets.cpp +128 -0
- package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +12 -6
- package/src/duckdb/src/function/table/system/duckdb_settings.cpp +0 -1
- package/src/duckdb/src/function/table/system/duckdb_tables.cpp +5 -0
- package/src/duckdb/src/function/table/system/duckdb_types.cpp +6 -0
- package/src/duckdb/src/function/table/system/duckdb_views.cpp +5 -0
- package/src/duckdb/src/function/table/system/pragma_table_info.cpp +166 -64
- package/src/duckdb/src/function/table/system/test_all_types.cpp +2 -1
- package/src/duckdb/src/function/table/system_functions.cpp +3 -2
- package/src/duckdb/src/function/table/table_scan.cpp +50 -110
- package/src/duckdb/src/function/table/version/pragma_version.cpp +4 -44
- package/src/duckdb/src/function/table_function.cpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +4 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/dependency/dependency_dependent_entry.hpp +27 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/dependency/dependency_entry.hpp +66 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/dependency/dependency_subject_entry.hpp +27 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +25 -5
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +3 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +19 -5
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/scalar_macro_catalog_entry.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +26 -11
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +1 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_macro_catalog_entry.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +1 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +15 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +41 -49
- package/src/duckdb/src/include/duckdb/catalog/catalog_transaction.hpp +1 -0
- package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +3 -1
- package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +120 -8
- package/src/duckdb/src/include/duckdb/catalog/dependency_catalog_set.hpp +32 -0
- package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +92 -12
- package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/adbc/adbc-init.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/adbc/adbc.h +1153 -12
- package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +6 -6
- package/src/duckdb/src/include/duckdb/common/adbc/driver_manager.h +0 -2
- package/src/duckdb/src/include/duckdb/common/adbc/options.h +64 -0
- package/src/duckdb/src/include/duckdb/common/adbc/single_batch_array_stream.hpp +8 -0
- package/src/duckdb/src/include/duckdb/common/arrow/arrow.hpp +25 -6
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +30 -0
- package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +6 -6
- package/src/duckdb/src/include/duckdb/common/case_insensitive_map.hpp +10 -0
- package/src/duckdb/src/include/duckdb/common/constants.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +75 -19
- package/src/duckdb/src/include/duckdb/common/enums/catalog_type.hpp +11 -1
- package/src/duckdb/src/include/duckdb/common/enums/compression_type.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/index_constraint_type.hpp +35 -0
- package/src/duckdb/src/include/duckdb/common/enums/join_type.hpp +16 -3
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +6 -5
- package/src/duckdb/src/include/duckdb/common/enums/memory_tag.hpp +32 -0
- package/src/duckdb/src/include/duckdb/common/enums/on_create_conflict.hpp +26 -0
- package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/pending_execution_result.hpp +7 -1
- package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +9 -3
- package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +6 -5
- package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +3 -2
- package/src/duckdb/src/include/duckdb/common/enums/wal_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/error_data.hpp +72 -0
- package/src/duckdb/src/include/duckdb/common/exception/binder_exception.hpp +47 -0
- package/src/duckdb/src/include/duckdb/common/exception/catalog_exception.hpp +39 -0
- package/src/duckdb/src/include/duckdb/common/exception/conversion_exception.hpp +27 -0
- package/src/duckdb/src/include/duckdb/common/exception/http_exception.hpp +62 -0
- package/src/duckdb/src/include/duckdb/common/exception/list.hpp +6 -0
- package/src/duckdb/src/include/duckdb/common/exception/parser_exception.hpp +29 -0
- package/src/duckdb/src/include/duckdb/common/exception/transaction_exception.hpp +25 -0
- package/src/duckdb/src/include/duckdb/common/exception.hpp +52 -166
- package/src/duckdb/src/include/duckdb/common/exception_format_value.hpp +7 -4
- package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +53 -1
- package/src/duckdb/src/include/duckdb/common/helper.hpp +13 -3
- package/src/duckdb/src/include/duckdb/common/http_state.hpp +18 -4
- package/src/duckdb/src/include/duckdb/common/hugeint.hpp +5 -1
- package/src/duckdb/src/include/duckdb/common/limits.hpp +19 -1
- package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +7 -2
- package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +16 -3
- package/src/duckdb/src/include/duckdb/common/operator/add.hpp +13 -2
- package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +114 -5
- package/src/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp +0 -4
- package/src/duckdb/src/include/duckdb/common/operator/convert_to_string.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +29 -0
- package/src/duckdb/src/include/duckdb/common/operator/double_cast_operator.hpp +52 -0
- package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +459 -0
- package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +136 -0
- package/src/duckdb/src/include/duckdb/common/operator/string_cast.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/operator/subtract.hpp +7 -1
- package/src/duckdb/src/include/duckdb/common/optional_idx.hpp +7 -5
- package/src/duckdb/src/include/duckdb/common/platform.h +53 -0
- package/src/duckdb/src/include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp +5 -5
- package/src/duckdb/src/include/duckdb/common/progress_bar/progress_bar.hpp +22 -6
- package/src/duckdb/src/include/duckdb/common/radix.hpp +6 -0
- package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +20 -6
- package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +43 -4
- package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +15 -0
- package/src/duckdb/src/include/duckdb/common/sort/comparators.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +12 -2
- package/src/duckdb/src/include/duckdb/common/sort/sort.hpp +81 -0
- package/src/duckdb/src/include/duckdb/common/sort/sorted_block.hpp +0 -78
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +23 -1
- package/src/duckdb/src/include/duckdb/common/type_util.hpp +5 -1
- package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +26 -3
- package/src/duckdb/src/include/duckdb/common/types/conflict_manager.hpp +8 -0
- package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/date.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +5 -3
- package/src/duckdb/src/include/duckdb/common/types/hash.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/hugeint.hpp +81 -15
- package/src/duckdb/src/include/duckdb/common/types/interval.hpp +57 -29
- package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +26 -22
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +7 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +7 -5
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +6 -2
- package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/uhugeint.hpp +216 -0
- package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +18 -10
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +31 -0
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +18 -2
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +22 -1
- package/src/duckdb/src/include/duckdb/common/types.hpp +151 -49
- package/src/duckdb/src/include/duckdb/common/uhugeint.hpp +81 -0
- package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +70 -6
- package/src/duckdb/src/include/duckdb/common/vector_size.hpp +6 -6
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +29 -2
- package/src/duckdb/src/include/duckdb/core_functions/lambda_functions.hpp +131 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/array_functions.hpp +69 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +9 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +40 -4
- package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +42 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/secret_functions.hpp +27 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +56 -2
- package/src/duckdb/src/include/duckdb/core_functions/to_interval.hpp +29 -0
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/executor.hpp +11 -13
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +34 -19
- package/src/duckdb/src/include/duckdb/execution/index/fixed_size_allocator.hpp +18 -14
- package/src/duckdb/src/include/duckdb/execution/index/fixed_size_buffer.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/index/index_type.hpp +57 -0
- package/src/duckdb/src/include/duckdb/execution/index/index_type_set.hpp +29 -0
- package/src/duckdb/src/include/duckdb/execution/index/unknown_index.hpp +65 -0
- package/src/duckdb/src/include/duckdb/execution/join_hashtable.hpp +35 -24
- package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +630 -0
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +3 -2
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_buffer.hpp +103 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.hpp +74 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/buffer_manager/csv_file_handle.hpp +60 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/csv_option.hpp +155 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/csv_reader_options.hpp +163 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/options/state_machine_options.hpp +35 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/base_scanner.hpp +228 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/column_count_scanner.hpp +70 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/scanner_boundary.hpp +93 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/skip_scanner.hpp +60 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner/string_value_scanner.hpp +197 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/csv_sniffer.hpp +189 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/sniffer/quote_rules.hpp +21 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state.hpp +30 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state_machine.hpp +99 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.hpp +87 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/table_function/csv_file_scanner.hpp +70 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/table_function/global_csv_state.hpp +80 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/util/csv_casting.hpp +137 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/util/csv_error.hpp +104 -0
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +0 -4
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_buffered_collector.hpp +37 -0
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_create_secret.hpp +38 -0
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_pragma.hpp +4 -7
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reservoir_sample.hpp +6 -2
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +1 -2
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +5 -18
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +14 -5
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_join.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_left_delim_join.hpp +37 -0
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +1 -2
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_right_delim_join.hpp +37 -0
- package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +0 -1
- package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +0 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_database.hpp +35 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +8 -3
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +14 -0
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +1 -4
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +0 -1
- package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +17 -12
- package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +4 -0
- package/src/duckdb/src/include/duckdb/execution/operator/set/physical_union.hpp +3 -1
- package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +6 -2
- package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +3 -1
- package/src/duckdb/src/include/duckdb/execution/reservoir_sample.hpp +32 -18
- package/src/duckdb/src/include/duckdb/execution/task_error_manager.hpp +57 -0
- package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +101 -19
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +46 -14
- package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +6 -2
- package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +26 -1
- package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +3 -0
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +7 -1
- package/src/duckdb/src/include/duckdb/function/compression/compression.hpp +10 -0
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +16 -4
- package/src/duckdb/src/include/duckdb/function/function.hpp +12 -7
- package/src/duckdb/src/include/duckdb/function/function_binder.hpp +15 -12
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -3
- package/src/duckdb/src/include/duckdb/function/macro_function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/pragma/pragma_functions.hpp +4 -1
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -0
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +21 -1
- package/src/duckdb/src/include/duckdb/function/scalar/sequence_functions.hpp +22 -0
- package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +16 -2
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +22 -8
- package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +6 -0
- package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +35 -3
- package/src/duckdb/src/include/duckdb/function/table/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/table/range.hpp +12 -0
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +14 -16
- package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +12 -8
- package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +0 -2
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -3
- package/src/duckdb/src/include/duckdb/main/appender.hpp +3 -1
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +3 -2
- package/src/duckdb/src/include/duckdb/main/buffered_data/buffered_data.hpp +89 -0
- package/src/duckdb/src/include/duckdb/main/buffered_data/simple_buffered_data.hpp +53 -0
- package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/capi/cast/generic.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/chunk_scan_state/query_result.hpp +4 -4
- package/src/duckdb/src/include/duckdb/main/chunk_scan_state.hpp +3 -3
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +8 -10
- package/src/duckdb/src/include/duckdb/main/client_context.hpp +22 -23
- package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +37 -0
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +1 -7
- package/src/duckdb/src/include/duckdb/main/config.hpp +24 -7
- package/src/duckdb/src/include/duckdb/main/connection.hpp +8 -1
- package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +17 -26
- package/src/duckdb/src/include/duckdb/main/database.hpp +4 -2
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +39 -7
- package/src/duckdb/src/include/duckdb/main/database_path_and_type.hpp +5 -4
- package/src/duckdb/src/include/duckdb/main/error_manager.hpp +4 -1
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +203 -197
- package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +42 -16
- package/src/duckdb/src/include/duckdb/main/extension_util.hpp +8 -1
- package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +5 -2
- package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +4 -4
- package/src/duckdb/src/include/duckdb/main/prepared_statement_data.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/query_profiler.hpp +0 -32
- package/src/duckdb/src/include/duckdb/main/query_result.hpp +13 -12
- package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +6 -6
- package/src/duckdb/src/include/duckdb/main/relation/setop_relation.hpp +3 -1
- package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +206 -0
- package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +211 -0
- package/src/duckdb/src/include/duckdb/main/secret/secret_storage.hpp +164 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +52 -13
- package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +9 -1
- package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +4 -1
- package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +2 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +2 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_statistics_helper.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parallel/event.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +14 -22
- package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +20 -0
- package/src/duckdb/src/include/duckdb/parallel/pipeline_executor.hpp +3 -5
- package/src/duckdb/src/include/duckdb/parallel/task.hpp +7 -0
- package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +10 -4
- package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +8 -1
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +11 -4
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +16 -9
- package/src/duckdb/src/include/duckdb/parser/expression/lambdaref_expression.hpp +47 -0
- package/src/duckdb/src/include/duckdb/parser/expression/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +29 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +47 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/bound_pragma_info.hpp +29 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_info.hpp +45 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +21 -22
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +5 -11
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +23 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_secret_info.hpp +47 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +3 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +6 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/extra_drop_info.hpp +66 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +3 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +8 -4
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +1 -3
- package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/query_error_context.hpp +5 -22
- package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/statement/copy_database_statement.hpp +40 -0
- package/src/duckdb/src/include/duckdb/parser/statement/list.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/statement/set_statement.hpp +4 -3
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/showref.hpp +47 -0
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +20 -3
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +5 -1
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +24 -27
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +4 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +4 -2
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +5 -6
- package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +11 -0
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/index_binder.hpp +3 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +65 -22
- package/src/duckdb/src/include/duckdb/planner/filter/struct_filter.hpp +41 -0
- package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_database.hpp +45 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create_secret.hpp +43 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +3 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +5 -10
- package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +11 -4
- package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +3 -3
- package/src/duckdb/src/include/duckdb/planner/pragma_handler.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/query_node/bound_set_operation_node.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_cte_scan.hpp +29 -0
- package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +9 -7
- package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_dummytableref.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +9 -5
- package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +23 -6
- package/src/duckdb/src/include/duckdb/storage/buffer/temporary_file_information.hpp +7 -0
- package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +11 -4
- package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +0 -3
- package/src/duckdb/src/include/duckdb/storage/checkpoint/string_checkpoint_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +7 -7
- package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +408 -0
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_analyze.hpp +173 -0
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +283 -0
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_constants.hpp +134 -0
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +42 -0
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_scan.hpp +244 -0
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +103 -0
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +235 -0
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +134 -0
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +301 -0
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_constants.hpp +35 -0
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +41 -0
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp +252 -0
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +7 -103
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +5 -234
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +7 -107
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +5 -184
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +12 -17
- package/src/duckdb/src/include/duckdb/storage/database_size.hpp +1 -0
- package/src/duckdb/src/include/duckdb/storage/index.hpp +40 -42
- package/src/duckdb/src/include/duckdb/storage/index_storage_info.hpp +77 -0
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +6 -2
- package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +0 -1
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +12 -6
- package/src/duckdb/src/include/duckdb/storage/segment/uncompressed.hpp +8 -3
- package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +17 -17
- package/src/duckdb/src/include/duckdb/storage/statistics/array_stats.hpp +40 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +12 -3
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats_union.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +49 -24
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +8 -4
- package/src/duckdb/src/include/duckdb/storage/table/array_column_data.hpp +67 -0
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +1 -0
- package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +1 -2
- package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +8 -3
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +4 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +7 -0
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +12 -1
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +16 -12
- package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +6 -9
- package/src/duckdb/src/include/duckdb/storage/temporary_memory_manager.hpp +119 -0
- package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +13 -55
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +1 -1
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +4 -5
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -2
- package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +6 -3
- package/src/duckdb/src/include/duckdb/transaction/transaction_context.hpp +4 -4
- package/src/duckdb/src/include/duckdb/transaction/transaction_manager.hpp +3 -3
- package/src/duckdb/src/include/duckdb/verification/fetch_row_verifier.hpp +25 -0
- package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +5 -0
- package/src/duckdb/src/include/duckdb.h +571 -143
- package/src/duckdb/src/main/appender.cpp +17 -2
- package/src/duckdb/src/main/attached_database.cpp +24 -12
- package/src/duckdb/src/main/buffered_data/simple_buffered_data.cpp +96 -0
- package/src/duckdb/src/main/capi/appender-c.cpp +42 -3
- package/src/duckdb/src/main/capi/arrow-c.cpp +32 -9
- package/src/duckdb/src/main/capi/datetime-c.cpp +22 -0
- package/src/duckdb/src/main/capi/duckdb-c.cpp +14 -4
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +66 -2
- package/src/duckdb/src/main/capi/helper-c.cpp +76 -2
- package/src/duckdb/src/main/capi/hugeint-c.cpp +23 -0
- package/src/duckdb/src/main/capi/logical_types-c.cpp +27 -3
- package/src/duckdb/src/main/capi/pending-c.cpp +43 -9
- package/src/duckdb/src/main/capi/prepared-c.cpp +38 -2
- package/src/duckdb/src/main/capi/result-c.cpp +54 -3
- package/src/duckdb/src/main/capi/table_function-c.cpp +4 -4
- package/src/duckdb/src/main/capi/value-c.cpp +10 -0
- package/src/duckdb/src/main/chunk_scan_state/query_result.cpp +3 -3
- package/src/duckdb/src/main/client_context.cpp +259 -250
- package/src/duckdb/src/main/client_data.cpp +0 -1
- package/src/duckdb/src/main/client_verify.cpp +26 -8
- package/src/duckdb/src/main/config.cpp +34 -13
- package/src/duckdb/src/main/connection.cpp +27 -6
- package/src/duckdb/src/main/connection_manager.cpp +54 -0
- package/src/duckdb/src/main/database.cpp +44 -39
- package/src/duckdb/src/main/database_manager.cpp +106 -8
- package/src/duckdb/src/main/database_path_and_type.cpp +27 -8
- package/src/duckdb/src/main/db_instance_cache.cpp +4 -4
- package/src/duckdb/src/main/error_manager.cpp +12 -3
- package/src/duckdb/src/main/extension/extension_alias.cpp +2 -2
- package/src/duckdb/src/main/extension/extension_helper.cpp +15 -16
- package/src/duckdb/src/main/extension/extension_install.cpp +33 -24
- package/src/duckdb/src/main/extension/extension_load.cpp +22 -21
- package/src/duckdb/src/main/extension/extension_util.cpp +12 -0
- package/src/duckdb/src/main/materialized_query_result.cpp +1 -1
- package/src/duckdb/src/main/pending_query_result.cpp +25 -8
- package/src/duckdb/src/main/prepared_statement.cpp +5 -5
- package/src/duckdb/src/main/prepared_statement_data.cpp +8 -1
- package/src/duckdb/src/main/query_profiler.cpp +11 -11
- package/src/duckdb/src/main/query_result.cpp +32 -6
- package/src/duckdb/src/main/relation/cross_product_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/join_relation.cpp +2 -2
- package/src/duckdb/src/main/relation/read_csv_relation.cpp +38 -32
- package/src/duckdb/src/main/relation/setop_relation.cpp +5 -3
- package/src/duckdb/src/main/relation.cpp +5 -5
- package/src/duckdb/src/main/secret/secret.cpp +135 -0
- package/src/duckdb/src/main/secret/secret_manager.cpp +634 -0
- package/src/duckdb/src/main/secret/secret_storage.cpp +233 -0
- package/src/duckdb/src/main/settings/settings.cpp +133 -38
- package/src/duckdb/src/main/stream_query_result.cpp +53 -14
- package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +6 -0
- package/src/duckdb/src/optimizer/cse_optimizer.cpp +1 -1
- package/src/duckdb/src/optimizer/deliminator.cpp +136 -14
- package/src/duckdb/src/optimizer/filter_combiner.cpp +72 -26
- package/src/duckdb/src/optimizer/filter_pushdown.cpp +3 -0
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +2 -1
- package/src/duckdb/src/optimizer/join_order/cost_model.cpp +0 -1
- package/src/duckdb/src/optimizer/join_order/join_node.cpp +4 -0
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +3 -6
- package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +20 -0
- package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +71 -40
- package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +12 -3
- package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +77 -3
- package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +7 -7
- package/src/duckdb/src/optimizer/pushdown/pushdown_semi_anti_join.cpp +56 -0
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +21 -0
- package/src/duckdb/src/optimizer/rule/date_part_simplification.cpp +2 -2
- package/src/duckdb/src/optimizer/rule/move_constants.cpp +15 -10
- package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +70 -0
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +17 -5
- package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +1 -0
- package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +1 -0
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +1 -2
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +22 -9
- package/src/duckdb/src/optimizer/statistics/operator/propagate_window.cpp +28 -4
- package/src/duckdb/src/optimizer/unnest_rewriter.cpp +12 -7
- package/src/duckdb/src/parallel/event.cpp +2 -2
- package/src/duckdb/src/parallel/executor.cpp +114 -81
- package/src/duckdb/src/parallel/executor_task.cpp +2 -4
- package/src/duckdb/src/parallel/meta_pipeline.cpp +28 -29
- package/src/duckdb/src/parallel/pipeline.cpp +41 -41
- package/src/duckdb/src/parallel/pipeline_event.cpp +2 -4
- package/src/duckdb/src/parallel/pipeline_executor.cpp +13 -75
- package/src/duckdb/src/parallel/task_scheduler.cpp +22 -13
- package/src/duckdb/src/parser/column_definition.cpp +22 -4
- package/src/duckdb/src/parser/column_list.cpp +2 -1
- package/src/duckdb/src/parser/expression/function_expression.cpp +1 -1
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +51 -0
- package/src/duckdb/src/parser/expression/lambdaref_expression.cpp +59 -0
- package/src/duckdb/src/parser/expression/window_expression.cpp +9 -1
- package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +40 -0
- package/src/duckdb/src/parser/parsed_data/attach_info.cpp +1 -0
- package/src/duckdb/src/parser/parsed_data/comment_on_info.cpp +19 -0
- package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +11 -9
- package/src/duckdb/src/parser/parsed_data/create_info.cpp +1 -0
- package/src/duckdb/src/parser/parsed_data/create_secret_info.cpp +22 -0
- package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +17 -0
- package/src/duckdb/src/parser/parsed_data/create_type_info.cpp +19 -0
- package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +13 -9
- package/src/duckdb/src/parser/parsed_data/drop_info.cpp +8 -9
- package/src/duckdb/src/parser/parsed_data/extra_drop_info.cpp +16 -0
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +3 -1
- package/src/duckdb/src/parser/parser.cpp +14 -8
- package/src/duckdb/src/parser/query_error_context.cpp +12 -13
- package/src/duckdb/src/parser/query_node/select_node.cpp +5 -1
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +8 -13
- package/src/duckdb/src/parser/statement/copy_database_statement.cpp +41 -0
- package/src/duckdb/src/parser/statement/set_statement.cpp +5 -1
- package/src/duckdb/src/parser/tableref/basetableref.cpp +1 -0
- package/src/duckdb/src/parser/tableref/showref.cpp +47 -0
- package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +6 -2
- package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +1 -0
- package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +30 -15
- package/src/duckdb/src/parser/transform/expression/transform_case.cpp +1 -0
- package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +3 -2
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +34 -4
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +26 -12
- package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +34 -5
- package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +3 -1
- package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +3 -1
- package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +3 -3
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +3 -3
- package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +13 -13
- package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +2 -0
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +1 -1
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +32 -1
- package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +1 -0
- package/src/duckdb/src/parser/transform/statement/transform_comment_on.cpp +108 -0
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +45 -37
- package/src/duckdb/src/parser/transform/statement/transform_copy_database.cpp +29 -0
- package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +5 -14
- package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +0 -1
- package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +25 -6
- package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -1
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +6 -14
- package/src/duckdb/src/parser/transform/statement/transform_secret.cpp +103 -0
- package/src/duckdb/src/parser/transform/statement/transform_select.cpp +8 -1
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +4 -8
- package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -5
- package/src/duckdb/src/parser/transform/statement/transform_show.cpp +14 -41
- package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +13 -6
- package/src/duckdb/src/parser/transform/statement/transform_use.cpp +3 -1
- package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +1 -1
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +1 -2
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +6 -5
- package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +1 -1
- package/src/duckdb/src/parser/transformer.cpp +22 -0
- package/src/duckdb/src/planner/bind_context.cpp +23 -14
- package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +15 -14
- package/src/duckdb/src/planner/binder/expression/bind_between_expression.cpp +20 -9
- package/src/duckdb/src/planner/binder/expression/bind_case_expression.cpp +12 -7
- package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +4 -4
- package/src/duckdb/src/planner/binder/expression/bind_collate_expression.cpp +3 -3
- package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +279 -195
- package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +103 -17
- package/src/duckdb/src/planner/binder/expression/bind_conjunction_expression.cpp +3 -3
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +91 -68
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +116 -84
- package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +85 -15
- package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +68 -31
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +7 -7
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +11 -7
- package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +42 -19
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +38 -16
- package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +16 -7
- package/src/duckdb/src/planner/binder/query_node/bind_recursive_cte_node.cpp +3 -0
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +83 -12
- package/src/duckdb/src/planner/binder/query_node/bind_setop_node.cpp +28 -37
- package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +3 -4
- package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +2 -2
- package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +3 -3
- package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +7 -5
- package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +10 -0
- package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +48 -50
- package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +187 -0
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +38 -22
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +8 -15
- package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +6 -1
- package/src/duckdb/src/planner/binder/statement/bind_export.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +12 -10
- package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +37 -13
- package/src/duckdb/src/planner/binder/statement/bind_set.cpp +8 -2
- package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +2 -0
- package/src/duckdb/src/planner/binder/statement/bind_summarize.cpp +29 -14
- package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +16 -6
- package/src/duckdb/src/planner/binder/tableref/bind_expressionlistref.cpp +11 -4
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_named_parameters.cpp +2 -2
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +18 -17
- package/src/duckdb/src/planner/binder/tableref/bind_showref.cpp +85 -0
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +11 -17
- package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -9
- package/src/duckdb/src/planner/binder.cpp +31 -26
- package/src/duckdb/src/planner/bound_result_modifier.cpp +24 -0
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +10 -1
- package/src/duckdb/src/planner/expression/bound_function_expression.cpp +20 -4
- package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +9 -10
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +65 -3
- package/src/duckdb/src/planner/expression.cpp +15 -5
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +5 -6
- package/src/duckdb/src/planner/expression_binder/check_binder.cpp +9 -8
- package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +10 -7
- package/src/duckdb/src/planner/expression_binder/having_binder.cpp +9 -4
- package/src/duckdb/src/planner/expression_binder/index_binder.cpp +0 -25
- package/src/duckdb/src/planner/expression_binder/order_binder.cpp +8 -11
- package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +3 -2
- package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +15 -8
- package/src/duckdb/src/planner/expression_binder/where_binder.cpp +3 -4
- package/src/duckdb/src/planner/expression_binder.cpp +51 -25
- package/src/duckdb/src/planner/expression_iterator.cpp +2 -1
- package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -0
- package/src/duckdb/src/planner/filter/struct_filter.cpp +33 -0
- package/src/duckdb/src/planner/joinside.cpp +1 -1
- package/src/duckdb/src/planner/logical_operator.cpp +2 -1
- package/src/duckdb/src/planner/operator/logical_copy_database.cpp +32 -0
- package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +13 -4
- package/src/duckdb/src/planner/operator/logical_create_table.cpp +2 -0
- package/src/duckdb/src/planner/operator/logical_get.cpp +4 -1
- package/src/duckdb/src/planner/operator/logical_join.cpp +8 -0
- package/src/duckdb/src/planner/planner.cpp +24 -23
- package/src/duckdb/src/planner/pragma_handler.cpp +10 -19
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +99 -6
- package/src/duckdb/src/planner/subquery/rewrite_cte_scan.cpp +36 -0
- package/src/duckdb/src/planner/table_binding.cpp +14 -12
- package/src/duckdb/src/storage/buffer/block_handle.cpp +12 -10
- package/src/duckdb/src/storage/buffer/block_manager.cpp +1 -1
- package/src/duckdb/src/storage/buffer/buffer_pool.cpp +25 -9
- package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +4 -3
- package/src/duckdb/src/storage/buffer_manager.cpp +14 -3
- package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +0 -8
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +15 -7
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint_manager.cpp +94 -41
- package/src/duckdb/src/storage/compression/alp/alp.cpp +57 -0
- package/src/duckdb/src/storage/compression/alp/alp_constants.cpp +13 -0
- package/src/duckdb/src/storage/compression/alprd.cpp +57 -0
- package/src/duckdb/src/storage/compression/bitpacking.cpp +86 -55
- package/src/duckdb/src/storage/compression/bitpacking_hugeint.cpp +41 -41
- package/src/duckdb/src/storage/compression/dictionary_compression.cpp +1 -3
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +2 -0
- package/src/duckdb/src/storage/compression/fsst.cpp +4 -4
- package/src/duckdb/src/storage/compression/numeric_constant.cpp +3 -0
- package/src/duckdb/src/storage/compression/rle.cpp +6 -4
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +7 -7
- package/src/duckdb/src/storage/compression/uncompressed.cpp +1 -0
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +6 -6
- package/src/duckdb/src/storage/data_table.cpp +32 -96
- package/src/duckdb/src/storage/index.cpp +23 -11
- package/src/duckdb/src/storage/local_storage.cpp +36 -19
- package/src/duckdb/src/storage/metadata/metadata_manager.cpp +2 -2
- package/src/duckdb/src/storage/partial_block_manager.cpp +1 -1
- package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +9 -4
- package/src/duckdb/src/storage/serialization/serialize_expression.cpp +3 -3
- package/src/duckdb/src/storage/serialization/serialize_extra_drop_info.cpp +42 -0
- package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +7 -17
- package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +2 -2
- package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +84 -77
- package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +63 -4
- package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +23 -0
- package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +2 -0
- package/src/duckdb/src/storage/serialization/serialize_storage.cpp +35 -0
- package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +19 -0
- package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +22 -1
- package/src/duckdb/src/storage/serialization/serialize_types.cpp +50 -0
- package/src/duckdb/src/storage/single_file_block_manager.cpp +46 -7
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +57 -28
- package/src/duckdb/src/storage/statistics/array_stats.cpp +131 -0
- package/src/duckdb/src/storage/statistics/base_statistics.cpp +62 -4
- package/src/duckdb/src/storage/statistics/column_statistics.cpp +1 -0
- package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +3 -1
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +21 -0
- package/src/duckdb/src/storage/statistics/numeric_stats_union.cpp +5 -0
- package/src/duckdb/src/storage/statistics/string_stats.cpp +2 -2
- package/src/duckdb/src/storage/storage_info.cpp +1 -1
- package/src/duckdb/src/storage/storage_manager.cpp +47 -22
- package/src/duckdb/src/storage/table/array_column_data.cpp +241 -0
- package/src/duckdb/src/storage/table/chunk_info.cpp +2 -1
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +3 -1
- package/src/duckdb/src/storage/table/column_data.cpp +41 -18
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +12 -3
- package/src/duckdb/src/storage/table/column_segment.cpp +40 -6
- package/src/duckdb/src/storage/table/list_column_data.cpp +18 -15
- package/src/duckdb/src/storage/table/row_group.cpp +73 -21
- package/src/duckdb/src/storage/table/row_group_collection.cpp +395 -20
- package/src/duckdb/src/storage/table/row_version_manager.cpp +2 -1
- package/src/duckdb/src/storage/table/scan_state.cpp +4 -0
- package/src/duckdb/src/storage/table/standard_column_data.cpp +11 -5
- package/src/duckdb/src/storage/table/struct_column_data.cpp +30 -10
- package/src/duckdb/src/storage/table/table_statistics.cpp +7 -1
- package/src/duckdb/src/storage/table/update_segment.cpp +18 -2
- package/src/duckdb/src/storage/table_index_list.cpp +73 -7
- package/src/duckdb/src/storage/temporary_memory_manager.cpp +148 -0
- package/src/duckdb/src/storage/wal_replay.cpp +329 -152
- package/src/duckdb/src/storage/write_ahead_log.cpp +157 -137
- package/src/duckdb/src/transaction/cleanup_state.cpp +3 -2
- package/src/duckdb/src/transaction/commit_state.cpp +89 -63
- package/src/duckdb/src/transaction/duck_transaction.cpp +5 -3
- package/src/duckdb/src/transaction/duck_transaction_manager.cpp +26 -54
- package/src/duckdb/src/transaction/meta_transaction.cpp +37 -23
- package/src/duckdb/src/transaction/transaction_context.cpp +23 -4
- package/src/duckdb/src/transaction/undo_buffer.cpp +16 -2
- package/src/duckdb/src/verification/fetch_row_verifier.cpp +13 -0
- package/src/duckdb/src/verification/prepared_statement_verifier.cpp +5 -7
- package/src/duckdb/src/verification/statement_verifier.cpp +6 -5
- package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +100 -29
- package/src/duckdb/third_party/fmt/include/fmt/format-inl.h +1 -1
- package/src/duckdb/third_party/fmt/include/fmt/format.h +4 -2
- package/src/duckdb/third_party/fmt/include/fmt/printf.h +5 -5
- package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +4 -0
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +82 -21
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +551 -1004
- package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +17 -3
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24861 -23465
- package/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp +420 -389
- package/src/duckdb/third_party/mbedtls/include/mbedtls/aes.h +640 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/aes_alt.h +1 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/aria.h +358 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/aria_alt.h +1 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia.h +316 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/camellia_alt.h +1 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm.h +1 -1
- package/src/duckdb/third_party/mbedtls/include/mbedtls/ccm_alt.h +1 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/chacha20.h +1 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/chachapoly.h +1 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/cipher.h +124 -124
- package/src/duckdb/third_party/mbedtls/include/mbedtls/cmac.h +1 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/entropy.h +293 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm.h +383 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/gcm_alt.h +1 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +9 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/nist_kw.h +1 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls/timing.h +1 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls_wrapper.hpp +35 -6
- package/src/duckdb/third_party/mbedtls/library/aes.cpp +2171 -0
- package/src/duckdb/third_party/mbedtls/library/aesni.h +1 -0
- package/src/duckdb/third_party/mbedtls/library/aria.cpp +1058 -0
- package/src/duckdb/third_party/mbedtls/library/camellia.cpp +1087 -0
- package/src/duckdb/third_party/mbedtls/library/cipher.cpp +1633 -0
- package/src/duckdb/third_party/mbedtls/library/cipher_wrap.cpp +2270 -0
- package/src/duckdb/third_party/mbedtls/library/cipher_wrap.h +146 -0
- package/src/duckdb/third_party/mbedtls/library/entropy.cpp +701 -0
- package/src/duckdb/third_party/mbedtls/library/entropy_poll.cpp +237 -0
- package/src/duckdb/third_party/mbedtls/library/entropy_poll.h +76 -0
- package/src/duckdb/third_party/mbedtls/library/gcm.cpp +1161 -0
- package/src/duckdb/third_party/mbedtls/library/padlock.h +1 -0
- package/src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp +132 -24
- package/src/duckdb/third_party/pcg/pcg_uint128.hpp +1 -1
- package/src/duckdb/third_party/skiplist/HeadNode.h +934 -0
- package/src/duckdb/third_party/skiplist/IntegrityEnums.h +62 -0
- package/src/duckdb/third_party/skiplist/Node.h +641 -0
- package/src/duckdb/third_party/skiplist/NodeRefs.h +251 -0
- package/src/duckdb/third_party/skiplist/RollingMedian.h +202 -0
- package/src/duckdb/third_party/skiplist/SkipList.cpp +40 -0
- package/src/duckdb/third_party/skiplist/SkipList.h +549 -0
- package/src/duckdb/third_party/thrift/thrift/thrift-config.h +1 -1
- package/src/duckdb/ub_extension_json_json_functions.cpp +2 -0
- package/src/duckdb/ub_src_catalog.cpp +3 -1
- package/src/duckdb/ub_src_catalog_catalog_entry_dependency.cpp +6 -0
- package/src/duckdb/ub_src_common.cpp +1 -1
- package/src/duckdb/ub_src_common_exception.cpp +6 -0
- package/src/duckdb/ub_src_common_types.cpp +2 -2
- package/src/duckdb/ub_src_core_functions.cpp +2 -0
- package/src/duckdb/ub_src_core_functions_scalar_array.cpp +4 -0
- package/src/duckdb/ub_src_core_functions_scalar_blob.cpp +2 -0
- package/src/duckdb/ub_src_core_functions_scalar_list.cpp +7 -3
- package/src/duckdb/ub_src_core_functions_scalar_secret.cpp +2 -0
- package/src/duckdb/ub_src_core_functions_scalar_string.cpp +4 -0
- package/src/duckdb/ub_src_execution_index.cpp +4 -0
- package/src/duckdb/ub_src_execution_operator_csv_scanner_buffer_manager.cpp +6 -0
- package/src/duckdb/ub_src_execution_operator_csv_scanner_scanner.cpp +10 -0
- package/src/duckdb/ub_src_execution_operator_csv_scanner_state_machine.cpp +4 -0
- package/src/duckdb/ub_src_execution_operator_csv_scanner_table_function.cpp +4 -0
- package/src/duckdb/ub_src_execution_operator_csv_scanner_util.cpp +4 -0
- package/src/duckdb/ub_src_execution_operator_helper.cpp +4 -0
- package/src/duckdb/ub_src_execution_operator_join.cpp +4 -2
- package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
- package/src/duckdb/ub_src_execution_physical_plan.cpp +4 -2
- package/src/duckdb/ub_src_function_cast.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_list.cpp +4 -0
- package/src/duckdb/ub_src_function_table.cpp +4 -4
- package/src/duckdb/ub_src_function_table_system.cpp +6 -0
- package/src/duckdb/ub_src_main.cpp +2 -0
- package/src/duckdb/ub_src_main_buffered_data.cpp +2 -0
- package/src/duckdb/ub_src_main_secret.cpp +6 -0
- package/src/duckdb/ub_src_optimizer_pushdown.cpp +2 -0
- package/src/duckdb/ub_src_parser_expression.cpp +2 -0
- package/src/duckdb/ub_src_parser_parsed_data.cpp +6 -0
- package/src/duckdb/ub_src_parser_statement.cpp +2 -2
- package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_statement.cpp +6 -0
- package/src/duckdb/ub_src_planner_binder_statement.cpp +2 -2
- package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
- package/src/duckdb/ub_src_planner_filter.cpp +2 -0
- package/src/duckdb/ub_src_planner_operator.cpp +2 -0
- package/src/duckdb/ub_src_planner_subquery.cpp +2 -0
- package/src/duckdb/ub_src_storage.cpp +2 -0
- package/src/duckdb/ub_src_storage_compression.cpp +2 -0
- package/src/duckdb/ub_src_storage_compression_alp.cpp +4 -0
- package/src/duckdb/ub_src_storage_serialization.cpp +2 -0
- package/src/duckdb/ub_src_storage_statistics.cpp +2 -0
- package/src/duckdb/ub_src_storage_table.cpp +2 -0
- package/src/duckdb_node.hpp +1 -1
- package/src/statement.cpp +18 -8
- package/src/utils.cpp +1 -15
- package/test/columns.test.ts +2 -1
- package/test/test_all_types.test.ts +9 -4
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
#pragma once
|
11
11
|
|
12
|
-
|
12
|
+
//! duplicate of duckdb/main/winapi.hpp
|
13
13
|
#ifndef DUCKDB_API
|
14
14
|
#ifdef _WIN32
|
15
15
|
#if defined(DUCKDB_BUILD_LIBRARY) && !defined(DUCKDB_BUILD_LOADABLE_EXTENSION)
|
@@ -22,7 +22,7 @@
|
|
22
22
|
#endif
|
23
23
|
#endif
|
24
24
|
|
25
|
-
|
25
|
+
//! duplicate of duckdb/main/winapi.hpp
|
26
26
|
#ifndef DUCKDB_EXTENSION_API
|
27
27
|
#ifdef _WIN32
|
28
28
|
#ifdef DUCKDB_BUILD_LOADABLE_EXTENSION
|
@@ -35,10 +35,10 @@
|
|
35
35
|
#endif
|
36
36
|
#endif
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
//! API versions
|
39
|
+
//! If no explicit API version is defined, the latest API version is used.
|
40
|
+
//! Note that using older API versions (i.e. not using DUCKDB_API_LATEST) is deprecated.
|
41
|
+
//! These will not be supported long-term, and will be removed in future versions.
|
42
42
|
#ifndef DUCKDB_API_0_3_1
|
43
43
|
#define DUCKDB_API_0_3_1 1
|
44
44
|
#endif
|
@@ -55,17 +55,17 @@
|
|
55
55
|
|
56
56
|
#include <stdbool.h>
|
57
57
|
#include <stdint.h>
|
58
|
-
#include <
|
58
|
+
#include <stddef.h>
|
59
59
|
|
60
60
|
#ifdef __cplusplus
|
61
61
|
extern "C" {
|
62
62
|
#endif
|
63
63
|
|
64
64
|
//===--------------------------------------------------------------------===//
|
65
|
-
//
|
65
|
+
// Enums
|
66
66
|
//===--------------------------------------------------------------------===//
|
67
|
-
typedef uint64_t idx_t;
|
68
67
|
|
68
|
+
//! An enum over DuckDB's internal types.
|
69
69
|
typedef enum DUCKDB_TYPE {
|
70
70
|
DUCKDB_TYPE_INVALID = 0,
|
71
71
|
// bool
|
@@ -100,6 +100,8 @@ typedef enum DUCKDB_TYPE {
|
|
100
100
|
DUCKDB_TYPE_INTERVAL,
|
101
101
|
// duckdb_hugeint
|
102
102
|
DUCKDB_TYPE_HUGEINT,
|
103
|
+
// duckdb_uhugeint
|
104
|
+
DUCKDB_TYPE_UHUGEINT,
|
103
105
|
// const char*
|
104
106
|
DUCKDB_TYPE_VARCHAR,
|
105
107
|
// duckdb_blob
|
@@ -126,14 +128,82 @@ typedef enum DUCKDB_TYPE {
|
|
126
128
|
DUCKDB_TYPE_UNION,
|
127
129
|
// duckdb_bit
|
128
130
|
DUCKDB_TYPE_BIT,
|
131
|
+
// duckdb_time_tz
|
132
|
+
DUCKDB_TYPE_TIME_TZ,
|
133
|
+
// duckdb_timestamp
|
134
|
+
DUCKDB_TYPE_TIMESTAMP_TZ,
|
129
135
|
} duckdb_type;
|
136
|
+
//! An enum over the returned state of different functions.
|
137
|
+
typedef enum { DuckDBSuccess = 0, DuckDBError = 1 } duckdb_state;
|
138
|
+
//! An enum over the pending state of a pending query result.
|
139
|
+
typedef enum {
|
140
|
+
DUCKDB_PENDING_RESULT_READY = 0,
|
141
|
+
DUCKDB_PENDING_RESULT_NOT_READY = 1,
|
142
|
+
DUCKDB_PENDING_ERROR = 2,
|
143
|
+
DUCKDB_PENDING_NO_TASKS_AVAILABLE = 3
|
144
|
+
} duckdb_pending_state;
|
145
|
+
//! An enum over DuckDB's different result types.
|
146
|
+
typedef enum {
|
147
|
+
DUCKDB_RESULT_TYPE_INVALID,
|
148
|
+
DUCKDB_RESULT_TYPE_CHANGED_ROWS,
|
149
|
+
DUCKDB_RESULT_TYPE_NOTHING,
|
150
|
+
DUCKDB_RESULT_TYPE_QUERY_RESULT,
|
151
|
+
} duckdb_result_type;
|
152
|
+
//! An enum over DuckDB's different statement types.
|
153
|
+
typedef enum {
|
154
|
+
DUCKDB_STATEMENT_TYPE_INVALID,
|
155
|
+
DUCKDB_STATEMENT_TYPE_SELECT,
|
156
|
+
DUCKDB_STATEMENT_TYPE_INSERT,
|
157
|
+
DUCKDB_STATEMENT_TYPE_UPDATE,
|
158
|
+
DUCKDB_STATEMENT_TYPE_EXPLAIN,
|
159
|
+
DUCKDB_STATEMENT_TYPE_DELETE,
|
160
|
+
DUCKDB_STATEMENT_TYPE_PREPARE,
|
161
|
+
DUCKDB_STATEMENT_TYPE_CREATE,
|
162
|
+
DUCKDB_STATEMENT_TYPE_EXECUTE,
|
163
|
+
DUCKDB_STATEMENT_TYPE_ALTER,
|
164
|
+
DUCKDB_STATEMENT_TYPE_TRANSACTION,
|
165
|
+
DUCKDB_STATEMENT_TYPE_COPY,
|
166
|
+
DUCKDB_STATEMENT_TYPE_ANALYZE,
|
167
|
+
DUCKDB_STATEMENT_TYPE_VARIABLE_SET,
|
168
|
+
DUCKDB_STATEMENT_TYPE_CREATE_FUNC,
|
169
|
+
DUCKDB_STATEMENT_TYPE_DROP,
|
170
|
+
DUCKDB_STATEMENT_TYPE_EXPORT,
|
171
|
+
DUCKDB_STATEMENT_TYPE_PRAGMA,
|
172
|
+
DUCKDB_STATEMENT_TYPE_VACUUM,
|
173
|
+
DUCKDB_STATEMENT_TYPE_CALL,
|
174
|
+
DUCKDB_STATEMENT_TYPE_SET,
|
175
|
+
DUCKDB_STATEMENT_TYPE_LOAD,
|
176
|
+
DUCKDB_STATEMENT_TYPE_RELATION,
|
177
|
+
DUCKDB_STATEMENT_TYPE_EXTENSION,
|
178
|
+
DUCKDB_STATEMENT_TYPE_LOGICAL_PLAN,
|
179
|
+
DUCKDB_STATEMENT_TYPE_ATTACH,
|
180
|
+
DUCKDB_STATEMENT_TYPE_DETACH,
|
181
|
+
DUCKDB_STATEMENT_TYPE_MULTI,
|
182
|
+
} duckdb_statement_type;
|
183
|
+
|
184
|
+
//===--------------------------------------------------------------------===//
|
185
|
+
// General type definitions
|
186
|
+
//===--------------------------------------------------------------------===//
|
187
|
+
|
188
|
+
//! DuckDB's index type.
|
189
|
+
typedef uint64_t idx_t;
|
190
|
+
|
191
|
+
//! The callback that will be called to destroy data, e.g.,
|
192
|
+
//! bind data (if any), init data (if any), extra data for replacement scans (if any)
|
193
|
+
typedef void (*duckdb_delete_callback_t)(void *data);
|
194
|
+
|
195
|
+
//! Used for threading, contains a task state. Must be destroyed with `duckdb_destroy_state`.
|
196
|
+
typedef void *duckdb_task_state;
|
197
|
+
|
198
|
+
//===--------------------------------------------------------------------===//
|
199
|
+
// Types (no explicit freeing)
|
200
|
+
//===--------------------------------------------------------------------===//
|
130
201
|
|
131
202
|
//! Days are stored as days since 1970-01-01
|
132
203
|
//! Use the duckdb_from_date/duckdb_to_date function to extract individual information
|
133
204
|
typedef struct {
|
134
205
|
int32_t days;
|
135
206
|
} duckdb_date;
|
136
|
-
|
137
207
|
typedef struct {
|
138
208
|
int32_t year;
|
139
209
|
int8_t month;
|
@@ -145,7 +215,6 @@ typedef struct {
|
|
145
215
|
typedef struct {
|
146
216
|
int64_t micros;
|
147
217
|
} duckdb_time;
|
148
|
-
|
149
218
|
typedef struct {
|
150
219
|
int8_t hour;
|
151
220
|
int8_t min;
|
@@ -153,46 +222,60 @@ typedef struct {
|
|
153
222
|
int32_t micros;
|
154
223
|
} duckdb_time_struct;
|
155
224
|
|
225
|
+
//! TIME_TZ is stored as 40 bits for int64_t micros, and 24 bits for int32_t offset
|
226
|
+
typedef struct {
|
227
|
+
uint64_t bits;
|
228
|
+
} duckdb_time_tz;
|
229
|
+
typedef struct {
|
230
|
+
duckdb_time time;
|
231
|
+
int32_t offset;
|
232
|
+
} duckdb_time_tz_struct;
|
233
|
+
|
156
234
|
//! Timestamps are stored as microseconds since 1970-01-01
|
157
235
|
//! Use the duckdb_from_timestamp/duckdb_to_timestamp function to extract individual information
|
158
236
|
typedef struct {
|
159
237
|
int64_t micros;
|
160
238
|
} duckdb_timestamp;
|
161
|
-
|
162
239
|
typedef struct {
|
163
240
|
duckdb_date_struct date;
|
164
241
|
duckdb_time_struct time;
|
165
242
|
} duckdb_timestamp_struct;
|
166
|
-
|
167
243
|
typedef struct {
|
168
244
|
int32_t months;
|
169
245
|
int32_t days;
|
170
246
|
int64_t micros;
|
171
247
|
} duckdb_interval;
|
172
248
|
|
173
|
-
//! Hugeints are composed
|
249
|
+
//! Hugeints are composed of a (lower, upper) component
|
174
250
|
//! The value of the hugeint is upper * 2^64 + lower
|
175
251
|
//! For easy usage, the functions duckdb_hugeint_to_double/duckdb_double_to_hugeint are recommended
|
176
252
|
typedef struct {
|
177
253
|
uint64_t lower;
|
178
254
|
int64_t upper;
|
179
255
|
} duckdb_hugeint;
|
256
|
+
typedef struct {
|
257
|
+
uint64_t lower;
|
258
|
+
uint64_t upper;
|
259
|
+
} duckdb_uhugeint;
|
180
260
|
|
261
|
+
//! Decimals are composed of a width and a scale, and are stored in a hugeint
|
181
262
|
typedef struct {
|
182
263
|
uint8_t width;
|
183
264
|
uint8_t scale;
|
184
|
-
|
185
265
|
duckdb_hugeint value;
|
186
266
|
} duckdb_decimal;
|
187
267
|
|
268
|
+
//! A type holding information about the query execution progress
|
188
269
|
typedef struct {
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
270
|
+
double percentage;
|
271
|
+
uint64_t rows_processed;
|
272
|
+
uint64_t total_rows_to_process;
|
273
|
+
} duckdb_query_progress_type;
|
274
|
+
|
275
|
+
//! The internal representation of a VARCHAR (string_t). If the VARCHAR does not
|
276
|
+
//! exceed 12 characters, then we inline it. Otherwise, we inline a prefix for faster
|
277
|
+
//! string comparisons and store a pointer to the remaining characters. This is a non-
|
278
|
+
//! owning structure, i.e., it does not have to be freed.
|
196
279
|
typedef struct {
|
197
280
|
union {
|
198
281
|
struct {
|
@@ -207,16 +290,18 @@ typedef struct {
|
|
207
290
|
} value;
|
208
291
|
} duckdb_string_t;
|
209
292
|
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
} duckdb_blob;
|
214
|
-
|
293
|
+
//! The internal representation of a list metadata entry contains the list's offset in
|
294
|
+
//! the child vector, and its length. The parent vector holds these metadata entries,
|
295
|
+
//! whereas the child vector holds the data
|
215
296
|
typedef struct {
|
216
297
|
uint64_t offset;
|
217
298
|
uint64_t length;
|
218
299
|
} duckdb_list_entry;
|
219
300
|
|
301
|
+
//! A column consists of a pointer to its internal data. Don't operate on this type directly.
|
302
|
+
//! Instead, use functions such as duckdb_column_data, duckdb_nullmask_data,
|
303
|
+
//! duckdb_column_type, and duckdb_column_name, which take the result and the column index
|
304
|
+
//! as their parameters
|
220
305
|
typedef struct {
|
221
306
|
#if DUCKDB_API_VERSION < DUCKDB_API_0_3_2
|
222
307
|
void *data;
|
@@ -236,6 +321,32 @@ typedef struct {
|
|
236
321
|
void *internal_data;
|
237
322
|
} duckdb_column;
|
238
323
|
|
324
|
+
//! A vector to a specified column in a data chunk. Lives as long as the
|
325
|
+
//! data chunk lives, i.e., must not be destroyed.
|
326
|
+
typedef struct _duckdb_vector {
|
327
|
+
void *__vctr;
|
328
|
+
} * duckdb_vector;
|
329
|
+
|
330
|
+
//===--------------------------------------------------------------------===//
|
331
|
+
// Types (explicit freeing/destroying)
|
332
|
+
//===--------------------------------------------------------------------===//
|
333
|
+
|
334
|
+
//! Strings are composed of a char pointer and a size. You must free string.data
|
335
|
+
//! with `duckdb_free`.
|
336
|
+
typedef struct {
|
337
|
+
char *data;
|
338
|
+
idx_t size;
|
339
|
+
} duckdb_string;
|
340
|
+
|
341
|
+
//! BLOBs are composed of a byte pointer and a size. You must free blob.data
|
342
|
+
//! with `duckdb_free`.
|
343
|
+
typedef struct {
|
344
|
+
void *data;
|
345
|
+
idx_t size;
|
346
|
+
} duckdb_blob;
|
347
|
+
|
348
|
+
//! A query result consists of a pointer to its internal data.
|
349
|
+
//! Must be freed with 'duckdb_destroy_result'.
|
239
350
|
typedef struct {
|
240
351
|
#if DUCKDB_API_VERSION < DUCKDB_API_0_3_2
|
241
352
|
idx_t column_count;
|
@@ -250,7 +361,7 @@ typedef struct {
|
|
250
361
|
idx_t __deprecated_row_count;
|
251
362
|
// deprecated, use duckdb_rows_changed
|
252
363
|
idx_t __deprecated_rows_changed;
|
253
|
-
// deprecated, use duckdb_column_
|
364
|
+
// deprecated, use duckdb_column_*-family of functions
|
254
365
|
duckdb_column *__deprecated_columns;
|
255
366
|
// deprecated, use duckdb_result_error
|
256
367
|
char *__deprecated_error_message;
|
@@ -258,59 +369,125 @@ typedef struct {
|
|
258
369
|
void *internal_data;
|
259
370
|
} duckdb_result;
|
260
371
|
|
372
|
+
//! A database object. Should be closed with `duckdb_close`.
|
261
373
|
typedef struct _duckdb_database {
|
262
374
|
void *__db;
|
263
375
|
} * duckdb_database;
|
376
|
+
|
377
|
+
//! A connection to a duckdb database. Must be closed with `duckdb_disconnect`.
|
264
378
|
typedef struct _duckdb_connection {
|
265
379
|
void *__conn;
|
266
380
|
} * duckdb_connection;
|
381
|
+
|
382
|
+
//! A prepared statement is a parameterized query that allows you to bind parameters to it.
|
383
|
+
//! Must be destroyed with `duckdb_destroy_prepare`.
|
267
384
|
typedef struct _duckdb_prepared_statement {
|
268
385
|
void *__prep;
|
269
386
|
} * duckdb_prepared_statement;
|
387
|
+
|
388
|
+
//! Extracted statements. Must be destroyed with `duckdb_destroy_extracted`.
|
270
389
|
typedef struct _duckdb_extracted_statements {
|
271
390
|
void *__extrac;
|
272
391
|
} * duckdb_extracted_statements;
|
392
|
+
|
393
|
+
//! The pending result represents an intermediate structure for a query that is not yet fully executed.
|
394
|
+
//! Must be destroyed with `duckdb_destroy_pending`.
|
273
395
|
typedef struct _duckdb_pending_result {
|
274
396
|
void *__pend;
|
275
397
|
} * duckdb_pending_result;
|
398
|
+
|
399
|
+
//! The appender enables fast data loading into DuckDB.
|
400
|
+
//! Must be destroyed with `duckdb_appender_destroy`.
|
276
401
|
typedef struct _duckdb_appender {
|
277
402
|
void *__appn;
|
278
403
|
} * duckdb_appender;
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
typedef struct _duckdb_arrow_stream {
|
283
|
-
void *__arrwstr;
|
284
|
-
} * duckdb_arrow_stream;
|
404
|
+
|
405
|
+
//! Can be used to provide start-up options for the DuckDB instance.
|
406
|
+
//! Must be destroyed with `duckdb_destroy_config`.
|
285
407
|
typedef struct _duckdb_config {
|
286
408
|
void *__cnfg;
|
287
409
|
} * duckdb_config;
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
typedef struct _duckdb_arrow_array {
|
292
|
-
void *__arra;
|
293
|
-
} * duckdb_arrow_array;
|
410
|
+
|
411
|
+
//! Holds an internal logical type.
|
412
|
+
//! Must be destroyed with `duckdb_destroy_logical_type`.
|
294
413
|
typedef struct _duckdb_logical_type {
|
295
414
|
void *__lglt;
|
296
415
|
} * duckdb_logical_type;
|
416
|
+
|
417
|
+
//! Contains a data chunk from a duckdb_result.
|
418
|
+
//! Must be destroyed with `duckdb_destroy_data_chunk`.
|
297
419
|
typedef struct _duckdb_data_chunk {
|
298
420
|
void *__dtck;
|
299
421
|
} * duckdb_data_chunk;
|
300
|
-
|
301
|
-
|
302
|
-
|
422
|
+
|
423
|
+
//! Holds a DuckDB value, which wraps a type.
|
424
|
+
//! Must be destroyed with `duckdb_destroy_value`.
|
303
425
|
typedef struct _duckdb_value {
|
304
426
|
void *__val;
|
305
427
|
} * duckdb_value;
|
306
428
|
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
429
|
+
//===--------------------------------------------------------------------===//
|
430
|
+
// Table function types
|
431
|
+
//===--------------------------------------------------------------------===//
|
432
|
+
|
433
|
+
//! A table function. Must be destroyed with `duckdb_destroy_table_function`.
|
434
|
+
typedef void *duckdb_table_function;
|
435
|
+
|
436
|
+
//! The bind info of the function. When setting this info, it is necessary to pass a destroy-callback function.
|
437
|
+
typedef void *duckdb_bind_info;
|
438
|
+
|
439
|
+
//! Additional function init info. When setting this info, it is necessary to pass a destroy-callback function.
|
440
|
+
typedef void *duckdb_init_info;
|
441
|
+
|
442
|
+
//! Additional function info. When setting this info, it is necessary to pass a destroy-callback function.
|
443
|
+
typedef void *duckdb_function_info;
|
444
|
+
|
445
|
+
//! The bind function of the table function.
|
446
|
+
typedef void (*duckdb_table_function_bind_t)(duckdb_bind_info info);
|
447
|
+
|
448
|
+
//! The (possibly thread-local) init function of the table function.
|
449
|
+
typedef void (*duckdb_table_function_init_t)(duckdb_init_info info);
|
450
|
+
|
451
|
+
//! The main function of the table function.
|
452
|
+
typedef void (*duckdb_table_function_t)(duckdb_function_info info, duckdb_data_chunk output);
|
453
|
+
|
454
|
+
//===--------------------------------------------------------------------===//
|
455
|
+
// Replacement scan types
|
456
|
+
//===--------------------------------------------------------------------===//
|
457
|
+
|
458
|
+
//! Additional replacement scan info. When setting this info, it is necessary to pass a destroy-callback function.
|
459
|
+
typedef void *duckdb_replacement_scan_info;
|
460
|
+
|
461
|
+
//! A replacement scan function that can be added to a database.
|
462
|
+
typedef void (*duckdb_replacement_callback_t)(duckdb_replacement_scan_info info, const char *table_name, void *data);
|
463
|
+
|
464
|
+
//===--------------------------------------------------------------------===//
|
465
|
+
// Arrow-related types
|
466
|
+
//===--------------------------------------------------------------------===//
|
467
|
+
|
468
|
+
//! Holds an arrow query result. Must be destroyed with `duckdb_destroy_arrow`.
|
469
|
+
typedef struct _duckdb_arrow {
|
470
|
+
void *__arrw;
|
471
|
+
} * duckdb_arrow;
|
472
|
+
|
473
|
+
//! Holds an arrow array stream. Must be destroyed with `duckdb_destroy_arrow_stream`.
|
474
|
+
typedef struct _duckdb_arrow_stream {
|
475
|
+
void *__arrwstr;
|
476
|
+
} * duckdb_arrow_stream;
|
477
|
+
|
478
|
+
//! Holds an arrow schema. Remember to release the respective ArrowSchema object.
|
479
|
+
typedef struct _duckdb_arrow_schema {
|
480
|
+
void *__arrs;
|
481
|
+
} * duckdb_arrow_schema;
|
482
|
+
|
483
|
+
//! Holds an arrow array. Remember to release the respective ArrowArray object.
|
484
|
+
typedef struct _duckdb_arrow_array {
|
485
|
+
void *__arra;
|
486
|
+
} * duckdb_arrow_array;
|
487
|
+
|
488
|
+
//===--------------------------------------------------------------------===//
|
489
|
+
// Functions
|
490
|
+
//===--------------------------------------------------------------------===//
|
314
491
|
|
315
492
|
//===--------------------------------------------------------------------===//
|
316
493
|
// Open/Connect
|
@@ -319,7 +496,7 @@ typedef enum {
|
|
319
496
|
/*!
|
320
497
|
Creates a new database or opens an existing database file stored at the given path.
|
321
498
|
If no path is given a new in-memory database is created instead.
|
322
|
-
The instantiated database should be closed with 'duckdb_close'
|
499
|
+
The instantiated database should be closed with 'duckdb_close'.
|
323
500
|
|
324
501
|
* path: Path to the database file on disk, or `nullptr` or `:memory:` to open an in-memory database.
|
325
502
|
* out_database: The result database object.
|
@@ -329,6 +506,7 @@ DUCKDB_API duckdb_state duckdb_open(const char *path, duckdb_database *out_datab
|
|
329
506
|
|
330
507
|
/*!
|
331
508
|
Extended version of duckdb_open. Creates a new database or opens an existing database file stored at the given path.
|
509
|
+
The instantiated database should be closed with 'duckdb_close'.
|
332
510
|
|
333
511
|
* path: Path to the database file on disk, or `nullptr` or `:memory:` to open an in-memory database.
|
334
512
|
* out_database: The result database object.
|
@@ -342,9 +520,9 @@ DUCKDB_API duckdb_state duckdb_open_ext(const char *path, duckdb_database *out_d
|
|
342
520
|
|
343
521
|
/*!
|
344
522
|
Closes the specified database and de-allocates all memory allocated for that database.
|
345
|
-
This should be called after you are done with any database allocated through `duckdb_open`.
|
523
|
+
This should be called after you are done with any database allocated through `duckdb_open` or `duckdb_open_ext`.
|
346
524
|
Note that failing to call `duckdb_close` (in case of e.g. a program crash) will not cause data corruption.
|
347
|
-
Still it is recommended to always correctly close a database object after you are done with it.
|
525
|
+
Still, it is recommended to always correctly close a database object after you are done with it.
|
348
526
|
|
349
527
|
* database: The database object to shut down.
|
350
528
|
*/
|
@@ -353,7 +531,7 @@ DUCKDB_API void duckdb_close(duckdb_database *database);
|
|
353
531
|
/*!
|
354
532
|
Opens a connection to a database. Connections are required to query the database, and store transactional state
|
355
533
|
associated with the connection.
|
356
|
-
The instantiated connection should be closed using 'duckdb_disconnect'
|
534
|
+
The instantiated connection should be closed using 'duckdb_disconnect'.
|
357
535
|
|
358
536
|
* database: The database file to connect to.
|
359
537
|
* out_connection: The result connection object.
|
@@ -364,7 +542,7 @@ DUCKDB_API duckdb_state duckdb_connect(duckdb_database database, duckdb_connecti
|
|
364
542
|
/*!
|
365
543
|
Interrupt running query
|
366
544
|
|
367
|
-
* connection: The connection to
|
545
|
+
* connection: The connection to interrupt
|
368
546
|
*/
|
369
547
|
DUCKDB_API void duckdb_interrupt(duckdb_connection connection);
|
370
548
|
|
@@ -374,7 +552,7 @@ Get progress of the running query
|
|
374
552
|
* connection: The working connection
|
375
553
|
* returns: -1 if no progress or a percentage of the progress
|
376
554
|
*/
|
377
|
-
DUCKDB_API
|
555
|
+
DUCKDB_API duckdb_query_progress_type duckdb_query_progress(duckdb_connection connection);
|
378
556
|
|
379
557
|
/*!
|
380
558
|
Closes the specified connection and de-allocates all memory allocated for that connection.
|
@@ -393,9 +571,11 @@ DUCKDB_API const char *duckdb_library_version();
|
|
393
571
|
//===--------------------------------------------------------------------===//
|
394
572
|
// Configuration
|
395
573
|
//===--------------------------------------------------------------------===//
|
574
|
+
|
396
575
|
/*!
|
397
576
|
Initializes an empty configuration object that can be used to provide start-up options for the DuckDB instance
|
398
577
|
through `duckdb_open_ext`.
|
578
|
+
The duckdb_config must be destroyed using 'duckdb_destroy_config'
|
399
579
|
|
400
580
|
This will always succeed unless there is a malloc failure.
|
401
581
|
|
@@ -442,7 +622,7 @@ This can fail if either the name is invalid, or if the value provided for the op
|
|
442
622
|
DUCKDB_API duckdb_state duckdb_set_config(duckdb_config config, const char *name, const char *option);
|
443
623
|
|
444
624
|
/*!
|
445
|
-
Destroys the specified configuration
|
625
|
+
Destroys the specified configuration object and de-allocates all memory allocated for the object.
|
446
626
|
|
447
627
|
* config: The configuration object to destroy.
|
448
628
|
*/
|
@@ -451,6 +631,7 @@ DUCKDB_API void duckdb_destroy_config(duckdb_config *config);
|
|
451
631
|
//===--------------------------------------------------------------------===//
|
452
632
|
// Query Execution
|
453
633
|
//===--------------------------------------------------------------------===//
|
634
|
+
|
454
635
|
/*!
|
455
636
|
Executes a SQL query within a connection and stores the full (materialized) result in the out_result pointer.
|
456
637
|
If the query fails to execute, DuckDBError is returned and the error message can be retrieved by calling
|
@@ -474,7 +655,7 @@ Closes the result and de-allocates all memory allocated for that connection.
|
|
474
655
|
DUCKDB_API void duckdb_destroy_result(duckdb_result *result);
|
475
656
|
|
476
657
|
/*!
|
477
|
-
Returns the column name of the specified column. The result should not need be freed; the column names will
|
658
|
+
Returns the column name of the specified column. The result should not need to be freed; the column names will
|
478
659
|
automatically be destroyed when the result is destroyed.
|
479
660
|
|
480
661
|
Returns `NULL` if the column is out of range.
|
@@ -496,6 +677,14 @@ Returns `DUCKDB_TYPE_INVALID` if the column is out of range.
|
|
496
677
|
*/
|
497
678
|
DUCKDB_API duckdb_type duckdb_column_type(duckdb_result *result, idx_t col);
|
498
679
|
|
680
|
+
/*!
|
681
|
+
Returns the statement type of the statement that was executed
|
682
|
+
|
683
|
+
* result: The result object to fetch the statement type from.
|
684
|
+
* returns: duckdb_statement_type value or DUCKDB_STATEMENT_TYPE_INVALID
|
685
|
+
*/
|
686
|
+
DUCKDB_API duckdb_statement_type duckdb_result_statement_type(duckdb_result result);
|
687
|
+
|
499
688
|
/*!
|
500
689
|
Returns the logical column type of the specified column.
|
501
690
|
|
@@ -518,7 +707,7 @@ Returns the number of columns present in a the result object.
|
|
518
707
|
DUCKDB_API idx_t duckdb_column_count(duckdb_result *result);
|
519
708
|
|
520
709
|
/*!
|
521
|
-
Returns the number of rows present in
|
710
|
+
Returns the number of rows present in the result object.
|
522
711
|
|
523
712
|
* result: The result object.
|
524
713
|
* returns: The number of rows present in the result object.
|
@@ -627,7 +816,18 @@ Returns the number of data chunks present in the result.
|
|
627
816
|
*/
|
628
817
|
DUCKDB_API idx_t duckdb_result_chunk_count(duckdb_result result);
|
629
818
|
|
819
|
+
/*!
|
820
|
+
Returns the return_type of the given result, or DUCKDB_RETURN_TYPE_INVALID on error
|
821
|
+
|
822
|
+
* result: The result object
|
823
|
+
* returns: The return_type
|
824
|
+
*/
|
825
|
+
DUCKDB_API duckdb_result_type duckdb_result_return_type(duckdb_result result);
|
826
|
+
|
827
|
+
//===--------------------------------------------------------------------===//
|
630
828
|
// Safe fetch functions
|
829
|
+
//===--------------------------------------------------------------------===//
|
830
|
+
|
631
831
|
// These functions will perform conversions if necessary.
|
632
832
|
// On failure (e.g. if conversion cannot be performed or if the value is NULL) a default value is returned.
|
633
833
|
// Note that these functions are slow since they perform bounds checking and conversion
|
@@ -663,6 +863,11 @@ DUCKDB_API int64_t duckdb_value_int64(duckdb_result *result, idx_t col, idx_t ro
|
|
663
863
|
*/
|
664
864
|
DUCKDB_API duckdb_hugeint duckdb_value_hugeint(duckdb_result *result, idx_t col, idx_t row);
|
665
865
|
|
866
|
+
/*!
|
867
|
+
* returns: The duckdb_uhugeint value at the specified location, or 0 if the value cannot be converted.
|
868
|
+
*/
|
869
|
+
DUCKDB_API duckdb_uhugeint duckdb_value_uhugeint(duckdb_result *result, idx_t col, idx_t row);
|
870
|
+
|
666
871
|
/*!
|
667
872
|
* returns: The duckdb_decimal value at the specified location, or 0 if the value cannot be converted.
|
668
873
|
*/
|
@@ -725,10 +930,10 @@ converted. The result must be freed with `duckdb_free`.
|
|
725
930
|
*/
|
726
931
|
DUCKDB_API char *duckdb_value_varchar(duckdb_result *result, idx_t col, idx_t row);
|
727
932
|
|
728
|
-
/*!
|
729
|
-
* returns: The string value at the specified location.
|
730
|
-
The
|
731
|
-
*/
|
933
|
+
/*!
|
934
|
+
* returns: The string value at the specified location.
|
935
|
+
* The resulting field "string.data" must be freed with `duckdb_free.`
|
936
|
+
*/
|
732
937
|
DUCKDB_API duckdb_string duckdb_value_string(duckdb_result *result, idx_t col, idx_t row);
|
733
938
|
|
734
939
|
/*!
|
@@ -753,7 +958,7 @@ DUCKDB_API duckdb_string duckdb_value_string_internal(duckdb_result *result, idx
|
|
753
958
|
|
754
959
|
/*!
|
755
960
|
* returns: The duckdb_blob value at the specified location. Returns a blob with blob.data set to nullptr if the
|
756
|
-
value cannot be converted. The resulting "blob.data" must be freed with `duckdb_free.`
|
961
|
+
value cannot be converted. The resulting field "blob.data" must be freed with `duckdb_free.`
|
757
962
|
*/
|
758
963
|
DUCKDB_API duckdb_blob duckdb_value_blob(duckdb_result *result, idx_t col, idx_t row);
|
759
964
|
|
@@ -765,6 +970,7 @@ DUCKDB_API bool duckdb_value_is_null(duckdb_result *result, idx_t col, idx_t row
|
|
765
970
|
//===--------------------------------------------------------------------===//
|
766
971
|
// Helpers
|
767
972
|
//===--------------------------------------------------------------------===//
|
973
|
+
|
768
974
|
/*!
|
769
975
|
Allocate `size` bytes of memory using the duckdb internal malloc function. Any memory allocated in this manner
|
770
976
|
should be freed using `duckdb_free`.
|
@@ -775,7 +981,8 @@ should be freed using `duckdb_free`.
|
|
775
981
|
DUCKDB_API void *duckdb_malloc(size_t size);
|
776
982
|
|
777
983
|
/*!
|
778
|
-
Free a value returned from `duckdb_malloc`, `duckdb_value_varchar` or
|
984
|
+
Free a value returned from `duckdb_malloc`, `duckdb_value_varchar`, `duckdb_value_blob`, or
|
985
|
+
`duckdb_value_string`.
|
779
986
|
|
780
987
|
* ptr: The memory region to de-allocate.
|
781
988
|
*/
|
@@ -799,6 +1006,7 @@ DUCKDB_API bool duckdb_string_is_inlined(duckdb_string_t string);
|
|
799
1006
|
//===--------------------------------------------------------------------===//
|
800
1007
|
// Date/Time/Timestamp Helpers
|
801
1008
|
//===--------------------------------------------------------------------===//
|
1009
|
+
|
802
1010
|
/*!
|
803
1011
|
Decompose a `duckdb_date` object into year, month and date (stored as `duckdb_date_struct`).
|
804
1012
|
|
@@ -815,6 +1023,14 @@ Re-compose a `duckdb_date` from year, month and date (`duckdb_date_struct`).
|
|
815
1023
|
*/
|
816
1024
|
DUCKDB_API duckdb_date duckdb_to_date(duckdb_date_struct date);
|
817
1025
|
|
1026
|
+
/*!
|
1027
|
+
Test a `duckdb_date` to see if it is a finite value.
|
1028
|
+
|
1029
|
+
* date: The date object, as obtained from a `DUCKDB_TYPE_DATE` column.
|
1030
|
+
* returns: True if the date is finite, false if it is ±infinity.
|
1031
|
+
*/
|
1032
|
+
DUCKDB_API bool duckdb_is_finite_date(duckdb_date date);
|
1033
|
+
|
818
1034
|
/*!
|
819
1035
|
Decompose a `duckdb_time` object into hour, minute, second and microsecond (stored as `duckdb_time_struct`).
|
820
1036
|
|
@@ -823,6 +1039,26 @@ Decompose a `duckdb_time` object into hour, minute, second and microsecond (stor
|
|
823
1039
|
*/
|
824
1040
|
DUCKDB_API duckdb_time_struct duckdb_from_time(duckdb_time time);
|
825
1041
|
|
1042
|
+
/*!
|
1043
|
+
Create a `duckdb_time_tz` object from micros and a timezone offset.
|
1044
|
+
|
1045
|
+
* micros: The microsecond component of the time.
|
1046
|
+
* offset: The timezone offset component of the time.
|
1047
|
+
* returns: The `duckdb_time_tz` element.
|
1048
|
+
*/
|
1049
|
+
DUCKDB_API duckdb_time_tz duckdb_create_time_tz(int64_t micros, int32_t offset);
|
1050
|
+
|
1051
|
+
/*!
|
1052
|
+
Decompose a TIME_TZ objects into micros and a timezone offset.
|
1053
|
+
|
1054
|
+
Use `duckdb_from_time` to further decompose the micros into hour, minute, second and microsecond.
|
1055
|
+
|
1056
|
+
* micros: The time object, as obtained from a `DUCKDB_TYPE_TIME_TZ` column.
|
1057
|
+
* out_micros: The microsecond component of the time.
|
1058
|
+
* out_offset: The timezone offset component of the time.
|
1059
|
+
*/
|
1060
|
+
DUCKDB_API duckdb_time_tz_struct duckdb_from_time_tz(duckdb_time_tz micros);
|
1061
|
+
|
826
1062
|
/*!
|
827
1063
|
Re-compose a `duckdb_time` from hour, minute, second and microsecond (`duckdb_time_struct`).
|
828
1064
|
|
@@ -847,9 +1083,18 @@ Re-compose a `duckdb_timestamp` from a duckdb_timestamp_struct.
|
|
847
1083
|
*/
|
848
1084
|
DUCKDB_API duckdb_timestamp duckdb_to_timestamp(duckdb_timestamp_struct ts);
|
849
1085
|
|
1086
|
+
/*!
|
1087
|
+
Test a `duckdb_timestamp` to see if it is a finite value.
|
1088
|
+
|
1089
|
+
* ts: The timestamp object, as obtained from a `DUCKDB_TYPE_TIMESTAMP` column.
|
1090
|
+
* returns: True if the timestamp is finite, false if it is ±infinity.
|
1091
|
+
*/
|
1092
|
+
DUCKDB_API bool duckdb_is_finite_timestamp(duckdb_timestamp ts);
|
1093
|
+
|
850
1094
|
//===--------------------------------------------------------------------===//
|
851
1095
|
// Hugeint Helpers
|
852
1096
|
//===--------------------------------------------------------------------===//
|
1097
|
+
|
853
1098
|
/*!
|
854
1099
|
Converts a duckdb_hugeint object (as obtained from a `DUCKDB_TYPE_HUGEINT` column) into a double.
|
855
1100
|
|
@@ -868,6 +1113,32 @@ If the conversion fails because the double value is too big the result will be 0
|
|
868
1113
|
*/
|
869
1114
|
DUCKDB_API duckdb_hugeint duckdb_double_to_hugeint(double val);
|
870
1115
|
|
1116
|
+
//===--------------------------------------------------------------------===//
|
1117
|
+
// Unsigned Hugeint Helpers
|
1118
|
+
//===--------------------------------------------------------------------===//
|
1119
|
+
|
1120
|
+
/*!
|
1121
|
+
Converts a duckdb_uhugeint object (as obtained from a `DUCKDB_TYPE_UHUGEINT` column) into a double.
|
1122
|
+
|
1123
|
+
* val: The uhugeint value.
|
1124
|
+
* returns: The converted `double` element.
|
1125
|
+
*/
|
1126
|
+
DUCKDB_API double duckdb_uhugeint_to_double(duckdb_uhugeint val);
|
1127
|
+
|
1128
|
+
/*!
|
1129
|
+
Converts a double value to a duckdb_uhugeint object.
|
1130
|
+
|
1131
|
+
If the conversion fails because the double value is too big the result will be 0.
|
1132
|
+
|
1133
|
+
* val: The double value.
|
1134
|
+
* returns: The converted `duckdb_uhugeint` element.
|
1135
|
+
*/
|
1136
|
+
DUCKDB_API duckdb_uhugeint duckdb_double_to_uhugeint(double val);
|
1137
|
+
|
1138
|
+
//===--------------------------------------------------------------------===//
|
1139
|
+
// Decimal Helpers
|
1140
|
+
//===--------------------------------------------------------------------===//
|
1141
|
+
|
871
1142
|
/*!
|
872
1143
|
Converts a double value to a duckdb_decimal object.
|
873
1144
|
|
@@ -878,9 +1149,6 @@ If the conversion fails because the double value is too big, or the width/scale
|
|
878
1149
|
*/
|
879
1150
|
DUCKDB_API duckdb_decimal duckdb_double_to_decimal(double val, uint8_t width, uint8_t scale);
|
880
1151
|
|
881
|
-
//===--------------------------------------------------------------------===//
|
882
|
-
// Decimal Helpers
|
883
|
-
//===--------------------------------------------------------------------===//
|
884
1152
|
/*!
|
885
1153
|
Converts a duckdb_decimal object (as obtained from a `DUCKDB_TYPE_DECIMAL` column) into a double.
|
886
1154
|
|
@@ -892,6 +1160,7 @@ DUCKDB_API double duckdb_decimal_to_double(duckdb_decimal val);
|
|
892
1160
|
//===--------------------------------------------------------------------===//
|
893
1161
|
// Prepared Statements
|
894
1162
|
//===--------------------------------------------------------------------===//
|
1163
|
+
|
895
1164
|
// A prepared statement is a parameterized query that allows you to bind parameters to it.
|
896
1165
|
// * This is useful to easily supply parameters to functions and avoid SQL injection attacks.
|
897
1166
|
// * This is useful to speed up queries that you will execute several times with different parameters.
|
@@ -971,6 +1240,18 @@ Clear the params bind to the prepared statement.
|
|
971
1240
|
*/
|
972
1241
|
DUCKDB_API duckdb_state duckdb_clear_bindings(duckdb_prepared_statement prepared_statement);
|
973
1242
|
|
1243
|
+
/*!
|
1244
|
+
Returns the statement type of the statement to be executed
|
1245
|
+
|
1246
|
+
* statement: The prepared statement.
|
1247
|
+
* returns: duckdb_statement_type value or DUCKDB_STATEMENT_TYPE_INVALID
|
1248
|
+
*/
|
1249
|
+
DUCKDB_API duckdb_statement_type duckdb_prepared_statement_type(duckdb_prepared_statement statement);
|
1250
|
+
|
1251
|
+
//===--------------------------------------------------------------------===//
|
1252
|
+
// Bind Values to Prepared Statements
|
1253
|
+
//===--------------------------------------------------------------------===//
|
1254
|
+
|
974
1255
|
/*!
|
975
1256
|
Binds a value to the prepared statement at the specified index.
|
976
1257
|
*/
|
@@ -1014,6 +1295,11 @@ Binds a duckdb_hugeint value to the prepared statement at the specified index.
|
|
1014
1295
|
DUCKDB_API duckdb_state duckdb_bind_hugeint(duckdb_prepared_statement prepared_statement, idx_t param_idx,
|
1015
1296
|
duckdb_hugeint val);
|
1016
1297
|
/*!
|
1298
|
+
Binds an duckdb_uhugeint value to the prepared statement at the specified index.
|
1299
|
+
*/
|
1300
|
+
DUCKDB_API duckdb_state duckdb_bind_uhugeint(duckdb_prepared_statement prepared_statement, idx_t param_idx,
|
1301
|
+
duckdb_uhugeint val);
|
1302
|
+
/*!
|
1017
1303
|
Binds a duckdb_decimal value to the prepared statement at the specified index.
|
1018
1304
|
*/
|
1019
1305
|
DUCKDB_API duckdb_state duckdb_bind_decimal(duckdb_prepared_statement prepared_statement, idx_t param_idx,
|
@@ -1096,12 +1382,18 @@ Binds a NULL value to the prepared statement at the specified index.
|
|
1096
1382
|
*/
|
1097
1383
|
DUCKDB_API duckdb_state duckdb_bind_null(duckdb_prepared_statement prepared_statement, idx_t param_idx);
|
1098
1384
|
|
1385
|
+
//===--------------------------------------------------------------------===//
|
1386
|
+
// Execute Prepared Statements
|
1387
|
+
//===--------------------------------------------------------------------===//
|
1388
|
+
|
1099
1389
|
/*!
|
1100
1390
|
Executes the prepared statement with the given bound parameters, and returns a materialized query result.
|
1101
1391
|
|
1102
1392
|
This method can be called multiple times for each prepared statement, and the parameters can be modified
|
1103
1393
|
between calls to this function.
|
1104
1394
|
|
1395
|
+
Note that the result must be freed with `duckdb_destroy_result`.
|
1396
|
+
|
1105
1397
|
* prepared_statement: The prepared statement to execute.
|
1106
1398
|
* out_result: The query result.
|
1107
1399
|
* returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
|
@@ -1110,50 +1402,34 @@ DUCKDB_API duckdb_state duckdb_execute_prepared(duckdb_prepared_statement prepar
|
|
1110
1402
|
duckdb_result *out_result);
|
1111
1403
|
|
1112
1404
|
/*!
|
1113
|
-
Executes the prepared statement with the given bound parameters, and returns an
|
1114
|
-
|
1115
|
-
* prepared_statement: The prepared statement to execute.
|
1116
|
-
* out_result: The query result.
|
1117
|
-
* returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
|
1118
|
-
*/
|
1119
|
-
DUCKDB_API duckdb_state duckdb_execute_prepared_arrow(duckdb_prepared_statement prepared_statement,
|
1120
|
-
duckdb_arrow *out_result);
|
1121
|
-
|
1122
|
-
/*!
|
1123
|
-
Scans the Arrow stream and creates a view with the given name.
|
1405
|
+
Executes the prepared statement with the given bound parameters, and returns an optionally-streaming query result.
|
1406
|
+
To determine if the resulting query was in fact streamed, use `duckdb_result_is_streaming`
|
1124
1407
|
|
1125
|
-
|
1126
|
-
|
1127
|
-
* arrow: Arrow stream wrapper.
|
1128
|
-
* returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
|
1129
|
-
*/
|
1130
|
-
DUCKDB_API duckdb_state duckdb_arrow_scan(duckdb_connection connection, const char *table_name,
|
1131
|
-
duckdb_arrow_stream arrow);
|
1408
|
+
This method can be called multiple times for each prepared statement, and the parameters can be modified
|
1409
|
+
between calls to this function.
|
1132
1410
|
|
1133
|
-
|
1134
|
-
Scans the Arrow array and creates a view with the given name.
|
1411
|
+
Note that the result must be freed with `duckdb_destroy_result`.
|
1135
1412
|
|
1136
|
-
*
|
1137
|
-
*
|
1138
|
-
* arrow_schema: Arrow schema wrapper.
|
1139
|
-
* arrow_array: Arrow array wrapper.
|
1140
|
-
* out_stream: Output array stream that wraps around the passed schema, for releasing/deleting once done.
|
1413
|
+
* prepared_statement: The prepared statement to execute.
|
1414
|
+
* out_result: The query result.
|
1141
1415
|
* returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
|
1142
1416
|
*/
|
1143
|
-
DUCKDB_API duckdb_state
|
1144
|
-
|
1145
|
-
duckdb_arrow_stream *out_stream);
|
1417
|
+
DUCKDB_API duckdb_state duckdb_execute_prepared_streaming(duckdb_prepared_statement prepared_statement,
|
1418
|
+
duckdb_result *out_result);
|
1146
1419
|
|
1147
1420
|
//===--------------------------------------------------------------------===//
|
1148
1421
|
// Extract Statements
|
1149
1422
|
//===--------------------------------------------------------------------===//
|
1423
|
+
|
1150
1424
|
// A query string can be extracted into multiple SQL statements. Each statement can be prepared and executed separately.
|
1151
1425
|
|
1152
1426
|
/*!
|
1153
1427
|
Extract all statements from a query.
|
1154
1428
|
Note that after calling `duckdb_extract_statements`, the extracted statements should always be destroyed using
|
1155
1429
|
`duckdb_destroy_extracted`, even if no statements were extracted.
|
1430
|
+
|
1156
1431
|
If the extract fails, `duckdb_extract_statements_error` can be called to obtain the reason why the extract failed.
|
1432
|
+
|
1157
1433
|
* connection: The connection object
|
1158
1434
|
* query: The SQL query to extract
|
1159
1435
|
* out_extracted_statements: The resulting extracted statements object
|
@@ -1166,7 +1442,9 @@ DUCKDB_API idx_t duckdb_extract_statements(duckdb_connection connection, const c
|
|
1166
1442
|
Prepare an extracted statement.
|
1167
1443
|
Note that after calling `duckdb_prepare_extracted_statement`, the prepared statement should always be destroyed using
|
1168
1444
|
`duckdb_destroy_prepare`, even if the prepare fails.
|
1445
|
+
|
1169
1446
|
If the prepare fails, `duckdb_prepare_error` can be called to obtain the reason why the prepare failed.
|
1447
|
+
|
1170
1448
|
* connection: The connection object
|
1171
1449
|
* extracted_statements: The extracted statements object
|
1172
1450
|
* index: The index of the extracted statement to prepare
|
@@ -1180,6 +1458,7 @@ DUCKDB_API duckdb_state duckdb_prepare_extracted_statement(duckdb_connection con
|
|
1180
1458
|
/*!
|
1181
1459
|
Returns the error message contained within the extracted statements.
|
1182
1460
|
The result of this function must not be freed. It will be cleaned up when `duckdb_destroy_extracted` is called.
|
1461
|
+
|
1183
1462
|
* result: The extracted statements to fetch the error from.
|
1184
1463
|
* returns: The error of the extracted statements.
|
1185
1464
|
*/
|
@@ -1194,6 +1473,7 @@ DUCKDB_API void duckdb_destroy_extracted(duckdb_extracted_statements *extracted_
|
|
1194
1473
|
//===--------------------------------------------------------------------===//
|
1195
1474
|
// Pending Result Interface
|
1196
1475
|
//===--------------------------------------------------------------------===//
|
1476
|
+
|
1197
1477
|
/*!
|
1198
1478
|
Executes the prepared statement with the given bound parameters, and returns a pending result.
|
1199
1479
|
The pending result represents an intermediate structure for a query that is not yet fully executed.
|
@@ -1250,17 +1530,31 @@ If this returns DUCKDB_PENDING_ERROR, an error occurred during execution.
|
|
1250
1530
|
|
1251
1531
|
The error message can be obtained by calling duckdb_pending_error on the pending_result.
|
1252
1532
|
|
1253
|
-
* pending_result: The pending result to execute a task within
|
1533
|
+
* pending_result: The pending result to execute a task within.
|
1254
1534
|
* returns: The state of the pending result after the execution.
|
1255
1535
|
*/
|
1256
1536
|
DUCKDB_API duckdb_pending_state duckdb_pending_execute_task(duckdb_pending_result pending_result);
|
1257
1537
|
|
1538
|
+
/*!
|
1539
|
+
If this returns DUCKDB_PENDING_RESULT_READY, the duckdb_execute_pending function can be called to obtain the result.
|
1540
|
+
If this returns DUCKDB_PENDING_RESULT_NOT_READY, the duckdb_pending_execute_check_state function should be called again.
|
1541
|
+
If this returns DUCKDB_PENDING_ERROR, an error occurred during execution.
|
1542
|
+
|
1543
|
+
The error message can be obtained by calling duckdb_pending_error on the pending_result.
|
1544
|
+
|
1545
|
+
* pending_result: The pending result.
|
1546
|
+
* returns: The state of the pending result.
|
1547
|
+
*/
|
1548
|
+
DUCKDB_API duckdb_pending_state duckdb_pending_execute_check_state(duckdb_pending_result pending_result);
|
1549
|
+
|
1258
1550
|
/*!
|
1259
1551
|
Fully execute a pending query result, returning the final query result.
|
1260
1552
|
|
1261
1553
|
If duckdb_pending_execute_task has been called until DUCKDB_PENDING_RESULT_READY was returned, this will return fast.
|
1262
1554
|
Otherwise, all remaining tasks must be executed first.
|
1263
1555
|
|
1556
|
+
Note that the result must be freed with `duckdb_destroy_result`.
|
1557
|
+
|
1264
1558
|
* pending_result: The pending result to execute.
|
1265
1559
|
* out_result: The result object.
|
1266
1560
|
* returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
|
@@ -1279,6 +1573,7 @@ DUCKDB_API bool duckdb_pending_execution_is_finished(duckdb_pending_state pendin
|
|
1279
1573
|
//===--------------------------------------------------------------------===//
|
1280
1574
|
// Value Interface
|
1281
1575
|
//===--------------------------------------------------------------------===//
|
1576
|
+
|
1282
1577
|
/*!
|
1283
1578
|
Destroys the value and de-allocates all memory allocated for that type.
|
1284
1579
|
|
@@ -1311,6 +1606,25 @@ Creates a value from an int64
|
|
1311
1606
|
*/
|
1312
1607
|
DUCKDB_API duckdb_value duckdb_create_int64(int64_t val);
|
1313
1608
|
|
1609
|
+
/*!
|
1610
|
+
Creates a struct value from a type and an array of values
|
1611
|
+
|
1612
|
+
* type: The type of the struct
|
1613
|
+
* values: The values for the struct fields
|
1614
|
+
* returns: The value. This must be destroyed with `duckdb_destroy_value`.
|
1615
|
+
*/
|
1616
|
+
DUCKDB_API duckdb_value duckdb_create_struct_value(duckdb_logical_type type, duckdb_value *values);
|
1617
|
+
|
1618
|
+
/*!
|
1619
|
+
Creates a list value from a type and an array of values of length `value_count`
|
1620
|
+
|
1621
|
+
* type: The type of the list
|
1622
|
+
* values: The values for the list
|
1623
|
+
* value_count: The number of values in the list
|
1624
|
+
* returns: The value. This must be destroyed with `duckdb_destroy_value`.
|
1625
|
+
*/
|
1626
|
+
DUCKDB_API duckdb_value duckdb_create_list_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count);
|
1627
|
+
|
1314
1628
|
/*!
|
1315
1629
|
Obtains a string representation of the given value.
|
1316
1630
|
The result must be destroyed with `duckdb_free`.
|
@@ -1343,6 +1657,15 @@ This should not be used with `DUCKDB_TYPE_DECIMAL`.
|
|
1343
1657
|
*/
|
1344
1658
|
DUCKDB_API duckdb_logical_type duckdb_create_logical_type(duckdb_type type);
|
1345
1659
|
|
1660
|
+
/*!
|
1661
|
+
Returns the alias of a duckdb_logical_type, if one is set, else `NULL`.
|
1662
|
+
The result must be destroyed with `duckdb_free`.
|
1663
|
+
|
1664
|
+
* type: The logical type to return the alias of
|
1665
|
+
* returns: The alias or `NULL`
|
1666
|
+
*/
|
1667
|
+
DUCKDB_API char *duckdb_logical_type_get_alias(duckdb_logical_type type);
|
1668
|
+
|
1346
1669
|
/*!
|
1347
1670
|
Creates a list type from its child type.
|
1348
1671
|
The resulting type should be destroyed with `duckdb_destroy_logical_type`.
|
@@ -1362,14 +1685,14 @@ The resulting type should be destroyed with `duckdb_destroy_logical_type`.
|
|
1362
1685
|
DUCKDB_API duckdb_logical_type duckdb_create_map_type(duckdb_logical_type key_type, duckdb_logical_type value_type);
|
1363
1686
|
|
1364
1687
|
/*!
|
1365
|
-
Creates a UNION type from the passed types array
|
1688
|
+
Creates a UNION type from the passed types array.
|
1366
1689
|
The resulting type should be destroyed with `duckdb_destroy_logical_type`.
|
1367
1690
|
|
1368
1691
|
* types: The array of types that the union should consist of.
|
1369
1692
|
* type_amount: The size of the types array.
|
1370
1693
|
* returns: The logical type.
|
1371
1694
|
*/
|
1372
|
-
DUCKDB_API duckdb_logical_type duckdb_create_union_type(duckdb_logical_type member_types, const char **member_names,
|
1695
|
+
DUCKDB_API duckdb_logical_type duckdb_create_union_type(duckdb_logical_type *member_types, const char **member_names,
|
1373
1696
|
idx_t member_count);
|
1374
1697
|
|
1375
1698
|
/*!
|
@@ -1385,7 +1708,18 @@ DUCKDB_API duckdb_logical_type duckdb_create_struct_type(duckdb_logical_type *me
|
|
1385
1708
|
idx_t member_count);
|
1386
1709
|
|
1387
1710
|
/*!
|
1388
|
-
Creates
|
1711
|
+
Creates an ENUM type from the passed member name array.
|
1712
|
+
The resulting type should be destroyed with `duckdb_destroy_logical_type`.
|
1713
|
+
|
1714
|
+
* enum_name: The name of the enum.
|
1715
|
+
* member_names: The array of names that the enum should consist of.
|
1716
|
+
* member_count: The number of elements that were specified in the array.
|
1717
|
+
* returns: The logical type.
|
1718
|
+
*/
|
1719
|
+
DUCKDB_API duckdb_logical_type duckdb_create_enum_type(const char **member_names, idx_t member_count);
|
1720
|
+
|
1721
|
+
/*!
|
1722
|
+
Creates a `duckdb_logical_type` of type decimal with the specified width and scale.
|
1389
1723
|
The resulting type should be destroyed with `duckdb_destroy_logical_type`.
|
1390
1724
|
|
1391
1725
|
* width: The width of the decimal type
|
@@ -1395,7 +1729,7 @@ The resulting type should be destroyed with `duckdb_destroy_logical_type`.
|
|
1395
1729
|
DUCKDB_API duckdb_logical_type duckdb_create_decimal_type(uint8_t width, uint8_t scale);
|
1396
1730
|
|
1397
1731
|
/*!
|
1398
|
-
Retrieves the type class of a `duckdb_logical_type`.
|
1732
|
+
Retrieves the enum type class of a `duckdb_logical_type`.
|
1399
1733
|
|
1400
1734
|
* type: The logical type object
|
1401
1735
|
* returns: The type id
|
@@ -1435,7 +1769,7 @@ Retrieves the internal storage type of an enum type.
|
|
1435
1769
|
DUCKDB_API duckdb_type duckdb_enum_internal_type(duckdb_logical_type type);
|
1436
1770
|
|
1437
1771
|
/*!
|
1438
|
-
Retrieves the dictionary size of the enum type
|
1772
|
+
Retrieves the dictionary size of the enum type.
|
1439
1773
|
|
1440
1774
|
* type: The logical type object
|
1441
1775
|
* returns: The dictionary size of the enum type
|
@@ -1445,7 +1779,7 @@ DUCKDB_API uint32_t duckdb_enum_dictionary_size(duckdb_logical_type type);
|
|
1445
1779
|
/*!
|
1446
1780
|
Retrieves the dictionary value at the specified position from the enum.
|
1447
1781
|
|
1448
|
-
The result must be freed with `duckdb_free
|
1782
|
+
The result must be freed with `duckdb_free`.
|
1449
1783
|
|
1450
1784
|
* type: The logical type object
|
1451
1785
|
* index: The index in the dictionary
|
@@ -1456,7 +1790,7 @@ DUCKDB_API char *duckdb_enum_dictionary_value(duckdb_logical_type type, idx_t in
|
|
1456
1790
|
/*!
|
1457
1791
|
Retrieves the child type of the given list type.
|
1458
1792
|
|
1459
|
-
The result must be freed with `duckdb_destroy_logical_type
|
1793
|
+
The result must be freed with `duckdb_destroy_logical_type`.
|
1460
1794
|
|
1461
1795
|
* type: The logical type object
|
1462
1796
|
* returns: The child type of the list type. Must be destroyed with `duckdb_destroy_logical_type`.
|
@@ -1466,7 +1800,7 @@ DUCKDB_API duckdb_logical_type duckdb_list_type_child_type(duckdb_logical_type t
|
|
1466
1800
|
/*!
|
1467
1801
|
Retrieves the key type of the given map type.
|
1468
1802
|
|
1469
|
-
The result must be freed with `duckdb_destroy_logical_type
|
1803
|
+
The result must be freed with `duckdb_destroy_logical_type`.
|
1470
1804
|
|
1471
1805
|
* type: The logical type object
|
1472
1806
|
* returns: The key type of the map type. Must be destroyed with `duckdb_destroy_logical_type`.
|
@@ -1476,7 +1810,7 @@ DUCKDB_API duckdb_logical_type duckdb_map_type_key_type(duckdb_logical_type type
|
|
1476
1810
|
/*!
|
1477
1811
|
Retrieves the value type of the given map type.
|
1478
1812
|
|
1479
|
-
The result must be freed with `duckdb_destroy_logical_type
|
1813
|
+
The result must be freed with `duckdb_destroy_logical_type`.
|
1480
1814
|
|
1481
1815
|
* type: The logical type object
|
1482
1816
|
* returns: The value type of the map type. Must be destroyed with `duckdb_destroy_logical_type`.
|
@@ -1494,7 +1828,7 @@ DUCKDB_API idx_t duckdb_struct_type_child_count(duckdb_logical_type type);
|
|
1494
1828
|
/*!
|
1495
1829
|
Retrieves the name of the struct child.
|
1496
1830
|
|
1497
|
-
The result must be freed with `duckdb_free
|
1831
|
+
The result must be freed with `duckdb_free`.
|
1498
1832
|
|
1499
1833
|
* type: The logical type object
|
1500
1834
|
* index: The child index
|
@@ -1505,7 +1839,7 @@ DUCKDB_API char *duckdb_struct_type_child_name(duckdb_logical_type type, idx_t i
|
|
1505
1839
|
/*!
|
1506
1840
|
Retrieves the child type of the given struct type at the specified index.
|
1507
1841
|
|
1508
|
-
The result must be freed with `duckdb_destroy_logical_type
|
1842
|
+
The result must be freed with `duckdb_destroy_logical_type`.
|
1509
1843
|
|
1510
1844
|
* type: The logical type object
|
1511
1845
|
* index: The child index
|
@@ -1524,7 +1858,7 @@ DUCKDB_API idx_t duckdb_union_type_member_count(duckdb_logical_type type);
|
|
1524
1858
|
/*!
|
1525
1859
|
Retrieves the name of the union member.
|
1526
1860
|
|
1527
|
-
The result must be freed with `duckdb_free
|
1861
|
+
The result must be freed with `duckdb_free`.
|
1528
1862
|
|
1529
1863
|
* type: The logical type object
|
1530
1864
|
* index: The child index
|
@@ -1535,7 +1869,7 @@ DUCKDB_API char *duckdb_union_type_member_name(duckdb_logical_type type, idx_t i
|
|
1535
1869
|
/*!
|
1536
1870
|
Retrieves the child type of the given union member at the specified index.
|
1537
1871
|
|
1538
|
-
The result must be freed with `duckdb_destroy_logical_type
|
1872
|
+
The result must be freed with `duckdb_destroy_logical_type`.
|
1539
1873
|
|
1540
1874
|
* type: The logical type object
|
1541
1875
|
* index: The child index
|
@@ -1553,9 +1887,12 @@ DUCKDB_API void duckdb_destroy_logical_type(duckdb_logical_type *type);
|
|
1553
1887
|
//===--------------------------------------------------------------------===//
|
1554
1888
|
// Data Chunk Interface
|
1555
1889
|
//===--------------------------------------------------------------------===//
|
1890
|
+
|
1556
1891
|
/*!
|
1557
1892
|
Creates an empty DataChunk with the specified set of types.
|
1558
1893
|
|
1894
|
+
Note that the result must be destroyed with `duckdb_destroy_data_chunk`.
|
1895
|
+
|
1559
1896
|
* types: An array of types of the data chunk.
|
1560
1897
|
* column_count: The number of columns.
|
1561
1898
|
* returns: The data chunk.
|
@@ -1614,6 +1951,7 @@ DUCKDB_API void duckdb_data_chunk_set_size(duckdb_data_chunk chunk, idx_t size);
|
|
1614
1951
|
//===--------------------------------------------------------------------===//
|
1615
1952
|
// Vector Interface
|
1616
1953
|
//===--------------------------------------------------------------------===//
|
1954
|
+
|
1617
1955
|
/*!
|
1618
1956
|
Retrieves the column type of the specified vector.
|
1619
1957
|
|
@@ -1698,7 +2036,7 @@ The resulting vector is valid as long as the parent vector is valid.
|
|
1698
2036
|
DUCKDB_API duckdb_vector duckdb_list_vector_get_child(duckdb_vector vector);
|
1699
2037
|
|
1700
2038
|
/*!
|
1701
|
-
Returns the size of the child vector of the list
|
2039
|
+
Returns the size of the child vector of the list.
|
1702
2040
|
|
1703
2041
|
* vector: The vector
|
1704
2042
|
* returns: The size of the child list
|
@@ -1737,6 +2075,7 @@ DUCKDB_API duckdb_vector duckdb_struct_vector_get_child(duckdb_vector vector, id
|
|
1737
2075
|
//===--------------------------------------------------------------------===//
|
1738
2076
|
// Validity Mask Functions
|
1739
2077
|
//===--------------------------------------------------------------------===//
|
2078
|
+
|
1740
2079
|
/*!
|
1741
2080
|
Returns whether or not a row is valid (i.e. not NULL) in the given validity mask.
|
1742
2081
|
|
@@ -1781,15 +2120,6 @@ DUCKDB_API void duckdb_validity_set_row_valid(uint64_t *validity, idx_t row);
|
|
1781
2120
|
//===--------------------------------------------------------------------===//
|
1782
2121
|
// Table Functions
|
1783
2122
|
//===--------------------------------------------------------------------===//
|
1784
|
-
typedef void *duckdb_table_function;
|
1785
|
-
typedef void *duckdb_bind_info;
|
1786
|
-
typedef void *duckdb_init_info;
|
1787
|
-
typedef void *duckdb_function_info;
|
1788
|
-
|
1789
|
-
typedef void (*duckdb_table_function_bind_t)(duckdb_bind_info info);
|
1790
|
-
typedef void (*duckdb_table_function_init_t)(duckdb_init_info info);
|
1791
|
-
typedef void (*duckdb_table_function_t)(duckdb_function_info info, duckdb_data_chunk output);
|
1792
|
-
typedef void (*duckdb_delete_callback_t)(void *data);
|
1793
2123
|
|
1794
2124
|
/*!
|
1795
2125
|
Creates a new empty table function.
|
@@ -1844,7 +2174,7 @@ DUCKDB_API void duckdb_table_function_set_extra_info(duckdb_table_function table
|
|
1844
2174
|
duckdb_delete_callback_t destroy);
|
1845
2175
|
|
1846
2176
|
/*!
|
1847
|
-
Sets the bind function of the table function
|
2177
|
+
Sets the bind function of the table function.
|
1848
2178
|
|
1849
2179
|
* table_function: The table function
|
1850
2180
|
* bind: The bind function
|
@@ -1852,7 +2182,7 @@ Sets the bind function of the table function
|
|
1852
2182
|
DUCKDB_API void duckdb_table_function_set_bind(duckdb_table_function table_function, duckdb_table_function_bind_t bind);
|
1853
2183
|
|
1854
2184
|
/*!
|
1855
|
-
Sets the init function of the table function
|
2185
|
+
Sets the init function of the table function.
|
1856
2186
|
|
1857
2187
|
* table_function: The table function
|
1858
2188
|
* init: The init function
|
@@ -1860,7 +2190,7 @@ Sets the init function of the table function
|
|
1860
2190
|
DUCKDB_API void duckdb_table_function_set_init(duckdb_table_function table_function, duckdb_table_function_init_t init);
|
1861
2191
|
|
1862
2192
|
/*!
|
1863
|
-
Sets the thread-local init function of the table function
|
2193
|
+
Sets the thread-local init function of the table function.
|
1864
2194
|
|
1865
2195
|
* table_function: The table function
|
1866
2196
|
* init: The init function
|
@@ -1869,7 +2199,7 @@ DUCKDB_API void duckdb_table_function_set_local_init(duckdb_table_function table
|
|
1869
2199
|
duckdb_table_function_init_t init);
|
1870
2200
|
|
1871
2201
|
/*!
|
1872
|
-
Sets the main function of the table function
|
2202
|
+
Sets the main function of the table function.
|
1873
2203
|
|
1874
2204
|
* table_function: The table function
|
1875
2205
|
* function: The function
|
@@ -1905,8 +2235,9 @@ DUCKDB_API duckdb_state duckdb_register_table_function(duckdb_connection con, du
|
|
1905
2235
|
//===--------------------------------------------------------------------===//
|
1906
2236
|
// Table Function Bind
|
1907
2237
|
//===--------------------------------------------------------------------===//
|
2238
|
+
|
1908
2239
|
/*!
|
1909
|
-
Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info
|
2240
|
+
Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info`.
|
1910
2241
|
|
1911
2242
|
* info: The info object
|
1912
2243
|
* returns: The extra info
|
@@ -1982,7 +2313,7 @@ DUCKDB_API void duckdb_bind_set_error(duckdb_bind_info info, const char *error);
|
|
1982
2313
|
//===--------------------------------------------------------------------===//
|
1983
2314
|
|
1984
2315
|
/*!
|
1985
|
-
Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info
|
2316
|
+
Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info`.
|
1986
2317
|
|
1987
2318
|
* info: The info object
|
1988
2319
|
* returns: The extra info
|
@@ -2051,12 +2382,13 @@ DUCKDB_API void duckdb_init_set_error(duckdb_init_info info, const char *error);
|
|
2051
2382
|
//===--------------------------------------------------------------------===//
|
2052
2383
|
|
2053
2384
|
/*!
|
2054
|
-
Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info
|
2385
|
+
Retrieves the extra info of the function as set in `duckdb_table_function_set_extra_info`.
|
2055
2386
|
|
2056
2387
|
* info: The info object
|
2057
2388
|
* returns: The extra info
|
2058
2389
|
*/
|
2059
2390
|
DUCKDB_API void *duckdb_function_get_extra_info(duckdb_function_info info);
|
2391
|
+
|
2060
2392
|
/*!
|
2061
2393
|
Gets the bind data set by `duckdb_bind_set_bind_data` during the bind.
|
2062
2394
|
|
@@ -2095,12 +2427,9 @@ DUCKDB_API void duckdb_function_set_error(duckdb_function_info info, const char
|
|
2095
2427
|
//===--------------------------------------------------------------------===//
|
2096
2428
|
// Replacement Scans
|
2097
2429
|
//===--------------------------------------------------------------------===//
|
2098
|
-
typedef void *duckdb_replacement_scan_info;
|
2099
|
-
|
2100
|
-
typedef void (*duckdb_replacement_callback_t)(duckdb_replacement_scan_info info, const char *table_name, void *data);
|
2101
2430
|
|
2102
2431
|
/*!
|
2103
|
-
Add a replacement scan definition to the specified database
|
2432
|
+
Add a replacement scan definition to the specified database.
|
2104
2433
|
|
2105
2434
|
* db: The database object to add the replacement scan to
|
2106
2435
|
* replacement: The replacement scan callback
|
@@ -2111,8 +2440,8 @@ DUCKDB_API void duckdb_add_replacement_scan(duckdb_database db, duckdb_replaceme
|
|
2111
2440
|
void *extra_data, duckdb_delete_callback_t delete_callback);
|
2112
2441
|
|
2113
2442
|
/*!
|
2114
|
-
Sets the replacement function name
|
2115
|
-
|
2443
|
+
Sets the replacement function name. If this function is called in the replacement callback,
|
2444
|
+
the replacement scan is performed. If it is not called, the replacement callback is not performed.
|
2116
2445
|
|
2117
2446
|
* info: The info object
|
2118
2447
|
* function_name: The function name to substitute.
|
@@ -2146,12 +2475,17 @@ DUCKDB_API void duckdb_replacement_scan_set_error(duckdb_replacement_scan_info i
|
|
2146
2475
|
// the row should be finished by calling `duckdb_appender_end_row`. After all rows have been appended,
|
2147
2476
|
// `duckdb_appender_destroy` should be used to finalize the appender and clean up the resulting memory.
|
2148
2477
|
|
2478
|
+
// Instead of appending rows with `duckdb_appender_end_row`, it is also possible to fill and append
|
2479
|
+
// chunks-at-a-time.
|
2480
|
+
|
2149
2481
|
// Note that `duckdb_appender_destroy` should always be called on the resulting appender, even if the function returns
|
2150
2482
|
// `DuckDBError`.
|
2151
2483
|
|
2152
2484
|
/*!
|
2153
2485
|
Creates an appender object.
|
2154
2486
|
|
2487
|
+
Note that the object must be destroyed with `duckdb_appender_destroy`.
|
2488
|
+
|
2155
2489
|
* connection: The connection context to create the appender in.
|
2156
2490
|
* schema: The schema of the table to append to, or `nullptr` for the default schema.
|
2157
2491
|
* table: The table name to append to.
|
@@ -2161,6 +2495,25 @@ Creates an appender object.
|
|
2161
2495
|
DUCKDB_API duckdb_state duckdb_appender_create(duckdb_connection connection, const char *schema, const char *table,
|
2162
2496
|
duckdb_appender *out_appender);
|
2163
2497
|
|
2498
|
+
/*!
|
2499
|
+
Returns the number of columns in the table that belongs to the appender.
|
2500
|
+
|
2501
|
+
* appender The appender to get the column count from.
|
2502
|
+
* returns: The number of columns in the table.
|
2503
|
+
*/
|
2504
|
+
DUCKDB_API idx_t duckdb_appender_column_count(duckdb_appender appender);
|
2505
|
+
|
2506
|
+
/*!
|
2507
|
+
Returns the type of the column at the specified index.
|
2508
|
+
|
2509
|
+
Note: The resulting type should be destroyed with `duckdb_destroy_logical_type`.
|
2510
|
+
|
2511
|
+
* appender The appender to get the column type from.
|
2512
|
+
* col_idx The index of the column to get the type of.
|
2513
|
+
* returns: The duckdb_logical_type of the column.
|
2514
|
+
*/
|
2515
|
+
DUCKDB_API duckdb_logical_type duckdb_appender_column_type(duckdb_appender appender, idx_t col_idx);
|
2516
|
+
|
2164
2517
|
/*!
|
2165
2518
|
Returns the error message associated with the given appender.
|
2166
2519
|
If the appender has no error message, this returns `nullptr` instead.
|
@@ -2225,18 +2578,22 @@ DUCKDB_API duckdb_state duckdb_append_bool(duckdb_appender appender, bool value)
|
|
2225
2578
|
Append an int8_t value to the appender.
|
2226
2579
|
*/
|
2227
2580
|
DUCKDB_API duckdb_state duckdb_append_int8(duckdb_appender appender, int8_t value);
|
2581
|
+
|
2228
2582
|
/*!
|
2229
2583
|
Append an int16_t value to the appender.
|
2230
2584
|
*/
|
2231
2585
|
DUCKDB_API duckdb_state duckdb_append_int16(duckdb_appender appender, int16_t value);
|
2586
|
+
|
2232
2587
|
/*!
|
2233
2588
|
Append an int32_t value to the appender.
|
2234
2589
|
*/
|
2235
2590
|
DUCKDB_API duckdb_state duckdb_append_int32(duckdb_appender appender, int32_t value);
|
2591
|
+
|
2236
2592
|
/*!
|
2237
2593
|
Append an int64_t value to the appender.
|
2238
2594
|
*/
|
2239
2595
|
DUCKDB_API duckdb_state duckdb_append_int64(duckdb_appender appender, int64_t value);
|
2596
|
+
|
2240
2597
|
/*!
|
2241
2598
|
Append a duckdb_hugeint value to the appender.
|
2242
2599
|
*/
|
@@ -2246,23 +2603,32 @@ DUCKDB_API duckdb_state duckdb_append_hugeint(duckdb_appender appender, duckdb_h
|
|
2246
2603
|
Append a uint8_t value to the appender.
|
2247
2604
|
*/
|
2248
2605
|
DUCKDB_API duckdb_state duckdb_append_uint8(duckdb_appender appender, uint8_t value);
|
2606
|
+
|
2249
2607
|
/*!
|
2250
2608
|
Append a uint16_t value to the appender.
|
2251
2609
|
*/
|
2252
2610
|
DUCKDB_API duckdb_state duckdb_append_uint16(duckdb_appender appender, uint16_t value);
|
2611
|
+
|
2253
2612
|
/*!
|
2254
2613
|
Append a uint32_t value to the appender.
|
2255
2614
|
*/
|
2256
2615
|
DUCKDB_API duckdb_state duckdb_append_uint32(duckdb_appender appender, uint32_t value);
|
2616
|
+
|
2257
2617
|
/*!
|
2258
2618
|
Append a uint64_t value to the appender.
|
2259
2619
|
*/
|
2260
2620
|
DUCKDB_API duckdb_state duckdb_append_uint64(duckdb_appender appender, uint64_t value);
|
2261
2621
|
|
2622
|
+
/*!
|
2623
|
+
Append a duckdb_uhugeint value to the appender.
|
2624
|
+
*/
|
2625
|
+
DUCKDB_API duckdb_state duckdb_append_uhugeint(duckdb_appender appender, duckdb_uhugeint value);
|
2626
|
+
|
2262
2627
|
/*!
|
2263
2628
|
Append a float value to the appender.
|
2264
2629
|
*/
|
2265
2630
|
DUCKDB_API duckdb_state duckdb_append_float(duckdb_appender appender, float value);
|
2631
|
+
|
2266
2632
|
/*!
|
2267
2633
|
Append a double value to the appender.
|
2268
2634
|
*/
|
@@ -2272,14 +2638,17 @@ DUCKDB_API duckdb_state duckdb_append_double(duckdb_appender appender, double va
|
|
2272
2638
|
Append a duckdb_date value to the appender.
|
2273
2639
|
*/
|
2274
2640
|
DUCKDB_API duckdb_state duckdb_append_date(duckdb_appender appender, duckdb_date value);
|
2641
|
+
|
2275
2642
|
/*!
|
2276
2643
|
Append a duckdb_time value to the appender.
|
2277
2644
|
*/
|
2278
2645
|
DUCKDB_API duckdb_state duckdb_append_time(duckdb_appender appender, duckdb_time value);
|
2646
|
+
|
2279
2647
|
/*!
|
2280
2648
|
Append a duckdb_timestamp value to the appender.
|
2281
2649
|
*/
|
2282
2650
|
DUCKDB_API duckdb_state duckdb_append_timestamp(duckdb_appender appender, duckdb_timestamp value);
|
2651
|
+
|
2283
2652
|
/*!
|
2284
2653
|
Append a duckdb_interval value to the appender.
|
2285
2654
|
*/
|
@@ -2289,14 +2658,17 @@ DUCKDB_API duckdb_state duckdb_append_interval(duckdb_appender appender, duckdb_
|
|
2289
2658
|
Append a varchar value to the appender.
|
2290
2659
|
*/
|
2291
2660
|
DUCKDB_API duckdb_state duckdb_append_varchar(duckdb_appender appender, const char *val);
|
2661
|
+
|
2292
2662
|
/*!
|
2293
2663
|
Append a varchar value to the appender.
|
2294
2664
|
*/
|
2295
2665
|
DUCKDB_API duckdb_state duckdb_append_varchar_length(duckdb_appender appender, const char *val, idx_t length);
|
2666
|
+
|
2296
2667
|
/*!
|
2297
2668
|
Append a blob value to the appender.
|
2298
2669
|
*/
|
2299
2670
|
DUCKDB_API duckdb_state duckdb_append_blob(duckdb_appender appender, const void *data, idx_t length);
|
2671
|
+
|
2300
2672
|
/*!
|
2301
2673
|
Append a NULL value to the appender (of any type).
|
2302
2674
|
*/
|
@@ -2318,6 +2690,7 @@ DUCKDB_API duckdb_state duckdb_append_data_chunk(duckdb_appender appender, duckd
|
|
2318
2690
|
//===--------------------------------------------------------------------===//
|
2319
2691
|
// Arrow Interface
|
2320
2692
|
//===--------------------------------------------------------------------===//
|
2693
|
+
|
2321
2694
|
/*!
|
2322
2695
|
Executes a SQL query within a connection and stores the full (materialized) result in an arrow structure.
|
2323
2696
|
If the query fails to execute, DuckDBError is returned and the error message can be retrieved by calling
|
@@ -2334,7 +2707,8 @@ query fails, otherwise the error stored within the result will not be freed corr
|
|
2334
2707
|
DUCKDB_API duckdb_state duckdb_query_arrow(duckdb_connection connection, const char *query, duckdb_arrow *out_result);
|
2335
2708
|
|
2336
2709
|
/*!
|
2337
|
-
Fetch the internal arrow schema from the arrow result.
|
2710
|
+
Fetch the internal arrow schema from the arrow result. Remember to call release on the respective
|
2711
|
+
ArrowSchema object.
|
2338
2712
|
|
2339
2713
|
* result: The result to fetch the schema from.
|
2340
2714
|
* out_schema: The output schema.
|
@@ -2343,7 +2717,8 @@ Fetch the internal arrow schema from the arrow result.
|
|
2343
2717
|
DUCKDB_API duckdb_state duckdb_query_arrow_schema(duckdb_arrow result, duckdb_arrow_schema *out_schema);
|
2344
2718
|
|
2345
2719
|
/*!
|
2346
|
-
Fetch the internal arrow schema from the prepared statement.
|
2720
|
+
Fetch the internal arrow schema from the prepared statement. Remember to call release on the respective
|
2721
|
+
ArrowSchema object.
|
2347
2722
|
|
2348
2723
|
* result: The prepared statement to fetch the schema from.
|
2349
2724
|
* out_schema: The output schema.
|
@@ -2351,9 +2726,19 @@ Fetch the internal arrow schema from the prepared statement.
|
|
2351
2726
|
*/
|
2352
2727
|
DUCKDB_API duckdb_state duckdb_prepared_arrow_schema(duckdb_prepared_statement prepared,
|
2353
2728
|
duckdb_arrow_schema *out_schema);
|
2729
|
+
/*!
|
2730
|
+
Convert a data chunk into an arrow struct array. Remember to call release on the respective
|
2731
|
+
ArrowArray object.
|
2732
|
+
|
2733
|
+
* result: The result object the data chunk have been fetched from.
|
2734
|
+
* chunk: The data chunk to convert.
|
2735
|
+
* out_array: The output array.
|
2736
|
+
*/
|
2737
|
+
DUCKDB_API void duckdb_result_arrow_array(duckdb_result result, duckdb_data_chunk chunk, duckdb_arrow_array *out_array);
|
2354
2738
|
|
2355
2739
|
/*!
|
2356
|
-
Fetch an internal arrow array from the arrow result.
|
2740
|
+
Fetch an internal arrow struct array from the arrow result. Remember to call release on the respective
|
2741
|
+
ArrowArray object.
|
2357
2742
|
|
2358
2743
|
This function can be called multiple time to get next chunks, which will free the previous out_array.
|
2359
2744
|
So consume the out_array before calling this function again.
|
@@ -2365,7 +2750,7 @@ So consume the out_array before calling this function again.
|
|
2365
2750
|
DUCKDB_API duckdb_state duckdb_query_arrow_array(duckdb_arrow result, duckdb_arrow_array *out_array);
|
2366
2751
|
|
2367
2752
|
/*!
|
2368
|
-
Returns the number of columns present in
|
2753
|
+
Returns the number of columns present in the arrow result object.
|
2369
2754
|
|
2370
2755
|
* result: The result object.
|
2371
2756
|
* returns: The number of columns present in the result object.
|
@@ -2373,7 +2758,7 @@ Returns the number of columns present in a the arrow result object.
|
|
2373
2758
|
DUCKDB_API idx_t duckdb_arrow_column_count(duckdb_arrow result);
|
2374
2759
|
|
2375
2760
|
/*!
|
2376
|
-
Returns the number of rows present in
|
2761
|
+
Returns the number of rows present in the arrow result object.
|
2377
2762
|
|
2378
2763
|
* result: The result object.
|
2379
2764
|
* returns: The number of rows present in the result object.
|
@@ -2395,7 +2780,7 @@ Returns the error message contained within the result. The error is only set if
|
|
2395
2780
|
|
2396
2781
|
The error message should not be freed. It will be de-allocated when `duckdb_destroy_arrow` is called.
|
2397
2782
|
|
2398
|
-
* result: The result object to fetch the
|
2783
|
+
* result: The result object to fetch the error from.
|
2399
2784
|
* returns: The error of the result.
|
2400
2785
|
*/
|
2401
2786
|
DUCKDB_API const char *duckdb_query_arrow_error(duckdb_arrow result);
|
@@ -2407,10 +2792,53 @@ Closes the result and de-allocates all memory allocated for the arrow result.
|
|
2407
2792
|
*/
|
2408
2793
|
DUCKDB_API void duckdb_destroy_arrow(duckdb_arrow *result);
|
2409
2794
|
|
2795
|
+
/*!
|
2796
|
+
Releases the arrow array stream and de-allocates its memory.
|
2797
|
+
|
2798
|
+
* stream: The arrow array stream to destroy.
|
2799
|
+
*/
|
2800
|
+
DUCKDB_API void duckdb_destroy_arrow_stream(duckdb_arrow_stream *stream_p);
|
2801
|
+
|
2802
|
+
/*!
|
2803
|
+
Executes the prepared statement with the given bound parameters, and returns an arrow query result.
|
2804
|
+
Note that after running `duckdb_execute_prepared_arrow`, `duckdb_destroy_arrow` must be called on the result object.
|
2805
|
+
|
2806
|
+
* prepared_statement: The prepared statement to execute.
|
2807
|
+
* out_result: The query result.
|
2808
|
+
* returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
|
2809
|
+
*/
|
2810
|
+
DUCKDB_API duckdb_state duckdb_execute_prepared_arrow(duckdb_prepared_statement prepared_statement,
|
2811
|
+
duckdb_arrow *out_result);
|
2812
|
+
|
2813
|
+
/*!
|
2814
|
+
Scans the Arrow stream and creates a view with the given name.
|
2815
|
+
|
2816
|
+
* connection: The connection on which to execute the scan.
|
2817
|
+
* table_name: Name of the temporary view to create.
|
2818
|
+
* arrow: Arrow stream wrapper.
|
2819
|
+
* returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
|
2820
|
+
*/
|
2821
|
+
DUCKDB_API duckdb_state duckdb_arrow_scan(duckdb_connection connection, const char *table_name,
|
2822
|
+
duckdb_arrow_stream arrow);
|
2823
|
+
|
2824
|
+
/*!
|
2825
|
+
Scans the Arrow array and creates a view with the given name.
|
2826
|
+
Note that after running `duckdb_arrow_array_scan`, `duckdb_destroy_arrow_stream` must be called on the out stream.
|
2827
|
+
|
2828
|
+
* connection: The connection on which to execute the scan.
|
2829
|
+
* table_name: Name of the temporary view to create.
|
2830
|
+
* arrow_schema: Arrow schema wrapper.
|
2831
|
+
* arrow_array: Arrow array wrapper.
|
2832
|
+
* out_stream: Output array stream that wraps around the passed schema, for releasing/deleting once done.
|
2833
|
+
* returns: `DuckDBSuccess` on success or `DuckDBError` on failure.
|
2834
|
+
*/
|
2835
|
+
DUCKDB_API duckdb_state duckdb_arrow_array_scan(duckdb_connection connection, const char *table_name,
|
2836
|
+
duckdb_arrow_schema arrow_schema, duckdb_arrow_array arrow_array,
|
2837
|
+
duckdb_arrow_stream *out_stream);
|
2838
|
+
|
2410
2839
|
//===--------------------------------------------------------------------===//
|
2411
2840
|
// Threading Information
|
2412
2841
|
//===--------------------------------------------------------------------===//
|
2413
|
-
typedef void *duckdb_task_state;
|
2414
2842
|
|
2415
2843
|
/*!
|
2416
2844
|
Execute DuckDB tasks on this thread.
|
@@ -2424,9 +2852,9 @@ DUCKDB_API void duckdb_execute_tasks(duckdb_database database, idx_t max_tasks);
|
|
2424
2852
|
|
2425
2853
|
/*!
|
2426
2854
|
Creates a task state that can be used with duckdb_execute_tasks_state to execute tasks until
|
2427
|
-
|
2855
|
+
`duckdb_finish_execution` is called on the state.
|
2428
2856
|
|
2429
|
-
duckdb_destroy_state
|
2857
|
+
`duckdb_destroy_state` must be called on the result.
|
2430
2858
|
|
2431
2859
|
* database: The database object to create the task state for
|
2432
2860
|
* returns: The task state that can be used with duckdb_execute_tasks_state.
|
@@ -2483,7 +2911,7 @@ on the task state.
|
|
2483
2911
|
DUCKDB_API void duckdb_destroy_task_state(duckdb_task_state state);
|
2484
2912
|
|
2485
2913
|
/*!
|
2486
|
-
Returns true if execution of the current query is finished.
|
2914
|
+
Returns true if the execution of the current query is finished.
|
2487
2915
|
|
2488
2916
|
* con: The connection on which to check
|
2489
2917
|
*/
|