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
|
@@ -18,6 +18,12 @@ public:
|
|
|
18
18
|
virtual ~ExtensionCallback() {
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
+
//! Called when a new connection is opened
|
|
22
|
+
virtual void OnConnectionOpened(ClientContext &context) {
|
|
23
|
+
}
|
|
24
|
+
//! Called when a connection is closed
|
|
25
|
+
virtual void OnConnectionClosed(ClientContext &context) {
|
|
26
|
+
}
|
|
21
27
|
//! Called after an extension is finished loading
|
|
22
28
|
virtual void OnExtensionLoaded(DatabaseInstance &db, const string &name) {
|
|
23
29
|
}
|
|
@@ -25,7 +25,6 @@
|
|
|
25
25
|
#include "duckdb/planner/operator/logical_insert.hpp"
|
|
26
26
|
#include "duckdb/planner/operator/logical_join.hpp"
|
|
27
27
|
#include "duckdb/planner/operator/logical_limit.hpp"
|
|
28
|
-
#include "duckdb/planner/operator/logical_limit_percent.hpp"
|
|
29
28
|
#include "duckdb/planner/operator/logical_materialized_cte.hpp"
|
|
30
29
|
#include "duckdb/planner/operator/logical_order.hpp"
|
|
31
30
|
#include "duckdb/planner/operator/logical_pivot.hpp"
|
|
@@ -53,7 +53,7 @@ public:
|
|
|
53
53
|
// The types of the columns targeted by the DO UPDATE SET expressions
|
|
54
54
|
vector<LogicalType> set_types;
|
|
55
55
|
// The table_index referring to the column references qualified with 'excluded'
|
|
56
|
-
idx_t excluded_table_index;
|
|
56
|
+
idx_t excluded_table_index = 0;
|
|
57
57
|
// The columns to fetch from the 'destination' table
|
|
58
58
|
vector<column_t> columns_to_fetch;
|
|
59
59
|
// The columns to fetch from the 'source' table
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
11
|
#include "duckdb/planner/logical_operator.hpp"
|
|
12
|
+
#include "duckdb/planner/bound_result_modifier.hpp"
|
|
12
13
|
|
|
13
14
|
namespace duckdb {
|
|
14
15
|
|
|
@@ -18,15 +19,10 @@ public:
|
|
|
18
19
|
static constexpr const LogicalOperatorType TYPE = LogicalOperatorType::LOGICAL_LIMIT;
|
|
19
20
|
|
|
20
21
|
public:
|
|
21
|
-
LogicalLimit(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
int64_t offset_val;
|
|
26
|
-
//! The maximum amount of elements to emit
|
|
27
|
-
unique_ptr<Expression> limit;
|
|
28
|
-
//! The offset from the start to begin emitting elements
|
|
29
|
-
unique_ptr<Expression> offset;
|
|
22
|
+
LogicalLimit(BoundLimitNode limit_val, BoundLimitNode offset_val);
|
|
23
|
+
|
|
24
|
+
BoundLimitNode limit_val;
|
|
25
|
+
BoundLimitNode offset_val;
|
|
30
26
|
|
|
31
27
|
public:
|
|
32
28
|
vector<ColumnBinding> GetColumnBindings() override;
|
|
@@ -26,21 +26,6 @@ protected:
|
|
|
26
26
|
unique_ptr<Expression> VisitReplace(BoundColumnRefExpression &expr, unique_ptr<Expression> *expr_ptr) override;
|
|
27
27
|
unique_ptr<Expression> VisitReplace(BoundSubqueryExpression &expr, unique_ptr<Expression> *expr_ptr) override;
|
|
28
28
|
|
|
29
|
-
private:
|
|
30
|
-
//! Helper class used to recursively rewrite correlated expressions within nested subqueries.
|
|
31
|
-
class RewriteCorrelatedRecursive {
|
|
32
|
-
public:
|
|
33
|
-
RewriteCorrelatedRecursive(BoundSubqueryExpression &parent, ColumnBinding base_binding,
|
|
34
|
-
column_binding_map_t<idx_t> &correlated_map);
|
|
35
|
-
void RewriteJoinRefRecursive(BoundTableRef &ref);
|
|
36
|
-
void RewriteCorrelatedSubquery(BoundSubqueryExpression &expr);
|
|
37
|
-
void RewriteCorrelatedExpressions(Expression &child);
|
|
38
|
-
|
|
39
|
-
BoundSubqueryExpression &parent;
|
|
40
|
-
ColumnBinding base_binding;
|
|
41
|
-
column_binding_map_t<idx_t> &correlated_map;
|
|
42
|
-
};
|
|
43
|
-
|
|
44
29
|
private:
|
|
45
30
|
ColumnBinding base_binding;
|
|
46
31
|
column_binding_map_t<idx_t> &correlated_map;
|
|
@@ -46,7 +46,10 @@ public:
|
|
|
46
46
|
DUCKDB_API ArenaChunk *GetTail();
|
|
47
47
|
|
|
48
48
|
DUCKDB_API bool IsEmpty() const;
|
|
49
|
+
//! Get the total *used* size (not cached)
|
|
49
50
|
DUCKDB_API idx_t SizeInBytes() const;
|
|
51
|
+
//! Get the currently allocated size in bytes (cached, read from "allocated_size")
|
|
52
|
+
DUCKDB_API idx_t AllocationSize() const;
|
|
50
53
|
|
|
51
54
|
//! Returns an "Allocator" wrapper for this arena allocator
|
|
52
55
|
Allocator &GetAllocator() {
|
|
@@ -61,6 +64,8 @@ private:
|
|
|
61
64
|
ArenaChunk *tail;
|
|
62
65
|
//! An allocator wrapper using this arena allocator
|
|
63
66
|
Allocator arena_allocator;
|
|
67
|
+
//! The total allocated size
|
|
68
|
+
idx_t allocated_size = 0;
|
|
64
69
|
};
|
|
65
70
|
|
|
66
71
|
} // namespace duckdb
|
|
@@ -29,7 +29,6 @@ struct BufferEvictionNode {
|
|
|
29
29
|
idx_t timestamp;
|
|
30
30
|
|
|
31
31
|
bool CanUnload(BlockHandle &handle_p);
|
|
32
|
-
|
|
33
32
|
shared_ptr<BlockHandle> TryGetBlockHandle();
|
|
34
33
|
};
|
|
35
34
|
|
|
@@ -73,9 +72,24 @@ protected:
|
|
|
73
72
|
virtual EvictionResult EvictBlocks(MemoryTag tag, idx_t extra_memory, idx_t memory_limit,
|
|
74
73
|
unique_ptr<FileBuffer> *buffer = nullptr);
|
|
75
74
|
|
|
76
|
-
//!
|
|
75
|
+
//! Tries to dequeue an element from the eviction queue, but only after acquiring the purge queue lock.
|
|
76
|
+
bool TryDequeueWithLock(BufferEvictionNode &node);
|
|
77
|
+
//! Bulk purge dead nodes from the eviction queue. Then, enqueue those that are still alive.
|
|
78
|
+
void PurgeIteration(const idx_t purge_size);
|
|
79
|
+
//! Garbage collect dead nodes in the eviction queue.
|
|
77
80
|
void PurgeQueue();
|
|
78
|
-
|
|
81
|
+
//! Add a buffer handle to the eviction queue. Returns true, if the queue is
|
|
82
|
+
//! ready to be purged, and false otherwise.
|
|
83
|
+
bool AddToEvictionQueue(shared_ptr<BlockHandle> &handle);
|
|
84
|
+
|
|
85
|
+
//! Increment the dead node counter in the purge queue.
|
|
86
|
+
inline void IncrementDeadNodes() {
|
|
87
|
+
total_dead_nodes++;
|
|
88
|
+
}
|
|
89
|
+
//! Decrement the dead node counter in the purge queue.
|
|
90
|
+
inline void DecrementDeadNodes() {
|
|
91
|
+
total_dead_nodes--;
|
|
92
|
+
}
|
|
79
93
|
|
|
80
94
|
protected:
|
|
81
95
|
//! The lock for changing the memory limit
|
|
@@ -86,12 +100,33 @@ protected:
|
|
|
86
100
|
atomic<idx_t> maximum_memory;
|
|
87
101
|
//! Eviction queue
|
|
88
102
|
unique_ptr<EvictionQueue> queue;
|
|
89
|
-
//! Total number of insertions into the eviction queue. This guides the schedule for calling PurgeQueue.
|
|
90
|
-
atomic<uint32_t> queue_insertions;
|
|
91
103
|
//! Memory manager for concurrently used temporary memory, e.g., for physical operators
|
|
92
104
|
unique_ptr<TemporaryMemoryManager> temporary_memory_manager;
|
|
93
105
|
//! Memory usage per tag
|
|
94
106
|
atomic<idx_t> memory_usage_per_tag[MEMORY_TAG_COUNT];
|
|
107
|
+
|
|
108
|
+
//! We trigger a purge of the eviction queue every INSERT_INTERVAL insertions
|
|
109
|
+
constexpr static idx_t INSERT_INTERVAL = 4096;
|
|
110
|
+
//! We multiply the base purge size by this value.
|
|
111
|
+
constexpr static idx_t PURGE_SIZE_MULTIPLIER = 2;
|
|
112
|
+
//! We multiply the purge size by this value to determine early-outs. This is the minimum queue size.
|
|
113
|
+
//! We never purge below this point.
|
|
114
|
+
constexpr static idx_t EARLY_OUT_MULTIPLIER = 4;
|
|
115
|
+
//! We multiply the approximate alive nodes by this value to test whether our total dead nodes
|
|
116
|
+
//! exceed their allowed ratio. Must be greater than 1.
|
|
117
|
+
constexpr static idx_t ALIVE_NODE_MULTIPLIER = 4;
|
|
118
|
+
|
|
119
|
+
//! Total number of insertions into the eviction queue. This guides the schedule for calling PurgeQueue.
|
|
120
|
+
atomic<idx_t> evict_queue_insertions;
|
|
121
|
+
//! Total dead nodes in the eviction queue. There are two scenarios in which a node dies: (1) we destroy its block
|
|
122
|
+
//! handle, or (2) we insert a newer version into the eviction queue.
|
|
123
|
+
atomic<idx_t> total_dead_nodes;
|
|
124
|
+
//! Locked, if a queue purge is currently active or we're trying to forcefully evict a node.
|
|
125
|
+
//! Only lets a single thread enter the purge phase.
|
|
126
|
+
mutex purge_lock;
|
|
127
|
+
|
|
128
|
+
//! A pre-allocated vector of eviction nodes. We reuse this to keep the allocation overhead of purges small.
|
|
129
|
+
vector<BufferEvictionNode> purge_nodes;
|
|
95
130
|
};
|
|
96
131
|
|
|
97
132
|
} // namespace duckdb
|
|
@@ -306,7 +306,7 @@ struct AlpCompression {
|
|
|
306
306
|
state.encoded_integers[i] = encoded_value;
|
|
307
307
|
//! We detect exceptions using a predicated comparison
|
|
308
308
|
auto is_exception = (decoded_value != actual_value);
|
|
309
|
-
state.exceptions_positions[exceptions_idx] = i;
|
|
309
|
+
state.exceptions_positions[exceptions_idx] = UnsafeNumericCast<uint16_t>(i);
|
|
310
310
|
exceptions_idx += is_exception;
|
|
311
311
|
}
|
|
312
312
|
|
|
@@ -115,7 +115,7 @@ bool AlpAnalyze(AnalyzeState &state, Vector &input, idx_t count) {
|
|
|
115
115
|
T value = data[idx];
|
|
116
116
|
//! We resolve null values with a predicated comparison
|
|
117
117
|
bool is_null = !vdata.validity.RowIsValid(idx);
|
|
118
|
-
current_vector_null_positions[nulls_idx] = i;
|
|
118
|
+
current_vector_null_positions[nulls_idx] = UnsafeNumericCast<uint16_t>(i);
|
|
119
119
|
nulls_idx += is_null;
|
|
120
120
|
current_vector_values[i] = value;
|
|
121
121
|
}
|
|
@@ -164,6 +164,10 @@ idx_t AlpFinalAnalyze(AnalyzeState &state) {
|
|
|
164
164
|
// Flush last unfinished segment
|
|
165
165
|
analyze_state.FlushSegment();
|
|
166
166
|
|
|
167
|
+
if (compressed_values == 0) {
|
|
168
|
+
return DConstants::INVALID_INDEX;
|
|
169
|
+
}
|
|
170
|
+
|
|
167
171
|
// We estimate the size by taking into account the portion of the values we took
|
|
168
172
|
const auto factor_of_sampling = analyze_state.total_values_count / compressed_values;
|
|
169
173
|
const auto final_analyze_size = analyze_state.TotalUsedBytes() * factor_of_sampling;
|
|
@@ -141,7 +141,7 @@ public:
|
|
|
141
141
|
Store<uint64_t>(state.frame_of_reference, data_ptr);
|
|
142
142
|
data_ptr += AlpConstants::FOR_SIZE;
|
|
143
143
|
|
|
144
|
-
Store<uint8_t>(state.bit_width, data_ptr);
|
|
144
|
+
Store<uint8_t>(UnsafeNumericCast<uint8_t>(state.bit_width), data_ptr);
|
|
145
145
|
data_ptr += AlpConstants::BIT_WIDTH_SIZE;
|
|
146
146
|
|
|
147
147
|
memcpy((void *)data_ptr, (void *)state.values_encoded, state.bp_size);
|
|
@@ -166,7 +166,7 @@ public:
|
|
|
166
166
|
// Write pointer to the vector data (metadata)
|
|
167
167
|
metadata_ptr -= sizeof(uint32_t);
|
|
168
168
|
Store<uint32_t>(next_vector_byte_index_start, metadata_ptr);
|
|
169
|
-
next_vector_byte_index_start = UsedSpace();
|
|
169
|
+
next_vector_byte_index_start = NumericCast<uint32_t>(UsedSpace());
|
|
170
170
|
|
|
171
171
|
vectors_flushed++;
|
|
172
172
|
vector_idx = 0;
|
|
@@ -206,7 +206,7 @@ public:
|
|
|
206
206
|
}
|
|
207
207
|
|
|
208
208
|
// Store the offset to the end of metadata (to be used as a backwards pointer in decoding)
|
|
209
|
-
Store<uint32_t>(total_segment_size, dataptr);
|
|
209
|
+
Store<uint32_t>(NumericCast<uint32_t>(total_segment_size), dataptr);
|
|
210
210
|
|
|
211
211
|
handle.Destroy();
|
|
212
212
|
checkpoint_state.FlushSegment(std::move(current_segment), total_segment_size);
|
|
@@ -244,7 +244,7 @@ public:
|
|
|
244
244
|
T value = data[idx];
|
|
245
245
|
bool is_null = !vdata.validity.RowIsValid(idx);
|
|
246
246
|
//! We resolve null values with a predicated comparison
|
|
247
|
-
vector_null_positions[nulls_idx] = vector_idx + i;
|
|
247
|
+
vector_null_positions[nulls_idx] = UnsafeNumericCast<uint16_t>(vector_idx + i);
|
|
248
248
|
nulls_idx += is_null;
|
|
249
249
|
input_vector[vector_idx + i] = value;
|
|
250
250
|
}
|
|
@@ -37,7 +37,8 @@ public:
|
|
|
37
37
|
public:
|
|
38
38
|
static AlpSamplingParameters GetSamplingParameters(idx_t current_vector_n_values) {
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
auto n_lookup_values =
|
|
41
|
+
NumericCast<uint32_t>(MinValue(current_vector_n_values, (idx_t)AlpConstants::ALP_VECTOR_SIZE));
|
|
41
42
|
//! We sample equidistant values within a vector; to do this we jump a fixed number of values
|
|
42
43
|
uint32_t n_sampled_increments =
|
|
43
44
|
MaxValue(1, (int32_t)std::ceil((double)n_lookup_values / AlpConstants::SAMPLES_PER_VECTOR));
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
#include "duckdb/common/pair.hpp"
|
|
17
17
|
#include "duckdb/common/unordered_map.hpp"
|
|
18
18
|
#include "duckdb/common/limits.hpp"
|
|
19
|
+
#include "duckdb/common/numeric_utils.hpp"
|
|
19
20
|
|
|
20
21
|
#include <cmath>
|
|
21
22
|
|
|
@@ -109,7 +110,8 @@ struct AlpRDCompression {
|
|
|
109
110
|
if (PERSIST_DICT) {
|
|
110
111
|
for (idx_t dict_idx = 0; dict_idx < actual_dictionary_size; dict_idx++) {
|
|
111
112
|
//! The dict keys are mapped to the left part themselves
|
|
112
|
-
state.left_parts_dict[dict_idx] =
|
|
113
|
+
state.left_parts_dict[dict_idx] =
|
|
114
|
+
UnsafeNumericCast<uint16_t>(left_parts_sorted_repetitions[dict_idx].hash);
|
|
113
115
|
state.left_parts_dict_map.insert({state.left_parts_dict[dict_idx], dict_idx});
|
|
114
116
|
}
|
|
115
117
|
//! Pararelly we store a map of the dictionary to quickly resolve exceptions during encoding
|
|
@@ -118,24 +120,24 @@ struct AlpRDCompression {
|
|
|
118
120
|
}
|
|
119
121
|
state.left_bit_width = left_bit_width;
|
|
120
122
|
state.right_bit_width = right_bit_width;
|
|
121
|
-
state.actual_dictionary_size = actual_dictionary_size;
|
|
123
|
+
state.actual_dictionary_size = UnsafeNumericCast<uint8_t>(actual_dictionary_size);
|
|
122
124
|
|
|
123
125
|
D_ASSERT(state.left_bit_width > 0 && state.right_bit_width > 0 &&
|
|
124
126
|
state.left_bit_width <= AlpRDConstants::MAX_DICTIONARY_BIT_WIDTH &&
|
|
125
127
|
state.actual_dictionary_size <= AlpRDConstants::MAX_DICTIONARY_SIZE);
|
|
126
128
|
}
|
|
127
129
|
|
|
128
|
-
double estimated_size =
|
|
129
|
-
|
|
130
|
+
double estimated_size = EstimateCompressionSize(right_bit_width, left_bit_width,
|
|
131
|
+
UnsafeNumericCast<uint16_t>(exceptions_count), values.size());
|
|
130
132
|
return estimated_size;
|
|
131
133
|
}
|
|
132
134
|
|
|
133
135
|
static double FindBestDictionary(const vector<EXACT_TYPE> &values, State &state) {
|
|
134
|
-
uint8_t right_bit_width;
|
|
136
|
+
uint8_t right_bit_width = 0;
|
|
135
137
|
double best_dict_size = NumericLimits<int32_t>::Maximum();
|
|
136
138
|
//! Finding the best position to CUT the values
|
|
137
139
|
for (idx_t i = 1; i <= AlpRDConstants::CUTTING_LIMIT; i++) {
|
|
138
|
-
uint8_t candidate_right_bit_width = EXACT_TYPE_BITSIZE - i;
|
|
140
|
+
uint8_t candidate_right_bit_width = UnsafeNumericCast<uint8_t>(EXACT_TYPE_BITSIZE - i);
|
|
139
141
|
double estimated_size = BuildLeftPartsDictionary<false>(values, candidate_right_bit_width, state);
|
|
140
142
|
if (estimated_size <= best_dict_size) {
|
|
141
143
|
right_bit_width = candidate_right_bit_width;
|
|
@@ -156,7 +158,7 @@ struct AlpRDCompression {
|
|
|
156
158
|
for (idx_t i = 0; i < n_values; i++) {
|
|
157
159
|
EXACT_TYPE tmp = input_vector[i];
|
|
158
160
|
right_parts[i] = tmp & ((1ULL << state.right_bit_width) - 1);
|
|
159
|
-
left_parts[i] = (tmp >> state.right_bit_width);
|
|
161
|
+
left_parts[i] = UnsafeNumericCast<uint16_t>(tmp >> state.right_bit_width);
|
|
160
162
|
}
|
|
161
163
|
|
|
162
164
|
// Dictionary encoding for left parts
|
|
@@ -174,7 +176,7 @@ struct AlpRDCompression {
|
|
|
174
176
|
//! Left parts not found in the dictionary are stored as exceptions
|
|
175
177
|
if (dictionary_index >= state.actual_dictionary_size) {
|
|
176
178
|
state.exceptions[state.exceptions_count] = dictionary_key;
|
|
177
|
-
state.exceptions_positions[state.exceptions_count] = i;
|
|
179
|
+
state.exceptions_positions[state.exceptions_count] = UnsafeNumericCast<uint16_t>(i);
|
|
178
180
|
state.exceptions_count++;
|
|
179
181
|
}
|
|
180
182
|
}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
#include "duckdb/storage/compression/alprd/alprd_constants.hpp"
|
|
15
15
|
#include "duckdb/storage/compression/alp/alp_utils.hpp"
|
|
16
16
|
#include "duckdb/storage/compression/alp/alp_constants.hpp"
|
|
17
|
+
#include "duckdb/common/numeric_utils.hpp"
|
|
17
18
|
|
|
18
19
|
#include <cmath>
|
|
19
20
|
|
|
@@ -82,7 +83,7 @@ bool AlpRDAnalyze(AnalyzeState &state, Vector &input, idx_t count) {
|
|
|
82
83
|
current_vector_sample[sample_idx] = value;
|
|
83
84
|
//! We resolve null values with a predicated comparison
|
|
84
85
|
bool is_null = !vdata.validity.RowIsValid(idx);
|
|
85
|
-
current_vector_null_positions[nulls_idx] = sample_idx;
|
|
86
|
+
current_vector_null_positions[nulls_idx] = UnsafeNumericCast<uint16_t>(sample_idx);
|
|
86
87
|
nulls_idx += is_null;
|
|
87
88
|
sample_idx++;
|
|
88
89
|
}
|
|
@@ -108,6 +109,9 @@ bool AlpRDAnalyze(AnalyzeState &state, Vector &input, idx_t count) {
|
|
|
108
109
|
template <class T>
|
|
109
110
|
idx_t AlpRDFinalAnalyze(AnalyzeState &state) {
|
|
110
111
|
auto &analyze_state = (AlpRDAnalyzeState<T> &)state;
|
|
112
|
+
if (analyze_state.total_values_count == 0) {
|
|
113
|
+
return DConstants::INVALID_INDEX;
|
|
114
|
+
}
|
|
111
115
|
double factor_of_sampling = 1 / ((double)analyze_state.rowgroup_sample.size() / analyze_state.total_values_count);
|
|
112
116
|
|
|
113
117
|
// Finding which is the best dictionary for the sample
|
|
@@ -168,7 +168,7 @@ public:
|
|
|
168
168
|
// Write pointer to the vector data (metadata)
|
|
169
169
|
metadata_ptr -= AlpRDConstants::METADATA_POINTER_SIZE;
|
|
170
170
|
Store<uint32_t>(next_vector_byte_index_start, metadata_ptr);
|
|
171
|
-
next_vector_byte_index_start = UsedSpace();
|
|
171
|
+
next_vector_byte_index_start = NumericCast<uint32_t>(UsedSpace());
|
|
172
172
|
|
|
173
173
|
vectors_flushed++;
|
|
174
174
|
vector_idx = 0;
|
|
@@ -208,7 +208,7 @@ public:
|
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
// Store the offset to the end of metadata (to be used as a backwards pointer in decoding)
|
|
211
|
-
Store<uint32_t>(total_segment_size, dataptr);
|
|
211
|
+
Store<uint32_t>(NumericCast<uint32_t>(total_segment_size), dataptr);
|
|
212
212
|
dataptr += AlpRDConstants::METADATA_POINTER_SIZE;
|
|
213
213
|
|
|
214
214
|
// Store the right bw for the segment
|
|
@@ -261,7 +261,7 @@ public:
|
|
|
261
261
|
EXACT_TYPE value = Load<EXACT_TYPE>(const_data_ptr_cast(&data[idx]));
|
|
262
262
|
bool is_null = !vdata.validity.RowIsValid(idx);
|
|
263
263
|
//! We resolve null values with a predicated comparison
|
|
264
|
-
vector_null_positions[nulls_idx] = vector_idx + i;
|
|
264
|
+
vector_null_positions[nulls_idx] = UnsafeNumericCast<uint16_t>(vector_idx + i);
|
|
265
265
|
nulls_idx += is_null;
|
|
266
266
|
input_vector[vector_idx + i] = value;
|
|
267
267
|
}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
11
|
#include "duckdb.h"
|
|
12
|
+
#include "duckdb/common/numeric_utils.hpp"
|
|
12
13
|
|
|
13
14
|
namespace duckdb {
|
|
14
15
|
|
|
@@ -71,7 +72,7 @@ public:
|
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
inline uint8_t InnerReadByte(const uint8_t &offset) {
|
|
74
|
-
uint8_t result = input[ByteIndex() + offset] << BitIndex() |
|
|
75
|
+
uint8_t result = static_cast<uint8_t>(input[ByteIndex() + offset] << BitIndex()) |
|
|
75
76
|
((input[ByteIndex() + offset + 1] & REMAINDER_MASKS[8 + BitIndex()]) >> (8 - BitIndex()));
|
|
76
77
|
return result;
|
|
77
78
|
}
|
|
@@ -114,30 +115,30 @@ public:
|
|
|
114
115
|
inline T ReadBytes(const uint8_t &remainder) {
|
|
115
116
|
T result = 0;
|
|
116
117
|
if (BYTES > 0) {
|
|
117
|
-
result = result << 8 | InnerReadByte(0);
|
|
118
|
+
result = UnsafeNumericCast<T>(result << 8 | InnerReadByte(0));
|
|
118
119
|
}
|
|
119
120
|
if (BYTES > 1) {
|
|
120
|
-
result = result << 8 | InnerReadByte(1);
|
|
121
|
+
result = UnsafeNumericCast<T>(result << 8 | InnerReadByte(1));
|
|
121
122
|
}
|
|
122
123
|
if (BYTES > 2) {
|
|
123
|
-
result = result << 8 | InnerReadByte(2);
|
|
124
|
+
result = UnsafeNumericCast<T>(result << 8 | InnerReadByte(2));
|
|
124
125
|
}
|
|
125
126
|
if (BYTES > 3) {
|
|
126
|
-
result = result << 8 | InnerReadByte(3);
|
|
127
|
+
result = UnsafeNumericCast<T>(result << 8 | InnerReadByte(3));
|
|
127
128
|
}
|
|
128
129
|
if (BYTES > 4) {
|
|
129
|
-
result = result << 8 | InnerReadByte(4);
|
|
130
|
+
result = UnsafeNumericCast<T>(result << 8 | InnerReadByte(4));
|
|
130
131
|
}
|
|
131
132
|
if (BYTES > 5) {
|
|
132
|
-
result = result << 8 | InnerReadByte(5);
|
|
133
|
+
result = UnsafeNumericCast<T>(result << 8 | InnerReadByte(5));
|
|
133
134
|
}
|
|
134
135
|
if (BYTES > 6) {
|
|
135
|
-
result = result << 8 | InnerReadByte(6);
|
|
136
|
+
result = UnsafeNumericCast<T>(result << 8 | InnerReadByte(6));
|
|
136
137
|
}
|
|
137
138
|
if (BYTES > 7) {
|
|
138
|
-
result = result << 8 | InnerReadByte(7);
|
|
139
|
+
result = UnsafeNumericCast<T>(result << 8 | InnerReadByte(7));
|
|
139
140
|
}
|
|
140
|
-
result = result << remainder | InnerRead(remainder, BYTES);
|
|
141
|
+
result = UnsafeNumericCast<T>(result << remainder | InnerRead(remainder, BYTES));
|
|
141
142
|
index += (BYTES << 3) + remainder;
|
|
142
143
|
return result;
|
|
143
144
|
}
|
|
@@ -8,12 +8,14 @@
|
|
|
8
8
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
|
+
#include "duckdb/common/numeric_utils.hpp"
|
|
12
|
+
|
|
11
13
|
namespace duckdb {
|
|
12
14
|
|
|
13
15
|
template <class R>
|
|
14
16
|
struct BitUtils {
|
|
15
17
|
static constexpr R Mask(unsigned int const bits) {
|
|
16
|
-
return (((uint64_t)(bits < (sizeof(R) * 8))) << (bits & ((sizeof(R) * 8) - 1))) - 1U;
|
|
18
|
+
return UnsafeNumericCast<R>((((uint64_t)(bits < (sizeof(R) * 8))) << (bits & ((sizeof(R) * 8) - 1))) - 1U);
|
|
17
19
|
}
|
|
18
20
|
};
|
|
19
21
|
|
|
@@ -257,7 +257,7 @@ public:
|
|
|
257
257
|
case ChimpConstants::Flags::VALUE_IDENTICAL: {
|
|
258
258
|
//! Value is identical to previous value
|
|
259
259
|
auto index = state.input.template ReadValue<uint8_t, 7>();
|
|
260
|
-
result = state.ring_buffer.Value(index);
|
|
260
|
+
result = UnsafeNumericCast<CHIMP_TYPE>(state.ring_buffer.Value(index));
|
|
261
261
|
break;
|
|
262
262
|
}
|
|
263
263
|
case ChimpConstants::Flags::TRAILING_EXCEEDS_THRESHOLD: {
|
package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/leading_zero_buffer.hpp
CHANGED
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
#include "duckdb.h"
|
|
12
12
|
#include "duckdb/common/helper.hpp"
|
|
13
|
+
#include "duckdb/common/numeric_utils.hpp"
|
|
13
14
|
#ifdef DEBUG
|
|
14
15
|
#include "duckdb/common/vector.hpp"
|
|
15
16
|
#include "duckdb/common/assert.hpp"
|
|
@@ -91,7 +92,8 @@ public:
|
|
|
91
92
|
public:
|
|
92
93
|
#ifdef DEBUG
|
|
93
94
|
uint8_t ExtractValue(uint32_t value, uint8_t index) {
|
|
94
|
-
return (value & LeadingZeroBufferConstants::MASKS[index]) >>
|
|
95
|
+
return NumericCast<uint8_t>((value & LeadingZeroBufferConstants::MASKS[index]) >>
|
|
96
|
+
LeadingZeroBufferConstants::SHIFTS[index]);
|
|
95
97
|
}
|
|
96
98
|
#endif
|
|
97
99
|
|
|
@@ -140,8 +142,8 @@ public:
|
|
|
140
142
|
const auto buffer_idx = BlockIndex();
|
|
141
143
|
auto const temp = Load<uint32_t>(buffer + buffer_idx);
|
|
142
144
|
|
|
143
|
-
const uint8_t result =
|
|
144
|
-
|
|
145
|
+
const uint8_t result = UnsafeNumericCast<uint8_t>((temp & LeadingZeroBufferConstants::MASKS[counter & 7]) >>
|
|
146
|
+
LeadingZeroBufferConstants::SHIFTS[counter & 7]);
|
|
145
147
|
counter++;
|
|
146
148
|
return result;
|
|
147
149
|
}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
#include "duckdb/storage/compression/chimp/algorithm/chimp_utils.hpp"
|
|
13
13
|
|
|
14
14
|
#include "duckdb/common/limits.hpp"
|
|
15
|
+
#include "duckdb/common/numeric_utils.hpp"
|
|
15
16
|
#include "duckdb/common/types/null_value.hpp"
|
|
16
17
|
#include "duckdb/function/compression/compression.hpp"
|
|
17
18
|
#include "duckdb/function/compression_function.hpp"
|
|
@@ -210,7 +211,7 @@ public:
|
|
|
210
211
|
auto group_size = MinValue<idx_t>(segment_count - total_value_count, ChimpPrimitives::CHIMP_SEQUENCE_SIZE);
|
|
211
212
|
// Reduce by one, because the first value of a group does not have a flag
|
|
212
213
|
auto flag_count = group_size - 1;
|
|
213
|
-
uint16_t flag_byte_count =
|
|
214
|
+
uint16_t flag_byte_count = AlignValue<uint16_t, 4>(UnsafeNumericCast<uint16_t>(flag_count)) / 4;
|
|
214
215
|
|
|
215
216
|
// Load the flags
|
|
216
217
|
metadata_ptr -= flag_byte_count;
|
|
@@ -128,9 +128,11 @@ public:
|
|
|
128
128
|
//! Fetches an append lock
|
|
129
129
|
void AppendLock(TableAppendState &state);
|
|
130
130
|
//! Begin appending structs to this table, obtaining necessary locks, etc
|
|
131
|
-
void InitializeAppend(DuckTransaction &transaction, TableAppendState &state
|
|
131
|
+
void InitializeAppend(DuckTransaction &transaction, TableAppendState &state);
|
|
132
132
|
//! Append a chunk to the table using the AppendState obtained from InitializeAppend
|
|
133
133
|
void Append(DataChunk &chunk, TableAppendState &state);
|
|
134
|
+
//! Finalize an append
|
|
135
|
+
void FinalizeAppend(DuckTransaction &transaction, TableAppendState &state);
|
|
134
136
|
//! Commit the append
|
|
135
137
|
void CommitAppend(transaction_t commit_id, idx_t row_start, idx_t count);
|
|
136
138
|
//! Write a segment of the table to the WAL
|
|
@@ -40,6 +40,9 @@ public:
|
|
|
40
40
|
|
|
41
41
|
public:
|
|
42
42
|
static unique_ptr<StandardBufferManager> CreateBufferManager(DatabaseInstance &db, string temp_directory);
|
|
43
|
+
static unique_ptr<FileBuffer> ReadTemporaryBufferInternal(BufferManager &buffer_manager, FileHandle &handle,
|
|
44
|
+
idx_t position, idx_t size,
|
|
45
|
+
unique_ptr<FileBuffer> reusable_buffer);
|
|
43
46
|
//! Registers an in-memory buffer that cannot be unloaded until it is destroyed
|
|
44
47
|
//! This buffer can be small (smaller than BLOCK_SIZE)
|
|
45
48
|
//! Unpin and pin are nops on this block of memory
|
|
@@ -68,7 +68,9 @@ public:
|
|
|
68
68
|
DataTableInfo &GetTableInfo() const;
|
|
69
69
|
virtual idx_t GetMaxEntry();
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
idx_t GetAllocationSize() const {
|
|
72
|
+
return allocation_size;
|
|
73
|
+
}
|
|
72
74
|
|
|
73
75
|
virtual void SetStart(idx_t new_start);
|
|
74
76
|
//! The root type of the column
|
|
@@ -164,10 +166,10 @@ protected:
|
|
|
164
166
|
mutex update_lock;
|
|
165
167
|
//! The updates for this column segment
|
|
166
168
|
unique_ptr<UpdateSegment> updates;
|
|
167
|
-
//! The internal version of the column data
|
|
168
|
-
idx_t version;
|
|
169
169
|
//! The stats of the root segment
|
|
170
170
|
unique_ptr<SegmentStatistics> stats;
|
|
171
|
+
//! Total transient allocation size
|
|
172
|
+
idx_t allocation_size;
|
|
171
173
|
};
|
|
172
174
|
|
|
173
175
|
} // namespace duckdb
|
|
@@ -68,8 +68,8 @@ public:
|
|
|
68
68
|
//! Fetch a value of the specific row id and append it to the result
|
|
69
69
|
void FetchRow(ColumnFetchState &state, row_t row_id, Vector &result, idx_t result_idx);
|
|
70
70
|
|
|
71
|
-
static idx_t FilterSelection(SelectionVector &sel, Vector &
|
|
72
|
-
|
|
71
|
+
static idx_t FilterSelection(SelectionVector &sel, Vector &vector, UnifiedVectorFormat &vdata,
|
|
72
|
+
const TableFilter &filter, idx_t scan_count, idx_t &approved_tuple_count);
|
|
73
73
|
|
|
74
74
|
//! Skip a scan forward to the row_index specified in the scan state
|
|
75
75
|
void Skip(ColumnScanState &state);
|
|
@@ -139,6 +139,10 @@ public:
|
|
|
139
139
|
|
|
140
140
|
void GetColumnSegmentInfo(idx_t row_group_index, vector<ColumnSegmentInfo> &result);
|
|
141
141
|
|
|
142
|
+
idx_t GetAllocationSize() const {
|
|
143
|
+
return allocation_size;
|
|
144
|
+
}
|
|
145
|
+
|
|
142
146
|
void Verify();
|
|
143
147
|
|
|
144
148
|
void NextVector(CollectionScanState &state);
|
|
@@ -172,6 +176,7 @@ private:
|
|
|
172
176
|
unique_ptr<atomic<bool>[]> is_loaded;
|
|
173
177
|
vector<MetaBlockPointer> deletes_pointers;
|
|
174
178
|
atomic<bool> deletes_is_loaded;
|
|
179
|
+
idx_t allocation_size;
|
|
175
180
|
};
|
|
176
181
|
|
|
177
182
|
} // namespace duckdb
|