duckdb 0.6.2-dev971.0 → 0.7.1-dev2.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 +14 -8
- package/configure.py +2 -2
- package/lib/duckdb.d.ts +20 -3
- package/lib/duckdb.js +13 -1
- package/package.json +3 -1
- package/src/connection.cpp +5 -3
- package/src/database.cpp +117 -11
- package/src/duckdb/extension/icu/icu-dateadd.cpp +70 -7
- package/src/duckdb/extension/icu/icu-datefunc.cpp +0 -8
- package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
- package/src/duckdb/extension/icu/icu-extension.cpp +5 -3
- package/src/duckdb/extension/icu/icu-strptime.cpp +2 -2
- package/src/duckdb/extension/icu/icu-timebucket.cpp +637 -0
- package/src/duckdb/extension/icu/icu-timezone.cpp +7 -3
- package/src/duckdb/extension/icu/include/icu-datefunc.hpp +11 -1
- package/src/duckdb/{src/include/duckdb/main/replacement_opens.hpp → extension/icu/include/icu-timebucket.hpp} +3 -6
- package/src/duckdb/extension/icu/third_party/icu/common/uloc.cpp +3 -1
- package/src/duckdb/extension/icu/third_party/icu/i18n/calendar.cpp +1 -1
- package/src/duckdb/extension/icu/third_party/icu/i18n/choicfmt.cpp +3 -1
- package/src/duckdb/extension/icu/third_party/icu/i18n/plurrule.cpp +3 -1
- package/src/duckdb/extension/json/buffered_json_reader.cpp +254 -0
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +148 -0
- package/src/duckdb/extension/json/include/json_common.hpp +148 -226
- package/src/duckdb/extension/json/include/json_executors.hpp +139 -0
- package/src/duckdb/extension/json/include/json_functions.hpp +71 -30
- package/src/duckdb/extension/json/include/json_scan.hpp +310 -0
- package/src/duckdb/extension/json/include/json_structure.hpp +87 -0
- package/src/duckdb/extension/json/include/json_transform.hpp +72 -0
- package/src/duckdb/extension/json/json-extension.cpp +35 -17
- package/src/duckdb/extension/json/json_common.cpp +10 -87
- package/src/duckdb/extension/json/json_functions/copy_json.cpp +109 -0
- package/src/duckdb/extension/json/json_functions/json_array_length.cpp +18 -13
- package/src/duckdb/extension/json/json_functions/json_contains.cpp +95 -44
- package/src/duckdb/extension/json/json_functions/json_create.cpp +48 -39
- package/src/duckdb/extension/json/json_functions/json_extract.cpp +30 -21
- package/src/duckdb/extension/json/json_functions/json_keys.cpp +60 -0
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +33 -11
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +483 -155
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +369 -116
- package/src/duckdb/extension/json/json_functions/json_type.cpp +19 -14
- package/src/duckdb/extension/json/json_functions/json_valid.cpp +16 -6
- package/src/duckdb/extension/json/json_functions/read_json.cpp +282 -0
- package/src/duckdb/extension/json/json_functions/read_json_objects.cpp +65 -0
- package/src/duckdb/extension/json/json_functions.cpp +225 -0
- package/src/duckdb/extension/json/json_scan.cpp +666 -0
- package/src/duckdb/extension/json/yyjson/include/yyjson.hpp +3847 -3398
- package/src/duckdb/extension/json/yyjson/yyjson.cpp +6625 -6411
- package/src/duckdb/extension/parquet/column_reader.cpp +28 -23
- package/src/duckdb/extension/parquet/column_writer.cpp +79 -77
- package/src/duckdb/extension/parquet/include/boolean_column_reader.hpp +5 -1
- package/src/duckdb/extension/parquet/include/callback_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/column_reader.hpp +2 -0
- package/src/duckdb/extension/parquet/include/generated_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/parquet_reader.hpp +18 -3
- package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +1 -1
- package/src/duckdb/extension/parquet/include/templated_column_reader.hpp +3 -3
- package/src/duckdb/extension/parquet/parquet-extension.cpp +102 -35
- package/src/duckdb/extension/parquet/parquet_metadata.cpp +2 -2
- package/src/duckdb/extension/parquet/parquet_reader.cpp +108 -39
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +8 -4
- package/src/duckdb/extension/parquet/parquet_writer.cpp +23 -7
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +2 -2
- package/src/duckdb/src/catalog/catalog.cpp +36 -134
- package/src/duckdb/src/catalog/catalog_entry/column_dependency_manager.cpp +2 -2
- package/src/duckdb/src/catalog/catalog_entry/duck_index_entry.cpp +27 -0
- package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +330 -0
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +758 -0
- package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +4 -13
- package/src/duckdb/src/catalog/catalog_entry/pragma_function_catalog_entry.cpp +2 -1
- package/src/duckdb/src/catalog/catalog_entry/scalar_function_catalog_entry.cpp +1 -1
- package/src/duckdb/src/catalog/catalog_entry/scalar_macro_catalog_entry.cpp +5 -5
- package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +11 -308
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +44 -708
- package/src/duckdb/src/catalog/catalog_entry/table_function_catalog_entry.cpp +2 -1
- package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +1 -1
- package/src/duckdb/src/catalog/catalog_entry.cpp +2 -2
- package/src/duckdb/src/catalog/catalog_search_path.cpp +10 -10
- package/src/duckdb/src/catalog/catalog_set.cpp +68 -62
- package/src/duckdb/src/catalog/catalog_transaction.cpp +9 -3
- package/src/duckdb/src/catalog/default/default_functions.cpp +7 -7
- package/src/duckdb/src/catalog/default/default_schemas.cpp +2 -2
- package/src/duckdb/src/catalog/default/default_types.cpp +2 -1
- package/src/duckdb/src/catalog/default/default_views.cpp +8 -16
- package/src/duckdb/src/catalog/dependency_manager.cpp +6 -6
- package/src/duckdb/src/catalog/duck_catalog.cpp +111 -0
- package/src/duckdb/src/catalog/similar_catalog_entry.cpp +26 -0
- package/src/duckdb/src/common/allocator.cpp +1 -1
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +9 -9
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +6 -6
- package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +1 -1
- package/src/duckdb/src/common/bind_helpers.cpp +67 -0
- package/src/duckdb/src/common/box_renderer.cpp +11 -3
- package/src/duckdb/src/common/compressed_file_system.cpp +2 -2
- package/src/duckdb/src/common/enums/expression_type.cpp +2 -0
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
- package/src/duckdb/src/common/enums/optimizer_type.cpp +1 -0
- package/src/duckdb/src/common/enums/physical_operator_type.cpp +6 -0
- package/src/duckdb/src/common/enums/relation_type.cpp +2 -0
- package/src/duckdb/src/common/exception_format_value.cpp +2 -2
- package/src/duckdb/src/common/file_buffer.cpp +9 -34
- package/src/duckdb/src/common/file_system.cpp +28 -4
- package/src/duckdb/src/common/gzip_file_system.cpp +3 -3
- package/src/duckdb/src/common/hive_partitioning.cpp +129 -4
- package/src/duckdb/src/common/local_file_system.cpp +9 -7
- package/src/duckdb/src/common/operator/cast_operators.cpp +131 -28
- package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
- package/src/duckdb/src/common/preserved_error.cpp +1 -1
- package/src/duckdb/src/common/radix_partitioning.cpp +5 -4
- package/src/duckdb/src/common/row_operations/row_aggregate.cpp +2 -2
- package/src/duckdb/src/common/serializer/buffered_serializer.cpp +1 -1
- package/src/duckdb/src/common/sort/merge_sorter.cpp +11 -5
- package/src/duckdb/src/common/sort/sort_state.cpp +19 -16
- package/src/duckdb/src/common/sort/sorted_block.cpp +12 -11
- package/src/duckdb/src/common/string_util.cpp +9 -1
- package/src/duckdb/src/common/tree_renderer.cpp +17 -8
- package/src/duckdb/src/common/types/batched_data_collection.cpp +4 -4
- package/src/duckdb/src/common/types/bit.cpp +278 -0
- package/src/duckdb/src/common/types/chunk_collection.cpp +7 -7
- package/src/duckdb/src/common/types/column_data_allocator.cpp +6 -6
- package/src/duckdb/src/common/types/column_data_collection.cpp +56 -32
- package/src/duckdb/src/common/types/column_data_collection_segment.cpp +2 -2
- package/src/duckdb/src/common/types/column_data_consumer.cpp +1 -1
- package/src/duckdb/src/common/types/conflict_info.cpp +18 -0
- package/src/duckdb/src/common/types/conflict_manager.cpp +257 -0
- package/src/duckdb/src/common/types/data_chunk.cpp +17 -7
- package/src/duckdb/src/common/types/date.cpp +7 -2
- package/src/duckdb/src/common/types/hash.cpp +2 -2
- package/src/duckdb/src/common/types/partitioned_column_data.cpp +7 -2
- package/src/duckdb/src/common/types/row_data_collection.cpp +7 -7
- package/src/duckdb/src/common/types/row_data_collection_scanner.cpp +10 -2
- package/src/duckdb/src/common/types/row_layout.cpp +4 -4
- package/src/duckdb/src/common/types/string_type.cpp +1 -0
- package/src/duckdb/src/common/types/time.cpp +10 -6
- package/src/duckdb/src/common/types/validity_mask.cpp +2 -2
- package/src/duckdb/src/common/types/value.cpp +35 -41
- package/src/duckdb/src/common/types/vector.cpp +149 -37
- package/src/duckdb/src/common/types/vector_buffer.cpp +4 -4
- package/src/duckdb/src/common/types/vector_cache.cpp +2 -2
- package/src/duckdb/src/common/types.cpp +64 -56
- package/src/duckdb/src/common/vector_operations/vector_cast.cpp +7 -2
- package/src/duckdb/src/common/virtual_file_system.cpp +3 -3
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +10 -8
- package/src/duckdb/src/execution/base_aggregate_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/column_binding_resolver.cpp +21 -1
- package/src/duckdb/src/execution/expression_executor/execute_case.cpp +1 -1
- package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +10 -4
- package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +1 -1
- package/src/duckdb/src/execution/expression_executor/execute_function.cpp +1 -1
- package/src/duckdb/src/execution/expression_executor/execute_operator.cpp +1 -1
- package/src/duckdb/src/execution/expression_executor.cpp +1 -1
- package/src/duckdb/src/execution/index/art/art.cpp +258 -197
- package/src/duckdb/src/execution/index/art/art_key.cpp +10 -0
- package/src/duckdb/src/execution/index/art/leaf.cpp +68 -25
- package/src/duckdb/src/execution/index/art/node.cpp +183 -90
- package/src/duckdb/src/execution/index/art/node16.cpp +62 -34
- package/src/duckdb/src/execution/index/art/node256.cpp +50 -30
- package/src/duckdb/src/execution/index/art/node4.cpp +63 -34
- package/src/duckdb/src/execution/index/art/node48.cpp +63 -38
- package/src/duckdb/src/execution/index/art/prefix.cpp +24 -14
- package/src/duckdb/src/execution/index/art/swizzleable_pointer.cpp +5 -2
- package/src/duckdb/src/execution/join_hashtable.cpp +18 -19
- package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/grouped_aggregate_data.cpp +4 -4
- package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +22 -20
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +3 -3
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +11 -11
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +322 -420
- package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +8 -5
- package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +3 -3
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +3 -2
- package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +5 -5
- package/src/duckdb/src/execution/operator/helper/physical_set.cpp +9 -8
- package/src/duckdb/src/execution/operator/helper/physical_streaming_limit.cpp +3 -3
- package/src/duckdb/src/execution/operator/helper/physical_streaming_sample.cpp +1 -1
- package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +4 -3
- package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +3 -2
- package/src/duckdb/src/execution/operator/join/physical_cross_product.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +6 -6
- package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +19 -19
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +7 -7
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +11 -10
- package/src/duckdb/src/execution/operator/join/physical_join.cpp +8 -1
- package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +4 -3
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +13 -8
- package/src/duckdb/src/execution/operator/join/physical_positional_join.cpp +195 -0
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +7 -7
- package/src/duckdb/src/execution/operator/order/physical_order.cpp +6 -6
- package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +3 -3
- package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +184 -26
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +92 -46
- package/src/duckdb/src/execution/operator/persistent/csv_buffer.cpp +19 -8
- package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +44 -55
- package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +137 -36
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +32 -28
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +114 -19
- package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +2 -1
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +258 -24
- package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +5 -3
- package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +2 -2
- package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +5 -5
- package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +183 -124
- package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +187 -0
- package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +9 -8
- package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +33 -8
- package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +63 -86
- package/src/duckdb/src/execution/operator/schema/physical_create_table.cpp +1 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
- package/src/duckdb/src/execution/operator/schema/physical_drop.cpp +22 -0
- package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +4 -3
- package/src/duckdb/src/execution/operator/set/physical_union.cpp +3 -3
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +5 -5
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +4 -4
- package/src/duckdb/src/execution/physical_operator.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +20 -19
- package/src/duckdb/src/execution/physical_plan/plan_any_join.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_column_data_get.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +25 -23
- package/src/duckdb/src/execution/physical_plan/plan_copy_to_file.cpp +11 -6
- package/src/duckdb/src/execution/physical_plan/plan_create.cpp +6 -6
- package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +63 -14
- package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +24 -18
- package/src/duckdb/src/execution/physical_plan/plan_cross_product.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_delete.cpp +14 -8
- package/src/duckdb/src/execution/physical_plan/plan_delim_get.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +4 -4
- package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +14 -13
- package/src/duckdb/src/execution/physical_plan/plan_execute.cpp +3 -3
- package/src/duckdb/src/execution/physical_plan/plan_explain.cpp +4 -4
- package/src/duckdb/src/execution/physical_plan/plan_export.cpp +4 -4
- package/src/duckdb/src/execution/physical_plan/plan_expression_get.cpp +4 -4
- package/src/duckdb/src/execution/physical_plan/plan_filter.cpp +6 -6
- package/src/duckdb/src/execution/physical_plan/plan_get.cpp +15 -13
- package/src/duckdb/src/execution/physical_plan/plan_insert.cpp +32 -17
- package/src/duckdb/src/execution/physical_plan/plan_limit.cpp +8 -7
- package/src/duckdb/src/execution/physical_plan/plan_limit_percent.cpp +4 -4
- package/src/duckdb/src/execution/physical_plan/plan_order.cpp +5 -4
- package/src/duckdb/src/execution/physical_plan/plan_positional_join.cpp +21 -0
- package/src/duckdb/src/execution/physical_plan/plan_prepare.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_projection.cpp +3 -3
- package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +5 -5
- package/src/duckdb/src/execution/physical_plan/plan_sample.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_set_operation.cpp +4 -4
- package/src/duckdb/src/execution/physical_plan/plan_show_select.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +10 -8
- package/src/duckdb/src/execution/physical_plan/plan_top_n.cpp +3 -3
- package/src/duckdb/src/execution/physical_plan/plan_unnest.cpp +3 -3
- package/src/duckdb/src/execution/physical_plan/plan_update.cpp +13 -6
- package/src/duckdb/src/execution/physical_plan/plan_window.cpp +10 -8
- package/src/duckdb/src/execution/physical_plan_generator.cpp +5 -1
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +2 -2
- package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
- package/src/duckdb/src/execution/window_segment_tree.cpp +2 -1
- package/src/duckdb/src/function/aggregate/distributive/approx_count.cpp +2 -2
- package/src/duckdb/src/function/aggregate/distributive/arg_min_max.cpp +232 -72
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +2 -2
- package/src/duckdb/src/function/aggregate/distributive/minmax.cpp +3 -3
- package/src/duckdb/src/function/aggregate/distributive/string_agg.cpp +2 -2
- package/src/duckdb/src/function/aggregate/holistic/approximate_quantile.cpp +2 -2
- package/src/duckdb/src/function/aggregate/holistic/quantile.cpp +4 -1
- package/src/duckdb/src/function/aggregate/holistic/reservoir_quantile.cpp +2 -2
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +6 -5
- package/src/duckdb/src/function/built_in_functions.cpp +10 -10
- package/src/duckdb/src/function/cast/bit_cast.cpp +19 -0
- package/src/duckdb/src/function/cast/blob_cast.cpp +1 -0
- package/src/duckdb/src/function/cast/cast_function_set.cpp +5 -5
- package/src/duckdb/src/function/cast/decimal_cast.cpp +2 -2
- package/src/duckdb/src/function/cast/default_casts.cpp +12 -9
- package/src/duckdb/src/function/cast/enum_casts.cpp +2 -3
- package/src/duckdb/src/function/cast/list_casts.cpp +1 -2
- package/src/duckdb/src/function/cast/map_cast.cpp +12 -1
- package/src/duckdb/src/function/cast/numeric_casts.cpp +0 -1
- package/src/duckdb/src/function/cast/string_cast.cpp +92 -7
- package/src/duckdb/src/function/cast/struct_cast.cpp +3 -4
- package/src/duckdb/src/function/cast/time_casts.cpp +0 -9
- package/src/duckdb/src/function/cast/union_casts.cpp +11 -9
- package/src/duckdb/src/function/cast/uuid_casts.cpp +0 -1
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +161 -53
- package/src/duckdb/src/function/cast_rules.cpp +2 -7
- package/src/duckdb/src/function/function.cpp +5 -5
- package/src/duckdb/src/function/function_binder.cpp +8 -8
- package/src/duckdb/src/function/function_set.cpp +3 -3
- package/src/duckdb/src/function/macro_function.cpp +12 -10
- package/src/duckdb/src/function/pragma/pragma_functions.cpp +1 -0
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +24 -6
- package/src/duckdb/src/function/pragma_function.cpp +7 -6
- package/src/duckdb/src/function/scalar/date/date_part.cpp +11 -11
- package/src/duckdb/src/function/scalar/date/date_trunc.cpp +1 -1
- package/src/duckdb/src/function/scalar/date/strftime.cpp +14 -13
- package/src/duckdb/src/function/scalar/date/time_bucket.cpp +371 -0
- package/src/duckdb/src/function/scalar/date_functions.cpp +1 -0
- package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +3 -3
- package/src/duckdb/src/function/scalar/generic/current_setting.cpp +1 -1
- package/src/duckdb/src/function/scalar/generic/stats.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +9 -9
- package/src/duckdb/src/function/scalar/list/list_concat.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_lambdas.cpp +20 -4
- package/src/duckdb/src/function/scalar/list/list_sort.cpp +4 -5
- package/src/duckdb/src/function/scalar/list/list_value.cpp +3 -3
- package/src/duckdb/src/function/scalar/map/map_extract.cpp +1 -4
- package/src/duckdb/src/function/scalar/math/numeric.cpp +35 -5
- package/src/duckdb/src/function/scalar/math/setseed.cpp +1 -1
- package/src/duckdb/src/function/scalar/math_functions.cpp +1 -0
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +11 -11
- package/src/duckdb/src/function/scalar/operators/bitwise.cpp +160 -10
- package/src/duckdb/src/function/scalar/sequence/nextval.cpp +5 -5
- package/src/duckdb/src/function/scalar/string/bar.cpp +93 -0
- package/src/duckdb/src/function/scalar/string/left_right.cpp +5 -1
- package/src/duckdb/src/function/scalar/string/length.cpp +30 -4
- package/src/duckdb/src/function/scalar/string/like.cpp +5 -4
- package/src/duckdb/src/function/scalar/string/regexp.cpp +12 -11
- package/src/duckdb/src/function/scalar/string/string_split.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/substring.cpp +8 -0
- package/src/duckdb/src/function/scalar/string_functions.cpp +7 -0
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +2 -1
- package/src/duckdb/src/function/scalar/struct/struct_insert.cpp +2 -2
- package/src/duckdb/src/function/scalar/struct/struct_pack.cpp +2 -2
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +4 -4
- package/src/duckdb/src/function/scalar/system/system_functions.cpp +9 -2
- package/src/duckdb/src/function/scalar/union/union_extract.cpp +2 -1
- package/src/duckdb/src/function/scalar/union/union_value.cpp +1 -1
- package/src/duckdb/src/function/scalar_function.cpp +5 -4
- package/src/duckdb/src/function/scalar_macro_function.cpp +2 -2
- package/src/duckdb/src/function/table/arrow.cpp +7 -7
- package/src/duckdb/src/function/table/arrow_conversion.cpp +1 -2
- package/src/duckdb/src/function/table/checkpoint.cpp +1 -0
- package/src/duckdb/src/function/table/copy_csv.cpp +23 -24
- package/src/duckdb/src/function/table/glob.cpp +1 -1
- package/src/duckdb/src/function/table/pragma_detailed_profiling_output.cpp +4 -4
- package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +3 -3
- package/src/duckdb/src/function/table/range.cpp +2 -2
- package/src/duckdb/src/function/table/read_csv.cpp +223 -122
- package/src/duckdb/src/function/table/repeat.cpp +1 -1
- package/src/duckdb/src/function/table/system/duckdb_columns.cpp +6 -6
- package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +71 -60
- package/src/duckdb/src/function/table/system/duckdb_databases.cpp +89 -0
- package/src/duckdb/src/function/table/system/duckdb_dependencies.cpp +14 -10
- package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +5 -5
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +13 -13
- package/src/duckdb/src/function/table/system/duckdb_indexes.cpp +17 -10
- package/src/duckdb/src/function/table/system/duckdb_keywords.cpp +2 -2
- package/src/duckdb/src/function/table/system/duckdb_schemas.cpp +1 -1
- package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +1 -1
- package/src/duckdb/src/function/table/system/duckdb_settings.cpp +4 -4
- package/src/duckdb/src/function/table/system/duckdb_tables.cpp +10 -6
- package/src/duckdb/src/function/table/system/duckdb_types.cpp +1 -1
- package/src/duckdb/src/function/table/system/duckdb_views.cpp +2 -2
- package/src/duckdb/src/function/table/system/pragma_collations.cpp +1 -1
- package/src/duckdb/src/function/table/system/pragma_database_size.cpp +4 -4
- package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +42 -19
- package/src/duckdb/src/function/table/system/pragma_table_info.cpp +17 -11
- package/src/duckdb/src/function/table/system/test_all_types.cpp +22 -19
- package/src/duckdb/src/function/table/system/test_vector_types.cpp +8 -8
- package/src/duckdb/src/function/table/system_functions.cpp +1 -1
- package/src/duckdb/src/function/table/table_scan.cpp +34 -30
- package/src/duckdb/src/function/table/unnest.cpp +5 -5
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/function/table_function.cpp +1 -1
- package/src/duckdb/src/function/table_macro_function.cpp +2 -2
- package/src/duckdb/src/function/udf_function.cpp +4 -4
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +44 -20
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +29 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +69 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +71 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +3 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +19 -50
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +48 -39
- package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +9 -6
- package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +75 -0
- package/src/duckdb/src/include/duckdb/catalog/mapping_value.hpp +2 -1
- package/src/duckdb/src/include/duckdb/catalog/similar_catalog_entry.hpp +32 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/assert.hpp +4 -0
- package/src/duckdb/src/include/duckdb/common/bind_helpers.hpp +21 -0
- package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +4 -0
- package/src/duckdb/src/include/duckdb/common/constants.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/access_mode.hpp +17 -0
- package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +25 -0
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/enums/relation_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +0 -1
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/file_buffer.hpp +3 -16
- package/src/duckdb/src/include/duckdb/common/file_opener.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +17 -6
- package/src/duckdb/src/include/duckdb/common/gzip_file_system.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/helper.hpp +8 -0
- package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +71 -2
- package/src/duckdb/src/include/duckdb/common/http_stats.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/index_vector.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/limits.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +41 -0
- package/src/duckdb/src/include/duckdb/common/operator/convert_to_string.hpp +18 -18
- package/src/duckdb/src/include/duckdb/common/operator/decimal_cast_operators.hpp +20 -0
- package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +39 -0
- package/src/duckdb/src/include/duckdb/common/operator/subtract.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp +6 -7
- package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +4 -0
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/tree_renderer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/bit.hpp +57 -0
- package/src/duckdb/src/include/duckdb/common/types/chunk_collection.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/conflict_manager.hpp +71 -0
- package/src/duckdb/src/include/duckdb/common/types/constraint_conflict_info.hpp +27 -0
- package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/hugeint.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/types/partitioned_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row_data_collection_scanner.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +84 -4
- package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +1 -9
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +6 -5
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +17 -3
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +5 -5
- package/src/duckdb/src/include/duckdb/common/types.hpp +7 -5
- package/src/duckdb/src/include/duckdb/common/unicode_bar.hpp +35 -0
- package/src/duckdb/src/include/duckdb/common/union_by_name.hpp +93 -0
- package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +141 -0
- package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +14 -0
- package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +23 -4
- package/src/duckdb/src/include/duckdb/execution/executor.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +26 -20
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +17 -8
- package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +21 -9
- package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +15 -5
- package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +14 -5
- package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +16 -8
- package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +14 -5
- package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +26 -20
- package/src/duckdb/src/include/duckdb/execution/index/art/swizzleable_pointer.hpp +4 -4
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit_percent.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_load.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_pragma.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_prepare.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_reservoir_sample.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_transaction.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_positional_join.hpp +50 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +9 -8
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/buffered_csv_reader.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +9 -3
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_file_handle.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +31 -3
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/parallel_csv_reader.hpp +14 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +7 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_delete.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_export.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +37 -2
- package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_unnest.hpp +5 -1
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_dummy_scan.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_empty_result.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_expression_scan.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_positional_scan.hpp +41 -0
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_alter.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_attach.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_index.hpp +9 -17
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_schema.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_sequence.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_create_view.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/schema/physical_drop.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +37 -13
- package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +11 -2
- package/src/duckdb/src/include/duckdb/function/compression_function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +12 -3
- package/src/duckdb/src/include/duckdb/function/create_database_extension.hpp +37 -0
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/function_set.hpp +4 -2
- package/src/duckdb/src/include/duckdb/function/replacement_scan.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/scalar/bit_functions.hpp +28 -0
- package/src/duckdb/src/include/duckdb/function/scalar/date_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/scalar/math_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/scalar/strftime.hpp +4 -3
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +7 -0
- package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +6 -4
- package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +6 -6
- package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +3 -2
- package/src/duckdb/src/include/duckdb/function/udf_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +6 -0
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/client_context.hpp +9 -1
- package/src/duckdb/src/include/duckdb/main/config.hpp +13 -8
- package/src/duckdb/src/include/duckdb/main/connection.hpp +7 -3
- package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/database.hpp +6 -0
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/extension_functions.hpp +5 -0
- package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +5 -5
- package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/relation/read_csv_relation.hpp +10 -11
- package/src/duckdb/src/include/duckdb/main/relation/read_json_relation.hpp +23 -0
- package/src/duckdb/src/include/duckdb/main/relation/table_function_relation.hpp +11 -2
- package/src/duckdb/src/include/duckdb/main/relation/write_csv_relation.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/relation/write_parquet_relation.hpp +34 -0
- package/src/duckdb/src/include/duckdb/main/relation.hpp +14 -1
- package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -0
- package/src/duckdb/src/include/duckdb/main/valid_checker.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +4 -1
- package/src/duckdb/src/include/duckdb/optimizer/filter_combiner.hpp +3 -3
- package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +3 -6
- package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +0 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +0 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +1 -2
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/matcher/expression_type_matcher.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/matcher/function_matcher.hpp +2 -2
- package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +1 -0
- package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +84 -0
- package/src/duckdb/src/include/duckdb/parallel/task_counter.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +3 -3
- package/src/duckdb/src/include/duckdb/parser/column_list.hpp +3 -1
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +3 -3
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +4 -3
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +50 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_macro_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +28 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +17 -0
- package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/qualified_name.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/statement/copy_statement.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/statement/insert_statement.hpp +33 -0
- package/src/duckdb/src/include/duckdb/parser/statement/logical_plan_statement.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/statement/update_statement.hpp +20 -3
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +6 -3
- package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +0 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tokens.hpp +0 -1
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +23 -0
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +4 -3
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +32 -20
- package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +0 -1
- package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/constraints/bound_foreign_key_constraint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +54 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/returning_binder.hpp +0 -4
- package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +3 -4
- package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +8 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +3 -3
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create_table.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cross_product.hpp +3 -8
- package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +4 -20
- package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_export.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_expression_get.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +2 -3
- package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +28 -18
- package/src/duckdb/src/include/duckdb/planner/operator/logical_limit_percent.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_order.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_positional_join.hpp +28 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_show.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_simple.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_unconditional_join.hpp +31 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_unnest.hpp +1 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +4 -18
- package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_function_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +8 -0
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_basetableref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_joinref.hpp +5 -1
- package/src/duckdb/src/include/duckdb/planner/tableref/{bound_crossproductref.hpp → bound_pos_join_ref.hpp} +9 -9
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_subqueryref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_table_function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/tableref/list.hpp +0 -1
- package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +12 -7
- package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +10 -5
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +1 -3
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +14 -9
- package/src/duckdb/src/include/duckdb/storage/database_size.hpp +24 -0
- package/src/duckdb/src/include/duckdb/storage/index.hpp +32 -11
- package/src/duckdb/src/include/duckdb/storage/magic_bytes.hpp +28 -0
- package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +9 -1
- package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +43 -0
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +1 -9
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +6 -4
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/table/segment_base.hpp +9 -1
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +8 -2
- package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +48 -0
- package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +5 -5
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction.hpp +68 -0
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +75 -0
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +9 -7
- package/src/duckdb/src/include/duckdb/transaction/meta_transaction.hpp +3 -0
- package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +9 -42
- package/src/duckdb/src/include/duckdb/transaction/transaction_data.hpp +3 -2
- package/src/duckdb/src/include/duckdb/transaction/transaction_manager.hpp +12 -41
- package/src/duckdb/src/include/duckdb.h +32 -2
- package/src/duckdb/src/include/duckdb.hpp +1 -0
- package/src/duckdb/src/main/appender.cpp +4 -3
- package/src/duckdb/src/main/attached_database.cpp +32 -9
- package/src/duckdb/src/main/capi/arrow-c.cpp +1 -1
- package/src/duckdb/src/main/capi/data_chunk-c.cpp +20 -1
- package/src/duckdb/src/main/capi/duckdb-c.cpp +1 -1
- package/src/duckdb/src/main/capi/helper-c.cpp +2 -4
- package/src/duckdb/src/main/capi/pending-c.cpp +1 -1
- package/src/duckdb/src/main/capi/prepared-c.cpp +2 -2
- package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
- package/src/duckdb/src/main/capi/result-c.cpp +1 -1
- package/src/duckdb/src/main/capi/table_function-c.cpp +4 -4
- package/src/duckdb/src/main/capi/threading-c.cpp +8 -0
- package/src/duckdb/src/main/client_context.cpp +90 -61
- package/src/duckdb/src/main/client_context_file_opener.cpp +14 -0
- package/src/duckdb/src/main/client_data.cpp +2 -0
- package/src/duckdb/src/main/client_verify.cpp +7 -7
- package/src/duckdb/src/main/config.cpp +13 -2
- package/src/duckdb/src/main/connection.cpp +14 -15
- package/src/duckdb/src/main/database.cpp +88 -34
- package/src/duckdb/src/main/database_manager.cpp +6 -4
- package/src/duckdb/src/main/error_manager.cpp +1 -1
- package/src/duckdb/src/main/extension/extension_alias.cpp +1 -0
- package/src/duckdb/src/main/extension/extension_helper.cpp +18 -1
- package/src/duckdb/src/main/extension/extension_install.cpp +6 -1
- package/src/duckdb/src/main/extension/extension_load.cpp +22 -28
- package/src/duckdb/src/main/materialized_query_result.cpp +16 -4
- package/src/duckdb/src/main/pending_query_result.cpp +4 -4
- package/src/duckdb/src/main/prepared_statement.cpp +16 -3
- package/src/duckdb/src/main/query_profiler.cpp +6 -6
- package/src/duckdb/src/main/query_result.cpp +12 -7
- package/src/duckdb/src/main/relation/aggregate_relation.cpp +6 -6
- package/src/duckdb/src/main/relation/create_table_relation.cpp +4 -4
- package/src/duckdb/src/main/relation/create_view_relation.cpp +7 -6
- package/src/duckdb/src/main/relation/cross_product_relation.cpp +6 -5
- package/src/duckdb/src/main/relation/delete_relation.cpp +3 -3
- package/src/duckdb/src/main/relation/distinct_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/explain_relation.cpp +2 -2
- package/src/duckdb/src/main/relation/filter_relation.cpp +4 -3
- package/src/duckdb/src/main/relation/insert_relation.cpp +3 -3
- package/src/duckdb/src/main/relation/join_relation.cpp +7 -7
- package/src/duckdb/src/main/relation/limit_relation.cpp +2 -2
- package/src/duckdb/src/main/relation/order_relation.cpp +3 -3
- package/src/duckdb/src/main/relation/projection_relation.cpp +3 -3
- package/src/duckdb/src/main/relation/query_relation.cpp +5 -4
- package/src/duckdb/src/main/relation/read_csv_relation.cpp +31 -39
- package/src/duckdb/src/main/relation/read_json_relation.cpp +20 -0
- package/src/duckdb/src/main/relation/setop_relation.cpp +3 -3
- package/src/duckdb/src/main/relation/subquery_relation.cpp +2 -1
- package/src/duckdb/src/main/relation/table_function_relation.cpp +29 -17
- package/src/duckdb/src/main/relation/table_relation.cpp +7 -7
- package/src/duckdb/src/main/relation/update_relation.cpp +9 -6
- package/src/duckdb/src/main/relation/value_relation.cpp +6 -6
- package/src/duckdb/src/main/relation/view_relation.cpp +4 -3
- package/src/duckdb/src/main/relation/write_csv_relation.cpp +6 -3
- package/src/duckdb/src/main/relation/write_parquet_relation.cpp +37 -0
- package/src/duckdb/src/main/relation.cpp +53 -30
- package/src/duckdb/src/main/settings/settings.cpp +20 -3
- package/src/duckdb/src/main/stream_query_result.cpp +6 -5
- package/src/duckdb/src/main/valid_checker.cpp +1 -1
- package/src/duckdb/src/optimizer/cse_optimizer.cpp +5 -5
- package/src/duckdb/src/optimizer/deliminator.cpp +16 -9
- package/src/duckdb/src/optimizer/expression_heuristics.cpp +2 -2
- package/src/duckdb/src/optimizer/expression_rewriter.cpp +7 -7
- package/src/duckdb/src/optimizer/filter_combiner.cpp +41 -36
- package/src/duckdb/src/optimizer/filter_pullup.cpp +17 -17
- package/src/duckdb/src/optimizer/filter_pushdown.cpp +24 -24
- package/src/duckdb/src/optimizer/in_clause_rewriter.cpp +14 -14
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +8 -7
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +77 -61
- package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +5 -5
- package/src/duckdb/src/optimizer/join_order/query_graph.cpp +1 -1
- package/src/duckdb/src/optimizer/optimizer.cpp +19 -11
- package/src/duckdb/src/optimizer/pullup/pullup_both_side.cpp +4 -4
- package/src/duckdb/src/optimizer/pullup/pullup_filter.cpp +4 -4
- package/src/duckdb/src/optimizer/pullup/pullup_from_left.cpp +3 -3
- package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +7 -7
- package/src/duckdb/src/optimizer/pullup/pullup_set_operation.cpp +2 -2
- package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +6 -6
- package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +8 -7
- package/src/duckdb/src/optimizer/pushdown/pushdown_filter.cpp +4 -4
- package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +5 -5
- package/src/duckdb/src/optimizer/pushdown/pushdown_inner_join.cpp +8 -8
- package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +13 -13
- package/src/duckdb/src/optimizer/pushdown/pushdown_limit.cpp +2 -2
- package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +4 -4
- package/src/duckdb/src/optimizer/pushdown/pushdown_projection.cpp +6 -6
- package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +9 -9
- package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +4 -4
- package/src/duckdb/src/optimizer/regex_range_filter.cpp +5 -5
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +13 -4
- package/src/duckdb/src/optimizer/rule/arithmetic_simplification.cpp +6 -6
- package/src/duckdb/src/optimizer/rule/case_simplification.cpp +3 -3
- package/src/duckdb/src/optimizer/rule/comparison_simplification.cpp +6 -6
- package/src/duckdb/src/optimizer/rule/conjunction_simplification.cpp +2 -2
- package/src/duckdb/src/optimizer/rule/constant_folding.cpp +1 -1
- package/src/duckdb/src/optimizer/rule/date_part_simplification.cpp +3 -3
- package/src/duckdb/src/optimizer/rule/distributivity.cpp +11 -11
- package/src/duckdb/src/optimizer/rule/empty_needle_removal.cpp +2 -2
- package/src/duckdb/src/optimizer/rule/enum_comparison.cpp +8 -7
- package/src/duckdb/src/optimizer/rule/equal_or_null_simplification.cpp +7 -7
- package/src/duckdb/src/optimizer/rule/in_clause_simplification_rule.cpp +5 -5
- package/src/duckdb/src/optimizer/rule/like_optimizations.cpp +8 -8
- package/src/duckdb/src/optimizer/rule/move_constants.cpp +14 -14
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +3 -3
- package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +12 -12
- package/src/duckdb/src/optimizer/statistics/expression/propagate_between.cpp +12 -10
- package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +2 -2
- package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +6 -6
- package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_constant.cpp +4 -4
- package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +3 -3
- package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +3 -3
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +2 -2
- package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +3 -3
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +69 -13
- package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/operator/propagate_projection.cpp +3 -3
- package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/operator/propagate_window.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics_propagator.cpp +3 -1
- package/src/duckdb/src/optimizer/topn_optimizer.cpp +4 -4
- package/src/duckdb/src/optimizer/unnest_rewriter.cpp +312 -0
- package/src/duckdb/src/parallel/base_pipeline_event.cpp +1 -1
- package/src/duckdb/src/parallel/event.cpp +4 -4
- package/src/duckdb/src/parallel/executor.cpp +13 -9
- package/src/duckdb/src/parallel/pipeline.cpp +4 -4
- package/src/duckdb/src/parallel/pipeline_event.cpp +1 -1
- package/src/duckdb/src/parallel/pipeline_executor.cpp +1 -1
- package/src/duckdb/src/parallel/pipeline_finish_event.cpp +1 -1
- package/src/duckdb/src/parallel/pipeline_initialize_event.cpp +3 -3
- package/src/duckdb/src/parallel/task_scheduler.cpp +10 -10
- package/src/duckdb/src/parser/column_definition.cpp +16 -12
- package/src/duckdb/src/parser/column_list.cpp +20 -2
- package/src/duckdb/src/parser/constraints/check_constraint.cpp +2 -2
- package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +3 -3
- package/src/duckdb/src/parser/constraints/unique_constraint.cpp +5 -5
- package/src/duckdb/src/parser/expression/between_expression.cpp +5 -5
- package/src/duckdb/src/parser/expression/case_expression.cpp +5 -5
- package/src/duckdb/src/parser/expression/cast_expression.cpp +5 -5
- package/src/duckdb/src/parser/expression/collate_expression.cpp +5 -5
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +10 -8
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +9 -9
- package/src/duckdb/src/parser/expression/constant_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/default_expression.cpp +1 -1
- package/src/duckdb/src/parser/expression/function_expression.cpp +12 -11
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/operator_expression.cpp +6 -6
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/star_expression.cpp +5 -5
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/window_expression.cpp +6 -6
- package/src/duckdb/src/parser/parsed_data/alter_function_info.cpp +4 -2
- package/src/duckdb/src/parser/parsed_data/alter_info.cpp +2 -2
- package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +45 -41
- package/src/duckdb/src/parser/parsed_data/create_aggregate_function_info.cpp +3 -3
- package/src/duckdb/src/parser/parsed_data/create_collation_info.cpp +3 -3
- package/src/duckdb/src/parser/parsed_data/create_copy_function_info.cpp +2 -2
- package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +1 -1
- package/src/duckdb/src/parser/parsed_data/create_info.cpp +3 -0
- package/src/duckdb/src/parser/parsed_data/create_pragma_function_info.cpp +4 -4
- package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +4 -4
- package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +4 -4
- package/src/duckdb/src/parser/parsed_data/create_table_info.cpp +4 -3
- package/src/duckdb/src/parser/parsed_data/create_view_info.cpp +56 -3
- package/src/duckdb/src/parser/parsed_expression.cpp +17 -17
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +2 -7
- package/src/duckdb/src/parser/parser.cpp +148 -31
- package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +2 -2
- package/src/duckdb/src/parser/query_node/select_node.cpp +2 -2
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +2 -2
- package/src/duckdb/src/parser/query_node.cpp +5 -5
- package/src/duckdb/src/parser/result_modifier.cpp +9 -9
- package/src/duckdb/src/parser/statement/copy_statement.cpp +102 -0
- package/src/duckdb/src/parser/statement/explain_statement.cpp +1 -1
- package/src/duckdb/src/parser/statement/export_statement.cpp +1 -1
- package/src/duckdb/src/parser/statement/extension_statement.cpp +2 -1
- package/src/duckdb/src/parser/statement/insert_statement.cpp +87 -1
- package/src/duckdb/src/parser/statement/relation_statement.cpp +1 -1
- package/src/duckdb/src/parser/statement/set_statement.cpp +3 -3
- package/src/duckdb/src/parser/statement/update_statement.cpp +21 -6
- package/src/duckdb/src/parser/tableref/basetableref.cpp +2 -2
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +4 -4
- package/src/duckdb/src/parser/tableref/joinref.cpp +20 -9
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +5 -5
- package/src/duckdb/src/parser/tableref/table_function.cpp +2 -2
- package/src/duckdb/src/parser/tableref.cpp +2 -5
- package/src/duckdb/src/parser/transform/constraint/transform_constraint.cpp +2 -2
- package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +5 -5
- package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +9 -7
- package/src/duckdb/src/parser/transform/expression/transform_case.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +2 -2
- package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +5 -5
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +24 -24
- package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +37 -36
- package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +13 -13
- package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +2 -0
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +1 -1
- package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +6 -6
- package/src/duckdb/src/parser/transform/helpers/transform_orderby.cpp +1 -1
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +35 -4
- package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +8 -8
- package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +2 -2
- package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +3 -3
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +5 -3
- package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +29 -0
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +6 -6
- package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +25 -18
- package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +4 -4
- package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +2 -2
- package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +2 -2
- package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +1 -2
- package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +13 -4
- package/src/duckdb/src/parser/transform/statement/transform_export.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +20 -5
- package/src/duckdb/src/parser/transform/statement/transform_load.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +9 -2
- package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +4 -4
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +5 -5
- package/src/duckdb/src/parser/transform/statement/transform_show.cpp +8 -7
- package/src/duckdb/src/parser/transform/statement/transform_update.cpp +15 -7
- package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +95 -0
- package/src/duckdb/src/parser/transform/statement/transform_use.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +1 -1
- package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +1 -1
- package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +10 -10
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +12 -10
- package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +2 -2
- package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +1 -1
- package/src/duckdb/src/parser/transformer.cpp +4 -2
- package/src/duckdb/src/planner/bind_context.cpp +15 -14
- package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +9 -9
- package/src/duckdb/src/planner/binder/expression/bind_between_expression.cpp +12 -12
- package/src/duckdb/src/planner/binder/expression/bind_case_expression.cpp +5 -5
- package/src/duckdb/src/planner/binder/expression/bind_cast_expression.cpp +5 -5
- package/src/duckdb/src/planner/binder/expression/bind_collate_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +13 -12
- package/src/duckdb/src/planner/binder/expression/bind_comparison_expression.cpp +9 -8
- package/src/duckdb/src/planner/binder/expression/bind_conjunction_expression.cpp +3 -2
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +59 -16
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +44 -26
- package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_operator_expression.cpp +6 -6
- package/src/duckdb/src/planner/binder/expression/bind_parameter_expression.cpp +3 -3
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +12 -12
- package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +3 -3
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +19 -19
- package/src/duckdb/src/planner/binder/query_node/bind_recursive_cte_node.cpp +1 -1
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +38 -34
- package/src/duckdb/src/planner/binder/query_node/bind_setop_node.cpp +5 -5
- package/src/duckdb/src/planner/binder/query_node/bind_table_macro_node.cpp +1 -1
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +14 -14
- package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +9 -8
- package/src/duckdb/src/planner/binder/query_node/plan_select_node.cpp +31 -31
- package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +21 -19
- package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +63 -61
- package/src/duckdb/src/planner/binder/statement/bind_attach.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_call.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +102 -25
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +141 -52
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +10 -10
- package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +13 -12
- package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +7 -7
- package/src/duckdb/src/planner/binder/statement/bind_explain.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_export.cpp +30 -25
- package/src/duckdb/src/planner/binder/statement/bind_extension.cpp +3 -2
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +361 -20
- package/src/duckdb/src/planner/binder/statement/bind_load.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_prepare.cpp +3 -3
- package/src/duckdb/src/planner/binder/statement/bind_show.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_simple.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_summarize.cpp +31 -29
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +75 -57
- package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +11 -10
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +19 -10
- package/src/duckdb/src/planner/binder/tableref/bind_expressionlistref.cpp +4 -4
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +24 -16
- package/src/duckdb/src/planner/binder/tableref/bind_subqueryref.cpp +2 -2
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +22 -18
- package/src/duckdb/src/planner/binder/tableref/plan_basetableref.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/plan_expressionlistref.cpp +3 -3
- package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +43 -32
- package/src/duckdb/src/planner/binder/tableref/plan_table_function.cpp +1 -1
- package/src/duckdb/src/planner/binder.cpp +38 -23
- package/src/duckdb/src/planner/bound_result_modifier.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +6 -6
- package/src/duckdb/src/planner/expression/bound_between_expression.cpp +4 -3
- package/src/duckdb/src/planner/expression/bound_case_expression.cpp +12 -12
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +9 -8
- package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +4 -4
- package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -3
- package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_function_expression.cpp +8 -7
- package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +71 -0
- package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +4 -4
- package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +4 -4
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -7
- package/src/duckdb/src/planner/expression.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/alter_binder.cpp +3 -4
- package/src/duckdb/src/planner/expression_binder/check_binder.cpp +16 -2
- package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +6 -4
- package/src/duckdb/src/planner/expression_binder/constant_binder.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/group_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder/having_binder.cpp +5 -2
- package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/order_binder.cpp +6 -5
- package/src/duckdb/src/planner/expression_binder/relation_binder.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/returning_binder.cpp +1 -9
- package/src/duckdb/src/planner/expression_binder/select_binder.cpp +7 -2
- package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +15 -2
- package/src/duckdb/src/planner/expression_binder.cpp +6 -6
- package/src/duckdb/src/planner/expression_iterator.cpp +4 -7
- package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
- package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
- package/src/duckdb/src/planner/joinside.cpp +10 -9
- package/src/duckdb/src/planner/logical_operator.cpp +6 -3
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +11 -1
- package/src/duckdb/src/planner/operator/logical_aggregate.cpp +8 -7
- package/src/duckdb/src/planner/operator/logical_any_join.cpp +2 -2
- package/src/duckdb/src/planner/operator/logical_column_data_get.cpp +4 -3
- package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +10 -5
- package/src/duckdb/src/planner/operator/logical_create.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_create_index.cpp +2 -2
- package/src/duckdb/src/planner/operator/logical_create_table.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_cross_product.cpp +3 -19
- package/src/duckdb/src/planner/operator/logical_delete.cpp +22 -1
- package/src/duckdb/src/planner/operator/logical_delim_join.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_distinct.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_empty_result.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_explain.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_expression_get.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_filter.cpp +6 -6
- package/src/duckdb/src/planner/operator/logical_get.cpp +10 -10
- package/src/duckdb/src/planner/operator/logical_insert.cpp +26 -3
- package/src/duckdb/src/planner/operator/logical_limit.cpp +2 -2
- package/src/duckdb/src/planner/operator/logical_limit_percent.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_order.cpp +3 -3
- package/src/duckdb/src/planner/operator/logical_positional_join.cpp +30 -0
- package/src/duckdb/src/planner/operator/logical_projection.cpp +2 -2
- package/src/duckdb/src/planner/operator/logical_sample.cpp +4 -4
- package/src/duckdb/src/planner/operator/logical_show.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_simple.cpp +33 -2
- package/src/duckdb/src/planner/operator/logical_top_n.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_unconditional_join.cpp +26 -0
- package/src/duckdb/src/planner/operator/logical_unnest.cpp +2 -2
- package/src/duckdb/src/planner/operator/logical_update.cpp +20 -1
- package/src/duckdb/src/planner/operator/logical_window.cpp +1 -1
- package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +1 -1
- package/src/duckdb/src/planner/planner.cpp +7 -9
- package/src/duckdb/src/planner/pragma_handler.cpp +3 -3
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +66 -60
- package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +4 -3
- package/src/duckdb/src/planner/table_binding.cpp +61 -30
- package/src/duckdb/src/planner/table_filter.cpp +6 -6
- package/src/duckdb/src/storage/arena_allocator.cpp +37 -7
- package/src/duckdb/src/storage/block.cpp +2 -2
- package/src/duckdb/src/storage/buffer/buffer_handle.cpp +1 -1
- package/src/duckdb/src/storage/buffer_manager.cpp +48 -33
- package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +2 -2
- package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +6 -4
- package/src/duckdb/src/storage/checkpoint_manager.cpp +14 -13
- package/src/duckdb/src/storage/compression/bitpacking.cpp +5 -4
- package/src/duckdb/src/storage/compression/dictionary_compression.cpp +3 -3
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +5 -5
- package/src/duckdb/src/storage/compression/fsst.cpp +40 -25
- package/src/duckdb/src/storage/compression/rle.cpp +3 -3
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +8 -8
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +2 -2
- package/src/duckdb/src/storage/data_table.cpp +309 -104
- package/src/duckdb/src/storage/index.cpp +12 -6
- package/src/duckdb/src/storage/local_storage.cpp +27 -32
- package/src/duckdb/src/storage/magic_bytes.cpp +31 -0
- package/src/duckdb/src/storage/meta_block_writer.cpp +1 -1
- package/src/duckdb/src/storage/partial_block_manager.cpp +4 -4
- package/src/duckdb/src/storage/single_file_block_manager.cpp +108 -71
- package/src/duckdb/src/storage/statistics/base_statistics.cpp +13 -12
- package/src/duckdb/src/storage/statistics/column_statistics.cpp +2 -2
- package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +2 -2
- package/src/duckdb/src/storage/statistics/list_statistics.cpp +4 -4
- package/src/duckdb/src/storage/statistics/numeric_statistics.cpp +106 -8
- package/src/duckdb/src/storage/statistics/segment_statistics.cpp +2 -2
- package/src/duckdb/src/storage/statistics/string_statistics.cpp +4 -4
- package/src/duckdb/src/storage/statistics/struct_statistics.cpp +5 -4
- package/src/duckdb/src/storage/storage_info.cpp +1 -1
- package/src/duckdb/src/storage/storage_manager.cpp +8 -4
- package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +4 -4
- package/src/duckdb/src/storage/table/column_data.cpp +28 -38
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +5 -5
- package/src/duckdb/src/storage/table/column_segment.cpp +16 -16
- package/src/duckdb/src/storage/table/list_column_data.cpp +11 -11
- package/src/duckdb/src/storage/table/row_group.cpp +21 -18
- package/src/duckdb/src/storage/table/row_group_collection.cpp +21 -22
- package/src/duckdb/src/storage/table/scan_state.cpp +3 -3
- package/src/duckdb/src/storage/table/segment_tree.cpp +5 -5
- package/src/duckdb/src/storage/table/standard_column_data.cpp +11 -11
- package/src/duckdb/src/storage/table/struct_column_data.cpp +13 -13
- package/src/duckdb/src/storage/table/table_statistics.cpp +1 -1
- package/src/duckdb/src/storage/table/update_segment.cpp +7 -6
- package/src/duckdb/src/storage/table_index_list.cpp +12 -10
- package/src/duckdb/src/storage/wal_replay.cpp +6 -6
- package/src/duckdb/src/transaction/commit_state.cpp +9 -3
- package/src/duckdb/src/transaction/duck_transaction.cpp +155 -0
- package/src/duckdb/src/transaction/duck_transaction_manager.cpp +342 -0
- package/src/duckdb/src/transaction/meta_transaction.cpp +3 -0
- package/src/duckdb/src/transaction/transaction.cpp +10 -132
- package/src/duckdb/src/transaction/transaction_context.cpp +2 -2
- package/src/duckdb/src/transaction/transaction_manager.cpp +1 -321
- package/src/duckdb/src/verification/copied_statement_verifier.cpp +1 -1
- package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +1 -1
- package/src/duckdb/src/verification/external_statement_verifier.cpp +1 -1
- package/src/duckdb/src/verification/parsed_statement_verifier.cpp +2 -2
- package/src/duckdb/src/verification/prepared_statement_verifier.cpp +12 -12
- package/src/duckdb/src/verification/statement_verifier.cpp +5 -4
- package/src/duckdb/src/verification/unoptimized_statement_verifier.cpp +1 -1
- package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +22 -19
- package/src/duckdb/third_party/fmt/include/fmt/core.h +5 -3
- package/src/duckdb/third_party/fmt/include/fmt/format.h +10 -10
- package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +19 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +12 -0
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +355 -352
- package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +1 -0
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +19986 -19619
- package/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp +2 -2
- package/src/duckdb/third_party/mbedtls/library/bignum.cpp +1 -3
- package/src/duckdb/third_party/thrift/thrift/TApplicationException.h +0 -3
- package/src/duckdb/third_party/zstd/decompress/huf_decompress.cpp +4 -4
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +6 -6
- package/src/duckdb/ub_extension_json_json_functions.cpp +8 -0
- package/src/duckdb/ub_src_catalog.cpp +4 -0
- package/src/duckdb/ub_src_catalog_catalog_entry.cpp +6 -0
- package/src/duckdb/ub_src_common.cpp +2 -0
- package/src/duckdb/ub_src_common_types.cpp +6 -0
- package/src/duckdb/ub_src_execution_operator_join.cpp +2 -0
- package/src/duckdb/ub_src_execution_operator_scan.cpp +2 -0
- package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
- package/src/duckdb/ub_src_function_cast.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_date.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_string.cpp +2 -0
- package/src/duckdb/ub_src_function_table_system.cpp +2 -2
- package/src/duckdb/ub_src_main.cpp +0 -2
- package/src/duckdb/ub_src_main_relation.cpp +4 -0
- package/src/duckdb/ub_src_optimizer.cpp +2 -0
- package/src/duckdb/ub_src_parser_tableref.cpp +0 -2
- package/src/duckdb/ub_src_parser_transform_statement.cpp +4 -0
- package/src/duckdb/ub_src_planner_binder_tableref.cpp +0 -4
- package/src/duckdb/ub_src_planner_expression.cpp +2 -0
- package/src/duckdb/ub_src_planner_operator.cpp +4 -0
- package/src/duckdb/ub_src_storage.cpp +2 -0
- package/src/duckdb/ub_src_transaction.cpp +4 -0
- package/src/duckdb_node.hpp +8 -0
- package/src/statement.cpp +5 -50
- package/src/utils.cpp +42 -0
- package/test/replacement_scan.test.ts +144 -0
- package/test/udf.test.ts +9 -0
- package/src/duckdb/src/function/table/system/pragma_database_list.cpp +0 -59
- package/src/duckdb/src/include/duckdb/function/replacement_open.hpp +0 -45
- package/src/duckdb/src/include/duckdb/parser/tableref/crossproductref.hpp +0 -36
- package/src/duckdb/src/main/extension_prefix_opener.cpp +0 -47
- package/src/duckdb/src/parser/tableref/crossproductref.cpp +0 -43
- package/src/duckdb/src/planner/binder/tableref/bind_crossproductref.cpp +0 -31
- package/src/duckdb/src/planner/binder/tableref/plan_crossproductref.cpp +0 -26
|
@@ -164,6 +164,56 @@ struct StructTypeTernary {
|
|
|
164
164
|
}
|
|
165
165
|
};
|
|
166
166
|
|
|
167
|
+
template <class A_TYPE, class B_TYPE, class C_TYPE, class D_TYPE>
|
|
168
|
+
struct StructTypeQuaternary {
|
|
169
|
+
A_TYPE a_val;
|
|
170
|
+
B_TYPE b_val;
|
|
171
|
+
C_TYPE c_val;
|
|
172
|
+
D_TYPE d_val;
|
|
173
|
+
|
|
174
|
+
using STRUCT_STATE = StructTypeState<4>;
|
|
175
|
+
|
|
176
|
+
static bool ConstructType(STRUCT_STATE &state, idx_t i,
|
|
177
|
+
StructTypeQuaternary<A_TYPE, B_TYPE, C_TYPE, D_TYPE> &result) {
|
|
178
|
+
auto &a_data = state.child_data[0];
|
|
179
|
+
auto &b_data = state.child_data[1];
|
|
180
|
+
auto &c_data = state.child_data[2];
|
|
181
|
+
auto &d_data = state.child_data[3];
|
|
182
|
+
|
|
183
|
+
auto a_idx = a_data.sel->get_index(i);
|
|
184
|
+
auto b_idx = b_data.sel->get_index(i);
|
|
185
|
+
auto c_idx = c_data.sel->get_index(i);
|
|
186
|
+
auto d_idx = d_data.sel->get_index(i);
|
|
187
|
+
if (!a_data.validity.RowIsValid(a_idx) || !b_data.validity.RowIsValid(b_idx) ||
|
|
188
|
+
!c_data.validity.RowIsValid(c_idx) || !d_data.validity.RowIsValid(d_idx)) {
|
|
189
|
+
return false;
|
|
190
|
+
}
|
|
191
|
+
auto a_ptr = (A_TYPE *)a_data.data;
|
|
192
|
+
auto b_ptr = (B_TYPE *)b_data.data;
|
|
193
|
+
auto c_ptr = (C_TYPE *)c_data.data;
|
|
194
|
+
auto d_ptr = (D_TYPE *)d_data.data;
|
|
195
|
+
result.a_val = a_ptr[a_idx];
|
|
196
|
+
result.b_val = b_ptr[b_idx];
|
|
197
|
+
result.c_val = c_ptr[c_idx];
|
|
198
|
+
result.d_val = d_ptr[d_idx];
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
static void AssignResult(Vector &result, idx_t i, StructTypeQuaternary<A_TYPE, B_TYPE, C_TYPE, D_TYPE> value) {
|
|
203
|
+
auto &entries = StructVector::GetEntries(result);
|
|
204
|
+
|
|
205
|
+
auto a_data = FlatVector::GetData<A_TYPE>(*entries[0]);
|
|
206
|
+
auto b_data = FlatVector::GetData<B_TYPE>(*entries[1]);
|
|
207
|
+
auto c_data = FlatVector::GetData<C_TYPE>(*entries[2]);
|
|
208
|
+
auto d_data = FlatVector::GetData<D_TYPE>(*entries[3]);
|
|
209
|
+
|
|
210
|
+
a_data[i] = value.a_val;
|
|
211
|
+
b_data[i] = value.b_val;
|
|
212
|
+
c_data[i] = value.c_val;
|
|
213
|
+
d_data[i] = value.d_val;
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
|
|
167
217
|
//! The GenericExecutor can handle struct types in addition to primitive types
|
|
168
218
|
struct GenericExecutor {
|
|
169
219
|
private:
|
|
@@ -222,6 +272,87 @@ private:
|
|
|
222
272
|
}
|
|
223
273
|
}
|
|
224
274
|
|
|
275
|
+
template <class A_TYPE, class B_TYPE, class C_TYPE, class RESULT_TYPE, class FUNC>
|
|
276
|
+
static void ExecuteTernaryInternal(Vector &a, Vector &b, Vector &c, Vector &result, idx_t count, FUNC &fun) {
|
|
277
|
+
auto constant = a.GetVectorType() == VectorType::CONSTANT_VECTOR &&
|
|
278
|
+
b.GetVectorType() == VectorType::CONSTANT_VECTOR &&
|
|
279
|
+
c.GetVectorType() == VectorType::CONSTANT_VECTOR;
|
|
280
|
+
|
|
281
|
+
typename A_TYPE::STRUCT_STATE a_state;
|
|
282
|
+
typename B_TYPE::STRUCT_STATE b_state;
|
|
283
|
+
typename C_TYPE::STRUCT_STATE c_state;
|
|
284
|
+
|
|
285
|
+
a_state.PrepareVector(a, count);
|
|
286
|
+
b_state.PrepareVector(b, count);
|
|
287
|
+
c_state.PrepareVector(c, count);
|
|
288
|
+
|
|
289
|
+
for (idx_t i = 0; i < (constant ? 1 : count); i++) {
|
|
290
|
+
auto a_idx = a_state.main_data.sel->get_index(i);
|
|
291
|
+
auto b_idx = a_state.main_data.sel->get_index(i);
|
|
292
|
+
auto c_idx = a_state.main_data.sel->get_index(i);
|
|
293
|
+
if (!a_state.main_data.validity.RowIsValid(a_idx) || !b_state.main_data.validity.RowIsValid(b_idx) ||
|
|
294
|
+
!c_state.main_data.validity.RowIsValid(c_idx)) {
|
|
295
|
+
FlatVector::SetNull(result, i, true);
|
|
296
|
+
continue;
|
|
297
|
+
}
|
|
298
|
+
A_TYPE a_val;
|
|
299
|
+
B_TYPE b_val;
|
|
300
|
+
C_TYPE c_val;
|
|
301
|
+
if (!A_TYPE::ConstructType(a_state, i, a_val) || !B_TYPE::ConstructType(b_state, i, b_val) ||
|
|
302
|
+
!C_TYPE::ConstructType(c_state, i, c_val)) {
|
|
303
|
+
FlatVector::SetNull(result, i, true);
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
RESULT_TYPE::AssignResult(result, i, fun(a_val, b_val, c_val));
|
|
307
|
+
}
|
|
308
|
+
if (constant) {
|
|
309
|
+
result.SetVectorType(VectorType::CONSTANT_VECTOR);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
template <class A_TYPE, class B_TYPE, class C_TYPE, class D_TYPE, class RESULT_TYPE, class FUNC>
|
|
314
|
+
static void ExecuteQuaternaryInternal(Vector &a, Vector &b, Vector &c, Vector &d, Vector &result, idx_t count,
|
|
315
|
+
FUNC &fun) {
|
|
316
|
+
auto constant =
|
|
317
|
+
a.GetVectorType() == VectorType::CONSTANT_VECTOR && b.GetVectorType() == VectorType::CONSTANT_VECTOR &&
|
|
318
|
+
c.GetVectorType() == VectorType::CONSTANT_VECTOR && d.GetVectorType() == VectorType::CONSTANT_VECTOR;
|
|
319
|
+
|
|
320
|
+
typename A_TYPE::STRUCT_STATE a_state;
|
|
321
|
+
typename B_TYPE::STRUCT_STATE b_state;
|
|
322
|
+
typename C_TYPE::STRUCT_STATE c_state;
|
|
323
|
+
typename D_TYPE::STRUCT_STATE d_state;
|
|
324
|
+
|
|
325
|
+
a_state.PrepareVector(a, count);
|
|
326
|
+
b_state.PrepareVector(b, count);
|
|
327
|
+
c_state.PrepareVector(c, count);
|
|
328
|
+
d_state.PrepareVector(d, count);
|
|
329
|
+
|
|
330
|
+
for (idx_t i = 0; i < (constant ? 1 : count); i++) {
|
|
331
|
+
auto a_idx = a_state.main_data.sel->get_index(i);
|
|
332
|
+
auto b_idx = a_state.main_data.sel->get_index(i);
|
|
333
|
+
auto c_idx = a_state.main_data.sel->get_index(i);
|
|
334
|
+
auto d_idx = a_state.main_data.sel->get_index(i);
|
|
335
|
+
if (!a_state.main_data.validity.RowIsValid(a_idx) || !b_state.main_data.validity.RowIsValid(b_idx) ||
|
|
336
|
+
!c_state.main_data.validity.RowIsValid(c_idx) || !d_state.main_data.validity.RowIsValid(d_idx)) {
|
|
337
|
+
FlatVector::SetNull(result, i, true);
|
|
338
|
+
continue;
|
|
339
|
+
}
|
|
340
|
+
A_TYPE a_val;
|
|
341
|
+
B_TYPE b_val;
|
|
342
|
+
C_TYPE c_val;
|
|
343
|
+
D_TYPE d_val;
|
|
344
|
+
if (!A_TYPE::ConstructType(a_state, i, a_val) || !B_TYPE::ConstructType(b_state, i, b_val) ||
|
|
345
|
+
!C_TYPE::ConstructType(c_state, i, c_val) || !D_TYPE::ConstructType(d_state, i, d_val)) {
|
|
346
|
+
FlatVector::SetNull(result, i, true);
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
349
|
+
RESULT_TYPE::AssignResult(result, i, fun(a_val, b_val, c_val, d_val));
|
|
350
|
+
}
|
|
351
|
+
if (constant) {
|
|
352
|
+
result.SetVectorType(VectorType::CONSTANT_VECTOR);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
225
356
|
public:
|
|
226
357
|
template <class A_TYPE, class RESULT_TYPE, class FUNC = std::function<RESULT_TYPE(A_TYPE)>>
|
|
227
358
|
static void ExecuteUnary(Vector &input, Vector &result, idx_t count, FUNC fun) {
|
|
@@ -231,6 +362,16 @@ public:
|
|
|
231
362
|
static void ExecuteBinary(Vector &a, Vector &b, Vector &result, idx_t count, FUNC fun) {
|
|
232
363
|
ExecuteBinaryInternal<A_TYPE, B_TYPE, RESULT_TYPE, FUNC>(a, b, result, count, fun);
|
|
233
364
|
}
|
|
365
|
+
template <class A_TYPE, class B_TYPE, class C_TYPE, class RESULT_TYPE,
|
|
366
|
+
class FUNC = std::function<RESULT_TYPE(A_TYPE)>>
|
|
367
|
+
static void ExecuteTernary(Vector &a, Vector &b, Vector &c, Vector &result, idx_t count, FUNC fun) {
|
|
368
|
+
ExecuteTernaryInternal<A_TYPE, B_TYPE, C_TYPE, RESULT_TYPE, FUNC>(a, b, c, result, count, fun);
|
|
369
|
+
}
|
|
370
|
+
template <class A_TYPE, class B_TYPE, class C_TYPE, class D_TYPE, class RESULT_TYPE,
|
|
371
|
+
class FUNC = std::function<RESULT_TYPE(A_TYPE)>>
|
|
372
|
+
static void ExecuteQuaternary(Vector &a, Vector &b, Vector &c, Vector &d, Vector &result, idx_t count, FUNC fun) {
|
|
373
|
+
ExecuteQuaternaryInternal<A_TYPE, B_TYPE, C_TYPE, D_TYPE, RESULT_TYPE, FUNC>(a, b, c, d, result, count, fun);
|
|
374
|
+
}
|
|
234
375
|
};
|
|
235
376
|
|
|
236
377
|
} // namespace duckdb
|
|
@@ -16,6 +16,14 @@
|
|
|
16
16
|
|
|
17
17
|
namespace duckdb {
|
|
18
18
|
|
|
19
|
+
template <class OP>
|
|
20
|
+
struct TernaryStandardOperatorWrapper {
|
|
21
|
+
template <class FUN, class A_TYPE, class B_TYPE, class C_TYPE, class RESULT_TYPE>
|
|
22
|
+
static inline RESULT_TYPE Operation(FUN fun, A_TYPE a, B_TYPE b, C_TYPE c, ValidityMask &mask, idx_t idx) {
|
|
23
|
+
return OP::template Operation<A_TYPE, B_TYPE, C_TYPE, RESULT_TYPE>(a, b, c);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
|
|
19
27
|
struct TernaryLambdaWrapper {
|
|
20
28
|
template <class FUN, class A_TYPE, class B_TYPE, class C_TYPE, class RESULT_TYPE>
|
|
21
29
|
static inline RESULT_TYPE Operation(FUN fun, A_TYPE a, B_TYPE b, C_TYPE c, ValidityMask &mask, idx_t idx) {
|
|
@@ -99,6 +107,12 @@ public:
|
|
|
99
107
|
ExecuteGeneric<A_TYPE, B_TYPE, C_TYPE, RESULT_TYPE, TernaryLambdaWrapper, FUN>(a, b, c, result, count, fun);
|
|
100
108
|
}
|
|
101
109
|
|
|
110
|
+
template <class A_TYPE, class B_TYPE, class C_TYPE, class RESULT_TYPE, class OP>
|
|
111
|
+
static void ExecuteStandard(Vector &a, Vector &b, Vector &c, Vector &result, idx_t count) {
|
|
112
|
+
ExecuteGeneric<A_TYPE, B_TYPE, C_TYPE, RESULT_TYPE, TernaryStandardOperatorWrapper<OP>, bool>(a, b, c, result,
|
|
113
|
+
count, false);
|
|
114
|
+
}
|
|
115
|
+
|
|
102
116
|
template <class A_TYPE, class B_TYPE, class C_TYPE, class RESULT_TYPE,
|
|
103
117
|
class FUN = std::function<RESULT_TYPE(A_TYPE, B_TYPE, C_TYPE, ValidityMask &, idx_t)>>
|
|
104
118
|
static void ExecuteWithNulls(Vector &a, Vector &b, Vector &c, Vector &result, idx_t count, FUN fun) {
|
|
@@ -68,8 +68,9 @@ public:
|
|
|
68
68
|
FindFileSystem(directory)->RemoveDirectory(directory);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
bool ListFiles(const string &directory, const std::function<void(const string &, bool)> &callback
|
|
72
|
-
|
|
71
|
+
bool ListFiles(const string &directory, const std::function<void(const string &, bool)> &callback,
|
|
72
|
+
FileOpener *opener = nullptr) override {
|
|
73
|
+
return FindFileSystem(directory)->ListFiles(directory, callback, opener);
|
|
73
74
|
}
|
|
74
75
|
|
|
75
76
|
void MoveFile(const string &source, const string &target) override {
|
|
@@ -92,11 +93,29 @@ public:
|
|
|
92
93
|
}
|
|
93
94
|
|
|
94
95
|
void RegisterSubSystem(unique_ptr<FileSystem> fs) override {
|
|
95
|
-
sub_systems.push_back(move(fs));
|
|
96
|
+
sub_systems.push_back(std::move(fs));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
void UnregisterSubSystem(const string &name) override {
|
|
100
|
+
for (auto sub_system = sub_systems.begin(); sub_system != sub_systems.end(); sub_system++) {
|
|
101
|
+
if (sub_system->get()->GetName() == name) {
|
|
102
|
+
sub_systems.erase(sub_system);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
throw InvalidInputException("Could not find filesystem with name %s", name);
|
|
96
107
|
}
|
|
97
108
|
|
|
98
109
|
void RegisterSubSystem(FileCompressionType compression_type, unique_ptr<FileSystem> fs) override {
|
|
99
|
-
compressed_fs[compression_type] = move(fs);
|
|
110
|
+
compressed_fs[compression_type] = std::move(fs);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
vector<string> ListSubSystems() override {
|
|
114
|
+
vector<string> names(sub_systems.size());
|
|
115
|
+
for (idx_t i = 0; i < sub_systems.size(); i++) {
|
|
116
|
+
names[i] = sub_systems[i]->GetName();
|
|
117
|
+
}
|
|
118
|
+
return names;
|
|
100
119
|
}
|
|
101
120
|
|
|
102
121
|
std::string GetName() const override {
|
|
@@ -89,6 +89,9 @@ public:
|
|
|
89
89
|
//! Returns the query result - can only be used if `HasResultCollector` returns true
|
|
90
90
|
unique_ptr<QueryResult> GetResult();
|
|
91
91
|
|
|
92
|
+
//! Returns true if all pipelines have been completed
|
|
93
|
+
bool ExecutionIsFinished();
|
|
94
|
+
|
|
92
95
|
private:
|
|
93
96
|
void InitializeInternal(PhysicalOperator *physical_plan);
|
|
94
97
|
|
|
@@ -37,7 +37,7 @@ public:
|
|
|
37
37
|
void Finalize();
|
|
38
38
|
Allocator &GetAllocator();
|
|
39
39
|
bool HasContext();
|
|
40
|
-
ClientContext &GetContext();
|
|
40
|
+
DUCKDB_API ClientContext &GetContext();
|
|
41
41
|
|
|
42
42
|
void Verify(ExpressionExecutorState &root);
|
|
43
43
|
};
|
|
@@ -49,7 +49,7 @@ struct ExecuteFunctionState : public ExpressionState {
|
|
|
49
49
|
unique_ptr<FunctionLocalState> local_state;
|
|
50
50
|
|
|
51
51
|
public:
|
|
52
|
-
static FunctionLocalState *GetFunctionState(ExpressionState &state) {
|
|
52
|
+
DUCKDB_API static FunctionLocalState *GetFunctionState(ExpressionState &state) {
|
|
53
53
|
return ((ExecuteFunctionState &)state).local_state.get();
|
|
54
54
|
}
|
|
55
55
|
};
|
|
@@ -26,6 +26,8 @@
|
|
|
26
26
|
|
|
27
27
|
namespace duckdb {
|
|
28
28
|
|
|
29
|
+
class ConflictManager;
|
|
30
|
+
|
|
29
31
|
struct ARTIndexScanState : public IndexScanState {
|
|
30
32
|
ARTIndexScanState() : checked(false), result_index(0) {
|
|
31
33
|
}
|
|
@@ -41,7 +43,7 @@ struct ARTIndexScanState : public IndexScanState {
|
|
|
41
43
|
idx_t result_index = 0;
|
|
42
44
|
};
|
|
43
45
|
|
|
44
|
-
enum VerifyExistenceType : uint8_t {
|
|
46
|
+
enum class VerifyExistenceType : uint8_t {
|
|
45
47
|
APPEND = 0, // for purpose to append into table
|
|
46
48
|
APPEND_FK = 1, // for purpose to append into table has foreign key
|
|
47
49
|
DELETE_FK = 2 // for purpose to delete from table related to foreign key
|
|
@@ -49,27 +51,26 @@ enum VerifyExistenceType : uint8_t {
|
|
|
49
51
|
|
|
50
52
|
class ART : public Index {
|
|
51
53
|
public:
|
|
54
|
+
//! Constructs an ART containing the bound expressions, which are resolved during index construction
|
|
52
55
|
ART(const vector<column_t> &column_ids, TableIOManager &table_io_manager,
|
|
53
56
|
const vector<unique_ptr<Expression>> &unbound_expressions, IndexConstraintType constraint_type,
|
|
54
|
-
AttachedDatabase &db, idx_t block_id = DConstants::INVALID_INDEX,
|
|
57
|
+
AttachedDatabase &db, bool track_memory, idx_t block_id = DConstants::INVALID_INDEX,
|
|
55
58
|
idx_t block_offset = DConstants::INVALID_INDEX);
|
|
56
59
|
~ART() override;
|
|
57
60
|
|
|
58
61
|
//! Root of the tree
|
|
59
62
|
Node *tree;
|
|
60
63
|
|
|
61
|
-
AttachedDatabase &db;
|
|
62
|
-
|
|
63
64
|
public:
|
|
64
65
|
//! Initialize a scan on the index with the given expression and column ids
|
|
65
66
|
//! to fetch from the base table for a single predicate
|
|
66
|
-
unique_ptr<IndexScanState> InitializeScanSinglePredicate(Transaction &transaction, Value value,
|
|
67
|
+
unique_ptr<IndexScanState> InitializeScanSinglePredicate(const Transaction &transaction, const Value &value,
|
|
67
68
|
ExpressionType expression_type) override;
|
|
68
69
|
|
|
69
70
|
//! Initialize a scan on the index with the given expression and column ids
|
|
70
71
|
//! to fetch from the base table for two predicates
|
|
71
|
-
unique_ptr<IndexScanState> InitializeScanTwoPredicates(Transaction &transaction, Value low_value,
|
|
72
|
-
ExpressionType low_expression_type, Value high_value,
|
|
72
|
+
unique_ptr<IndexScanState> InitializeScanTwoPredicates(Transaction &transaction, const Value &low_value,
|
|
73
|
+
ExpressionType low_expression_type, const Value &high_value,
|
|
73
74
|
ExpressionType high_expression_type) override;
|
|
74
75
|
|
|
75
76
|
//! Perform a lookup on the index
|
|
@@ -79,17 +80,19 @@ public:
|
|
|
79
80
|
bool Append(IndexLock &lock, DataChunk &entries, Vector &row_identifiers) override;
|
|
80
81
|
//! Verify that data can be appended to the index
|
|
81
82
|
void VerifyAppend(DataChunk &chunk) override;
|
|
83
|
+
//! Verify that data can be appended to the index
|
|
84
|
+
void VerifyAppend(DataChunk &chunk, ConflictManager &conflict_manager) override;
|
|
82
85
|
//! Verify that data can be appended to the index for foreign key constraint
|
|
83
|
-
void VerifyAppendForeignKey(DataChunk &chunk
|
|
86
|
+
void VerifyAppendForeignKey(DataChunk &chunk) override;
|
|
84
87
|
//! Verify that data can be delete from the index for foreign key constraint
|
|
85
|
-
void VerifyDeleteForeignKey(DataChunk &chunk
|
|
88
|
+
void VerifyDeleteForeignKey(DataChunk &chunk) override;
|
|
86
89
|
//! Delete entries in the index
|
|
87
90
|
void Delete(IndexLock &lock, DataChunk &entries, Vector &row_identifiers) override;
|
|
88
|
-
//! Insert data into the index
|
|
91
|
+
//! Insert data into the index
|
|
89
92
|
bool Insert(IndexLock &lock, DataChunk &data, Vector &row_ids) override;
|
|
90
93
|
|
|
91
|
-
//! Construct
|
|
92
|
-
|
|
94
|
+
//! Construct an ART from a vector of sorted keys
|
|
95
|
+
bool ConstructFromSorted(idx_t count, vector<Key> &keys, Vector &row_identifiers);
|
|
93
96
|
|
|
94
97
|
//! Search Equal and fetches the row IDs
|
|
95
98
|
bool SearchEqual(Key &key, idx_t max_count, vector<row_t> &result_ids);
|
|
@@ -102,8 +105,16 @@ public:
|
|
|
102
105
|
bool MergeIndexes(IndexLock &state, Index *other_index) override;
|
|
103
106
|
//! Generate ART keys for an input chunk
|
|
104
107
|
static void GenerateKeys(ArenaAllocator &allocator, DataChunk &input, vector<Key> &keys);
|
|
108
|
+
|
|
109
|
+
//! Generate a string containing all the expressions and their respective values that violate a constraint
|
|
110
|
+
string GenerateErrorKeyName(DataChunk &input, idx_t row);
|
|
111
|
+
//! Generate the matching error message for a constraint violation
|
|
112
|
+
string GenerateConstraintErrorMessage(VerifyExistenceType verify_type, const string &key_name);
|
|
113
|
+
|
|
105
114
|
//! Returns the string representation of an ART
|
|
106
115
|
string ToString() override;
|
|
116
|
+
//! Verifies that the memory_size value of the ART matches its actual size
|
|
117
|
+
void Verify() override;
|
|
107
118
|
|
|
108
119
|
private:
|
|
109
120
|
//! Insert a row id into a leaf node
|
|
@@ -114,6 +125,9 @@ private:
|
|
|
114
125
|
//! Erase element from leaf (if leaf has more than one value) or eliminate the leaf itself
|
|
115
126
|
void Erase(Node *&node, Key &key, idx_t depth, row_t row_id);
|
|
116
127
|
|
|
128
|
+
//! Perform 'Lookup' for an entire chunk, marking which succeeded
|
|
129
|
+
void LookupValues(DataChunk &input, ConflictManager &conflict_manager) final override;
|
|
130
|
+
|
|
117
131
|
//! Find the node with a matching key, optimistic version
|
|
118
132
|
Leaf *Lookup(Node *node, Key &key, idx_t depth);
|
|
119
133
|
|
|
@@ -122,14 +136,6 @@ private:
|
|
|
122
136
|
vector<row_t> &result_ids);
|
|
123
137
|
bool SearchCloseRange(ARTIndexScanState *state, Key &lower_bound, Key &upper_bound, bool left_inclusive,
|
|
124
138
|
bool right_inclusive, idx_t max_count, vector<row_t> &result_ids);
|
|
125
|
-
|
|
126
|
-
void VerifyExistence(DataChunk &chunk, VerifyExistenceType verify_type, string *err_msg_ptr = nullptr);
|
|
127
|
-
|
|
128
|
-
private:
|
|
129
|
-
//! The estimated ART memory consumption
|
|
130
|
-
idx_t estimated_art_size;
|
|
131
|
-
//! The estimated memory consumption of a single key
|
|
132
|
-
idx_t estimated_key_size;
|
|
133
139
|
};
|
|
134
140
|
|
|
135
141
|
} // namespace duckdb
|
|
@@ -15,36 +15,45 @@ namespace duckdb {
|
|
|
15
15
|
|
|
16
16
|
class Leaf : public Node {
|
|
17
17
|
public:
|
|
18
|
+
explicit Leaf();
|
|
18
19
|
Leaf(Key &value, uint32_t depth, row_t row_id);
|
|
19
20
|
Leaf(Key &value, uint32_t depth, row_t *row_ids, idx_t num_elements);
|
|
20
21
|
Leaf(row_t *row_ids, idx_t num_elements, Prefix &prefix);
|
|
21
22
|
Leaf(row_t row_id, Prefix &prefix);
|
|
22
23
|
~Leaf();
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
//! Get the row ID at idx
|
|
26
|
+
row_t GetRowId(idx_t idx);
|
|
27
|
+
//! Get the maximum capacity of the leaf, must not match with its count
|
|
25
28
|
idx_t GetCapacity() const;
|
|
29
|
+
//! Returns whether a leaf holds exactly one inlined row ID or multiple row IDs
|
|
26
30
|
bool IsInlined() const;
|
|
31
|
+
//! Returns a pointer to all row IDs of the leaf
|
|
27
32
|
row_t *GetRowIds();
|
|
28
33
|
|
|
29
34
|
public:
|
|
35
|
+
static Leaf *New();
|
|
30
36
|
static Leaf *New(Key &value, uint32_t depth, row_t row_id);
|
|
31
37
|
static Leaf *New(Key &value, uint32_t depth, row_t *row_ids, idx_t num_elements);
|
|
32
38
|
static Leaf *New(row_t *row_ids, idx_t num_elements, Prefix &prefix);
|
|
33
39
|
static Leaf *New(row_t row_id, Prefix &prefix);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
|
|
41
|
+
//! Returns the memory size of the leaf
|
|
42
|
+
idx_t MemorySize(ART &art, const bool &recurse) override;
|
|
43
|
+
//! Insert a row ID into a leaf
|
|
44
|
+
void Insert(ART &art, row_t row_id);
|
|
45
|
+
//! Remove a row ID from a leaf
|
|
46
|
+
void Remove(ART &art, row_t row_id);
|
|
38
47
|
|
|
39
48
|
//! Returns the string representation of a leaf
|
|
40
49
|
static string ToString(Node *node);
|
|
41
50
|
//! Merge two NLeaf nodes
|
|
42
|
-
static void Merge(Node *&l_node, Node *&r_node);
|
|
51
|
+
static void Merge(ART &art, Node *&l_node, Node *&r_node);
|
|
43
52
|
|
|
44
53
|
//! Serialize a leaf
|
|
45
54
|
BlockPointer Serialize(duckdb::MetaBlockWriter &writer);
|
|
46
|
-
|
|
47
|
-
|
|
55
|
+
//! Deserialize a leaf
|
|
56
|
+
void Deserialize(ART &art, duckdb::MetaBlockReader &reader);
|
|
48
57
|
|
|
49
58
|
private:
|
|
50
59
|
union {
|
|
@@ -37,10 +37,12 @@ struct InternalType {
|
|
|
37
37
|
};
|
|
38
38
|
|
|
39
39
|
struct MergeInfo {
|
|
40
|
-
MergeInfo(ART *l_art, ART *r_art, Node *&l_node, Node *&r_node)
|
|
41
|
-
: l_art(l_art), r_art(r_art), l_node(l_node), r_node(r_node) {};
|
|
40
|
+
MergeInfo(ART *l_art, ART *r_art, ART *root_l_art, ART *root_r_art, Node *&l_node, Node *&r_node)
|
|
41
|
+
: l_art(l_art), r_art(r_art), root_l_art(root_l_art), root_r_art(root_r_art), l_node(l_node), r_node(r_node) {};
|
|
42
42
|
ART *l_art;
|
|
43
43
|
ART *r_art;
|
|
44
|
+
ART *root_l_art;
|
|
45
|
+
ART *root_r_art;
|
|
44
46
|
Node *&l_node;
|
|
45
47
|
Node *&r_node;
|
|
46
48
|
};
|
|
@@ -57,6 +59,8 @@ struct ParentsOfNodes {
|
|
|
57
59
|
class Node {
|
|
58
60
|
public:
|
|
59
61
|
static const uint8_t EMPTY_MARKER = 48;
|
|
62
|
+
static const uint8_t NODE_48_SHRINK_THRESHOLD = 12;
|
|
63
|
+
static const uint8_t NODE_256_SHRINK_THRESHOLD = 36;
|
|
60
64
|
|
|
61
65
|
public:
|
|
62
66
|
explicit Node(NodeType type);
|
|
@@ -71,6 +75,8 @@ public:
|
|
|
71
75
|
Prefix prefix;
|
|
72
76
|
|
|
73
77
|
static void Delete(Node *node);
|
|
78
|
+
//! Returns the memory size of the node
|
|
79
|
+
virtual idx_t MemorySize(ART &art, const bool &recurse);
|
|
74
80
|
//! Get the position of a child corresponding exactly to the specific byte, returns DConstants::INVALID_INDEX if not
|
|
75
81
|
//! exists
|
|
76
82
|
virtual idx_t GetChildPos(uint8_t k) {
|
|
@@ -88,31 +94,37 @@ public:
|
|
|
88
94
|
virtual idx_t GetNextPos(idx_t pos) {
|
|
89
95
|
return DConstants::INVALID_INDEX;
|
|
90
96
|
}
|
|
97
|
+
//! Get the next position and byte in the node, or DConstants::INVALID_INDEX if there is no next position. if pos ==
|
|
98
|
+
//! DConstants::INVALID_INDEX, then the first valid position in the node is returned
|
|
99
|
+
virtual idx_t GetNextPosAndByte(idx_t pos, uint8_t &byte) {
|
|
100
|
+
return DConstants::INVALID_INDEX;
|
|
101
|
+
}
|
|
91
102
|
//! Get the child at the specified position in the node. pos should be between [0, count). Throws an assertion if
|
|
92
103
|
//! the element is not found
|
|
93
104
|
virtual Node *GetChild(ART &art, idx_t pos);
|
|
94
105
|
//! Replaces the pointer to a child node
|
|
95
106
|
virtual void ReplaceChildPointer(idx_t pos, Node *node);
|
|
107
|
+
//! Returns whether the child at pos is in memory
|
|
108
|
+
virtual bool ChildIsInMemory(idx_t pos);
|
|
96
109
|
|
|
97
110
|
//! Insert a new child node at key_byte into the node
|
|
98
|
-
static void InsertChild(Node *&node, uint8_t key_byte, Node *new_child);
|
|
111
|
+
static void InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_child);
|
|
99
112
|
//! Erase child node entry from node
|
|
100
|
-
static void EraseChild(Node *&node, idx_t pos
|
|
113
|
+
static void EraseChild(ART &art, Node *&node, idx_t pos);
|
|
101
114
|
//! Get the corresponding node type for the provided size
|
|
102
115
|
static NodeType GetTypeBySize(idx_t size);
|
|
103
116
|
//! Create a new node of the specified type
|
|
104
|
-
static void New(NodeType &type, Node *&node);
|
|
117
|
+
static void New(const NodeType &type, Node *&node);
|
|
105
118
|
|
|
106
119
|
//! Returns the string representation of a node
|
|
107
120
|
string ToString(ART &art);
|
|
108
121
|
//! Serialize this node
|
|
109
122
|
BlockPointer Serialize(ART &art, duckdb::MetaBlockWriter &writer);
|
|
123
|
+
//! Returns the memory size of the node
|
|
124
|
+
idx_t RecursiveMemorySize(ART &art);
|
|
110
125
|
|
|
111
126
|
//! Deserialize this node
|
|
112
127
|
static Node *Deserialize(ART &art, idx_t block_id, idx_t offset);
|
|
113
|
-
//! Merge r_node into l_node at the specified byte
|
|
114
|
-
static bool MergeAtByte(MergeInfo &info, idx_t depth, idx_t &l_child_pos, idx_t &r_pos, uint8_t &key_byte,
|
|
115
|
-
Node *&l_parent, idx_t l_pos);
|
|
116
128
|
//! Merge two ART
|
|
117
129
|
static bool MergeARTs(ART *l_art, ART *r_art);
|
|
118
130
|
|
|
@@ -120,7 +132,7 @@ private:
|
|
|
120
132
|
//! Serialize internal nodes
|
|
121
133
|
BlockPointer SerializeInternal(ART &art, duckdb::MetaBlockWriter &writer, InternalType &internal_type);
|
|
122
134
|
//! Deserialize internal nodes
|
|
123
|
-
void DeserializeInternal(duckdb::MetaBlockReader &reader);
|
|
135
|
+
void DeserializeInternal(ART &art, duckdb::MetaBlockReader &reader);
|
|
124
136
|
};
|
|
125
137
|
|
|
126
138
|
} // namespace duckdb
|
|
@@ -14,12 +14,17 @@ namespace duckdb {
|
|
|
14
14
|
|
|
15
15
|
class Node16 : public Node {
|
|
16
16
|
public:
|
|
17
|
+
//! Empty Node16
|
|
17
18
|
explicit Node16();
|
|
19
|
+
//! Array containing all partial key bytes
|
|
18
20
|
uint8_t key[16];
|
|
21
|
+
//! ART pointers to the child nodes
|
|
19
22
|
ARTPointer children[16];
|
|
20
23
|
|
|
21
24
|
public:
|
|
22
25
|
static Node16 *New();
|
|
26
|
+
//! Returns the memory size of the Node16
|
|
27
|
+
idx_t MemorySize(ART &art, const bool &recurse) override;
|
|
23
28
|
//! Get position of a specific byte, returns DConstants::INVALID_INDEX if not exists
|
|
24
29
|
idx_t GetChildPos(uint8_t k) override;
|
|
25
30
|
//! Get the position of the first child that is greater or equal to the specific byte, or DConstants::INVALID_INDEX
|
|
@@ -29,18 +34,23 @@ public:
|
|
|
29
34
|
idx_t GetMin() override;
|
|
30
35
|
//! Get the next position in the node, or DConstants::INVALID_INDEX if there is no next position
|
|
31
36
|
idx_t GetNextPos(idx_t pos) override;
|
|
37
|
+
//! Get the next position in the node, or DConstants::INVALID_INDEX if there is no next position
|
|
38
|
+
idx_t GetNextPosAndByte(idx_t pos, uint8_t &byte) override;
|
|
32
39
|
//! Get Node16 child
|
|
33
40
|
Node *GetChild(ART &art, idx_t pos) override;
|
|
34
41
|
//! Replace child pointer
|
|
35
42
|
void ReplaceChildPointer(idx_t pos, Node *node) override;
|
|
43
|
+
//! Returns whether the child at pos is in memory
|
|
44
|
+
bool ChildIsInMemory(idx_t pos) override;
|
|
36
45
|
|
|
37
46
|
//! Insert a new child node at key_byte into the Node16
|
|
38
|
-
static void InsertChild(Node *&node, uint8_t key_byte, Node *new_child);
|
|
47
|
+
static void InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_child);
|
|
39
48
|
//! Erase the child at pos and (if necessary) shrink to Node4
|
|
40
|
-
static void EraseChild(Node *&node,
|
|
41
|
-
|
|
42
|
-
static bool Merge(MergeInfo &info, idx_t depth, Node *&l_parent, idx_t l_pos);
|
|
49
|
+
static void EraseChild(ART &art, Node *&node, idx_t pos);
|
|
50
|
+
|
|
43
51
|
//! Returns the size (maximum capacity) of the Node16
|
|
44
|
-
static idx_t GetSize()
|
|
52
|
+
static constexpr idx_t GetSize() {
|
|
53
|
+
return 16;
|
|
54
|
+
}
|
|
45
55
|
};
|
|
46
56
|
} // namespace duckdb
|
|
@@ -14,11 +14,15 @@ namespace duckdb {
|
|
|
14
14
|
|
|
15
15
|
class Node256 : public Node {
|
|
16
16
|
public:
|
|
17
|
+
//! Empty Node256
|
|
17
18
|
explicit Node256();
|
|
19
|
+
//! ART pointers to the child nodes
|
|
18
20
|
ARTPointer children[256];
|
|
19
21
|
|
|
20
22
|
public:
|
|
21
23
|
static Node256 *New();
|
|
24
|
+
//! Returns the memory size of the Node256
|
|
25
|
+
idx_t MemorySize(ART &art, const bool &recurse) override;
|
|
22
26
|
//! Get position of a specific byte, returns DConstants::INVALID_INDEX if not exists
|
|
23
27
|
idx_t GetChildPos(uint8_t k) override;
|
|
24
28
|
//! Get the position of the first child that is greater or equal to the specific byte, or DConstants::INVALID_INDEX
|
|
@@ -28,18 +32,23 @@ public:
|
|
|
28
32
|
idx_t GetMin() override;
|
|
29
33
|
//! Get the next position in the node, or DConstants::INVALID_INDEX if there is no next position
|
|
30
34
|
idx_t GetNextPos(idx_t pos) override;
|
|
35
|
+
//! Get the next position in the node, or DConstants::INVALID_INDEX if there is no next position
|
|
36
|
+
idx_t GetNextPosAndByte(idx_t pos, uint8_t &byte) override;
|
|
31
37
|
//! Get Node256 child
|
|
32
38
|
Node *GetChild(ART &art, idx_t pos) override;
|
|
33
39
|
//! Replace child pointer
|
|
34
40
|
void ReplaceChildPointer(idx_t pos, Node *node) override;
|
|
41
|
+
//! Returns whether the child at pos is in memory
|
|
42
|
+
bool ChildIsInMemory(idx_t pos) override;
|
|
35
43
|
|
|
36
44
|
//! Insert a new child node at key_byte into the Node256
|
|
37
|
-
static void InsertChild(Node *&node, uint8_t key_byte, Node *new_child);
|
|
45
|
+
static void InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_child);
|
|
38
46
|
//! Erase the child at pos and (if necessary) shrink to Node48
|
|
39
|
-
static void EraseChild(Node *&node,
|
|
40
|
-
|
|
41
|
-
static bool Merge(MergeInfo &info, idx_t depth, Node *&l_parent, idx_t l_pos);
|
|
47
|
+
static void EraseChild(ART &art, Node *&node, idx_t pos);
|
|
48
|
+
|
|
42
49
|
//! Returns the size (maximum capacity) of the Node256
|
|
43
|
-
static idx_t GetSize()
|
|
50
|
+
static constexpr idx_t GetSize() {
|
|
51
|
+
return 256;
|
|
52
|
+
}
|
|
44
53
|
};
|
|
45
54
|
} // namespace duckdb
|
|
@@ -14,14 +14,17 @@ namespace duckdb {
|
|
|
14
14
|
|
|
15
15
|
class Node4 : public Node {
|
|
16
16
|
public:
|
|
17
|
-
Node4
|
|
18
|
-
|
|
17
|
+
//! Empty Node4
|
|
18
|
+
explicit Node4();
|
|
19
|
+
//! Array containing all partial key bytes
|
|
19
20
|
uint8_t key[4];
|
|
20
|
-
|
|
21
|
+
//! ART pointers to the child nodes
|
|
21
22
|
ARTPointer children[4];
|
|
22
23
|
|
|
23
24
|
public:
|
|
24
25
|
static Node4 *New();
|
|
26
|
+
//! Returns the memory size of the Node4
|
|
27
|
+
idx_t MemorySize(ART &art, const bool &recurse) override;
|
|
25
28
|
//! Get position of a byte, returns DConstants::INVALID_INDEX if not exists
|
|
26
29
|
idx_t GetChildPos(uint8_t k) override;
|
|
27
30
|
//! Get the position of the first child that is greater or equal to the specific byte, or DConstants::INVALID_INDEX
|
|
@@ -31,18 +34,23 @@ public:
|
|
|
31
34
|
idx_t GetMin() override;
|
|
32
35
|
//! Get the next position in the node, or DConstants::INVALID_INDEX if there is no next position
|
|
33
36
|
idx_t GetNextPos(idx_t pos) override;
|
|
37
|
+
//! Get the next position in the node, or DConstants::INVALID_INDEX if there is no next position
|
|
38
|
+
idx_t GetNextPosAndByte(idx_t pos, uint8_t &byte) override;
|
|
34
39
|
//! Get Node4 child
|
|
35
40
|
Node *GetChild(ART &art, idx_t pos) override;
|
|
36
41
|
//! Replace child pointer
|
|
37
42
|
void ReplaceChildPointer(idx_t pos, Node *node) override;
|
|
43
|
+
//! Returns whether the child at pos is in memory
|
|
44
|
+
bool ChildIsInMemory(idx_t pos) override;
|
|
38
45
|
|
|
39
46
|
//! Insert a new child node at key_byte into the Node4
|
|
40
|
-
static void InsertChild(Node *&node, uint8_t key_byte, Node *new_child);
|
|
47
|
+
static void InsertChild(ART &art, Node *&node, uint8_t key_byte, Node *new_child);
|
|
41
48
|
//! Erase the child at pos and (if necessary) merge with last child
|
|
42
|
-
static void EraseChild(Node *&node,
|
|
43
|
-
|
|
44
|
-
static bool Merge(MergeInfo &info, idx_t depth, Node *&l_parent, idx_t l_pos);
|
|
49
|
+
static void EraseChild(ART &art, Node *&node, idx_t pos);
|
|
50
|
+
|
|
45
51
|
//! Returns the size (maximum capacity) of the Node4
|
|
46
|
-
static idx_t GetSize()
|
|
52
|
+
static constexpr idx_t GetSize() {
|
|
53
|
+
return 4;
|
|
54
|
+
}
|
|
47
55
|
};
|
|
48
56
|
} // namespace duckdb
|