duckdb 0.10.1-dev9.0 → 0.10.2-dev0.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/.github/workflows/NodeJS.yml +9 -16
- package/binding.gyp +4 -1
- package/package.json +1 -1
- package/src/database.cpp +1 -0
- package/src/duckdb/extension/icu/icu-strptime.cpp +46 -4
- package/src/duckdb/extension/icu/icu-table-range.cpp +5 -0
- package/src/duckdb/extension/icu/icu-timezone.cpp +28 -4
- package/src/duckdb/extension/json/buffered_json_reader.cpp +6 -5
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +3 -3
- package/src/duckdb/extension/json/include/json_transform.hpp +2 -0
- package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -0
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +8 -9
- package/src/duckdb/extension/json/json_functions.cpp +1 -2
- package/src/duckdb/extension/json/json_scan.cpp +1 -0
- package/src/duckdb/extension/parquet/column_reader.cpp +17 -1
- package/src/duckdb/extension/parquet/column_writer.cpp +151 -20
- package/src/duckdb/extension/parquet/include/column_writer.hpp +3 -4
- package/src/duckdb/extension/parquet/parquet_extension.cpp +14 -9
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +10 -0
- package/src/duckdb/extension/parquet/parquet_writer.cpp +4 -0
- package/src/duckdb/src/catalog/catalog.cpp +94 -10
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +9 -5
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +1 -0
- package/src/duckdb/src/catalog/catalog_entry/ub_duckdb_catalog_entries.cpp +16 -0
- package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +28 -0
- package/src/duckdb/src/catalog/default/default_functions.cpp +3 -0
- package/src/duckdb/src/catalog/default/default_views.cpp +3 -3
- package/src/duckdb/src/catalog/default/ub_duckdb_catalog_default_entries.cpp +5 -0
- package/src/duckdb/src/catalog/dependency_catalog_set.cpp +1 -3
- package/src/duckdb/src/catalog/dependency_manager.cpp +2 -5
- package/src/duckdb/src/catalog/ub_duckdb_catalog.cpp +10 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +1 -1
- package/src/duckdb/src/common/adbc/driver_manager.cpp +2 -1
- package/src/duckdb/src/common/adbc/nanoarrow/ub_duckdb_adbc_nanoarrow.cpp +5 -0
- package/src/duckdb/src/common/adbc/ub_duckdb_adbc.cpp +3 -0
- package/src/duckdb/src/common/allocator.cpp +34 -8
- package/src/duckdb/src/common/arrow/appender/fixed_size_list_data.cpp +39 -0
- package/src/duckdb/src/common/arrow/appender/ub_duckdb_common_arrow_appender.cpp +6 -0
- package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -1
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +5 -5
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +17 -0
- package/src/duckdb/src/common/arrow/ub_duckdb_common_arrow.cpp +4 -0
- package/src/duckdb/src/common/compressed_file_system.cpp +1 -0
- package/src/duckdb/src/common/crypto/ub_duckdb_common_crypto.cpp +2 -0
- package/src/duckdb/src/common/enum_util.cpp +153 -13
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +0 -2
- package/src/duckdb/src/common/enums/physical_operator_type.cpp +2 -2
- package/src/duckdb/src/common/enums/ub_duckdb_common_enums.cpp +12 -0
- package/src/duckdb/src/common/exception/conversion_exception.cpp +23 -0
- package/src/duckdb/src/common/exception.cpp +7 -14
- package/src/duckdb/src/common/extra_type_info.cpp +6 -5
- package/src/duckdb/src/common/gzip_file_system.cpp +5 -4
- package/src/duckdb/src/common/local_file_system.cpp +85 -10
- package/src/duckdb/src/common/operator/cast_operators.cpp +413 -305
- package/src/duckdb/src/common/operator/ub_duckdb_common_operators.cpp +4 -0
- package/src/duckdb/src/common/progress_bar/ub_duckdb_progress_bar.cpp +3 -0
- package/src/duckdb/src/common/re2_regex.cpp +2 -1
- package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_matcher.cpp +1 -0
- package/src/duckdb/src/common/row_operations/row_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/ub_duckdb_row_operations.cpp +9 -0
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
- package/src/duckdb/src/common/serializer/ub_duckdb_common_serializer.cpp +7 -0
- package/src/duckdb/src/common/sort/partition_state.cpp +2 -3
- package/src/duckdb/src/common/sort/ub_duckdb_sort.cpp +7 -0
- package/src/duckdb/src/common/string_util.cpp +3 -3
- package/src/duckdb/src/common/types/bit.cpp +7 -6
- package/src/duckdb/src/common/types/blob.cpp +20 -9
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +8 -6
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +11 -1
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +5 -0
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +1 -1
- package/src/duckdb/src/common/types/column/ub_duckdb_common_types_column.cpp +6 -0
- package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
- package/src/duckdb/src/common/types/date.cpp +1 -1
- package/src/duckdb/src/common/types/hugeint.cpp +3 -2
- package/src/duckdb/src/common/types/interval.cpp +1 -1
- package/src/duckdb/src/common/types/list_segment.cpp +2 -1
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +7 -7
- package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +10 -27
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +168 -88
- package/src/duckdb/src/common/types/row/ub_duckdb_common_types_row.cpp +11 -0
- package/src/duckdb/src/common/types/selection_vector.cpp +1 -1
- package/src/duckdb/src/common/types/string_heap.cpp +5 -1
- package/src/duckdb/src/common/types/string_type.cpp +18 -4
- package/src/duckdb/src/common/types/time.cpp +4 -2
- package/src/duckdb/src/common/types/timestamp.cpp +32 -6
- package/src/duckdb/src/common/types/ub_duckdb_common_types.cpp +28 -0
- package/src/duckdb/src/common/types/uhugeint.cpp +3 -2
- package/src/duckdb/src/common/types/uuid.cpp +11 -0
- package/src/duckdb/src/common/types/validity_mask.cpp +4 -3
- package/src/duckdb/src/common/types/value.cpp +17 -6
- package/src/duckdb/src/common/types/vector.cpp +243 -68
- package/src/duckdb/src/common/types.cpp +7 -5
- package/src/duckdb/src/common/ub_duckdb_common.cpp +34 -0
- package/src/duckdb/src/common/value_operations/ub_duckdb_value_operations.cpp +2 -0
- package/src/duckdb/src/common/vector_operations/generators.cpp +2 -1
- package/src/duckdb/src/common/vector_operations/vector_cast.cpp +4 -4
- package/src/duckdb/src/common/vector_operations/vector_copy.cpp +2 -2
- package/src/duckdb/src/common/vector_operations/vector_hash.cpp +17 -6
- package/src/duckdb/src/core_functions/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +5 -0
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +30 -6
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +12 -5
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -1
- package/src/duckdb/src/core_functions/aggregate/distributive/ub_duckdb_aggr_distributive.cpp +13 -0
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -1
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +2 -9
- package/src/duckdb/src/core_functions/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +5 -0
- package/src/duckdb/src/core_functions/aggregate/nested/ub_duckdb_aggr_nested.cpp +3 -0
- package/src/duckdb/src/core_functions/aggregate/regression/ub_duckdb_aggr_regr.cpp +8 -0
- package/src/duckdb/src/core_functions/function_list.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/bit/bitstring.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/bit/ub_duckdb_func_bit.cpp +2 -0
- package/src/duckdb/src/core_functions/scalar/blob/ub_duckdb_func_blob.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/date/date_diff.cpp +8 -0
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +22 -3
- package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +29 -7
- package/src/duckdb/src/core_functions/scalar/date/to_interval.cpp +3 -1
- package/src/duckdb/src/core_functions/scalar/date/ub_duckdb_func_date.cpp +12 -0
- package/src/duckdb/src/core_functions/scalar/debug/ub_duckdb_func_debug.cpp +2 -0
- package/src/duckdb/src/core_functions/scalar/enum/ub_duckdb_func_enum.cpp +2 -0
- package/src/duckdb/src/core_functions/scalar/generic/ub_duckdb_func_generic.cpp +9 -0
- package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +12 -8
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +2 -1
- package/src/duckdb/src/core_functions/scalar/list/list_reduce.cpp +6 -5
- package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +5 -3
- package/src/duckdb/src/core_functions/scalar/list/list_value.cpp +28 -12
- package/src/duckdb/src/core_functions/scalar/list/ub_duckdb_func_list.cpp +11 -0
- package/src/duckdb/src/core_functions/scalar/map/map.cpp +129 -160
- package/src/duckdb/src/core_functions/scalar/map/ub_duckdb_func_map_nested.cpp +8 -0
- package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +19 -16
- package/src/duckdb/src/core_functions/scalar/math/ub_duckdb_func_math.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/operators/bitwise.cpp +4 -4
- package/src/duckdb/src/core_functions/scalar/operators/ub_duckdb_func_ops.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/random/ub_duckdb_func_random.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/string/hex.cpp +2 -1
- package/src/duckdb/src/core_functions/scalar/string/pad.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/string/replace.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +2 -1
- package/src/duckdb/src/core_functions/scalar/string/translate.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/string/ub_duckdb_func_string.cpp +26 -0
- package/src/duckdb/src/core_functions/scalar/struct/ub_duckdb_func_struct.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/union/ub_duckdb_func_union.cpp +4 -0
- package/src/duckdb/src/core_functions/ub_duckdb_core_functions.cpp +3 -0
- package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/column_binding_resolver.cpp +7 -1
- package/src/duckdb/src/execution/expression_executor/execute_case.cpp +2 -2
- package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +2 -0
- package/src/duckdb/src/execution/expression_executor/execute_function.cpp +2 -2
- package/src/duckdb/src/execution/expression_executor/execute_operator.cpp +1 -1
- package/src/duckdb/src/execution/expression_executor/ub_duckdb_expression_executor.cpp +11 -0
- package/src/duckdb/src/execution/expression_executor.cpp +5 -2
- package/src/duckdb/src/execution/index/art/art.cpp +12 -6
- package/src/duckdb/src/execution/index/art/art_key.cpp +3 -3
- package/src/duckdb/src/execution/index/art/leaf.cpp +2 -2
- package/src/duckdb/src/execution/index/art/node16.cpp +2 -2
- package/src/duckdb/src/execution/index/art/node256.cpp +3 -3
- package/src/duckdb/src/execution/index/art/node48.cpp +5 -5
- package/src/duckdb/src/execution/index/art/prefix.cpp +1 -1
- package/src/duckdb/src/execution/index/art/ub_duckdb_art_index_execution.cpp +12 -0
- package/src/duckdb/src/execution/index/art/ub_duckdb_execution_index_art.cpp +11 -0
- package/src/duckdb/src/execution/index/fixed_size_buffer.cpp +6 -5
- package/src/duckdb/src/execution/index/ub_duckdb_execution_index.cpp +3 -0
- package/src/duckdb/src/execution/nested_loop_join/ub_duckdb_nested_loop_join.cpp +3 -0
- package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +3 -4
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +0 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +3 -4
- package/src/duckdb/src/execution/operator/aggregate/ub_duckdb_operator_aggregate.cpp +9 -0
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +1 -1
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +8 -3
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +1 -1
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/base_scanner.cpp +5 -5
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/column_count_scanner.cpp +2 -3
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/scanner_boundary.cpp +5 -1
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/skip_scanner.cpp +2 -2
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +151 -79
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +11 -6
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +27 -6
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +71 -18
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +22 -11
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +6 -4
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +5 -3
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/ub_duckdb_operator_csv_sniffer.cpp +7 -0
- package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine.cpp +3 -3
- package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +30 -5
- package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +6 -2
- package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +47 -46
- package/src/duckdb/src/execution/operator/csv_scanner/ub_duckdb_operator_csv_scanner.cpp +10 -0
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +102 -54
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +8 -1
- package/src/duckdb/src/execution/operator/filter/ub_duckdb_operator_filter.cpp +2 -0
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +54 -36
- package/src/duckdb/src/execution/operator/helper/physical_limit_percent.cpp +56 -32
- package/src/duckdb/src/execution/operator/helper/physical_streaming_limit.cpp +9 -13
- package/src/duckdb/src/execution/operator/helper/physical_transaction.cpp +12 -0
- package/src/duckdb/src/execution/operator/helper/physical_verify_vector.cpp +221 -0
- package/src/duckdb/src/execution/operator/helper/ub_duckdb_operator_helper.cpp +18 -0
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +1 -0
- package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +23 -8
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +8 -3
- package/src/duckdb/src/execution/operator/join/ub_duckdb_operator_join.cpp +16 -0
- package/src/duckdb/src/execution/operator/order/physical_order.cpp +2 -3
- package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +2 -7
- package/src/duckdb/src/execution/operator/order/ub_duckdb_operator_order.cpp +3 -0
- package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +451 -55
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +312 -150
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +200 -75
- package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -0
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +6 -5
- package/src/duckdb/src/execution/operator/persistent/ub_duckdb_operator_persistent.cpp +10 -0
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +3 -2
- package/src/duckdb/src/execution/operator/projection/ub_duckdb_operator_projection.cpp +5 -0
- package/src/duckdb/src/execution/operator/scan/ub_duckdb_operator_scan.cpp +7 -0
- package/src/duckdb/src/execution/operator/schema/ub_duckdb_operator_schema.cpp +12 -0
- package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +25 -0
- package/src/duckdb/src/execution/operator/set/ub_duckdb_operator_set.cpp +4 -0
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +4 -4
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +7 -17
- package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +10 -0
- package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +7 -0
- package/src/duckdb/src/execution/physical_plan/plan_limit.cpp +45 -13
- package/src/duckdb/src/execution/physical_plan/ub_duckdb_physical_plan.cpp +44 -0
- package/src/duckdb/src/execution/physical_plan_generator.cpp +5 -3
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +13 -12
- package/src/duckdb/src/execution/ub_duckdb_execution.cpp +15 -0
- package/src/duckdb/src/execution/window_executor.cpp +71 -61
- package/src/duckdb/src/execution/window_segment_tree.cpp +6 -6
- package/src/duckdb/src/extension_forward_decl/icu.cpp +59 -0
- package/src/duckdb/src/function/aggregate/algebraic/ub_duckdb_aggr_algebraic.cpp +5 -0
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +2 -2
- package/src/duckdb/src/function/aggregate/distributive/ub_duckdb_aggr_distr.cpp +3 -0
- package/src/duckdb/src/function/aggregate/holistic/ub_duckdb_aggr_holistic.cpp +5 -0
- package/src/duckdb/src/function/aggregate/nested/ub_duckdb_aggr_nested.cpp +3 -0
- package/src/duckdb/src/function/aggregate/regression/ub_duckdb_aggr_regr.cpp +8 -0
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +3 -2
- package/src/duckdb/src/function/aggregate/ub_duckdb_func_aggr.cpp +3 -0
- package/src/duckdb/src/function/cast/array_casts.cpp +2 -4
- package/src/duckdb/src/function/cast/bit_cast.cpp +13 -13
- package/src/duckdb/src/function/cast/cast_function_set.cpp +2 -0
- package/src/duckdb/src/function/cast/decimal_cast.cpp +38 -44
- package/src/duckdb/src/function/cast/default_casts.cpp +5 -2
- package/src/duckdb/src/function/cast/enum_casts.cpp +5 -5
- package/src/duckdb/src/function/cast/list_casts.cpp +24 -14
- package/src/duckdb/src/function/cast/string_cast.cpp +48 -30
- package/src/duckdb/src/function/cast/struct_cast.cpp +2 -2
- package/src/duckdb/src/function/cast/time_casts.cpp +12 -0
- package/src/duckdb/src/function/cast/ub_duckdb_func_cast.cpp +17 -0
- package/src/duckdb/src/function/cast/union/ub_duckdb_union_cast.cpp +2 -0
- package/src/duckdb/src/function/cast/union_casts.cpp +13 -15
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +1 -1
- package/src/duckdb/src/function/cast_rules.cpp +2 -1
- package/src/duckdb/src/function/pragma/ub_duckdb_func_pragma.cpp +3 -0
- package/src/duckdb/src/function/scalar/bit/ub_duckdb_func_bit.cpp +2 -0
- package/src/duckdb/src/function/scalar/blob/ub_duckdb_func_blob.cpp +3 -0
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +7 -6
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +3 -3
- package/src/duckdb/src/function/scalar/compressed_materialization/ub_duckdb_func_compressed_materialization.cpp +3 -0
- package/src/duckdb/src/function/scalar/date/ub_duckdb_func_date.cpp +12 -0
- package/src/duckdb/src/function/scalar/enum/ub_duckdb_func_enum.cpp +2 -0
- package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic.cpp +8 -0
- package/src/duckdb/src/function/scalar/generic/ub_duckdb_func_generic_main.cpp +2 -0
- package/src/duckdb/src/function/scalar/list/list_resize.cpp +3 -1
- package/src/duckdb/src/function/scalar/list/list_zip.cpp +3 -4
- package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list.cpp +11 -0
- package/src/duckdb/src/function/scalar/list/ub_duckdb_func_list_nested.cpp +5 -0
- package/src/duckdb/src/function/scalar/map/ub_duckdb_func_map_nested.cpp +7 -0
- package/src/duckdb/src/function/scalar/math/ub_duckdb_func_math.cpp +4 -0
- package/src/duckdb/src/function/scalar/nested_functions.cpp +7 -3
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +1 -1
- package/src/duckdb/src/function/scalar/operators/multiply.cpp +4 -2
- package/src/duckdb/src/function/scalar/operators/subtract.cpp +9 -3
- package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops.cpp +6 -0
- package/src/duckdb/src/function/scalar/operators/ub_duckdb_func_ops_main.cpp +5 -0
- package/src/duckdb/src/function/scalar/sequence/ub_duckdb_func_seq.cpp +2 -0
- package/src/duckdb/src/function/scalar/strftime_format.cpp +21 -20
- package/src/duckdb/src/function/scalar/string/like.cpp +14 -3
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -2
- package/src/duckdb/src/function/scalar/string/regexp/ub_duckdb_func_string_regexp.cpp +3 -0
- package/src/duckdb/src/function/scalar/string/regexp.cpp +6 -4
- package/src/duckdb/src/function/scalar/string/suffix.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string.cpp +31 -0
- package/src/duckdb/src/function/scalar/string/ub_duckdb_func_string_main.cpp +12 -0
- package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct.cpp +4 -0
- package/src/duckdb/src/function/scalar/struct/ub_duckdb_func_struct_main.cpp +2 -0
- package/src/duckdb/src/function/scalar/system/ub_duckdb_func_system.cpp +2 -0
- package/src/duckdb/src/function/scalar/ub_duckdb_func_scalar.cpp +9 -0
- package/src/duckdb/src/function/scalar/union/ub_duckdb_func_union.cpp +4 -0
- package/src/duckdb/src/function/table/arrow/arrow_array_scan_state.cpp +28 -2
- package/src/duckdb/src/function/table/arrow/ub_duckdb_arrow_conversion.cpp +2 -0
- package/src/duckdb/src/function/table/arrow.cpp +23 -6
- package/src/duckdb/src/function/table/arrow_conversion.cpp +75 -33
- package/src/duckdb/src/function/table/copy_csv.cpp +8 -3
- package/src/duckdb/src/function/table/range.cpp +5 -0
- package/src/duckdb/src/function/table/read_csv.cpp +9 -8
- package/src/duckdb/src/function/table/read_file.cpp +1 -1
- package/src/duckdb/src/function/table/sniff_csv.cpp +5 -5
- package/src/duckdb/src/function/table/system/duckdb_columns.cpp +6 -2
- package/src/duckdb/src/function/table/system/duckdb_secrets.cpp +5 -1
- package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +3 -1
- package/src/duckdb/src/function/table/system/duckdb_settings.cpp +13 -1
- package/src/duckdb/src/function/table/system/test_all_types.cpp +64 -0
- package/src/duckdb/src/function/table/system/ub_duckdb_table_func_system.cpp +23 -0
- package/src/duckdb/src/function/table/ub_duckdb_func_table.cpp +16 -0
- package/src/duckdb/src/function/table/version/pragma_version.cpp +11 -2
- package/src/duckdb/src/function/table/version/ub_duckdb_func_table_version.cpp +2 -0
- package/src/duckdb/src/function/ub_duckdb_function.cpp +14 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +11 -1
- 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 +1 -1
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +8 -11
- package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/arrow/appender/fixed_size_list_data.hpp +14 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/bswap.hpp +6 -2
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +32 -0
- package/src/duckdb/src/include/duckdb/common/enums/catalog_lookup_behavior.hpp +21 -0
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +0 -1
- package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/enums/prepared_statement_mode.hpp +20 -0
- package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/exception/conversion_exception.hpp +6 -0
- package/src/duckdb/src/include/duckdb/common/exception/parser_exception.hpp +4 -0
- package/src/duckdb/src/include/duckdb/common/exception.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/file_opener.hpp +6 -5
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/helper.hpp +7 -0
- package/src/duckdb/src/include/duckdb/common/limits.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +64 -0
- package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +34 -33
- package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +150 -124
- package/src/duckdb/src/include/duckdb/common/operator/integer_cast_operator.hpp +5 -5
- package/src/duckdb/src/include/duckdb/common/radix.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/types/bit.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/blob.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +15 -13
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/types/string_heap.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +11 -4
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +7 -2
- package/src/duckdb/src/include/duckdb/common/types/uuid.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +7 -0
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +40 -7
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/vector_operations/general_cast.hpp +12 -4
- package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +6 -6
- package/src/duckdb/src/include/duckdb/common/vector_operations/vector_operations.hpp +3 -2
- package/src/duckdb/src/include/duckdb/common/windows_undefs.hpp +4 -0
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +9 -0
- package/src/duckdb/src/include/duckdb/execution/column_binding_resolver.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/executor.hpp +10 -0
- package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +262 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +70 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer.hpp +103 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer_manager.hpp +74 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_casting.hpp +154 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +130 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_handle.hpp +60 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_scanner.hpp +70 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_option.hpp +155 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +166 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_sniffer.hpp +191 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state.hpp +30 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine.hpp +99 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine_cache.hpp +91 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/global_csv_state.hpp +80 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/quote_rules.hpp +21 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/scanner_boundary.hpp +93 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/skip_scanner.hpp +60 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/state_machine_options.hpp +35 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +200 -0
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +13 -10
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit_percent.hpp +5 -11
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_streaming_limit.hpp +4 -6
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_verify_vector.hpp +51 -0
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/batch_memory_manager.hpp +165 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/batch_task_manager.hpp +48 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +10 -17
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +4 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +10 -6
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +0 -2
- package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +14 -5
- package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +27 -43
- package/src/duckdb/src/include/duckdb/function/compression_function.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +10 -4
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +8 -6
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/capi/cast/from_decimal.hpp +6 -4
- package/src/duckdb/src/include/duckdb/main/capi/cast/to_decimal.hpp +17 -10
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/client_context.hpp +17 -3
- package/src/duckdb/src/include/duckdb/main/client_context_file_opener.hpp +2 -2
- package/src/duckdb/src/include/duckdb/main/client_context_state.hpp +20 -0
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/database.hpp +3 -2
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +230 -199
- package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +18 -0
- package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +4 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +54 -10
- package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_manager.hpp +2 -1
- package/src/duckdb/src/include/duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parallel/concurrentqueue.hpp +21 -5
- package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/executor_task.hpp +37 -0
- package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/task.hpp +0 -20
- package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +4 -2
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +10 -0
- 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 +0 -24
- package/src/duckdb/src/include/duckdb/parser/parsed_data/comment_on_column_info.hpp +46 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/extra_drop_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +3 -2
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +3 -3
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +11 -4
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +59 -23
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_iterator.hpp +11 -3
- package/src/duckdb/src/include/duckdb/planner/extension_callback.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +0 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +5 -9
- package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +0 -15
- package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/buffer/buffer_pool.hpp +40 -5
- package/src/duckdb/src/include/duckdb/storage/compression/alp/algorithm/alp.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_analyze.hpp +5 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +4 -4
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_utils.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +10 -8
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +5 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_reader.hpp +11 -10
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/bit_utils.hpp +3 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/chimp128.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/leading_zero_buffer.hpp +5 -3
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +3 -1
- package/src/duckdb/src/include/duckdb/storage/index.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +0 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +5 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +9 -2
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +2 -6
- package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/temporary_file_manager.hpp +169 -0
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +11 -1
- package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +6 -1
- package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +1 -1
- package/src/duckdb/src/include/duckdb.h +119 -67
- package/src/duckdb/src/main/appender.cpp +2 -1
- package/src/duckdb/src/main/attached_database.cpp +49 -27
- package/src/duckdb/src/main/capi/appender-c.cpp +1 -1
- package/src/duckdb/src/main/capi/cast/ub_duckdb_main_capi_cast.cpp +3 -0
- package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
- package/src/duckdb/src/main/capi/data_chunk-c.cpp +9 -1
- package/src/duckdb/src/main/capi/datetime-c.cpp +14 -8
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +29 -2
- package/src/duckdb/src/main/capi/helper-c.cpp +2 -0
- package/src/duckdb/src/main/capi/hugeint-c.cpp +2 -1
- package/src/duckdb/src/main/capi/logical_types-c.cpp +35 -1
- package/src/duckdb/src/main/capi/result-c.cpp +9 -0
- package/src/duckdb/src/main/capi/ub_duckdb_main_capi.cpp +19 -0
- package/src/duckdb/src/main/chunk_scan_state/ub_duckdb_main_chunk_scan_state.cpp +2 -0
- package/src/duckdb/src/main/client_context.cpp +133 -33
- package/src/duckdb/src/main/client_context_file_opener.cpp +8 -7
- package/src/duckdb/src/main/config.cpp +2 -0
- package/src/duckdb/src/main/connection_manager.cpp +8 -0
- package/src/duckdb/src/main/database.cpp +13 -4
- package/src/duckdb/src/main/database_manager.cpp +10 -1
- package/src/duckdb/src/main/extension/extension_helper.cpp +8 -5
- package/src/duckdb/src/main/extension/extension_install.cpp +1 -1
- package/src/duckdb/src/main/extension/ub_duckdb_main_extension.cpp +6 -0
- package/src/duckdb/src/main/prepared_statement_data.cpp +23 -6
- package/src/duckdb/src/main/query_profiler.cpp +9 -7
- package/src/duckdb/src/main/relation/read_csv_relation.cpp +17 -12
- package/src/duckdb/src/main/relation/ub_duckdb_main_relation.cpp +26 -0
- package/src/duckdb/src/main/relation/value_relation.cpp +2 -0
- package/src/duckdb/src/main/secret/secret.cpp +1 -1
- package/src/duckdb/src/main/secret/secret_manager.cpp +41 -8
- package/src/duckdb/src/main/secret/secret_storage.cpp +8 -2
- package/src/duckdb/src/main/settings/settings.cpp +42 -2
- package/src/duckdb/src/main/settings/ub_duckdb_main_settings.cpp +2 -0
- package/src/duckdb/src/main/ub_duckdb_main.cpp +25 -0
- package/src/duckdb/src/optimizer/compressed_materialization/ub_duckdb_optimizer_compressed_materialization.cpp +4 -0
- package/src/duckdb/src/optimizer/filter_combiner.cpp +20 -14
- package/src/duckdb/src/optimizer/in_clause_rewriter.cpp +5 -1
- package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +23 -11
- package/src/duckdb/src/optimizer/join_order/ub_duckdb_optimizer_join_order.cpp +12 -0
- package/src/duckdb/src/optimizer/matcher/ub_duckdb_optimizer_matcher.cpp +2 -0
- package/src/duckdb/src/optimizer/pullup/ub_duckdb_optimizer_pullup.cpp +6 -0
- package/src/duckdb/src/optimizer/pushdown/pushdown_limit.cpp +1 -1
- package/src/duckdb/src/optimizer/pushdown/ub_duckdb_optimizer_pushdown.cpp +12 -0
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +7 -6
- package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +8 -6
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +1 -1
- package/src/duckdb/src/optimizer/rule/ub_duckdb_optimizer_rules.cpp +16 -0
- package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +71 -1
- package/src/duckdb/src/optimizer/statistics/expression/ub_duckdb_optimizer_statistics_expr.cpp +11 -0
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/operator/propagate_limit.cpp +5 -1
- package/src/duckdb/src/optimizer/statistics/operator/ub_duckdb_optimizer_statistics_op.cpp +11 -0
- package/src/duckdb/src/optimizer/topn_optimizer.cpp +12 -11
- package/src/duckdb/src/optimizer/ub_duckdb_optimizer.cpp +20 -0
- package/src/duckdb/src/parallel/executor.cpp +8 -19
- package/src/duckdb/src/parallel/executor_task.cpp +6 -2
- package/src/duckdb/src/parallel/pipeline.cpp +12 -6
- package/src/duckdb/src/parallel/pipeline_executor.cpp +1 -1
- package/src/duckdb/src/parallel/pipeline_finish_event.cpp +2 -2
- package/src/duckdb/src/parallel/pipeline_initialize_event.cpp +1 -2
- package/src/duckdb/src/parallel/task_scheduler.cpp +15 -8
- package/src/duckdb/src/parallel/ub_duckdb_parallel.cpp +15 -0
- package/src/duckdb/src/parser/constraints/ub_duckdb_constraints.cpp +5 -0
- package/src/duckdb/src/parser/expression/ub_duckdb_expression.cpp +18 -0
- package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +0 -18
- package/src/duckdb/src/parser/parsed_data/comment_on_column_info.cpp +44 -0
- package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +1 -0
- package/src/duckdb/src/parser/parsed_data/extra_drop_info.cpp +2 -0
- package/src/duckdb/src/parser/parsed_data/ub_duckdb_parsed_data.cpp +24 -0
- package/src/duckdb/src/parser/parser.cpp +1 -1
- package/src/duckdb/src/parser/query_error_context.cpp +15 -1
- package/src/duckdb/src/parser/query_node/ub_duckdb_query_node.cpp +5 -0
- package/src/duckdb/src/parser/statement/export_statement.cpp +2 -1
- package/src/duckdb/src/parser/statement/relation_statement.cpp +2 -2
- package/src/duckdb/src/parser/statement/ub_duckdb_statement.cpp +25 -0
- package/src/duckdb/src/parser/tableref/pivotref.cpp +3 -3
- package/src/duckdb/src/parser/tableref/showref.cpp +2 -0
- package/src/duckdb/src/parser/tableref/ub_duckdb_parser_tableref.cpp +8 -0
- package/src/duckdb/src/parser/transform/constraint/ub_duckdb_transformer_constraint.cpp +2 -0
- package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +10 -2
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +2 -1
- package/src/duckdb/src/parser/transform/expression/ub_duckdb_transformer_expression.cpp +20 -0
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +2 -2
- package/src/duckdb/src/parser/transform/helpers/ub_duckdb_transformer_helpers.cpp +8 -0
- package/src/duckdb/src/parser/transform/statement/transform_comment_on.cpp +3 -8
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +3 -1
- package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/ub_duckdb_transformer_statement.cpp +37 -0
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +16 -0
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +49 -32
- package/src/duckdb/src/parser/transform/tableref/ub_duckdb_transformer_tableref.cpp +8 -0
- package/src/duckdb/src/parser/ub_duckdb_parser.cpp +15 -0
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +11 -4
- package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +4 -1
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +71 -5
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +35 -1
- package/src/duckdb/src/planner/binder/expression/ub_duckdb_bind_expression.cpp +20 -0
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +55 -51
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +1 -11
- package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +2 -2
- package/src/duckdb/src/planner/binder/query_node/ub_duckdb_bind_query_node.cpp +12 -0
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +12 -6
- package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_export.cpp +8 -2
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +6 -3
- package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +13 -2
- package/src/duckdb/src/planner/binder/statement/ub_duckdb_bind_statement.cpp +26 -0
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +15 -4
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +9 -2
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +93 -45
- package/src/duckdb/src/planner/binder/tableref/bind_subqueryref.cpp +6 -1
- package/src/duckdb/src/planner/binder/tableref/ub_duckdb_bind_tableref.cpp +17 -0
- package/src/duckdb/src/planner/binder.cpp +22 -23
- package/src/duckdb/src/planner/bound_result_modifier.cpp +67 -4
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +5 -1
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +3 -0
- package/src/duckdb/src/planner/expression/ub_duckdb_planner_expression.cpp +19 -0
- package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +14 -9
- package/src/duckdb/src/planner/expression_binder/having_binder.cpp +17 -9
- package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +61 -37
- package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +8 -4
- package/src/duckdb/src/planner/expression_binder/ub_duckdb_expression_binders.cpp +20 -0
- package/src/duckdb/src/planner/expression_binder/where_binder.cpp +3 -2
- package/src/duckdb/src/planner/expression_iterator.cpp +73 -52
- package/src/duckdb/src/planner/filter/ub_duckdb_planner_filter.cpp +4 -0
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +4 -14
- package/src/duckdb/src/planner/operator/logical_limit.cpp +14 -6
- package/src/duckdb/src/planner/operator/ub_duckdb_planner_operator.cpp +43 -0
- package/src/duckdb/src/planner/parsed_data/ub_duckdb_planner_parsed_data.cpp +2 -0
- package/src/duckdb/src/planner/planner.cpp +3 -0
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +46 -18
- package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +39 -33
- package/src/duckdb/src/planner/subquery/ub_duckdb_planner_subquery.cpp +4 -0
- package/src/duckdb/src/planner/ub_duckdb_planner.cpp +15 -0
- package/src/duckdb/src/storage/arena_allocator.cpp +9 -0
- package/src/duckdb/src/storage/buffer/block_handle.cpp +7 -2
- package/src/duckdb/src/storage/buffer/block_manager.cpp +7 -3
- package/src/duckdb/src/storage/buffer/buffer_pool.cpp +121 -24
- package/src/duckdb/src/storage/buffer/ub_duckdb_storage_buffer.cpp +6 -0
- package/src/duckdb/src/storage/checkpoint/ub_duckdb_storage_checkpoint.cpp +5 -0
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +4 -4
- package/src/duckdb/src/storage/compression/chimp/ub_duckdb_storage_compression_chimp.cpp +6 -0
- package/src/duckdb/src/storage/compression/dictionary_compression.cpp +6 -5
- package/src/duckdb/src/storage/compression/fsst.cpp +3 -2
- package/src/duckdb/src/storage/compression/rle.cpp +1 -1
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +4 -4
- package/src/duckdb/src/storage/compression/ub_duckdb_storage_compression.cpp +12 -0
- package/src/duckdb/src/storage/data_table.cpp +6 -3
- package/src/duckdb/src/storage/local_storage.cpp +5 -2
- package/src/duckdb/src/storage/metadata/metadata_manager.cpp +4 -4
- package/src/duckdb/src/storage/metadata/metadata_reader.cpp +1 -1
- package/src/duckdb/src/storage/metadata/metadata_writer.cpp +1 -1
- package/src/duckdb/src/storage/metadata/ub_duckdb_storage_metadata.cpp +4 -0
- package/src/duckdb/src/storage/partial_block_manager.cpp +1 -1
- package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +2 -0
- package/src/duckdb/src/storage/serialization/serialize_expression.cpp +3 -0
- package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +5 -29
- package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +22 -4
- package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +12 -32
- package/src/duckdb/src/storage/serialization/ub_duckdb_storage_serialization.cpp +16 -0
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +29 -397
- package/src/duckdb/src/storage/statistics/string_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/ub_duckdb_storage_statistics.cpp +10 -0
- package/src/duckdb/src/storage/storage_info.cpp +1 -1
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +3 -3
- package/src/duckdb/src/storage/table/column_data.cpp +7 -16
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +4 -1
- package/src/duckdb/src/storage/table/column_segment.cpp +68 -78
- package/src/duckdb/src/storage/table/list_column_data.cpp +1 -0
- package/src/duckdb/src/storage/table/row_group.cpp +17 -7
- package/src/duckdb/src/storage/table/row_group_collection.cpp +28 -27
- package/src/duckdb/src/storage/table/ub_duckdb_storage_table.cpp +17 -0
- package/src/duckdb/src/storage/table/update_segment.cpp +7 -7
- package/src/duckdb/src/storage/temporary_file_manager.cpp +334 -0
- package/src/duckdb/src/storage/ub_duckdb_storage.cpp +20 -0
- package/src/duckdb/src/storage/write_ahead_log.cpp +3 -2
- package/src/duckdb/src/transaction/commit_state.cpp +4 -2
- package/src/duckdb/src/transaction/duck_transaction_manager.cpp +32 -17
- package/src/duckdb/src/transaction/meta_transaction.cpp +24 -0
- package/src/duckdb/src/transaction/transaction_context.cpp +0 -9
- package/src/duckdb/src/transaction/ub_duckdb_transaction.cpp +11 -0
- package/src/duckdb/src/transaction/undo_buffer.cpp +1 -1
- package/src/duckdb/third_party/jaro_winkler/details/common.hpp +1 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +2 -0
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +1032 -551
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24122 -24304
- package/src/duckdb/third_party/mbedtls/include/mbedtls/mbedtls_config.h +0 -3
- package/src/duckdb/third_party/mbedtls/library/entropy_poll.cpp +32 -4
- package/src/duckdb/third_party/miniz/miniz_wrapper.hpp +4 -4
- package/src/duckdb/third_party/tdigest/t_digest.hpp +3 -3
- package/src/duckdb/ub_src_common_arrow_appender.cpp +2 -0
- package/src/duckdb/ub_src_common_exception.cpp +2 -0
- package/src/duckdb/ub_src_execution_operator_helper.cpp +2 -0
- package/src/duckdb/ub_src_execution_operator_persistent.cpp +0 -2
- package/src/duckdb/ub_src_execution_physical_plan.cpp +0 -2
- package/src/duckdb/ub_src_parser_parsed_data.cpp +1 -1
- package/src/duckdb/ub_src_planner_operator.cpp +0 -2
- package/src/duckdb/ub_src_storage.cpp +2 -0
- package/test/columns.test.ts +1 -1
- package/test/test_all_types.test.ts +1 -1
|
@@ -69,8 +69,9 @@ public:
|
|
|
69
69
|
|
|
70
70
|
//! Initialize an append of a variable number of rows. FinalizeAppend must be called after appending is done.
|
|
71
71
|
void InitializeAppend(TableAppendState &state);
|
|
72
|
-
//! Initialize an append with a
|
|
73
|
-
|
|
72
|
+
//! Initialize an append with a variable number of rows. FinalizeAppend should not be called after appending is
|
|
73
|
+
//! done.
|
|
74
|
+
void InitializeAppend(TransactionData transaction, TableAppendState &state);
|
|
74
75
|
//! Appends to the row group collection. Returns true if a new row group has been created to append to
|
|
75
76
|
bool Append(DataChunk &chunk, TableAppendState &state);
|
|
76
77
|
//! FinalizeAppend flushes an append with a variable number of rows.
|
|
@@ -119,6 +120,10 @@ public:
|
|
|
119
120
|
return *info;
|
|
120
121
|
}
|
|
121
122
|
|
|
123
|
+
idx_t GetAllocationSize() const {
|
|
124
|
+
return allocation_size;
|
|
125
|
+
}
|
|
126
|
+
|
|
122
127
|
private:
|
|
123
128
|
bool IsEmpty(SegmentLock &) const;
|
|
124
129
|
|
|
@@ -136,6 +141,8 @@ private:
|
|
|
136
141
|
shared_ptr<RowGroupSegmentTree> row_groups;
|
|
137
142
|
//! Table statistics
|
|
138
143
|
TableStatistics stats;
|
|
144
|
+
//! Allocation size, only tracked for appends
|
|
145
|
+
idx_t allocation_size;
|
|
139
146
|
};
|
|
140
147
|
|
|
141
148
|
} // namespace duckdb
|
|
@@ -39,7 +39,7 @@ struct SegmentScanState {
|
|
|
39
39
|
|
|
40
40
|
template <class TARGET>
|
|
41
41
|
TARGET &Cast() {
|
|
42
|
-
|
|
42
|
+
DynamicCastCheck<TARGET>(this);
|
|
43
43
|
return reinterpret_cast<TARGET &>(*this);
|
|
44
44
|
}
|
|
45
45
|
template <class TARGET>
|
|
@@ -55,7 +55,7 @@ struct IndexScanState {
|
|
|
55
55
|
|
|
56
56
|
template <class TARGET>
|
|
57
57
|
TARGET &Cast() {
|
|
58
|
-
|
|
58
|
+
DynamicCastCheck<TARGET>(this);
|
|
59
59
|
return reinterpret_cast<TARGET &>(*this);
|
|
60
60
|
}
|
|
61
61
|
template <class TARGET>
|
|
@@ -84,10 +84,6 @@ struct ColumnScanState {
|
|
|
84
84
|
bool initialized = false;
|
|
85
85
|
//! If this segment has already been checked for skipping purposes
|
|
86
86
|
bool segment_checked = false;
|
|
87
|
-
//! The version of the column data that we are scanning.
|
|
88
|
-
//! This is used to detect if the ColumnData has been changed out from under us during a scan
|
|
89
|
-
//! If this is the case, we re-initialize the scan
|
|
90
|
-
idx_t version = 0;
|
|
91
87
|
//! We initialize one SegmentScanState per segment, however, if scanning a DataChunk requires us to scan over more
|
|
92
88
|
//! than one Segment, we need to keep the scan states of the previous segments around
|
|
93
89
|
vector<unique_ptr<SegmentScanState>> previous_states;
|
|
@@ -69,6 +69,9 @@ public:
|
|
|
69
69
|
}
|
|
70
70
|
idx_t GetSegmentCount() {
|
|
71
71
|
auto l = Lock();
|
|
72
|
+
return GetSegmentCount(l);
|
|
73
|
+
}
|
|
74
|
+
idx_t GetSegmentCount(SegmentLock &l) {
|
|
72
75
|
return nodes.size();
|
|
73
76
|
}
|
|
74
77
|
//! Gets a pointer to the nth segment. Negative numbers start from the back.
|
|
@@ -207,9 +210,6 @@ public:
|
|
|
207
210
|
if (nodes.empty()) {
|
|
208
211
|
return false;
|
|
209
212
|
}
|
|
210
|
-
D_ASSERT(!nodes.empty());
|
|
211
|
-
D_ASSERT(row_number >= nodes[0].row_start);
|
|
212
|
-
D_ASSERT(row_number < nodes.back().row_start + nodes.back().node->count);
|
|
213
213
|
idx_t lower = 0;
|
|
214
214
|
idx_t upper = nodes.size() - 1;
|
|
215
215
|
// binary search to find the node
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
|
2
|
+
// DuckDB
|
|
3
|
+
//
|
|
4
|
+
// duckdb/storage/temporary_file_manager.hpp
|
|
5
|
+
//
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include "duckdb/common/allocator.hpp"
|
|
12
|
+
#include "duckdb/common/atomic.hpp"
|
|
13
|
+
#include "duckdb/common/file_system.hpp"
|
|
14
|
+
#include "duckdb/common/mutex.hpp"
|
|
15
|
+
#include "duckdb/storage/block_manager.hpp"
|
|
16
|
+
#include "duckdb/storage/buffer/block_handle.hpp"
|
|
17
|
+
#include "duckdb/storage/buffer/buffer_pool.hpp"
|
|
18
|
+
#include "duckdb/storage/buffer_manager.hpp"
|
|
19
|
+
|
|
20
|
+
namespace duckdb {
|
|
21
|
+
|
|
22
|
+
//===--------------------------------------------------------------------===//
|
|
23
|
+
// BlockIndexManager
|
|
24
|
+
//===--------------------------------------------------------------------===//
|
|
25
|
+
|
|
26
|
+
struct BlockIndexManager {
|
|
27
|
+
public:
|
|
28
|
+
BlockIndexManager();
|
|
29
|
+
|
|
30
|
+
public:
|
|
31
|
+
//! Obtains a new block index from the index manager
|
|
32
|
+
idx_t GetNewBlockIndex();
|
|
33
|
+
//! Removes an index from the block manager
|
|
34
|
+
//! Returns true if the max_index has been altered
|
|
35
|
+
bool RemoveIndex(idx_t index);
|
|
36
|
+
idx_t GetMaxIndex();
|
|
37
|
+
bool HasFreeBlocks();
|
|
38
|
+
|
|
39
|
+
private:
|
|
40
|
+
idx_t GetNewBlockIndexInternal();
|
|
41
|
+
|
|
42
|
+
private:
|
|
43
|
+
idx_t max_index;
|
|
44
|
+
set<idx_t> free_indexes;
|
|
45
|
+
set<idx_t> indexes_in_use;
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
//===--------------------------------------------------------------------===//
|
|
49
|
+
// TemporaryFileIndex
|
|
50
|
+
//===--------------------------------------------------------------------===//
|
|
51
|
+
|
|
52
|
+
// FIXME: should be optional_idx
|
|
53
|
+
struct TemporaryFileIndex {
|
|
54
|
+
explicit TemporaryFileIndex(idx_t file_index = DConstants::INVALID_INDEX,
|
|
55
|
+
idx_t block_index = DConstants::INVALID_INDEX);
|
|
56
|
+
|
|
57
|
+
idx_t file_index;
|
|
58
|
+
idx_t block_index;
|
|
59
|
+
|
|
60
|
+
public:
|
|
61
|
+
bool IsValid() const;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
//===--------------------------------------------------------------------===//
|
|
65
|
+
// TemporaryFileHandle
|
|
66
|
+
//===--------------------------------------------------------------------===//
|
|
67
|
+
|
|
68
|
+
class TemporaryFileHandle {
|
|
69
|
+
constexpr static idx_t MAX_ALLOWED_INDEX_BASE = 4000;
|
|
70
|
+
|
|
71
|
+
public:
|
|
72
|
+
TemporaryFileHandle(idx_t temp_file_count, DatabaseInstance &db, const string &temp_directory, idx_t index);
|
|
73
|
+
|
|
74
|
+
public:
|
|
75
|
+
struct TemporaryFileLock {
|
|
76
|
+
public:
|
|
77
|
+
explicit TemporaryFileLock(mutex &mutex);
|
|
78
|
+
|
|
79
|
+
public:
|
|
80
|
+
lock_guard<mutex> lock;
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
public:
|
|
84
|
+
TemporaryFileIndex TryGetBlockIndex();
|
|
85
|
+
void WriteTemporaryFile(FileBuffer &buffer, TemporaryFileIndex index);
|
|
86
|
+
unique_ptr<FileBuffer> ReadTemporaryBuffer(idx_t block_index, unique_ptr<FileBuffer> reusable_buffer);
|
|
87
|
+
void EraseBlockIndex(block_id_t block_index);
|
|
88
|
+
bool DeleteIfEmpty();
|
|
89
|
+
TemporaryFileInformation GetTemporaryFile();
|
|
90
|
+
|
|
91
|
+
private:
|
|
92
|
+
void CreateFileIfNotExists(TemporaryFileLock &);
|
|
93
|
+
void RemoveTempBlockIndex(TemporaryFileLock &, idx_t index);
|
|
94
|
+
idx_t GetPositionInFile(idx_t index);
|
|
95
|
+
|
|
96
|
+
private:
|
|
97
|
+
const idx_t max_allowed_index;
|
|
98
|
+
DatabaseInstance &db;
|
|
99
|
+
unique_ptr<FileHandle> handle;
|
|
100
|
+
idx_t file_index;
|
|
101
|
+
string path;
|
|
102
|
+
mutex file_lock;
|
|
103
|
+
BlockIndexManager index_manager;
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
class TemporaryFileManager;
|
|
107
|
+
|
|
108
|
+
//===--------------------------------------------------------------------===//
|
|
109
|
+
// TemporaryDirectoryHandle
|
|
110
|
+
//===--------------------------------------------------------------------===//
|
|
111
|
+
|
|
112
|
+
class TemporaryDirectoryHandle {
|
|
113
|
+
public:
|
|
114
|
+
TemporaryDirectoryHandle(DatabaseInstance &db, string path_p);
|
|
115
|
+
~TemporaryDirectoryHandle();
|
|
116
|
+
|
|
117
|
+
TemporaryFileManager &GetTempFile();
|
|
118
|
+
|
|
119
|
+
private:
|
|
120
|
+
DatabaseInstance &db;
|
|
121
|
+
string temp_directory;
|
|
122
|
+
bool created_directory = false;
|
|
123
|
+
unique_ptr<TemporaryFileManager> temp_file;
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
//===--------------------------------------------------------------------===//
|
|
127
|
+
// TemporaryFileManager
|
|
128
|
+
//===--------------------------------------------------------------------===//
|
|
129
|
+
|
|
130
|
+
class TemporaryFileManager {
|
|
131
|
+
public:
|
|
132
|
+
TemporaryFileManager(DatabaseInstance &db, const string &temp_directory_p);
|
|
133
|
+
|
|
134
|
+
public:
|
|
135
|
+
struct TemporaryManagerLock {
|
|
136
|
+
public:
|
|
137
|
+
explicit TemporaryManagerLock(mutex &mutex);
|
|
138
|
+
|
|
139
|
+
public:
|
|
140
|
+
lock_guard<mutex> lock;
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
void WriteTemporaryBuffer(block_id_t block_id, FileBuffer &buffer);
|
|
144
|
+
bool HasTemporaryBuffer(block_id_t block_id);
|
|
145
|
+
unique_ptr<FileBuffer> ReadTemporaryBuffer(block_id_t id, unique_ptr<FileBuffer> reusable_buffer);
|
|
146
|
+
void DeleteTemporaryBuffer(block_id_t id);
|
|
147
|
+
vector<TemporaryFileInformation> GetTemporaryFiles();
|
|
148
|
+
|
|
149
|
+
private:
|
|
150
|
+
void EraseUsedBlock(TemporaryManagerLock &lock, block_id_t id, TemporaryFileHandle *handle,
|
|
151
|
+
TemporaryFileIndex index);
|
|
152
|
+
TemporaryFileHandle *GetFileHandle(TemporaryManagerLock &, idx_t index);
|
|
153
|
+
TemporaryFileIndex GetTempBlockIndex(TemporaryManagerLock &, block_id_t id);
|
|
154
|
+
void EraseFileHandle(TemporaryManagerLock &, idx_t file_index);
|
|
155
|
+
|
|
156
|
+
private:
|
|
157
|
+
DatabaseInstance &db;
|
|
158
|
+
mutex manager_lock;
|
|
159
|
+
//! The temporary directory
|
|
160
|
+
string temp_directory;
|
|
161
|
+
//! The set of active temporary file handles
|
|
162
|
+
unordered_map<idx_t, unique_ptr<TemporaryFileHandle>> files;
|
|
163
|
+
//! map of block_id -> temporary file position
|
|
164
|
+
unordered_map<block_id_t, TemporaryFileIndex> used_blocks;
|
|
165
|
+
//! Manager of in-use temporary file indexes
|
|
166
|
+
BlockIndexManager index_manager;
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
} // namespace duckdb
|
|
@@ -45,8 +45,14 @@ public:
|
|
|
45
45
|
return true;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
protected:
|
|
49
|
+
struct CheckpointDecision {
|
|
50
|
+
bool can_checkpoint;
|
|
51
|
+
string reason;
|
|
52
|
+
};
|
|
53
|
+
|
|
48
54
|
private:
|
|
49
|
-
|
|
55
|
+
CheckpointDecision CanCheckpoint(optional_ptr<DuckTransaction> current = nullptr);
|
|
50
56
|
//! Remove the given transaction from the list of active transactions
|
|
51
57
|
void RemoveTransaction(DuckTransaction &transaction) noexcept;
|
|
52
58
|
|
|
@@ -69,6 +75,10 @@ private:
|
|
|
69
75
|
mutex transaction_lock;
|
|
70
76
|
|
|
71
77
|
bool thread_is_checkpointing;
|
|
78
|
+
|
|
79
|
+
protected:
|
|
80
|
+
virtual void OnCommitCheckpointDecision(const CheckpointDecision &decision, DuckTransaction &transaction) {
|
|
81
|
+
}
|
|
72
82
|
};
|
|
73
83
|
|
|
74
84
|
} // namespace duckdb
|
|
@@ -41,7 +41,7 @@ public:
|
|
|
41
41
|
|
|
42
42
|
public:
|
|
43
43
|
DUCKDB_API static MetaTransaction &Get(ClientContext &context);
|
|
44
|
-
timestamp_t GetCurrentTransactionStartTimestamp() {
|
|
44
|
+
timestamp_t GetCurrentTransactionStartTimestamp() const {
|
|
45
45
|
return start_timestamp;
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -58,8 +58,13 @@ public:
|
|
|
58
58
|
optional_ptr<AttachedDatabase> ModifiedDatabase() {
|
|
59
59
|
return modified_database;
|
|
60
60
|
}
|
|
61
|
+
const vector<reference<AttachedDatabase>> &OpenedTransactions() const {
|
|
62
|
+
return all_transactions;
|
|
63
|
+
}
|
|
61
64
|
|
|
62
65
|
private:
|
|
66
|
+
//! Lock to prevent all_transactions and transactions from getting out of sync
|
|
67
|
+
mutex lock;
|
|
63
68
|
//! The set of active transactions for each database
|
|
64
69
|
reference_map_t<AttachedDatabase, reference<Transaction>> transactions;
|
|
65
70
|
//! The set of transactions in order of when they were started
|
|
@@ -64,74 +64,77 @@ extern "C" {
|
|
|
64
64
|
//===--------------------------------------------------------------------===//
|
|
65
65
|
// Enums
|
|
66
66
|
//===--------------------------------------------------------------------===//
|
|
67
|
-
|
|
67
|
+
// WARNING: the numbers of these enums should not be changed, as changing the numbers breaks ABI compatibility
|
|
68
|
+
// Always add enums at the END of the enum
|
|
68
69
|
//! An enum over DuckDB's internal types.
|
|
69
70
|
typedef enum DUCKDB_TYPE {
|
|
70
71
|
DUCKDB_TYPE_INVALID = 0,
|
|
71
72
|
// bool
|
|
72
|
-
DUCKDB_TYPE_BOOLEAN,
|
|
73
|
+
DUCKDB_TYPE_BOOLEAN = 1,
|
|
73
74
|
// int8_t
|
|
74
|
-
DUCKDB_TYPE_TINYINT,
|
|
75
|
+
DUCKDB_TYPE_TINYINT = 2,
|
|
75
76
|
// int16_t
|
|
76
|
-
DUCKDB_TYPE_SMALLINT,
|
|
77
|
+
DUCKDB_TYPE_SMALLINT = 3,
|
|
77
78
|
// int32_t
|
|
78
|
-
DUCKDB_TYPE_INTEGER,
|
|
79
|
+
DUCKDB_TYPE_INTEGER = 4,
|
|
79
80
|
// int64_t
|
|
80
|
-
DUCKDB_TYPE_BIGINT,
|
|
81
|
+
DUCKDB_TYPE_BIGINT = 5,
|
|
81
82
|
// uint8_t
|
|
82
|
-
DUCKDB_TYPE_UTINYINT,
|
|
83
|
+
DUCKDB_TYPE_UTINYINT = 6,
|
|
83
84
|
// uint16_t
|
|
84
|
-
DUCKDB_TYPE_USMALLINT,
|
|
85
|
+
DUCKDB_TYPE_USMALLINT = 7,
|
|
85
86
|
// uint32_t
|
|
86
|
-
DUCKDB_TYPE_UINTEGER,
|
|
87
|
+
DUCKDB_TYPE_UINTEGER = 8,
|
|
87
88
|
// uint64_t
|
|
88
|
-
DUCKDB_TYPE_UBIGINT,
|
|
89
|
+
DUCKDB_TYPE_UBIGINT = 9,
|
|
89
90
|
// float
|
|
90
|
-
DUCKDB_TYPE_FLOAT,
|
|
91
|
+
DUCKDB_TYPE_FLOAT = 10,
|
|
91
92
|
// double
|
|
92
|
-
DUCKDB_TYPE_DOUBLE,
|
|
93
|
+
DUCKDB_TYPE_DOUBLE = 11,
|
|
93
94
|
// duckdb_timestamp, in microseconds
|
|
94
|
-
DUCKDB_TYPE_TIMESTAMP,
|
|
95
|
+
DUCKDB_TYPE_TIMESTAMP = 12,
|
|
95
96
|
// duckdb_date
|
|
96
|
-
DUCKDB_TYPE_DATE,
|
|
97
|
+
DUCKDB_TYPE_DATE = 13,
|
|
97
98
|
// duckdb_time
|
|
98
|
-
DUCKDB_TYPE_TIME,
|
|
99
|
+
DUCKDB_TYPE_TIME = 14,
|
|
99
100
|
// duckdb_interval
|
|
100
|
-
DUCKDB_TYPE_INTERVAL,
|
|
101
|
+
DUCKDB_TYPE_INTERVAL = 15,
|
|
101
102
|
// duckdb_hugeint
|
|
102
|
-
DUCKDB_TYPE_HUGEINT,
|
|
103
|
+
DUCKDB_TYPE_HUGEINT = 16,
|
|
103
104
|
// duckdb_uhugeint
|
|
104
|
-
DUCKDB_TYPE_UHUGEINT,
|
|
105
|
+
DUCKDB_TYPE_UHUGEINT = 32,
|
|
105
106
|
// const char*
|
|
106
|
-
DUCKDB_TYPE_VARCHAR,
|
|
107
|
+
DUCKDB_TYPE_VARCHAR = 17,
|
|
107
108
|
// duckdb_blob
|
|
108
|
-
DUCKDB_TYPE_BLOB,
|
|
109
|
+
DUCKDB_TYPE_BLOB = 18,
|
|
109
110
|
// decimal
|
|
110
|
-
DUCKDB_TYPE_DECIMAL,
|
|
111
|
+
DUCKDB_TYPE_DECIMAL = 19,
|
|
111
112
|
// duckdb_timestamp, in seconds
|
|
112
|
-
DUCKDB_TYPE_TIMESTAMP_S,
|
|
113
|
+
DUCKDB_TYPE_TIMESTAMP_S = 20,
|
|
113
114
|
// duckdb_timestamp, in milliseconds
|
|
114
|
-
DUCKDB_TYPE_TIMESTAMP_MS,
|
|
115
|
+
DUCKDB_TYPE_TIMESTAMP_MS = 21,
|
|
115
116
|
// duckdb_timestamp, in nanoseconds
|
|
116
|
-
DUCKDB_TYPE_TIMESTAMP_NS,
|
|
117
|
+
DUCKDB_TYPE_TIMESTAMP_NS = 22,
|
|
117
118
|
// enum type, only useful as logical type
|
|
118
|
-
DUCKDB_TYPE_ENUM,
|
|
119
|
+
DUCKDB_TYPE_ENUM = 23,
|
|
119
120
|
// list type, only useful as logical type
|
|
120
|
-
DUCKDB_TYPE_LIST,
|
|
121
|
+
DUCKDB_TYPE_LIST = 24,
|
|
121
122
|
// struct type, only useful as logical type
|
|
122
|
-
DUCKDB_TYPE_STRUCT,
|
|
123
|
+
DUCKDB_TYPE_STRUCT = 25,
|
|
123
124
|
// map type, only useful as logical type
|
|
124
|
-
DUCKDB_TYPE_MAP,
|
|
125
|
+
DUCKDB_TYPE_MAP = 26,
|
|
126
|
+
// duckdb_array, only useful as logical type
|
|
127
|
+
DUCKDB_TYPE_ARRAY = 33,
|
|
125
128
|
// duckdb_hugeint
|
|
126
|
-
DUCKDB_TYPE_UUID,
|
|
129
|
+
DUCKDB_TYPE_UUID = 27,
|
|
127
130
|
// union type, only useful as logical type
|
|
128
|
-
DUCKDB_TYPE_UNION,
|
|
131
|
+
DUCKDB_TYPE_UNION = 28,
|
|
129
132
|
// duckdb_bit
|
|
130
|
-
DUCKDB_TYPE_BIT,
|
|
133
|
+
DUCKDB_TYPE_BIT = 29,
|
|
131
134
|
// duckdb_time_tz
|
|
132
|
-
DUCKDB_TYPE_TIME_TZ,
|
|
135
|
+
DUCKDB_TYPE_TIME_TZ = 30,
|
|
133
136
|
// duckdb_timestamp
|
|
134
|
-
DUCKDB_TYPE_TIMESTAMP_TZ,
|
|
137
|
+
DUCKDB_TYPE_TIMESTAMP_TZ = 31,
|
|
135
138
|
} duckdb_type;
|
|
136
139
|
//! An enum over the returned state of different functions.
|
|
137
140
|
typedef enum { DuckDBSuccess = 0, DuckDBError = 1 } duckdb_state;
|
|
@@ -144,41 +147,41 @@ typedef enum {
|
|
|
144
147
|
} duckdb_pending_state;
|
|
145
148
|
//! An enum over DuckDB's different result types.
|
|
146
149
|
typedef enum {
|
|
147
|
-
DUCKDB_RESULT_TYPE_INVALID,
|
|
148
|
-
DUCKDB_RESULT_TYPE_CHANGED_ROWS,
|
|
149
|
-
DUCKDB_RESULT_TYPE_NOTHING,
|
|
150
|
-
DUCKDB_RESULT_TYPE_QUERY_RESULT,
|
|
150
|
+
DUCKDB_RESULT_TYPE_INVALID = 0,
|
|
151
|
+
DUCKDB_RESULT_TYPE_CHANGED_ROWS = 1,
|
|
152
|
+
DUCKDB_RESULT_TYPE_NOTHING = 2,
|
|
153
|
+
DUCKDB_RESULT_TYPE_QUERY_RESULT = 3,
|
|
151
154
|
} duckdb_result_type;
|
|
152
155
|
//! An enum over DuckDB's different statement types.
|
|
153
156
|
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,
|
|
157
|
+
DUCKDB_STATEMENT_TYPE_INVALID = 0,
|
|
158
|
+
DUCKDB_STATEMENT_TYPE_SELECT = 1,
|
|
159
|
+
DUCKDB_STATEMENT_TYPE_INSERT = 2,
|
|
160
|
+
DUCKDB_STATEMENT_TYPE_UPDATE = 3,
|
|
161
|
+
DUCKDB_STATEMENT_TYPE_EXPLAIN = 4,
|
|
162
|
+
DUCKDB_STATEMENT_TYPE_DELETE = 5,
|
|
163
|
+
DUCKDB_STATEMENT_TYPE_PREPARE = 6,
|
|
164
|
+
DUCKDB_STATEMENT_TYPE_CREATE = 7,
|
|
165
|
+
DUCKDB_STATEMENT_TYPE_EXECUTE = 8,
|
|
166
|
+
DUCKDB_STATEMENT_TYPE_ALTER = 9,
|
|
167
|
+
DUCKDB_STATEMENT_TYPE_TRANSACTION = 10,
|
|
168
|
+
DUCKDB_STATEMENT_TYPE_COPY = 11,
|
|
169
|
+
DUCKDB_STATEMENT_TYPE_ANALYZE = 12,
|
|
170
|
+
DUCKDB_STATEMENT_TYPE_VARIABLE_SET = 13,
|
|
171
|
+
DUCKDB_STATEMENT_TYPE_CREATE_FUNC = 14,
|
|
172
|
+
DUCKDB_STATEMENT_TYPE_DROP = 15,
|
|
173
|
+
DUCKDB_STATEMENT_TYPE_EXPORT = 16,
|
|
174
|
+
DUCKDB_STATEMENT_TYPE_PRAGMA = 17,
|
|
175
|
+
DUCKDB_STATEMENT_TYPE_VACUUM = 18,
|
|
176
|
+
DUCKDB_STATEMENT_TYPE_CALL = 19,
|
|
177
|
+
DUCKDB_STATEMENT_TYPE_SET = 20,
|
|
178
|
+
DUCKDB_STATEMENT_TYPE_LOAD = 21,
|
|
179
|
+
DUCKDB_STATEMENT_TYPE_RELATION = 22,
|
|
180
|
+
DUCKDB_STATEMENT_TYPE_EXTENSION = 23,
|
|
181
|
+
DUCKDB_STATEMENT_TYPE_LOGICAL_PLAN = 24,
|
|
182
|
+
DUCKDB_STATEMENT_TYPE_ATTACH = 25,
|
|
183
|
+
DUCKDB_STATEMENT_TYPE_DETACH = 26,
|
|
184
|
+
DUCKDB_STATEMENT_TYPE_MULTI = 27,
|
|
182
185
|
} duckdb_statement_type;
|
|
183
186
|
|
|
184
187
|
//===--------------------------------------------------------------------===//
|
|
@@ -227,7 +230,7 @@ typedef struct {
|
|
|
227
230
|
uint64_t bits;
|
|
228
231
|
} duckdb_time_tz;
|
|
229
232
|
typedef struct {
|
|
230
|
-
|
|
233
|
+
duckdb_time_struct time;
|
|
231
234
|
int32_t offset;
|
|
232
235
|
} duckdb_time_tz_struct;
|
|
233
236
|
|
|
@@ -1625,6 +1628,16 @@ Creates a list value from a type and an array of values of length `value_count`
|
|
|
1625
1628
|
*/
|
|
1626
1629
|
DUCKDB_API duckdb_value duckdb_create_list_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count);
|
|
1627
1630
|
|
|
1631
|
+
/*!
|
|
1632
|
+
Creates a array value from a type and an array of values of length `value_count`
|
|
1633
|
+
|
|
1634
|
+
* type: The type of the array
|
|
1635
|
+
* values: The values for the array
|
|
1636
|
+
* value_count: The number of values in the array
|
|
1637
|
+
* returns: The value. This must be destroyed with `duckdb_destroy_value`.
|
|
1638
|
+
*/
|
|
1639
|
+
DUCKDB_API duckdb_value duckdb_create_array_value(duckdb_logical_type type, duckdb_value *values, idx_t value_count);
|
|
1640
|
+
|
|
1628
1641
|
/*!
|
|
1629
1642
|
Obtains a string representation of the given value.
|
|
1630
1643
|
The result must be destroyed with `duckdb_free`.
|
|
@@ -1675,6 +1688,16 @@ The resulting type should be destroyed with `duckdb_destroy_logical_type`.
|
|
|
1675
1688
|
*/
|
|
1676
1689
|
DUCKDB_API duckdb_logical_type duckdb_create_list_type(duckdb_logical_type type);
|
|
1677
1690
|
|
|
1691
|
+
/*!
|
|
1692
|
+
Creates a array type from its child type.
|
|
1693
|
+
The resulting type should be destroyed with `duckdb_destroy_logical_type`.
|
|
1694
|
+
|
|
1695
|
+
* type: The child type of array type to create.
|
|
1696
|
+
* array_size: The number of elements in the array.
|
|
1697
|
+
* returns: The logical type.
|
|
1698
|
+
*/
|
|
1699
|
+
DUCKDB_API duckdb_logical_type duckdb_create_array_type(duckdb_logical_type type, idx_t array_size);
|
|
1700
|
+
|
|
1678
1701
|
/*!
|
|
1679
1702
|
Creates a map type from its key type and value type.
|
|
1680
1703
|
The resulting type should be destroyed with `duckdb_destroy_logical_type`.
|
|
@@ -1797,6 +1820,24 @@ The result must be freed with `duckdb_destroy_logical_type`.
|
|
|
1797
1820
|
*/
|
|
1798
1821
|
DUCKDB_API duckdb_logical_type duckdb_list_type_child_type(duckdb_logical_type type);
|
|
1799
1822
|
|
|
1823
|
+
/*!
|
|
1824
|
+
Retrieves the child type of the given array type.
|
|
1825
|
+
|
|
1826
|
+
The result must be freed with `duckdb_destroy_logical_type`.
|
|
1827
|
+
|
|
1828
|
+
* type: The logical type object
|
|
1829
|
+
* returns: The child type of the array type. Must be destroyed with `duckdb_destroy_logical_type`.
|
|
1830
|
+
*/
|
|
1831
|
+
DUCKDB_API duckdb_logical_type duckdb_array_type_child_type(duckdb_logical_type type);
|
|
1832
|
+
|
|
1833
|
+
/*!
|
|
1834
|
+
Retrieves the array size of the given array type.
|
|
1835
|
+
|
|
1836
|
+
* type: The logical type object
|
|
1837
|
+
* returns: The fixed number of elements the values of this array type can store.
|
|
1838
|
+
*/
|
|
1839
|
+
DUCKDB_API idx_t duckdb_array_type_array_size(duckdb_logical_type type);
|
|
1840
|
+
|
|
1800
1841
|
/*!
|
|
1801
1842
|
Retrieves the key type of the given map type.
|
|
1802
1843
|
|
|
@@ -2015,7 +2056,7 @@ Assigns a string element in the vector at the specified location.
|
|
|
2015
2056
|
DUCKDB_API void duckdb_vector_assign_string_element(duckdb_vector vector, idx_t index, const char *str);
|
|
2016
2057
|
|
|
2017
2058
|
/*!
|
|
2018
|
-
Assigns a string element in the vector at the specified location.
|
|
2059
|
+
Assigns a string element in the vector at the specified location. You may also use this function to assign BLOBs.
|
|
2019
2060
|
|
|
2020
2061
|
* vector: The vector to alter
|
|
2021
2062
|
* index: The row position in the vector to assign the string to
|
|
@@ -2072,6 +2113,17 @@ The resulting vector is valid as long as the parent vector is valid.
|
|
|
2072
2113
|
*/
|
|
2073
2114
|
DUCKDB_API duckdb_vector duckdb_struct_vector_get_child(duckdb_vector vector, idx_t index);
|
|
2074
2115
|
|
|
2116
|
+
/*!
|
|
2117
|
+
Retrieves the child vector of a array vector.
|
|
2118
|
+
|
|
2119
|
+
The resulting vector is valid as long as the parent vector is valid.
|
|
2120
|
+
The resulting vector has the size of the parent vector multiplied by the array size.
|
|
2121
|
+
|
|
2122
|
+
* vector: The vector
|
|
2123
|
+
* returns: The child vector
|
|
2124
|
+
*/
|
|
2125
|
+
DUCKDB_API duckdb_vector duckdb_array_vector_get_child(duckdb_vector vector);
|
|
2126
|
+
|
|
2075
2127
|
//===--------------------------------------------------------------------===//
|
|
2076
2128
|
// Validity Mask Functions
|
|
2077
2129
|
//===--------------------------------------------------------------------===//
|
|
@@ -102,7 +102,8 @@ void BaseAppender::AppendDecimalValueInternal(Vector &col, SRC input) {
|
|
|
102
102
|
D_ASSERT(type.id() == LogicalTypeId::DECIMAL);
|
|
103
103
|
auto width = DecimalType::GetWidth(type);
|
|
104
104
|
auto scale = DecimalType::GetScale(type);
|
|
105
|
-
|
|
105
|
+
CastParameters parameters;
|
|
106
|
+
TryCastToDecimal::Operation<SRC, DST>(input, FlatVector::GetData<DST>(col)[chunk.size()], parameters, width,
|
|
106
107
|
scale);
|
|
107
108
|
return;
|
|
108
109
|
}
|