duckdb 0.8.2-dev157.0 → 0.8.2-dev1573.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/binding.gyp +15 -12
- package/binding.gyp.in +1 -1
- package/configure.py +1 -1
- package/duckdb_extension_config.cmake +10 -0
- package/package.json +1 -1
- package/src/duckdb/extension/icu/icu-dateadd.cpp +2 -2
- package/src/duckdb/extension/icu/icu-datefunc.cpp +1 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
- package/src/duckdb/extension/icu/icu-datesub.cpp +2 -2
- package/src/duckdb/extension/icu/icu-datetrunc.cpp +1 -1
- package/src/duckdb/extension/icu/icu-list-range.cpp +1 -1
- package/src/duckdb/extension/icu/icu-makedate.cpp +7 -0
- package/src/duckdb/extension/icu/icu-strptime.cpp +4 -4
- package/src/duckdb/extension/icu/icu-table-range.cpp +5 -5
- package/src/duckdb/extension/icu/icu-timebucket.cpp +16 -16
- package/src/duckdb/extension/icu/icu-timezone.cpp +8 -8
- package/src/duckdb/extension/icu/icu_extension.cpp +3 -3
- package/src/duckdb/extension/json/include/json_common.hpp +47 -231
- package/src/duckdb/extension/json/include/json_executors.hpp +49 -13
- package/src/duckdb/extension/json/include/json_functions.hpp +2 -1
- package/src/duckdb/extension/json/json_common.cpp +272 -40
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +17 -37
- package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
- package/src/duckdb/extension/json/json_functions.cpp +24 -24
- package/src/duckdb/extension/json/json_scan.cpp +3 -6
- package/src/duckdb/extension/parquet/column_reader.cpp +19 -21
- package/src/duckdb/extension/parquet/column_writer.cpp +77 -61
- package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +2 -2
- package/src/duckdb/extension/parquet/include/column_reader.hpp +14 -16
- package/src/duckdb/extension/parquet/include/column_writer.hpp +9 -7
- package/src/duckdb/extension/parquet/include/list_column_reader.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +3 -3
- package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +3 -3
- package/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_support.hpp +9 -11
- package/src/duckdb/extension/parquet/include/parquet_writer.hpp +24 -5
- package/src/duckdb/extension/parquet/include/string_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +2 -3
- package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +2 -2
- package/src/duckdb/extension/parquet/parquet_extension.cpp +192 -20
- package/src/duckdb/extension/parquet/parquet_reader.cpp +6 -6
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +7 -6
- package/src/duckdb/extension/parquet/parquet_writer.cpp +79 -16
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +2 -2
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +1 -1
- package/src/duckdb/src/catalog/catalog_search_path.cpp +5 -4
- package/src/duckdb/src/catalog/default/default_functions.cpp +16 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +75 -10
- package/src/duckdb/src/common/adbc/driver_manager.cpp +6 -11
- package/src/duckdb/src/common/allocator.cpp +14 -2
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +5 -11
- package/src/duckdb/src/common/assert.cpp +3 -0
- package/src/duckdb/src/common/enum_util.cpp +4619 -4446
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +4 -0
- package/src/duckdb/src/common/enums/optimizer_type.cpp +2 -0
- package/src/duckdb/src/common/enums/physical_operator_type.cpp +4 -0
- package/src/duckdb/src/common/exception.cpp +2 -2
- package/src/duckdb/src/common/extra_type_info.cpp +506 -0
- package/src/duckdb/src/common/file_system.cpp +19 -0
- package/src/duckdb/src/common/hive_partitioning.cpp +10 -6
- package/src/duckdb/src/common/local_file_system.cpp +14 -14
- package/src/duckdb/src/common/multi_file_reader.cpp +184 -20
- package/src/duckdb/src/common/operator/cast_operators.cpp +35 -1
- package/src/duckdb/src/common/radix_partitioning.cpp +26 -8
- package/src/duckdb/src/common/re2_regex.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_external.cpp +1 -1
- package/src/duckdb/src/common/sort/merge_sorter.cpp +9 -16
- package/src/duckdb/src/common/sort/partition_state.cpp +44 -11
- package/src/duckdb/src/common/types/batched_data_collection.cpp +7 -2
- package/src/duckdb/src/common/types/bit.cpp +51 -0
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +9 -6
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +17 -2
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +15 -6
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
- package/src/duckdb/src/common/types/data_chunk.cpp +2 -2
- package/src/duckdb/src/common/types/date.cpp +9 -0
- package/src/duckdb/src/common/types/list_segment.cpp +24 -74
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
- package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -0
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +2 -2
- package/src/duckdb/src/common/types/uuid.cpp +2 -2
- package/src/duckdb/src/common/types/validity_mask.cpp +33 -0
- package/src/duckdb/src/common/types.cpp +8 -655
- package/src/duckdb/src/common/virtual_file_system.cpp +138 -1
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +2 -0
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +5 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +8 -8
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +4 -3
- package/src/duckdb/src/core_functions/function_list.cpp +4 -2
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +208 -42
- package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +10 -24
- package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +19 -4
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +4 -2
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +34 -18
- package/src/duckdb/src/execution/expression_executor.cpp +1 -1
- package/src/duckdb/src/execution/index/art/art.cpp +149 -139
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +1 -1
- package/src/duckdb/src/execution/index/art/iterator.cpp +129 -207
- package/src/duckdb/src/execution/index/art/leaf.cpp +8 -37
- package/src/duckdb/src/execution/index/art/node.cpp +113 -120
- package/src/duckdb/src/execution/index/art/node16.cpp +1 -10
- package/src/duckdb/src/execution/index/art/node256.cpp +1 -9
- package/src/duckdb/src/execution/index/art/node4.cpp +12 -13
- package/src/duckdb/src/execution/index/art/node48.cpp +1 -11
- package/src/duckdb/src/execution/index/art/prefix.cpp +228 -350
- package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
- package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -0
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -3
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +32 -22
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +512 -300
- package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +4 -3
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +5 -5
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +444 -284
- package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +21 -10
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +28 -12
- package/src/duckdb/src/execution/operator/join/physical_join.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +23 -4
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +41 -5
- package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +100 -13
- package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +20 -0
- package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +48 -0
- package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +2 -3
- package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +6 -4
- package/src/duckdb/src/execution/operator/persistent/physical_fixed_batch_copy.cpp +3 -3
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -1
- package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +19 -0
- package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +7 -2
- package/src/duckdb/src/execution/operator/set/physical_cte.cpp +160 -0
- package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +15 -5
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +41 -6
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +30 -5
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +43 -10
- package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +56 -33
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +17 -13
- package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +33 -0
- package/src/duckdb/src/execution/physical_plan/plan_get.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +25 -4
- package/src/duckdb/src/execution/physical_plan_generator.cpp +4 -0
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +290 -43
- package/src/duckdb/src/execution/window_segment_tree.cpp +286 -129
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +2 -1
- package/src/duckdb/src/function/cast/bit_cast.cpp +34 -2
- package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
- package/src/duckdb/src/function/cast/numeric_casts.cpp +2 -0
- package/src/duckdb/src/function/function.cpp +3 -1
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +5 -0
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +212 -0
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +249 -0
- package/src/duckdb/src/function/scalar/compressed_materialization_functions.cpp +29 -0
- package/src/duckdb/src/function/scalar/list/list_resize.cpp +162 -0
- package/src/duckdb/src/function/scalar/nested_functions.cpp +1 -0
- package/src/duckdb/src/function/scalar/string/like.cpp +12 -4
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +12 -5
- package/src/duckdb/src/function/table/copy_csv.cpp +8 -1
- package/src/duckdb/src/function/table/read_csv.cpp +100 -17
- package/src/duckdb/src/function/table/system_functions.cpp +1 -0
- package/src/duckdb/src/function/table/table_scan.cpp +9 -0
- package/src/duckdb/src/function/table/version/pragma_version.cpp +46 -2
- package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/bswap.hpp +42 -0
- package/src/duckdb/src/include/duckdb/common/dl.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +616 -584
- package/src/duckdb/src/include/duckdb/common/enums/cte_materialize.hpp +21 -0
- package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/extra_operator_info.hpp +27 -0
- package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +219 -0
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +6 -4
- package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +10 -42
- package/src/duckdb/src/include/duckdb/common/mutex.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +43 -3
- package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +10 -0
- package/src/duckdb/src/include/duckdb/common/radix.hpp +9 -20
- package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +6 -21
- package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +13 -0
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -0
- package/src/duckdb/src/include/duckdb/common/types/batched_data_collection.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/types/bit.hpp +81 -0
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +6 -1
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_scan_states.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/date.hpp +7 -5
- package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +6 -8
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +0 -1
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/types.hpp +1 -15
- package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +38 -97
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +4 -4
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/holistic_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/nested_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -0
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +3 -3
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/bit_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +31 -11
- package/src/duckdb/src/include/duckdb/core_functions/scalar/enum_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/math_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/random_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/struct_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/union_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +21 -3
- package/src/duckdb/src/include/duckdb/execution/executor.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +4 -5
- package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +31 -27
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +6 -14
- package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +4 -10
- package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +3 -6
- package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +3 -6
- package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +5 -8
- package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +3 -6
- package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +63 -52
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +3 -10
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +12 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_line_info.hpp +4 -3
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +8 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_rejects_table.hpp +36 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/parallel_csv_reader.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +10 -0
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +5 -1
- package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +62 -0
- package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +8 -2
- package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +5 -1
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +10 -3
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +51 -40
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +49 -0
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +5 -0
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +2 -0
- package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +5 -0
- package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/connection.hpp +1 -2
- package/src/duckdb/src/include/duckdb/main/relation/cross_product_relation.hpp +4 -1
- package/src/duckdb/src/include/duckdb/main/relation/join_relation.hpp +5 -2
- package/src/duckdb/src/include/duckdb/main/relation.hpp +4 -2
- package/src/duckdb/src/include/duckdb/main/settings.hpp +39 -1
- package/src/duckdb/src/include/duckdb/optimizer/column_binding_replacer.hpp +47 -0
- package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +132 -0
- package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +13 -16
- package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +10 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +13 -0
- package/src/duckdb/src/include/duckdb/optimizer/optimizer.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/remove_duplicate_groups.hpp +40 -0
- package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +11 -3
- package/src/duckdb/src/include/duckdb/optimizer/topn_optimizer.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +54 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +15 -8
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +12 -5
- package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +3 -3
- package/src/duckdb/src/include/duckdb/planner/expression_binder/lateral_binder.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +5 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +7 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +43 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +49 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +5 -4
- package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +44 -0
- package/src/duckdb/src/include/duckdb/planner/query_node/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/subquery/has_correlated_expressions.hpp +4 -1
- package/src/duckdb/src/include/duckdb/planner/subquery/recursive_dependent_join_planner.hpp +31 -0
- package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +8 -2
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_cteref.hpp +5 -2
- package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +22 -0
- package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +2 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +1 -3
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -3
- package/src/duckdb/src/include/duckdb.h +28 -0
- package/src/duckdb/src/main/capi/arrow-c.cpp +155 -1
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +1 -1
- package/src/duckdb/src/main/config.cpp +4 -0
- package/src/duckdb/src/main/database.cpp +1 -1
- package/src/duckdb/src/main/extension/extension_helper.cpp +96 -89
- package/src/duckdb/src/main/extension/extension_install.cpp +9 -0
- package/src/duckdb/src/main/extension/extension_load.cpp +10 -1
- package/src/duckdb/src/main/relation/cross_product_relation.cpp +4 -3
- package/src/duckdb/src/main/relation/join_relation.cpp +5 -5
- package/src/duckdb/src/main/relation.cpp +6 -5
- package/src/duckdb/src/main/settings/settings.cpp +79 -18
- package/src/duckdb/src/optimizer/column_binding_replacer.cpp +43 -0
- package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +1 -2
- package/src/duckdb/src/optimizer/compressed_materialization/compress_aggregate.cpp +140 -0
- package/src/duckdb/src/optimizer/compressed_materialization/compress_distinct.cpp +42 -0
- package/src/duckdb/src/optimizer/compressed_materialization/compress_order.cpp +65 -0
- package/src/duckdb/src/optimizer/compressed_materialization.cpp +478 -0
- package/src/duckdb/src/optimizer/deliminator.cpp +176 -321
- package/src/duckdb/src/optimizer/filter_pushdown.cpp +9 -0
- package/src/duckdb/src/optimizer/join_order/estimated_properties.cpp +7 -0
- package/src/duckdb/src/optimizer/join_order/join_node.cpp +2 -2
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +113 -82
- package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +2 -6
- package/src/duckdb/src/optimizer/join_order/query_graph.cpp +22 -14
- package/src/duckdb/src/optimizer/optimizer.cpp +51 -14
- package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +5 -5
- package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +0 -1
- package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +127 -0
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +4 -0
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +154 -15
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +65 -8
- package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics_propagator.cpp +7 -5
- package/src/duckdb/src/optimizer/topn_optimizer.cpp +20 -10
- package/src/duckdb/src/parallel/executor.cpp +15 -0
- package/src/duckdb/src/parallel/task_scheduler.cpp +11 -2
- package/src/duckdb/src/parser/common_table_expression_info.cpp +2 -0
- package/src/duckdb/src/parser/expression/between_expression.cpp +3 -15
- package/src/duckdb/src/parser/expression/case_expression.cpp +0 -13
- package/src/duckdb/src/parser/expression/cast_expression.cpp +3 -14
- package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -13
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +3 -12
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -13
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +0 -12
- package/src/duckdb/src/parser/expression/constant_expression.cpp +3 -11
- package/src/duckdb/src/parser/expression/default_expression.cpp +0 -4
- package/src/duckdb/src/parser/expression/function_expression.cpp +3 -32
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +4 -14
- package/src/duckdb/src/parser/expression/operator_expression.cpp +0 -12
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +0 -12
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +4 -11
- package/src/duckdb/src/parser/expression/star_expression.cpp +0 -19
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +0 -18
- package/src/duckdb/src/parser/expression/window_expression.cpp +3 -39
- package/src/duckdb/src/parser/parsed_expression.cpp +0 -70
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +7 -0
- package/src/duckdb/src/parser/parser.cpp +8 -2
- package/src/duckdb/src/parser/query_node/cte_node.cpp +58 -0
- package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +0 -19
- package/src/duckdb/src/parser/query_node/select_node.cpp +0 -29
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +0 -15
- package/src/duckdb/src/parser/query_node.cpp +15 -37
- package/src/duckdb/src/parser/result_modifier.cpp +0 -74
- package/src/duckdb/src/parser/tableref/basetableref.cpp +0 -19
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +0 -4
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +0 -15
- package/src/duckdb/src/parser/tableref/joinref.cpp +3 -23
- package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -23
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -13
- package/src/duckdb/src/parser/tableref/table_function.cpp +0 -15
- package/src/duckdb/src/parser/tableref.cpp +0 -44
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +55 -3
- package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +2 -0
- package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +44 -0
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +19 -1
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +13 -0
- package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +6 -1
- package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +6 -1
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -2
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +14 -11
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +11 -2
- package/src/duckdb/src/parser/transform/statement/transform_update.cpp +6 -1
- package/src/duckdb/src/parser/transformer.cpp +15 -0
- package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +64 -0
- package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +26 -0
- package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +5 -5
- package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +4 -4
- package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +32 -29
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +5 -4
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +11 -2
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +32 -5
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +116 -49
- package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +64 -26
- package/src/duckdb/src/planner/binder/tableref/plan_subqueryref.cpp +3 -3
- package/src/duckdb/src/planner/binder.cpp +44 -31
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +4 -31
- package/src/duckdb/src/planner/expression_binder.cpp +3 -0
- package/src/duckdb/src/planner/expression_iterator.cpp +6 -0
- package/src/duckdb/src/planner/logical_operator.cpp +5 -0
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +2 -0
- package/src/duckdb/src/planner/operator/logical_cteref.cpp +3 -1
- package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +26 -0
- package/src/duckdb/src/planner/operator/logical_get.cpp +9 -4
- package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +21 -0
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +90 -38
- package/src/duckdb/src/planner/subquery/has_correlated_expressions.cpp +22 -7
- package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +65 -7
- package/src/duckdb/src/storage/arena_allocator.cpp +1 -2
- package/src/duckdb/src/storage/buffer/block_manager.cpp +3 -0
- package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -0
- package/src/duckdb/src/storage/compression/rle.cpp +0 -1
- package/src/duckdb/src/storage/data_table.cpp +1 -1
- package/src/duckdb/src/storage/local_storage.cpp +3 -3
- package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +340 -0
- package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +122 -0
- package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +86 -0
- package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +166 -0
- package/src/duckdb/src/storage/serialization/serialize_types.cpp +127 -0
- package/src/duckdb/src/storage/single_file_block_manager.cpp +23 -0
- package/src/duckdb/src/storage/statistics/string_stats.cpp +21 -2
- package/src/duckdb/src/storage/storage_info.cpp +1 -1
- package/src/duckdb/src/storage/table/chunk_info.cpp +17 -0
- package/src/duckdb/src/storage/table/row_group.cpp +25 -9
- package/src/duckdb/src/storage/table/row_group_collection.cpp +19 -18
- package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +2 -2
- package/src/duckdb/third_party/concurrentqueue/lightweightsemaphore.h +76 -0
- package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +2 -0
- package/src/duckdb/third_party/httplib/httplib.hpp +10 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +9 -0
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +2 -1
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12487 -12331
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +6 -6
- package/src/duckdb/ub_src_common.cpp +2 -0
- package/src/duckdb/ub_src_execution_index_art.cpp +0 -2
- package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
- package/src/duckdb/ub_src_execution_operator_set.cpp +2 -0
- package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_compressed_materialization.cpp +4 -0
- package/src/duckdb/ub_src_function_scalar_list.cpp +2 -0
- package/src/duckdb/ub_src_optimizer.cpp +6 -0
- package/src/duckdb/ub_src_optimizer_compressed_materialization.cpp +6 -0
- package/src/duckdb/ub_src_optimizer_statistics_expression.cpp +0 -2
- package/src/duckdb/ub_src_parser_query_node.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_expression.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_query_node.cpp +4 -0
- package/src/duckdb/ub_src_planner_operator.cpp +4 -0
- package/src/duckdb/ub_src_storage_serialization.cpp +10 -0
- package/src/statement.cpp +10 -3
- package/test/test_all_types.test.ts +233 -0
- package/tsconfig.json +1 -0
- package/src/duckdb/src/execution/index/art/prefix_segment.cpp +0 -42
- package/src/duckdb/src/include/duckdb/execution/index/art/prefix_segment.hpp +0 -40
- package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +0 -118
@@ -5,6 +5,7 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
+
// COVAR_POP(y,x)
|
8
9
|
|
9
10
|
#pragma once
|
10
11
|
|
@@ -29,7 +30,7 @@ struct CovarOperation {
|
|
29
30
|
}
|
30
31
|
|
31
32
|
template <class A_TYPE, class B_TYPE, class STATE, class OP>
|
32
|
-
static void Operation(STATE &state, const A_TYPE &
|
33
|
+
static void Operation(STATE &state, const A_TYPE &y, const B_TYPE &x, AggregateBinaryInput &idata) {
|
33
34
|
// update running mean and d^2
|
34
35
|
const uint64_t n = ++(state.count);
|
35
36
|
|
@@ -39,6 +40,7 @@ struct CovarOperation {
|
|
39
40
|
const double dy = (y - state.meany);
|
40
41
|
const double meany = state.meany + dy / n;
|
41
42
|
|
43
|
+
// Schubert and Gertz SSDBM 2018 (4.3)
|
42
44
|
const double C = state.co_moment + dx * (y - meany);
|
43
45
|
|
44
46
|
state.meanx = meanx;
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -25,9 +25,9 @@ struct RegrSlopeOperation {
|
|
25
25
|
}
|
26
26
|
|
27
27
|
template <class A_TYPE, class B_TYPE, class STATE, class OP>
|
28
|
-
static void Operation(STATE &state, const A_TYPE &
|
29
|
-
CovarOperation::Operation<A_TYPE, B_TYPE, CovarState, OP>(state.cov_pop,
|
30
|
-
STDDevBaseOperation::Execute<A_TYPE, StddevState>(state.var_pop,
|
28
|
+
static void Operation(STATE &state, const A_TYPE &y, const B_TYPE &x, AggregateBinaryInput &idata) {
|
29
|
+
CovarOperation::Operation<A_TYPE, B_TYPE, CovarState, OP>(state.cov_pop, y, x,idata);
|
30
|
+
STDDevBaseOperation::Execute<A_TYPE, StddevState>(state.var_pop, x);
|
31
31
|
}
|
32
32
|
|
33
33
|
template <class STATE, class OP>
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -162,8 +164,8 @@ struct DecadeFun {
|
|
162
164
|
|
163
165
|
struct EpochFun {
|
164
166
|
static constexpr const char *Name = "epoch";
|
165
|
-
static constexpr const char *Parameters = "
|
166
|
-
static constexpr const char *Description = "Extract the epoch component from a
|
167
|
+
static constexpr const char *Parameters = "temporal";
|
168
|
+
static constexpr const char *Description = "Extract the epoch component from a temporal type";
|
167
169
|
static constexpr const char *Example = "epoch(timestamp '2021-08-03 11:59:44.123456')";
|
168
170
|
|
169
171
|
static ScalarFunctionSet GetFunctions();
|
@@ -171,11 +173,29 @@ struct EpochFun {
|
|
171
173
|
|
172
174
|
struct EpochMsFun {
|
173
175
|
static constexpr const char *Name = "epoch_ms";
|
174
|
-
static constexpr const char *Parameters = "
|
175
|
-
static constexpr const char *Description = "
|
176
|
-
static constexpr const char *Example = "epoch_ms(
|
176
|
+
static constexpr const char *Parameters = "temporal";
|
177
|
+
static constexpr const char *Description = "Extract the epoch component in milliseconds from a temporal type";
|
178
|
+
static constexpr const char *Example = "epoch_ms(timestamp '2021-08-03 11:59:44.123456')";
|
177
179
|
|
178
|
-
static
|
180
|
+
static ScalarFunctionSet GetFunctions();
|
181
|
+
};
|
182
|
+
|
183
|
+
struct EpochUsFun {
|
184
|
+
static constexpr const char *Name = "epoch_us";
|
185
|
+
static constexpr const char *Parameters = "temporal";
|
186
|
+
static constexpr const char *Description = "Extract the epoch component in microseconds from a temporal type";
|
187
|
+
static constexpr const char *Example = "epoch_us(timestamp '2021-08-03 11:59:44.123456')";
|
188
|
+
|
189
|
+
static ScalarFunctionSet GetFunctions();
|
190
|
+
};
|
191
|
+
|
192
|
+
struct EpochNsFun {
|
193
|
+
static constexpr const char *Name = "epoch_ns";
|
194
|
+
static constexpr const char *Parameters = "temporal";
|
195
|
+
static constexpr const char *Description = "Extract the epoch component in nanoseconds from a temporal type";
|
196
|
+
static constexpr const char *Example = "epoch_ns(timestamp '2021-08-03 11:59:44.123456')";
|
197
|
+
|
198
|
+
static ScalarFunctionSet GetFunctions();
|
179
199
|
};
|
180
200
|
|
181
201
|
struct EraFun {
|
@@ -277,7 +297,7 @@ struct MakeTimestampFun {
|
|
277
297
|
static constexpr const char *Description = "The timestamp for the given parts";
|
278
298
|
static constexpr const char *Example = "make_timestamp(1992, 9, 20, 13, 34, 27.123456)";
|
279
299
|
|
280
|
-
static
|
300
|
+
static ScalarFunctionSet GetFunctions();
|
281
301
|
};
|
282
302
|
|
283
303
|
struct MicrosecondsFun {
|
@@ -472,8 +492,8 @@ struct ToSecondsFun {
|
|
472
492
|
struct ToTimestampFun {
|
473
493
|
static constexpr const char *Name = "to_timestamp";
|
474
494
|
static constexpr const char *Parameters = "sec";
|
475
|
-
static constexpr const char *Description = "Converts
|
476
|
-
static constexpr const char *Example = "to_timestamp(
|
495
|
+
static constexpr const char *Description = "Converts secs since epoch to a timestamp with time zone";
|
496
|
+
static constexpr const char *Example = "to_timestamp(1284352323.5)";
|
477
497
|
|
478
498
|
static ScalarFunction GetFunction();
|
479
499
|
};
|
@@ -490,7 +510,7 @@ struct ToYearsFun {
|
|
490
510
|
struct TryStrpTimeFun {
|
491
511
|
static constexpr const char *Name = "try_strptime";
|
492
512
|
static constexpr const char *Parameters = "text,format";
|
493
|
-
static constexpr const char *Description = "Converts string to timestamp
|
513
|
+
static constexpr const char *Description = "Converts string to timestamp using the format string (timestamp with time zone if %Z is specified). Returns NULL on failure.";
|
494
514
|
static constexpr const char *Example = "try_strptime('Wed, 1 January 1992 - 08:38:40 PM', '%a, %-d %B %Y - %I:%M:%S %p')";
|
495
515
|
|
496
516
|
static ScalarFunctionSet GetFunctions();
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -5,7 +5,9 @@
|
|
5
5
|
//
|
6
6
|
//
|
7
7
|
//===----------------------------------------------------------------------===//
|
8
|
-
// This file is generated by scripts/generate_functions.py
|
8
|
+
// This file is automatically generated by scripts/generate_functions.py
|
9
|
+
// Do not edit this file manually, your changes will be overwritten
|
10
|
+
//===----------------------------------------------------------------------===//
|
9
11
|
|
10
12
|
#pragma once
|
11
13
|
|
@@ -128,6 +128,9 @@ public:
|
|
128
128
|
//! Executes the filter(if any) and update the aggregates
|
129
129
|
void Combine(GroupedAggregateHashTable &other);
|
130
130
|
|
131
|
+
//! Appends the data in the other HT to this one
|
132
|
+
void Append(GroupedAggregateHashTable &other);
|
133
|
+
|
131
134
|
TupleDataCollection &GetDataCollection() {
|
132
135
|
return *data_collection;
|
133
136
|
}
|
@@ -136,16 +139,29 @@ public:
|
|
136
139
|
return data_collection->Count();
|
137
140
|
}
|
138
141
|
|
142
|
+
idx_t DataSize() const {
|
143
|
+
return data_collection->SizeInBytes();
|
144
|
+
}
|
145
|
+
|
139
146
|
static idx_t InitialCapacity();
|
140
147
|
idx_t Capacity() {
|
141
148
|
return capacity;
|
142
149
|
}
|
143
150
|
|
151
|
+
static idx_t FirstPartSize(idx_t count, HtEntryType entry_type) {
|
152
|
+
idx_t entry_size = entry_type == HT_WIDTH_32 ? sizeof(aggr_ht_entry_32) : sizeof(aggr_ht_entry_64);
|
153
|
+
return NextPowerOfTwo(count * 2L) * entry_size;
|
154
|
+
}
|
155
|
+
|
156
|
+
idx_t TotalSize() const {
|
157
|
+
return DataSize() + FirstPartSize(Count(), entry_type);
|
158
|
+
}
|
159
|
+
|
144
160
|
idx_t ResizeThreshold();
|
145
161
|
idx_t MaxCapacity();
|
146
162
|
static idx_t GetMaxCapacity(HtEntryType entry_type, idx_t tuple_size);
|
147
163
|
|
148
|
-
void Partition(vector<GroupedAggregateHashTable *> &partition_hts, idx_t radix_bits);
|
164
|
+
void Partition(vector<GroupedAggregateHashTable *> &partition_hts, idx_t radix_bits, bool sink_done);
|
149
165
|
void InitializeFirstPart();
|
150
166
|
|
151
167
|
void Finalize();
|
@@ -165,7 +181,7 @@ private:
|
|
165
181
|
vector<data_ptr_t> payload_hds_ptrs;
|
166
182
|
|
167
183
|
//! The hashes of the HT
|
168
|
-
|
184
|
+
AllocatedData hashes_hdl;
|
169
185
|
data_ptr_t hashes_hdl_ptr;
|
170
186
|
idx_t hash_offset; // Offset into the layout of the hash column
|
171
187
|
|
@@ -178,8 +194,10 @@ private:
|
|
178
194
|
|
179
195
|
vector<ExpressionType> predicates;
|
180
196
|
|
181
|
-
//! The arena allocator used by the aggregates for their internal state
|
197
|
+
//! The active arena allocator used by the aggregates for their internal state
|
182
198
|
shared_ptr<ArenaAllocator> aggregate_allocator;
|
199
|
+
//! Owning arena allocators that this HT has data from
|
200
|
+
vector<shared_ptr<ArenaAllocator>> stored_allocators;
|
183
201
|
|
184
202
|
private:
|
185
203
|
GroupedAggregateHashTable(const GroupedAggregateHashTable &) = delete;
|
@@ -88,6 +88,7 @@ public:
|
|
88
88
|
void AddEvent(shared_ptr<Event> event);
|
89
89
|
|
90
90
|
void AddRecursiveCTE(PhysicalOperator &rec_cte);
|
91
|
+
void AddMaterializedCTE(PhysicalOperator &mat_cte);
|
91
92
|
void ReschedulePipelines(const vector<shared_ptr<MetaPipeline>> &pipelines, vector<shared_ptr<Event>> &events);
|
92
93
|
|
93
94
|
//! Whether or not the root of the pipeline is a result collector object
|
@@ -129,6 +130,8 @@ private:
|
|
129
130
|
vector<shared_ptr<Pipeline>> root_pipelines;
|
130
131
|
//! The recursive CTE's in this query plan
|
131
132
|
vector<reference<PhysicalOperator>> recursive_ctes;
|
133
|
+
//! The materialized CTE's in this query plan
|
134
|
+
vector<reference<PhysicalOperator>> materialized_ctes;
|
132
135
|
//! The pipeline executor for the root pipeline
|
133
136
|
unique_ptr<PipelineExecutor> root_executor;
|
134
137
|
//! The current root pipeline index
|
@@ -112,14 +112,13 @@ private:
|
|
112
112
|
void Erase(Node &node, const ARTKey &key, idx_t depth, const row_t &row_id);
|
113
113
|
|
114
114
|
//! Returns all row IDs belonging to a key greater (or equal) than the search key
|
115
|
-
bool SearchGreater(ARTIndexScanState &state, ARTKey &key, bool
|
116
|
-
vector<row_t> &result_ids);
|
115
|
+
bool SearchGreater(ARTIndexScanState &state, ARTKey &key, bool equal, idx_t max_count, vector<row_t> &result_ids);
|
117
116
|
//! Returns all row IDs belonging to a key less (or equal) than the upper_bound
|
118
|
-
bool SearchLess(ARTIndexScanState &state, ARTKey &upper_bound, bool
|
117
|
+
bool SearchLess(ARTIndexScanState &state, ARTKey &upper_bound, bool equal, idx_t max_count,
|
119
118
|
vector<row_t> &result_ids);
|
120
119
|
//! Returns all row IDs belonging to a key within the range of lower_bound and upper_bound
|
121
|
-
bool SearchCloseRange(ARTIndexScanState &state, ARTKey &lower_bound, ARTKey &upper_bound, bool
|
122
|
-
bool
|
120
|
+
bool SearchCloseRange(ARTIndexScanState &state, ARTKey &lower_bound, ARTKey &upper_bound, bool left_equal,
|
121
|
+
bool right_equal, idx_t max_count, vector<row_t> &result_ids);
|
123
122
|
|
124
123
|
//! Initializes a merge operation by returning a set containing the buffer count of each fixed-size allocator
|
125
124
|
void InitializeMerge(ARTFlags &flags);
|
@@ -14,9 +14,8 @@
|
|
14
14
|
|
15
15
|
namespace duckdb {
|
16
16
|
|
17
|
+
//! Keeps track of the byte leading to the currently active child of the node
|
17
18
|
struct IteratorEntry {
|
18
|
-
IteratorEntry() {
|
19
|
-
}
|
20
19
|
IteratorEntry(Node node, uint8_t byte) : node(node), byte(byte) {
|
21
20
|
}
|
22
21
|
|
@@ -24,16 +23,23 @@ struct IteratorEntry {
|
|
24
23
|
uint8_t byte = 0;
|
25
24
|
};
|
26
25
|
|
27
|
-
//! Keeps track of the current key in the iterator
|
28
|
-
class
|
26
|
+
//! Keeps track of the current key in the iterator leading down to the top node in the stack
|
27
|
+
class IteratorKey {
|
29
28
|
public:
|
30
|
-
//!
|
31
|
-
void Push(const uint8_t
|
32
|
-
|
33
|
-
|
29
|
+
//! Pushes a byte into the current key
|
30
|
+
inline void Push(const uint8_t key_byte) {
|
31
|
+
key_bytes.push_back(key_byte);
|
32
|
+
}
|
33
|
+
//! Pops n bytes from the current key
|
34
|
+
inline void Pop(const idx_t n) {
|
35
|
+
key_bytes.resize(key_bytes.size() - n);
|
36
|
+
}
|
34
37
|
|
35
38
|
//! Subscript operator
|
36
|
-
uint8_t &operator[](idx_t idx)
|
39
|
+
inline uint8_t &operator[](idx_t idx) {
|
40
|
+
D_ASSERT(idx < key_bytes.size());
|
41
|
+
return key_bytes[idx];
|
42
|
+
}
|
37
43
|
//! Greater than operator
|
38
44
|
bool operator>(const ARTKey &k) const;
|
39
45
|
//! Greater than or equal to operator
|
@@ -42,37 +48,35 @@ public:
|
|
42
48
|
bool operator==(const ARTKey &k) const;
|
43
49
|
|
44
50
|
private:
|
45
|
-
|
46
|
-
idx_t cur_key_pos = 0;
|
47
|
-
//! The current key corresponding to the current leaf
|
48
|
-
vector<uint8_t> key;
|
51
|
+
vector<uint8_t> key_bytes;
|
49
52
|
};
|
50
53
|
|
51
54
|
class Iterator {
|
52
55
|
public:
|
53
|
-
//!
|
54
|
-
|
56
|
+
//! Holds the current key leading down to the top node on the stack
|
57
|
+
IteratorKey current_key;
|
55
58
|
//! Pointer to the ART
|
56
|
-
ART
|
59
|
+
optional_ptr<ART> art = nullptr;
|
57
60
|
|
58
|
-
//!
|
59
|
-
|
60
|
-
|
61
|
+
//! Scans the tree, starting at the current top node on the stack, and ending at upper_bound.
|
62
|
+
//! If upper_bound is the empty ARTKey, than there is no upper bound
|
63
|
+
bool Scan(const ARTKey &upper_bound, const idx_t max_count, vector<row_t> &result_ids, const bool equal);
|
64
|
+
//! Finds the minimum (leaf) of the current subtree
|
61
65
|
void FindMinimum(Node &node);
|
62
|
-
//!
|
63
|
-
|
66
|
+
//! Finds the lower bound of the ART and adds the nodes to the stack. Returns false, if the lower
|
67
|
+
//! bound exceeds the maximum value of the ART
|
68
|
+
bool LowerBound(Node &node, const ARTKey &key, const bool equal, idx_t depth);
|
64
69
|
|
65
70
|
private:
|
66
|
-
//! Stack of
|
71
|
+
//! Stack of nodes from the root to the currently active node
|
67
72
|
stack<IteratorEntry> nodes;
|
68
73
|
//! Last visited leaf
|
69
|
-
Leaf
|
74
|
+
optional_ptr<Leaf> last_leaf = nullptr;
|
70
75
|
|
71
|
-
//!
|
76
|
+
//! Goes to the next leaf in the ART and sets it as last_leaf,
|
77
|
+
//! returns false if there is no next leaf
|
72
78
|
bool Next();
|
73
|
-
//!
|
74
|
-
void PushKey(const Node &node, const uint8_t byte);
|
75
|
-
//! Pop node from the stack of iterator entries
|
79
|
+
//! Pop the top node from the stack of iterator entries and adjust the current key
|
76
80
|
void PopNode();
|
77
81
|
};
|
78
82
|
} // namespace duckdb
|
@@ -8,16 +8,13 @@
|
|
8
8
|
|
9
9
|
#pragma once
|
10
10
|
|
11
|
-
#include "duckdb/execution/index/art/art.hpp"
|
12
11
|
#include "duckdb/execution/index/art/fixed_size_allocator.hpp"
|
12
|
+
#include "duckdb/execution/index/art/art.hpp"
|
13
13
|
#include "duckdb/execution/index/art/node.hpp"
|
14
|
-
#include "duckdb/execution/index/art/prefix.hpp"
|
15
14
|
|
16
15
|
namespace duckdb {
|
17
16
|
|
18
17
|
// classes
|
19
|
-
class Node;
|
20
|
-
class ARTKey;
|
21
18
|
class MetaBlockWriter;
|
22
19
|
class MetaBlockReader;
|
23
20
|
|
@@ -28,8 +25,6 @@ class Leaf {
|
|
28
25
|
public:
|
29
26
|
//! Number of row IDs
|
30
27
|
uint32_t count;
|
31
|
-
//! Compressed path (prefix)
|
32
|
-
Prefix prefix;
|
33
28
|
union {
|
34
29
|
//! The pointer to the head of the list of leaf segments
|
35
30
|
Node ptr;
|
@@ -38,13 +33,10 @@ public:
|
|
38
33
|
} row_ids;
|
39
34
|
|
40
35
|
public:
|
41
|
-
//! Get a new leaf node, might cause a new buffer allocation, and initializes a leaf holding one
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
//! n_row_ids row IDs and a prefix starting at depth
|
46
|
-
static Leaf &New(ART &art, Node &node, const ARTKey &key, const uint32_t depth, const row_t *row_ids,
|
47
|
-
const idx_t count);
|
36
|
+
//! Get a new leaf node, might cause a new buffer allocation, and initializes a leaf holding one row ID
|
37
|
+
static Leaf &New(ART &art, Node &node, const row_t row_id);
|
38
|
+
//! Get a new leaf node, might cause a new buffer allocation, and initializes a leaf holding n_row_ids row IDs
|
39
|
+
static Leaf &New(ART &art, Node &node, const row_t *row_ids, const idx_t count);
|
48
40
|
//! Free the leaf
|
49
41
|
static void Free(ART &art, Node &node);
|
50
42
|
//! Get a reference to the leaf
|
@@ -72,7 +64,7 @@ public:
|
|
72
64
|
//! and sets the ptr to point to the segment containing the row ID
|
73
65
|
uint32_t FindRowId(const ART &art, Node &ptr, const row_t row_id) const;
|
74
66
|
|
75
|
-
//! Returns the string representation of
|
67
|
+
//! Returns the string representation of the node, or only traverses and verifies the node and its subtree
|
76
68
|
string VerifyAndToString(const ART &art, const bool only_verify) const;
|
77
69
|
|
78
70
|
//! Serialize this leaf
|
@@ -15,7 +15,7 @@ namespace duckdb {
|
|
15
15
|
|
16
16
|
// classes
|
17
17
|
enum class NType : uint8_t {
|
18
|
-
|
18
|
+
PREFIX = 1,
|
19
19
|
LEAF_SEGMENT = 2,
|
20
20
|
LEAF = 3,
|
21
21
|
NODE_4 = 4,
|
@@ -38,11 +38,6 @@ struct ARTFlags;
|
|
38
38
|
//! The remaining bytes are the position in the respective ART buffer.
|
39
39
|
class Node : public SwizzleablePointer {
|
40
40
|
public:
|
41
|
-
// constants (this allows testing performance with different ART node sizes)
|
42
|
-
|
43
|
-
//! Node prefixes (NOTE: this should always hold: PREFIX_SEGMENT_SIZE >= PREFIX_INLINE_BYTES)
|
44
|
-
static constexpr uint32_t PREFIX_INLINE_BYTES = 8;
|
45
|
-
static constexpr uint32_t PREFIX_SEGMENT_SIZE = 32;
|
46
41
|
//! Node thresholds
|
47
42
|
static constexpr uint8_t NODE_48_SHRINK_THRESHOLD = 12;
|
48
43
|
static constexpr uint8_t NODE_256_SHRINK_THRESHOLD = 36;
|
@@ -54,6 +49,7 @@ public:
|
|
54
49
|
//! Other constants
|
55
50
|
static constexpr uint8_t EMPTY_MARKER = 48;
|
56
51
|
static constexpr uint32_t LEAF_SEGMENT_SIZE = 8;
|
52
|
+
static constexpr uint8_t PREFIX_SIZE = 15;
|
57
53
|
|
58
54
|
public:
|
59
55
|
//! Constructs an empty ARTNode
|
@@ -73,7 +69,7 @@ public:
|
|
73
69
|
//! Retrieve the node type from the leftmost byte
|
74
70
|
inline NType DecodeARTNodeType() const {
|
75
71
|
D_ASSERT(!IsSwizzled());
|
76
|
-
D_ASSERT(type >= (uint8_t)NType::
|
72
|
+
D_ASSERT(type >= (uint8_t)NType::PREFIX);
|
77
73
|
D_ASSERT(type <= (uint8_t)NType::NODE_256);
|
78
74
|
return NType(type);
|
79
75
|
}
|
@@ -91,7 +87,7 @@ public:
|
|
91
87
|
//! Insert the child node at byte
|
92
88
|
static void InsertChild(ART &art, Node &node, const uint8_t byte, const Node child);
|
93
89
|
//! Delete the child node at the respective byte
|
94
|
-
static void DeleteChild(ART &art, Node &node, const uint8_t byte);
|
90
|
+
static void DeleteChild(ART &art, Node &node, Node &prefix, const uint8_t byte);
|
95
91
|
|
96
92
|
//! Get the child for the respective byte in the node
|
97
93
|
optional_ptr<Node> GetChild(ART &art, const uint8_t byte) const;
|
@@ -107,8 +103,6 @@ public:
|
|
107
103
|
string VerifyAndToString(ART &art, const bool only_verify);
|
108
104
|
//! Returns the capacity of the node
|
109
105
|
idx_t GetCapacity() const;
|
110
|
-
//! Returns a pointer to the prefix of the node
|
111
|
-
Prefix &GetPrefix(ART &art);
|
112
106
|
//! Returns the matching node type for a given count
|
113
107
|
static NType GetARTNodeTypeByCount(const idx_t count);
|
114
108
|
//! Get references to the different allocators
|