duckdb 0.10.2-dev0.0 → 0.10.2-dev3.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 +22 -18
- package/binding.gyp.in +3 -0
- package/package.json +1 -1
- package/src/duckdb/extension/icu/icu-timezone.cpp +3 -1
- package/src/duckdb/extension/icu/icu_extension.cpp +6 -2
- package/src/duckdb/extension/json/buffered_json_reader.cpp +10 -3
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +2 -0
- package/src/duckdb/extension/json/include/json_scan.hpp +13 -7
- package/src/duckdb/extension/json/include/json_serializer.hpp +5 -4
- package/src/duckdb/extension/json/include/json_structure.hpp +3 -3
- package/src/duckdb/extension/json/json_functions/json_serialize_plan.cpp +15 -5
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +15 -6
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +21 -20
- package/src/duckdb/extension/json/json_functions/read_json.cpp +37 -3
- package/src/duckdb/extension/json/json_functions.cpp +7 -2
- package/src/duckdb/extension/json/json_scan.cpp +57 -33
- package/src/duckdb/extension/parquet/column_reader.cpp +12 -3
- package/src/duckdb/extension/parquet/column_writer.cpp +44 -7
- package/src/duckdb/extension/parquet/include/parquet_writer.hpp +5 -1
- package/src/duckdb/extension/parquet/parquet_extension.cpp +30 -3
- package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_writer.cpp +4 -2
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +1 -1
- package/src/duckdb/src/catalog/catalog.cpp +5 -1
- package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +21 -5
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +8 -9
- package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +3 -7
- package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +1 -1
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +6 -7
- package/src/duckdb/src/catalog/catalog_entry.cpp +8 -0
- package/src/duckdb/src/catalog/catalog_search_path.cpp +5 -0
- package/src/duckdb/src/catalog/catalog_set.cpp +2 -2
- package/src/duckdb/src/catalog/default/default_functions.cpp +6 -6
- package/src/duckdb/src/catalog/default/default_schemas.cpp +1 -1
- package/src/duckdb/src/catalog/default/default_views.cpp +7 -7
- package/src/duckdb/src/catalog/dependency_catalog_set.cpp +2 -1
- package/src/duckdb/src/catalog/dependency_list.cpp +92 -8
- package/src/duckdb/src/catalog/dependency_manager.cpp +53 -68
- package/src/duckdb/src/catalog/duck_catalog.cpp +1 -1
- package/src/duckdb/src/common/adbc/adbc.cpp +287 -45
- package/src/duckdb/src/common/arrow/appender/union_data.cpp +2 -2
- package/src/duckdb/src/common/box_renderer.cpp +12 -12
- package/src/duckdb/src/common/crypto/md5.cpp +2 -1
- package/src/duckdb/src/common/enum_util.cpp +307 -1
- package/src/duckdb/src/common/enums/expression_type.cpp +4 -0
- package/src/duckdb/src/common/enums/optimizer_type.cpp +1 -1
- package/src/duckdb/src/common/file_system.cpp +60 -13
- package/src/duckdb/src/common/filename_pattern.cpp +13 -13
- package/src/duckdb/src/common/gzip_file_system.cpp +1 -1
- package/src/duckdb/src/common/http_state.cpp +1 -1
- package/src/duckdb/src/common/local_file_system.cpp +72 -71
- package/src/duckdb/src/common/multi_file_reader.cpp +48 -28
- package/src/duckdb/src/common/row_operations/row_matcher.cpp +2 -2
- package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +13 -1
- package/src/duckdb/src/common/serializer/buffered_file_writer.cpp +32 -13
- package/src/duckdb/src/common/string_util.cpp +2 -3
- package/src/duckdb/src/common/tree_renderer.cpp +32 -67
- package/src/duckdb/src/common/types/bit.cpp +6 -6
- package/src/duckdb/src/common/types/data_chunk.cpp +2 -2
- package/src/duckdb/src/common/types/hash.cpp +6 -6
- package/src/duckdb/src/common/types/hyperloglog.cpp +2 -0
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +13 -0
- package/src/duckdb/src/common/types/row/tuple_data_layout.cpp +5 -7
- package/src/duckdb/src/common/types/uuid.cpp +1 -1
- package/src/duckdb/src/common/types/vector.cpp +22 -14
- package/src/duckdb/src/common/types.cpp +8 -1
- package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +20 -18
- package/src/duckdb/src/common/vector_operations/generators.cpp +1 -1
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +267 -110
- package/src/duckdb/src/common/vector_operations/vector_hash.cpp +52 -23
- package/src/duckdb/src/common/virtual_file_system.cpp +33 -20
- package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +31 -16
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +3 -0
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +2 -0
- package/src/duckdb/src/core_functions/core_functions.cpp +1 -1
- package/src/duckdb/src/core_functions/function_list.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/date/time_bucket.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +46 -17
- package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +82 -45
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -2
- package/src/duckdb/src/core_functions/scalar/string/hex.cpp +2 -4
- package/src/duckdb/src/core_functions/scalar/string/repeat.cpp +12 -21
- package/src/duckdb/src/execution/column_binding_resolver.cpp +2 -10
- package/src/duckdb/src/execution/expression_executor/execute_comparison.cpp +133 -66
- package/src/duckdb/src/execution/expression_executor/execute_function.cpp +0 -2
- package/src/duckdb/src/execution/expression_executor.cpp +0 -4
- package/src/duckdb/src/execution/expression_executor_state.cpp +1 -1
- package/src/duckdb/src/execution/index/art/art.cpp +2 -2
- package/src/duckdb/src/execution/index/unknown_index.cpp +13 -13
- package/src/duckdb/src/execution/join_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +0 -1
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer.cpp +10 -7
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_buffer_manager.cpp +32 -1
- package/src/duckdb/src/execution/operator/csv_scanner/buffer_manager/csv_file_handle.cpp +16 -2
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/scanner_boundary.cpp +7 -7
- package/src/duckdb/src/execution/operator/csv_scanner/scanner/string_value_scanner.cpp +354 -159
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +11 -2
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +22 -7
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +1 -1
- package/src/duckdb/src/execution/operator/csv_scanner/state_machine/csv_state_machine_cache.cpp +10 -10
- package/src/duckdb/src/execution/operator/csv_scanner/table_function/csv_file_scanner.cpp +9 -18
- package/src/duckdb/src/execution/operator/csv_scanner/table_function/global_csv_state.cpp +180 -47
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_error.cpp +100 -58
- package/src/duckdb/src/execution/operator/csv_scanner/util/csv_reader_options.cpp +88 -21
- package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +12 -13
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +2 -0
- package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +118 -23
- package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +14 -5
- package/src/duckdb/src/execution/operator/persistent/physical_copy_database.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/physical_export.cpp +5 -5
- package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_simple.cpp +0 -9
- package/src/duckdb/src/execution/physical_plan/plan_vacuum.cpp +18 -0
- package/src/duckdb/src/execution/physical_plan_generator.cpp +5 -3
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +81 -106
- package/src/duckdb/src/execution/reservoir_sample.cpp +1 -1
- package/src/duckdb/src/execution/window_executor.cpp +48 -28
- package/src/duckdb/src/execution/window_segment_tree.cpp +20 -23
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +1 -1
- package/src/duckdb/src/function/cast/enum_casts.cpp +20 -55
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +10 -9
- package/src/duckdb/src/function/cast_rules.cpp +9 -1
- package/src/duckdb/src/function/compression_config.cpp +1 -1
- package/src/duckdb/src/function/function_binder.cpp +45 -44
- package/src/duckdb/src/function/function_set.cpp +9 -9
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +1 -2
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +21 -5
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +2 -2
- package/src/duckdb/src/function/scalar/list/list_select.cpp +5 -2
- package/src/duckdb/src/function/scalar/list/list_zip.cpp +5 -4
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +60 -32
- package/src/duckdb/src/function/scalar/sequence/nextval.cpp +1 -1
- package/src/duckdb/src/function/scalar/strftime_format.cpp +31 -25
- package/src/duckdb/src/function/scalar/string/caseconvert.cpp +6 -6
- package/src/duckdb/src/function/scalar/string/length.cpp +23 -2
- package/src/duckdb/src/function/scalar/string/like.cpp +1 -1
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +1 -1
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +3 -3
- package/src/duckdb/src/function/table/arrow/arrow_array_scan_state.cpp +1 -1
- package/src/duckdb/src/function/table/arrow.cpp +7 -1
- package/src/duckdb/src/function/table/copy_csv.cpp +17 -13
- package/src/duckdb/src/function/table/read_csv.cpp +52 -39
- package/src/duckdb/src/function/table/sniff_csv.cpp +7 -13
- package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +1 -1
- package/src/duckdb/src/function/table/system/duckdb_databases.cpp +7 -1
- package/src/duckdb/src/function/table/system/duckdb_extensions.cpp +12 -2
- package/src/duckdb/src/function/table/system/duckdb_sequences.cpp +1 -2
- package/src/duckdb/src/function/table/system/duckdb_tables.cpp +2 -2
- package/src/duckdb/src/function/table/system/pragma_metadata_info.cpp +9 -2
- package/src/duckdb/src/function/table/system/pragma_table_info.cpp +10 -6
- package/src/duckdb/src/function/table/table_scan.cpp +1 -4
- package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +6 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_index_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_schema_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +6 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/default/default_functions.hpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/dependency.hpp +26 -4
- package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +39 -6
- package/src/duckdb/src/include/duckdb/catalog/dependency_manager.hpp +19 -14
- package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/standard_entry.hpp +4 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +16 -16
- package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +0 -1
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +32 -0
- package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/exception/binder_exception.hpp +14 -10
- package/src/duckdb/src/include/duckdb/common/exception/catalog_exception.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/exception/conversion_exception.hpp +6 -6
- package/src/duckdb/src/include/duckdb/common/exception/http_exception.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/exception/parser_exception.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/exception/transaction_exception.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/exception.hpp +57 -58
- package/src/duckdb/src/include/duckdb/common/exception_format_value.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/file_open_flags.hpp +134 -0
- package/src/duckdb/src/include/duckdb/common/file_opener.hpp +9 -6
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +35 -36
- package/src/duckdb/src/include/duckdb/common/filename_pattern.hpp +4 -6
- package/src/duckdb/src/include/duckdb/common/fixed_size_map.hpp +13 -13
- package/src/duckdb/src/include/duckdb/common/helper.hpp +42 -47
- package/src/duckdb/src/include/duckdb/common/http_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/hugeint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/index_vector.hpp +10 -10
- package/src/duckdb/src/include/duckdb/common/local_file_system.hpp +13 -10
- package/src/duckdb/src/include/duckdb/common/memory_safety.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +50 -24
- package/src/duckdb/src/include/duckdb/common/operator/abs.hpp +12 -4
- package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +5 -5
- package/src/duckdb/src/include/duckdb/common/pipe_file_system.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/platform.h +1 -1
- package/src/duckdb/src/include/duckdb/common/printer.hpp +5 -5
- package/src/duckdb/src/include/duckdb/common/profiler.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp +5 -5
- package/src/duckdb/src/include/duckdb/common/random_engine.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/re2_regex.hpp +7 -7
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_writer.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +17 -6
- package/src/duckdb/src/include/duckdb/common/serializer/deserializer.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +14 -0
- package/src/duckdb/src/include/duckdb/common/serializer/serializer.hpp +16 -0
- package/src/duckdb/src/include/duckdb/common/sort/duckdb_pdqsort.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/tree_renderer.hpp +24 -25
- package/src/duckdb/src/include/duckdb/common/typedefs.hpp +5 -5
- package/src/duckdb/src/include/duckdb/common/types/cast_helpers.hpp +1 -2
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +10 -10
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_iterators.hpp +5 -5
- package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/constraint_conflict_info.hpp +1 -2
- package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/types/date.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/hash.hpp +5 -5
- package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/interval.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_layout.hpp +10 -3
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/selection_vector.hpp +12 -12
- package/src/duckdb/src/include/duckdb/common/types/string_heap.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +21 -20
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/types/uuid.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +15 -7
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types.hpp +14 -10
- package/src/duckdb/src/include/duckdb/common/uhugeint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/union_by_name.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/unique_ptr.hpp +15 -14
- package/src/duckdb/src/include/duckdb/common/vector.hpp +21 -21
- package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/vector_operations/general_cast.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -2
- package/src/duckdb/src/include/duckdb/common/vector_operations/vector_operations.hpp +50 -32
- package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +10 -11
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +13 -1
- package/src/duckdb/src/include/duckdb/core_functions/function_list.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/lambda_functions.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/column_binding_resolver.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/expression_executor.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +2 -5
- package/src/duckdb/src/include/duckdb/execution/merge_sort_tree.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/aggregate_object.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/distinct_aggregate_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/base_scanner.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/column_count_scanner.hpp +0 -3
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer.hpp +9 -6
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_buffer_manager.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_error.hpp +40 -22
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_handle.hpp +5 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_file_scanner.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_option.hpp +6 -4
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_reader_options.hpp +24 -10
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/csv_state_machine.hpp +4 -0
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/global_csv_state.hpp +3 -1
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/skip_scanner.hpp +0 -3
- package/src/duckdb/src/include/duckdb/execution/operator/csv_scanner/string_value_scanner.hpp +58 -17
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +1 -1
- 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_prepare.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_set.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_vacuum.hpp +4 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_rejects_table.hpp +16 -5
- package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +6 -6
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +2 -1
- package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +5 -5
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +6 -6
- package/src/duckdb/src/include/duckdb/function/compression_function.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +10 -13
- package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/function_binder.hpp +24 -23
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/function_set.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/pragma_function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/scalar/strftime_format.hpp +7 -7
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +6 -6
- package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +1 -3
- package/src/duckdb/src/include/duckdb/function/table/table_scan.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +12 -11
- package/src/duckdb/src/include/duckdb/function/udf_function.hpp +66 -60
- package/src/duckdb/src/include/duckdb/main/appender.hpp +6 -6
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +3 -1
- package/src/duckdb/src/include/duckdb/main/buffered_data/buffered_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/main/buffered_data/simple_buffered_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +2 -2
- package/src/duckdb/src/include/duckdb/main/chunk_scan_state/query_result.hpp +2 -2
- package/src/duckdb/src/include/duckdb/main/client_context.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/client_context_file_opener.hpp +3 -2
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/client_properties.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/config.hpp +14 -5
- package/src/duckdb/src/include/duckdb/main/connection.hpp +27 -26
- package/src/duckdb/src/include/duckdb/main/database.hpp +19 -3
- package/src/duckdb/src/include/duckdb/main/database_file_opener.hpp +58 -0
- package/src/duckdb/src/include/duckdb/main/database_path_and_type.hpp +2 -2
- package/src/duckdb/src/include/duckdb/main/error_manager.hpp +6 -6
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +8 -0
- package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/external_dependencies.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +8 -8
- package/src/duckdb/src/include/duckdb/main/query_profiler.hpp +2 -59
- package/src/duckdb/src/include/duckdb/main/query_result.hpp +3 -3
- package/src/duckdb/src/include/duckdb/main/relation/query_relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/secret/secret.hpp +11 -7
- package/src/duckdb/src/include/duckdb/main/secret/secret_manager.hpp +2 -2
- package/src/duckdb/src/include/duckdb/main/secret/secret_storage.hpp +4 -4
- package/src/duckdb/src/include/duckdb/main/settings.hpp +78 -70
- package/src/duckdb/src/include/duckdb/optimizer/column_lifetime_analyzer.hpp +45 -0
- package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +11 -13
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cost_model.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/matcher/expression_matcher.hpp +7 -7
- package/src/duckdb/src/include/duckdb/optimizer/matcher/function_matcher.hpp +7 -7
- package/src/duckdb/src/include/duckdb/optimizer/matcher/type_matcher.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/optimizer.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +32 -30
- package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/event.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/executor_task.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parallel/interrupt.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parallel/pipeline_event.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/column_list.hpp +4 -4
- package/src/duckdb/src/include/duckdb/parser/constraints/unique_constraint.hpp +49 -8
- package/src/duckdb/src/include/duckdb/parser/expression/bound_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/parsed_data/alter_scalar_function_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_database_info.hpp +40 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_function_info.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +2 -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_pragma_function_info.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_secret_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/extra_drop_info.hpp +3 -3
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +3 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +2 -5
- package/src/duckdb/src/include/duckdb/parser/parser.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parser_extension.hpp +3 -3
- package/src/duckdb/src/include/duckdb/parser/query_error_context.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +3 -5
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +16 -9
- package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_default_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_expanded_expression.hpp +34 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +5 -8
- package/src/duckdb/src/include/duckdb/planner/expression_binder/column_alias_binder.hpp +3 -4
- package/src/duckdb/src/include/duckdb/planner/expression_binder/group_binder.hpp +3 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +3 -5
- package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +6 -14
- package/src/duckdb/src/include/duckdb/planner/expression_binder/qualify_binder.hpp +3 -6
- package/src/duckdb/src/include/duckdb/planner/expression_binder/select_bind_state.hpp +52 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/select_binder.hpp +4 -10
- package/src/duckdb/src/include/duckdb/planner/expression_binder/table_function_binder.hpp +5 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/expression_iterator.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +3 -6
- package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -0
- 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_database.hpp +4 -12
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create_secret.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_get.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_dummy_scan.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 +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +3 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +3 -3
- package/src/duckdb/src/include/duckdb/planner/operator/logical_reset.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_set.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_vacuum.hpp +52 -0
- package/src/duckdb/src/include/duckdb/planner/operator_extension.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/parsed_data/bound_create_table_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/query_node/bound_select_node.hpp +5 -4
- package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +4 -1
- package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +2 -3
- package/src/duckdb/src/include/duckdb/storage/checkpoint/string_checkpoint_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +5 -5
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_analyze.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_compress.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alp/alp_scan.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/algorithm/alprd.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_analyze.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_compress.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/alprd/alprd_scan.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/flag_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/leading_zero_buffer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +0 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +4 -4
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas.hpp +4 -4
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +0 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/index.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/magic_bytes.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/optimistic_data_writer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +4 -1
- package/src/duckdb/src/include/duckdb/storage/standard_buffer_manager.hpp +24 -24
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats_union.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/statistics/segment_statistics.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +4 -4
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +9 -6
- package/src/duckdb/src/include/duckdb/storage/table/append_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +10 -1
- package/src/duckdb/src/include/duckdb/storage/table/data_table_info.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_version_manager.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/table/segment_lock.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +4 -4
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -0
- package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +1 -1
- package/src/duckdb/src/include/duckdb/transaction/delete_info.hpp +20 -1
- package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +1 -1
- package/src/duckdb/src/include/duckdb/transaction/transaction_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/transaction/undo_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/transaction/update_info.hpp +1 -1
- package/src/duckdb/src/main/appender.cpp +1 -1
- package/src/duckdb/src/main/attached_database.cpp +11 -3
- package/src/duckdb/src/main/capi/arrow-c.cpp +6 -2
- package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
- package/src/duckdb/src/main/capi/duckdb-c.cpp +1 -1
- 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/result-c.cpp +4 -4
- package/src/duckdb/src/main/client_context.cpp +4 -12
- package/src/duckdb/src/main/client_context_file_opener.cpp +15 -3
- package/src/duckdb/src/main/client_data.cpp +5 -0
- package/src/duckdb/src/main/config.cpp +82 -82
- package/src/duckdb/src/main/database.cpp +31 -7
- package/src/duckdb/src/main/database_manager.cpp +3 -2
- package/src/duckdb/src/main/database_path_and_type.cpp +4 -4
- package/src/duckdb/src/main/error_manager.cpp +1 -1
- package/src/duckdb/src/main/extension/extension_alias.cpp +9 -9
- package/src/duckdb/src/main/extension/extension_helper.cpp +10 -5
- package/src/duckdb/src/main/extension/extension_install.cpp +1 -1
- package/src/duckdb/src/main/extension/extension_load.cpp +111 -37
- package/src/duckdb/src/main/query_profiler.cpp +1 -118
- package/src/duckdb/src/main/secret/secret_manager.cpp +1 -2
- package/src/duckdb/src/main/secret/secret_storage.cpp +1 -1
- package/src/duckdb/src/main/settings/settings.cpp +81 -65
- package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +8 -1
- package/src/duckdb/src/optimizer/compressed_materialization/compress_aggregate.cpp +3 -0
- package/src/duckdb/src/optimizer/compressed_materialization.cpp +26 -28
- package/src/duckdb/src/optimizer/cse_optimizer.cpp +5 -5
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -6
- package/src/duckdb/src/optimizer/optimizer.cpp +14 -17
- package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +16 -5
- package/src/duckdb/src/optimizer/pushdown/pushdown_inner_join.cpp +7 -4
- package/src/duckdb/src/optimizer/pushdown/pushdown_set_operation.cpp +2 -2
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +3 -3
- package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +2 -2
- package/src/duckdb/src/optimizer/statistics/expression/propagate_aggregate.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_between.cpp +8 -8
- package/src/duckdb/src/optimizer/statistics/expression/propagate_case.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_columnref.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +7 -7
- package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +6 -6
- package/src/duckdb/src/optimizer/statistics/expression/propagate_constant.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_function.cpp +2 -2
- package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +10 -10
- package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/operator/propagate_cross_product.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +14 -7
- package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +9 -9
- package/src/duckdb/src/optimizer/statistics/operator/propagate_limit.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/operator/propagate_projection.cpp +2 -2
- 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 +39 -18
- package/src/duckdb/src/parallel/pipeline_finish_event.cpp +1 -1
- package/src/duckdb/src/parallel/task_scheduler.cpp +8 -1
- package/src/duckdb/src/parser/constraints/unique_constraint.cpp +4 -2
- package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +64 -0
- package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +1 -0
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +13 -5
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +24 -0
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +1 -8
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +2 -1
- package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +3 -0
- package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +2 -6
- package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +2 -6
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +2 -6
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +1 -1
- package/src/duckdb/src/parser/transform/statement/transform_select.cpp +5 -2
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +2 -8
- package/src/duckdb/src/parser/transform/statement/transform_update.cpp +1 -6
- package/src/duckdb/src/parser/transform/statement/transform_use.cpp +3 -2
- package/src/duckdb/src/parser/transformer.cpp +14 -2
- package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +40 -17
- package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +8 -3
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +32 -30
- package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +28 -17
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +146 -101
- package/src/duckdb/src/planner/binder/query_node/bind_setop_node.cpp +28 -26
- package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +29 -0
- package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +10 -10
- package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +3 -2
- package/src/duckdb/src/planner/binder/statement/bind_copy_database.cpp +23 -28
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +11 -12
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +9 -11
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +10 -13
- package/src/duckdb/src/planner/binder/statement/bind_pragma.cpp +3 -3
- package/src/duckdb/src/planner/binder/statement/bind_set.cpp +3 -0
- package/src/duckdb/src/planner/binder/statement/bind_vacuum.cpp +66 -65
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +54 -46
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +3 -0
- package/src/duckdb/src/planner/binder/tableref/bind_subqueryref.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +5 -5
- package/src/duckdb/src/planner/binder.cpp +78 -6
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +11 -3
- package/src/duckdb/src/planner/expression/bound_expanded_expression.cpp +22 -0
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +11 -58
- package/src/duckdb/src/planner/expression_binder/column_alias_binder.cpp +5 -8
- package/src/duckdb/src/planner/expression_binder/group_binder.cpp +5 -4
- package/src/duckdb/src/planner/expression_binder/having_binder.cpp +5 -19
- package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +8 -8
- package/src/duckdb/src/planner/expression_binder/order_binder.cpp +42 -26
- package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +3 -22
- package/src/duckdb/src/planner/expression_binder/select_bind_state.cpp +52 -0
- package/src/duckdb/src/planner/expression_binder/select_binder.cpp +43 -5
- package/src/duckdb/src/planner/expression_binder/table_function_binder.cpp +19 -7
- package/src/duckdb/src/planner/logical_operator.cpp +20 -3
- package/src/duckdb/src/planner/operator/logical_copy_database.cpp +4 -14
- package/src/duckdb/src/planner/operator/logical_delete.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_get.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_insert.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_update.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_vacuum.cpp +65 -0
- package/src/duckdb/src/planner/planner.cpp +4 -4
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +26 -27
- package/src/duckdb/src/storage/arena_allocator.cpp +9 -0
- package/src/duckdb/src/storage/buffer/buffer_pool_reservation.cpp +1 -1
- package/src/duckdb/src/storage/buffer_manager.cpp +2 -10
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +2 -3
- package/src/duckdb/src/storage/checkpoint_manager.cpp +15 -8
- package/src/duckdb/src/storage/compression/bitpacking.cpp +6 -1
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +1 -1
- package/src/duckdb/src/storage/data_pointer.cpp +1 -1
- package/src/duckdb/src/storage/data_table.cpp +18 -7
- package/src/duckdb/src/storage/local_storage.cpp +8 -5
- package/src/duckdb/src/storage/magic_bytes.cpp +6 -5
- package/src/duckdb/src/storage/partial_block_manager.cpp +1 -1
- package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +20 -9
- package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +12 -10
- package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +23 -0
- package/src/duckdb/src/storage/single_file_block_manager.cpp +46 -19
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +21 -5
- package/src/duckdb/src/storage/statistics/array_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/base_statistics.cpp +2 -3
- package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/struct_stats.cpp +1 -1
- package/src/duckdb/src/storage/storage_info.cpp +19 -19
- package/src/duckdb/src/storage/storage_manager.cpp +18 -13
- package/src/duckdb/src/storage/table/chunk_info.cpp +11 -3
- package/src/duckdb/src/storage/table/column_data.cpp +88 -66
- package/src/duckdb/src/storage/table/row_group.cpp +7 -7
- package/src/duckdb/src/storage/table/row_version_manager.cpp +2 -2
- package/src/duckdb/src/storage/table/standard_column_data.cpp +4 -0
- package/src/duckdb/src/storage/table/update_segment.cpp +3 -1
- package/src/duckdb/src/storage/table_index_list.cpp +6 -1
- package/src/duckdb/src/storage/temporary_file_manager.cpp +1 -1
- package/src/duckdb/src/storage/wal_replay.cpp +8 -7
- package/src/duckdb/src/storage/write_ahead_log.cpp +3 -4
- package/src/duckdb/src/transaction/cleanup_state.cpp +10 -3
- package/src/duckdb/src/transaction/commit_state.cpp +11 -4
- package/src/duckdb/src/transaction/duck_transaction.cpp +23 -3
- package/src/duckdb/src/transaction/rollback_state.cpp +1 -1
- package/src/duckdb/src/transaction/transaction_context.cpp +1 -1
- package/src/duckdb/src/transaction/undo_buffer.cpp +3 -1
- package/src/duckdb/third_party/fmt/include/fmt/core.h +0 -5
- package/src/duckdb/third_party/fsst/fsst.h +1 -1
- package/src/duckdb/third_party/fsst/libfsst.cpp +1 -140
- package/src/duckdb/third_party/fsst/libfsst.hpp +0 -13
- package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +4 -0
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +8 -1
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +2 -1
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +15401 -15354
- package/src/duckdb/third_party/libpg_query/src_backend_parser_scan.cpp +299 -538
- package/src/duckdb/third_party/lz4/lz4.cpp +2605 -0
- package/src/duckdb/third_party/lz4/lz4.hpp +843 -0
- package/src/duckdb/third_party/parquet/parquet_types.cpp +3 -0
- package/src/duckdb/third_party/parquet/parquet_types.h +2 -1
- package/src/duckdb/third_party/re2/re2/bitmap256.cc +44 -0
- package/src/duckdb/third_party/re2/re2/bitmap256.h +3 -35
- package/src/duckdb/third_party/re2/re2/bitstate.cc +31 -24
- package/src/duckdb/third_party/re2/re2/compile.cc +146 -164
- package/src/duckdb/third_party/re2/re2/dfa.cc +174 -181
- package/src/duckdb/third_party/re2/re2/filtered_re2.cc +19 -3
- package/src/duckdb/third_party/re2/re2/filtered_re2.h +27 -23
- package/src/duckdb/third_party/re2/re2/mimics_pcre.cc +21 -11
- package/src/duckdb/third_party/re2/re2/nfa.cc +91 -131
- package/src/duckdb/third_party/re2/re2/onepass.cc +11 -10
- package/src/duckdb/third_party/re2/re2/parse.cc +171 -154
- package/src/duckdb/third_party/re2/re2/perl_groups.cc +35 -35
- package/src/duckdb/third_party/re2/re2/pod_array.h +55 -0
- package/src/duckdb/third_party/re2/re2/prefilter.cc +40 -40
- package/src/duckdb/third_party/re2/re2/prefilter.h +24 -2
- package/src/duckdb/third_party/re2/re2/prefilter_tree.cc +70 -84
- package/src/duckdb/third_party/re2/re2/prefilter_tree.h +5 -4
- package/src/duckdb/third_party/re2/re2/prog.cc +315 -58
- package/src/duckdb/third_party/re2/re2/prog.h +77 -44
- package/src/duckdb/third_party/re2/re2/re2.cc +333 -221
- package/src/duckdb/third_party/re2/re2/re2.h +277 -201
- package/src/duckdb/third_party/re2/re2/regexp.cc +137 -105
- package/src/duckdb/third_party/re2/re2/regexp.h +45 -40
- package/src/duckdb/third_party/re2/re2/set.cc +40 -17
- package/src/duckdb/third_party/re2/re2/set.h +11 -6
- package/src/duckdb/third_party/re2/re2/simplify.cc +50 -41
- package/src/duckdb/third_party/re2/re2/sparse_array.h +392 -0
- package/src/duckdb/third_party/re2/re2/sparse_set.h +264 -0
- package/src/duckdb/third_party/re2/re2/stringpiece.cc +1 -1
- package/src/duckdb/third_party/re2/re2/stringpiece.h +11 -8
- package/src/duckdb/third_party/re2/re2/tostring.cc +8 -6
- package/src/duckdb/third_party/re2/re2/unicode_casefold.cc +39 -10
- package/src/duckdb/third_party/re2/re2/unicode_casefold.h +1 -1
- package/src/duckdb/third_party/re2/re2/unicode_groups.cc +5019 -4566
- package/src/duckdb/third_party/re2/re2/unicode_groups.h +1 -1
- package/src/duckdb/third_party/re2/re2/walker-inl.h +21 -20
- package/src/duckdb/third_party/re2/util/logging.h +14 -18
- package/src/duckdb/third_party/re2/util/mix.h +4 -4
- package/src/duckdb/third_party/re2/util/mutex.h +48 -15
- package/src/duckdb/third_party/re2/util/rune.cc +5 -5
- package/src/duckdb/third_party/re2/util/strutil.cc +1 -16
- package/src/duckdb/third_party/re2/util/strutil.h +1 -3
- package/src/duckdb/third_party/re2/util/utf.h +1 -1
- package/src/duckdb/third_party/re2/util/util.h +9 -1
- package/src/duckdb/third_party/utf8proc/include/utf8proc_wrapper.hpp +2 -0
- package/src/duckdb/third_party/utf8proc/utf8proc_wrapper.cpp +36 -1
- package/src/duckdb/ub_src_common.cpp +0 -2
- package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
- package/src/duckdb/ub_src_planner_expression.cpp +2 -0
- package/src/duckdb/ub_src_planner_expression_binder.cpp +2 -0
- package/src/duckdb/ub_src_planner_operator.cpp +2 -0
|
@@ -254,12 +254,37 @@ static idx_t DistinctSelectConstant(Vector &left, Vector &right, const Selection
|
|
|
254
254
|
}
|
|
255
255
|
}
|
|
256
256
|
|
|
257
|
+
static void UpdateNullMask(Vector &vec, const SelectionVector &sel, idx_t count, ValidityMask &null_mask) {
|
|
258
|
+
UnifiedVectorFormat vdata;
|
|
259
|
+
vec.ToUnifiedFormat(count, vdata);
|
|
260
|
+
|
|
261
|
+
if (vdata.validity.AllValid()) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
for (idx_t i = 0; i < count; ++i) {
|
|
266
|
+
const auto ridx = sel.get_index(i);
|
|
267
|
+
const auto vidx = vdata.sel->get_index(i);
|
|
268
|
+
if (!vdata.validity.RowIsValid(vidx)) {
|
|
269
|
+
null_mask.SetInvalid(ridx);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
257
274
|
template <class LEFT_TYPE, class RIGHT_TYPE, class OP>
|
|
258
275
|
static idx_t DistinctSelect(Vector &left, Vector &right, const SelectionVector *sel, idx_t count,
|
|
259
|
-
SelectionVector *true_sel, SelectionVector *false_sel
|
|
276
|
+
SelectionVector *true_sel, SelectionVector *false_sel,
|
|
277
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
260
278
|
if (!sel) {
|
|
261
279
|
sel = FlatVector::IncrementalSelectionVector();
|
|
262
280
|
}
|
|
281
|
+
|
|
282
|
+
// TODO: Push this down?
|
|
283
|
+
if (null_mask) {
|
|
284
|
+
UpdateNullMask(left, *sel, count, *null_mask);
|
|
285
|
+
UpdateNullMask(right, *sel, count, *null_mask);
|
|
286
|
+
}
|
|
287
|
+
|
|
263
288
|
if (left.GetVectorType() == VectorType::CONSTANT_VECTOR && right.GetVectorType() == VectorType::CONSTANT_VECTOR) {
|
|
264
289
|
return DistinctSelectConstant<LEFT_TYPE, RIGHT_TYPE, OP>(left, right, sel, count, true_sel, false_sel);
|
|
265
290
|
} else if (left.GetVectorType() == VectorType::CONSTANT_VECTOR &&
|
|
@@ -279,7 +304,7 @@ static idx_t DistinctSelect(Vector &left, Vector &right, const SelectionVector *
|
|
|
279
304
|
template <class OP>
|
|
280
305
|
static idx_t DistinctSelectNotNull(Vector &left, Vector &right, const idx_t count, idx_t &true_count,
|
|
281
306
|
const SelectionVector &sel, SelectionVector &maybe_vec, OptionalSelection &true_opt,
|
|
282
|
-
OptionalSelection &false_opt) {
|
|
307
|
+
OptionalSelection &false_opt, optional_ptr<ValidityMask> null_mask) {
|
|
283
308
|
UnifiedVectorFormat lvdata, rvdata;
|
|
284
309
|
left.ToUnifiedFormat(count, lvdata);
|
|
285
310
|
right.ToUnifiedFormat(count, rvdata);
|
|
@@ -309,6 +334,9 @@ static idx_t DistinctSelectNotNull(Vector &left, Vector &right, const idx_t coun
|
|
|
309
334
|
const auto rnull = !rmask.RowIsValid(ridx);
|
|
310
335
|
if (lnull || rnull) {
|
|
311
336
|
// If either is NULL then we can major distinguish them
|
|
337
|
+
if (null_mask) {
|
|
338
|
+
null_mask->SetInvalid(result_idx);
|
|
339
|
+
}
|
|
312
340
|
if (!OP::Operation(false, false, lnull, rnull)) {
|
|
313
341
|
false_opt.Append(false_count, result_idx);
|
|
314
342
|
} else {
|
|
@@ -337,23 +365,26 @@ struct PositionComparator {
|
|
|
337
365
|
// Default to the same as the final row
|
|
338
366
|
template <typename OP>
|
|
339
367
|
static idx_t Definite(Vector &left, Vector &right, const SelectionVector &sel, idx_t count,
|
|
340
|
-
SelectionVector
|
|
341
|
-
|
|
368
|
+
optional_ptr<SelectionVector> true_sel, SelectionVector &false_sel,
|
|
369
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
370
|
+
return Final<OP>(left, right, sel, count, true_sel, &false_sel, null_mask);
|
|
342
371
|
}
|
|
343
372
|
|
|
344
373
|
// Select the possible rows that need further testing.
|
|
345
374
|
// Usually this means Is Not Distinct, as those are the semantics used by Postges
|
|
346
375
|
template <typename OP>
|
|
347
376
|
static idx_t Possible(Vector &left, Vector &right, const SelectionVector &sel, idx_t count,
|
|
348
|
-
SelectionVector &true_sel, SelectionVector
|
|
349
|
-
|
|
377
|
+
SelectionVector &true_sel, optional_ptr<SelectionVector> false_sel,
|
|
378
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
379
|
+
return VectorOperations::NestedEquals(left, right, &sel, count, &true_sel, false_sel, null_mask);
|
|
350
380
|
}
|
|
351
381
|
|
|
352
382
|
// Select the matching rows for the final position.
|
|
353
383
|
// This needs to be specialised.
|
|
354
384
|
template <typename OP>
|
|
355
|
-
static idx_t Final(Vector &left, Vector &right, const SelectionVector &sel, idx_t count,
|
|
356
|
-
SelectionVector
|
|
385
|
+
static idx_t Final(Vector &left, Vector &right, const SelectionVector &sel, idx_t count,
|
|
386
|
+
optional_ptr<SelectionVector> true_sel, optional_ptr<SelectionVector> false_sel,
|
|
387
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
357
388
|
return 0;
|
|
358
389
|
}
|
|
359
390
|
|
|
@@ -369,78 +400,88 @@ struct PositionComparator {
|
|
|
369
400
|
// NotDistinctFrom must always check every column
|
|
370
401
|
template <>
|
|
371
402
|
idx_t PositionComparator::Definite<duckdb::NotDistinctFrom>(Vector &left, Vector &right, const SelectionVector &sel,
|
|
372
|
-
idx_t count, SelectionVector
|
|
373
|
-
SelectionVector &false_sel
|
|
403
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
404
|
+
SelectionVector &false_sel,
|
|
405
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
374
406
|
return 0;
|
|
375
407
|
}
|
|
376
408
|
|
|
377
409
|
template <>
|
|
378
410
|
idx_t PositionComparator::Final<duckdb::NotDistinctFrom>(Vector &left, Vector &right, const SelectionVector &sel,
|
|
379
|
-
idx_t count, SelectionVector
|
|
380
|
-
SelectionVector
|
|
381
|
-
|
|
411
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
412
|
+
optional_ptr<SelectionVector> false_sel,
|
|
413
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
414
|
+
return VectorOperations::NestedEquals(left, right, &sel, count, true_sel, false_sel, null_mask);
|
|
382
415
|
}
|
|
383
416
|
|
|
384
417
|
// DistinctFrom must check everything that matched
|
|
385
418
|
template <>
|
|
386
419
|
idx_t PositionComparator::Possible<duckdb::DistinctFrom>(Vector &left, Vector &right, const SelectionVector &sel,
|
|
387
420
|
idx_t count, SelectionVector &true_sel,
|
|
388
|
-
SelectionVector
|
|
421
|
+
optional_ptr<SelectionVector> false_sel,
|
|
422
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
389
423
|
return count;
|
|
390
424
|
}
|
|
391
425
|
|
|
392
426
|
template <>
|
|
393
427
|
idx_t PositionComparator::Final<duckdb::DistinctFrom>(Vector &left, Vector &right, const SelectionVector &sel,
|
|
394
|
-
idx_t count, SelectionVector
|
|
395
|
-
SelectionVector
|
|
396
|
-
|
|
428
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
429
|
+
optional_ptr<SelectionVector> false_sel,
|
|
430
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
431
|
+
return VectorOperations::NestedNotEquals(left, right, &sel, count, true_sel, false_sel, null_mask);
|
|
397
432
|
}
|
|
398
433
|
|
|
399
434
|
// Non-strict inequalities must use strict comparisons for Definite
|
|
400
435
|
template <>
|
|
401
436
|
idx_t PositionComparator::Definite<duckdb::DistinctLessThanEquals>(Vector &left, Vector &right,
|
|
402
437
|
const SelectionVector &sel, idx_t count,
|
|
403
|
-
SelectionVector
|
|
404
|
-
SelectionVector &false_sel
|
|
405
|
-
|
|
438
|
+
optional_ptr<SelectionVector> true_sel,
|
|
439
|
+
SelectionVector &false_sel,
|
|
440
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
441
|
+
return VectorOperations::DistinctGreaterThan(right, left, &sel, count, true_sel, &false_sel, null_mask);
|
|
406
442
|
}
|
|
407
443
|
|
|
408
444
|
template <>
|
|
409
445
|
idx_t PositionComparator::Final<duckdb::DistinctLessThanEquals>(Vector &left, Vector &right, const SelectionVector &sel,
|
|
410
|
-
idx_t count, SelectionVector
|
|
411
|
-
SelectionVector
|
|
412
|
-
|
|
446
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
447
|
+
optional_ptr<SelectionVector> false_sel,
|
|
448
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
449
|
+
return VectorOperations::DistinctGreaterThanEquals(right, left, &sel, count, true_sel, false_sel, null_mask);
|
|
413
450
|
}
|
|
414
451
|
|
|
415
452
|
template <>
|
|
416
453
|
idx_t PositionComparator::Definite<duckdb::DistinctGreaterThanEquals>(Vector &left, Vector &right,
|
|
417
454
|
const SelectionVector &sel, idx_t count,
|
|
418
|
-
SelectionVector
|
|
419
|
-
SelectionVector &false_sel
|
|
420
|
-
|
|
455
|
+
optional_ptr<SelectionVector> true_sel,
|
|
456
|
+
SelectionVector &false_sel,
|
|
457
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
458
|
+
return VectorOperations::DistinctGreaterThan(left, right, &sel, count, true_sel, &false_sel, null_mask);
|
|
421
459
|
}
|
|
422
460
|
|
|
423
461
|
template <>
|
|
424
462
|
idx_t PositionComparator::Final<duckdb::DistinctGreaterThanEquals>(Vector &left, Vector &right,
|
|
425
463
|
const SelectionVector &sel, idx_t count,
|
|
426
|
-
SelectionVector
|
|
427
|
-
SelectionVector
|
|
428
|
-
|
|
464
|
+
optional_ptr<SelectionVector> true_sel,
|
|
465
|
+
optional_ptr<SelectionVector> false_sel,
|
|
466
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
467
|
+
return VectorOperations::DistinctGreaterThanEquals(left, right, &sel, count, true_sel, false_sel, null_mask);
|
|
429
468
|
}
|
|
430
469
|
|
|
431
470
|
// Strict inequalities just use strict for both Definite and Final
|
|
432
471
|
template <>
|
|
433
472
|
idx_t PositionComparator::Final<duckdb::DistinctLessThan>(Vector &left, Vector &right, const SelectionVector &sel,
|
|
434
|
-
idx_t count, SelectionVector
|
|
435
|
-
SelectionVector
|
|
436
|
-
|
|
473
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
474
|
+
optional_ptr<SelectionVector> false_sel,
|
|
475
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
476
|
+
return VectorOperations::DistinctGreaterThan(right, left, &sel, count, true_sel, false_sel, null_mask);
|
|
437
477
|
}
|
|
438
478
|
|
|
439
479
|
template <>
|
|
440
480
|
idx_t PositionComparator::Final<duckdb::DistinctGreaterThan>(Vector &left, Vector &right, const SelectionVector &sel,
|
|
441
|
-
idx_t count, SelectionVector
|
|
442
|
-
SelectionVector
|
|
443
|
-
|
|
481
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
482
|
+
optional_ptr<SelectionVector> false_sel,
|
|
483
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
484
|
+
return VectorOperations::DistinctGreaterThan(left, right, &sel, count, true_sel, false_sel, null_mask);
|
|
444
485
|
}
|
|
445
486
|
|
|
446
487
|
using StructEntries = vector<unique_ptr<Vector>>;
|
|
@@ -456,6 +497,24 @@ static void ExtractNestedSelection(const SelectionVector &slice_sel, const idx_t
|
|
|
456
497
|
opt.Advance(count);
|
|
457
498
|
}
|
|
458
499
|
|
|
500
|
+
static void ExtractNestedMask(const SelectionVector &slice_sel, const idx_t count, const SelectionVector &sel,
|
|
501
|
+
ValidityMask *child_mask, optional_ptr<ValidityMask> null_mask) {
|
|
502
|
+
|
|
503
|
+
if (!child_mask) {
|
|
504
|
+
return;
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
for (idx_t i = 0; i < count; ++i) {
|
|
508
|
+
const auto slice_idx = slice_sel.get_index(i);
|
|
509
|
+
const auto result_idx = sel.get_index(slice_idx);
|
|
510
|
+
if (child_mask && !child_mask->RowIsValid(slice_idx)) {
|
|
511
|
+
null_mask->SetInvalid(result_idx);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
child_mask->Reset(null_mask->TargetCount());
|
|
516
|
+
}
|
|
517
|
+
|
|
459
518
|
static void DensifyNestedSelection(const SelectionVector &dense_sel, const idx_t count, SelectionVector &slice_sel) {
|
|
460
519
|
for (idx_t i = 0; i < count; ++i) {
|
|
461
520
|
slice_sel.set_index(i, dense_sel.get_index(i));
|
|
@@ -464,7 +523,8 @@ static void DensifyNestedSelection(const SelectionVector &dense_sel, const idx_t
|
|
|
464
523
|
|
|
465
524
|
template <class OP>
|
|
466
525
|
static idx_t DistinctSelectStruct(Vector &left, Vector &right, idx_t count, const SelectionVector &sel,
|
|
467
|
-
OptionalSelection &true_opt, OptionalSelection &false_opt
|
|
526
|
+
OptionalSelection &true_opt, OptionalSelection &false_opt,
|
|
527
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
468
528
|
if (count == 0) {
|
|
469
529
|
return 0;
|
|
470
530
|
}
|
|
@@ -486,6 +546,13 @@ static idx_t DistinctSelectStruct(Vector &left, Vector &right, idx_t count, cons
|
|
|
486
546
|
SelectionVector true_sel(count);
|
|
487
547
|
SelectionVector false_sel(count);
|
|
488
548
|
|
|
549
|
+
ValidityMask child_validity;
|
|
550
|
+
ValidityMask *child_mask = nullptr;
|
|
551
|
+
if (null_mask) {
|
|
552
|
+
child_mask = &child_validity;
|
|
553
|
+
child_mask->Reset(null_mask->TargetCount());
|
|
554
|
+
}
|
|
555
|
+
|
|
489
556
|
idx_t match_count = 0;
|
|
490
557
|
for (idx_t col_no = 0; col_no < lchildren.size(); ++col_no) {
|
|
491
558
|
// Slice the children to maintain density
|
|
@@ -498,7 +565,10 @@ static idx_t DistinctSelectStruct(Vector &left, Vector &right, idx_t count, cons
|
|
|
498
565
|
rchild.Slice(slice_sel, count);
|
|
499
566
|
|
|
500
567
|
// Find everything that definitely matches
|
|
501
|
-
auto true_count =
|
|
568
|
+
auto true_count =
|
|
569
|
+
PositionComparator::Definite<OP>(lchild, rchild, slice_sel, count, &true_sel, false_sel, child_mask);
|
|
570
|
+
// Extract any NULLs we found
|
|
571
|
+
ExtractNestedMask(slice_sel, count, sel, child_mask, null_mask);
|
|
502
572
|
if (true_count > 0) {
|
|
503
573
|
auto false_count = count - true_count;
|
|
504
574
|
|
|
@@ -514,9 +584,13 @@ static idx_t DistinctSelectStruct(Vector &left, Vector &right, idx_t count, cons
|
|
|
514
584
|
|
|
515
585
|
if (col_no != lchildren.size() - 1) {
|
|
516
586
|
// Find what might match on the next position
|
|
517
|
-
true_count =
|
|
587
|
+
true_count =
|
|
588
|
+
PositionComparator::Possible<OP>(lchild, rchild, slice_sel, count, true_sel, &false_sel, child_mask);
|
|
518
589
|
auto false_count = count - true_count;
|
|
519
590
|
|
|
591
|
+
// Extract any NULLs we found
|
|
592
|
+
ExtractNestedMask(slice_sel, count, sel, child_mask, null_mask);
|
|
593
|
+
|
|
520
594
|
// Extract the definite failures into the false result
|
|
521
595
|
ExtractNestedSelection(true_count ? false_sel : slice_sel, false_count, sel, false_opt);
|
|
522
596
|
|
|
@@ -527,9 +601,13 @@ static idx_t DistinctSelectStruct(Vector &left, Vector &right, idx_t count, cons
|
|
|
527
601
|
|
|
528
602
|
count = true_count;
|
|
529
603
|
} else {
|
|
530
|
-
true_count =
|
|
604
|
+
true_count =
|
|
605
|
+
PositionComparator::Final<OP>(lchild, rchild, slice_sel, count, &true_sel, &false_sel, child_mask);
|
|
531
606
|
auto false_count = count - true_count;
|
|
532
607
|
|
|
608
|
+
// Extract any NULLs we found
|
|
609
|
+
ExtractNestedMask(slice_sel, count, sel, child_mask, null_mask);
|
|
610
|
+
|
|
533
611
|
// Extract the definite matches into the true result
|
|
534
612
|
ExtractNestedSelection(false_count ? true_sel : slice_sel, true_count, sel, true_opt);
|
|
535
613
|
|
|
@@ -556,7 +634,8 @@ static void PositionListCursor(SelectionVector &cursor, UnifiedVectorFormat &vda
|
|
|
556
634
|
|
|
557
635
|
template <class OP>
|
|
558
636
|
static idx_t DistinctSelectList(Vector &left, Vector &right, idx_t count, const SelectionVector &sel,
|
|
559
|
-
OptionalSelection &true_opt, OptionalSelection &false_opt
|
|
637
|
+
OptionalSelection &true_opt, OptionalSelection &false_opt,
|
|
638
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
560
639
|
if (count == 0) {
|
|
561
640
|
return count;
|
|
562
641
|
}
|
|
@@ -605,6 +684,13 @@ static idx_t DistinctSelectList(Vector &left, Vector &right, idx_t count, const
|
|
|
605
684
|
SelectionVector true_sel(count);
|
|
606
685
|
SelectionVector false_sel(count);
|
|
607
686
|
|
|
687
|
+
ValidityMask child_validity;
|
|
688
|
+
ValidityMask *child_mask = nullptr;
|
|
689
|
+
if (null_mask) {
|
|
690
|
+
child_mask = &child_validity;
|
|
691
|
+
child_mask->Reset(null_mask->TargetCount());
|
|
692
|
+
}
|
|
693
|
+
|
|
608
694
|
idx_t match_count = 0;
|
|
609
695
|
for (idx_t pos = 0; count > 0; ++pos) {
|
|
610
696
|
// Set up the cursors for the current position
|
|
@@ -645,9 +731,14 @@ static idx_t DistinctSelectList(Vector &left, Vector &right, idx_t count, const
|
|
|
645
731
|
}
|
|
646
732
|
|
|
647
733
|
// Find everything that definitely matches
|
|
648
|
-
true_count =
|
|
734
|
+
true_count =
|
|
735
|
+
PositionComparator::Definite<OP>(lchild, rchild, slice_sel, count, &true_sel, false_sel, child_mask);
|
|
736
|
+
// Extract any NULLs we found
|
|
737
|
+
ExtractNestedMask(slice_sel, count, sel, child_mask, null_mask);
|
|
649
738
|
if (true_count) {
|
|
650
739
|
false_count = count - true_count;
|
|
740
|
+
|
|
741
|
+
// Extract the definite matches into the true result
|
|
651
742
|
ExtractNestedSelection(false_count ? true_sel : slice_sel, true_count, sel, true_opt);
|
|
652
743
|
match_count += true_count;
|
|
653
744
|
|
|
@@ -659,8 +750,14 @@ static idx_t DistinctSelectList(Vector &left, Vector &right, idx_t count, const
|
|
|
659
750
|
}
|
|
660
751
|
|
|
661
752
|
// Find what might match on the next position
|
|
662
|
-
true_count =
|
|
753
|
+
true_count =
|
|
754
|
+
PositionComparator::Possible<OP>(lchild, rchild, slice_sel, count, true_sel, &false_sel, child_mask);
|
|
663
755
|
false_count = count - true_count;
|
|
756
|
+
|
|
757
|
+
// Extract any NULLs we found
|
|
758
|
+
ExtractNestedMask(slice_sel, count, sel, child_mask, null_mask);
|
|
759
|
+
|
|
760
|
+
// Extract the definite failures into the false result
|
|
664
761
|
ExtractNestedSelection(true_count ? false_sel : slice_sel, false_count, sel, false_opt);
|
|
665
762
|
|
|
666
763
|
if (false_count) {
|
|
@@ -684,7 +781,8 @@ static void PositionArrayCursor(SelectionVector &cursor, UnifiedVectorFormat &vd
|
|
|
684
781
|
|
|
685
782
|
template <class OP>
|
|
686
783
|
static idx_t DistinctSelectArray(Vector &left, Vector &right, idx_t count, const SelectionVector &sel,
|
|
687
|
-
OptionalSelection &true_opt, OptionalSelection &false_opt
|
|
784
|
+
OptionalSelection &true_opt, OptionalSelection &false_opt,
|
|
785
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
688
786
|
if (count == 0) {
|
|
689
787
|
return count;
|
|
690
788
|
}
|
|
@@ -722,6 +820,13 @@ static idx_t DistinctSelectArray(Vector &left, Vector &right, idx_t count, const
|
|
|
722
820
|
SelectionVector true_sel(count);
|
|
723
821
|
SelectionVector false_sel(count);
|
|
724
822
|
|
|
823
|
+
ValidityMask child_validity;
|
|
824
|
+
ValidityMask *child_mask = nullptr;
|
|
825
|
+
if (null_mask) {
|
|
826
|
+
child_mask = &child_validity;
|
|
827
|
+
child_mask->Reset(null_mask->TargetCount());
|
|
828
|
+
}
|
|
829
|
+
|
|
725
830
|
idx_t match_count = 0;
|
|
726
831
|
for (idx_t pos = 0; count > 0; ++pos) {
|
|
727
832
|
// Set up the cursors for the current position
|
|
@@ -758,9 +863,14 @@ static idx_t DistinctSelectArray(Vector &left, Vector &right, idx_t count, const
|
|
|
758
863
|
}
|
|
759
864
|
|
|
760
865
|
// Find everything that definitely matches
|
|
761
|
-
true_count =
|
|
866
|
+
true_count =
|
|
867
|
+
PositionComparator::Definite<OP>(lchild, rchild, slice_sel, count, &true_sel, false_sel, child_mask);
|
|
868
|
+
// Extract any NULLs we found
|
|
869
|
+
ExtractNestedMask(slice_sel, count, sel, child_mask, null_mask);
|
|
762
870
|
if (true_count) {
|
|
763
871
|
false_count = count - true_count;
|
|
872
|
+
|
|
873
|
+
// Extract the definite matches into the true result
|
|
764
874
|
ExtractNestedSelection(false_count ? true_sel : slice_sel, true_count, sel, true_opt);
|
|
765
875
|
match_count += true_count;
|
|
766
876
|
|
|
@@ -772,8 +882,14 @@ static idx_t DistinctSelectArray(Vector &left, Vector &right, idx_t count, const
|
|
|
772
882
|
}
|
|
773
883
|
|
|
774
884
|
// Find what might match on the next position
|
|
775
|
-
true_count =
|
|
885
|
+
true_count =
|
|
886
|
+
PositionComparator::Possible<OP>(lchild, rchild, slice_sel, count, true_sel, &false_sel, null_mask);
|
|
776
887
|
false_count = count - true_count;
|
|
888
|
+
|
|
889
|
+
// Extract any NULLs we found
|
|
890
|
+
ExtractNestedMask(slice_sel, count, sel, child_mask, null_mask);
|
|
891
|
+
|
|
892
|
+
// Extract the definite failures into the false result
|
|
777
893
|
ExtractNestedSelection(true_count ? false_sel : slice_sel, false_count, sel, false_opt);
|
|
778
894
|
|
|
779
895
|
if (false_count) {
|
|
@@ -785,9 +901,10 @@ static idx_t DistinctSelectArray(Vector &left, Vector &right, idx_t count, const
|
|
|
785
901
|
return match_count;
|
|
786
902
|
}
|
|
787
903
|
|
|
788
|
-
template <class OP
|
|
789
|
-
static idx_t DistinctSelectNested(Vector &left, Vector &right, const SelectionVector
|
|
790
|
-
|
|
904
|
+
template <class OP>
|
|
905
|
+
static idx_t DistinctSelectNested(Vector &left, Vector &right, optional_ptr<const SelectionVector> sel,
|
|
906
|
+
const idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
907
|
+
optional_ptr<SelectionVector> false_sel, optional_ptr<ValidityMask> null_mask) {
|
|
791
908
|
// The Select operations all use a dense pair of input vectors to partition
|
|
792
909
|
// a selection vector in a single pass. But to implement progressive comparisons,
|
|
793
910
|
// we have to make multiple passes, so we need to keep track of the original input positions
|
|
@@ -811,18 +928,21 @@ static idx_t DistinctSelectNested(Vector &left, Vector &right, const SelectionVe
|
|
|
811
928
|
Vector r_not_null(right);
|
|
812
929
|
|
|
813
930
|
idx_t match_count = 0;
|
|
814
|
-
auto unknown =
|
|
815
|
-
|
|
931
|
+
auto unknown = DistinctSelectNotNull<OP>(l_not_null, r_not_null, count, match_count, *sel, maybe_vec, true_opt,
|
|
932
|
+
false_opt, null_mask);
|
|
816
933
|
|
|
817
934
|
switch (left.GetType().InternalType()) {
|
|
818
935
|
case PhysicalType::LIST:
|
|
819
|
-
match_count +=
|
|
936
|
+
match_count +=
|
|
937
|
+
DistinctSelectList<OP>(l_not_null, r_not_null, unknown, maybe_vec, true_opt, false_opt, null_mask);
|
|
820
938
|
break;
|
|
821
939
|
case PhysicalType::STRUCT:
|
|
822
|
-
match_count +=
|
|
940
|
+
match_count +=
|
|
941
|
+
DistinctSelectStruct<OP>(l_not_null, r_not_null, unknown, maybe_vec, true_opt, false_opt, null_mask);
|
|
823
942
|
break;
|
|
824
943
|
case PhysicalType::ARRAY:
|
|
825
|
-
match_count +=
|
|
944
|
+
match_count +=
|
|
945
|
+
DistinctSelectArray<OP>(l_not_null, r_not_null, unknown, maybe_vec, true_opt, false_opt, null_mask);
|
|
826
946
|
break;
|
|
827
947
|
default:
|
|
828
948
|
throw NotImplementedException("Unimplemented type for DISTINCT");
|
|
@@ -905,44 +1025,60 @@ static void ExecuteDistinct(Vector &left, Vector &right, Vector &result, idx_t c
|
|
|
905
1025
|
}
|
|
906
1026
|
}
|
|
907
1027
|
|
|
908
|
-
template <class OP
|
|
909
|
-
static idx_t TemplatedDistinctSelectOperation(Vector &left, Vector &right, const SelectionVector
|
|
910
|
-
|
|
911
|
-
|
|
1028
|
+
template <class OP>
|
|
1029
|
+
static idx_t TemplatedDistinctSelectOperation(Vector &left, Vector &right, optional_ptr<const SelectionVector> sel,
|
|
1030
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
1031
|
+
optional_ptr<SelectionVector> false_sel,
|
|
1032
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
1033
|
+
|
|
912
1034
|
switch (left.GetType().InternalType()) {
|
|
913
1035
|
case PhysicalType::BOOL:
|
|
914
1036
|
case PhysicalType::INT8:
|
|
915
|
-
return DistinctSelect<int8_t, int8_t, OP>(left, right, sel, count, true_sel, false_sel)
|
|
1037
|
+
return DistinctSelect<int8_t, int8_t, OP>(left, right, sel.get(), count, true_sel.get(), false_sel.get(),
|
|
1038
|
+
null_mask);
|
|
916
1039
|
case PhysicalType::INT16:
|
|
917
|
-
return DistinctSelect<int16_t, int16_t, OP>(left, right, sel, count, true_sel, false_sel)
|
|
1040
|
+
return DistinctSelect<int16_t, int16_t, OP>(left, right, sel.get(), count, true_sel.get(), false_sel.get(),
|
|
1041
|
+
null_mask);
|
|
918
1042
|
case PhysicalType::INT32:
|
|
919
|
-
return DistinctSelect<int32_t, int32_t, OP>(left, right, sel, count, true_sel, false_sel)
|
|
1043
|
+
return DistinctSelect<int32_t, int32_t, OP>(left, right, sel.get(), count, true_sel.get(), false_sel.get(),
|
|
1044
|
+
null_mask);
|
|
920
1045
|
case PhysicalType::INT64:
|
|
921
|
-
return DistinctSelect<int64_t, int64_t, OP>(left, right, sel, count, true_sel, false_sel)
|
|
1046
|
+
return DistinctSelect<int64_t, int64_t, OP>(left, right, sel.get(), count, true_sel.get(), false_sel.get(),
|
|
1047
|
+
null_mask);
|
|
922
1048
|
case PhysicalType::UINT8:
|
|
923
|
-
return DistinctSelect<uint8_t, uint8_t, OP>(left, right, sel, count, true_sel, false_sel)
|
|
1049
|
+
return DistinctSelect<uint8_t, uint8_t, OP>(left, right, sel.get(), count, true_sel.get(), false_sel.get(),
|
|
1050
|
+
null_mask);
|
|
924
1051
|
case PhysicalType::UINT16:
|
|
925
|
-
return DistinctSelect<uint16_t, uint16_t, OP>(left, right, sel, count, true_sel, false_sel)
|
|
1052
|
+
return DistinctSelect<uint16_t, uint16_t, OP>(left, right, sel.get(), count, true_sel.get(), false_sel.get(),
|
|
1053
|
+
null_mask);
|
|
926
1054
|
case PhysicalType::UINT32:
|
|
927
|
-
return DistinctSelect<uint32_t, uint32_t, OP>(left, right, sel, count, true_sel, false_sel)
|
|
1055
|
+
return DistinctSelect<uint32_t, uint32_t, OP>(left, right, sel.get(), count, true_sel.get(), false_sel.get(),
|
|
1056
|
+
null_mask);
|
|
928
1057
|
case PhysicalType::UINT64:
|
|
929
|
-
return DistinctSelect<uint64_t, uint64_t, OP>(left, right, sel, count, true_sel, false_sel)
|
|
1058
|
+
return DistinctSelect<uint64_t, uint64_t, OP>(left, right, sel.get(), count, true_sel.get(), false_sel.get(),
|
|
1059
|
+
null_mask);
|
|
930
1060
|
case PhysicalType::INT128:
|
|
931
|
-
return DistinctSelect<hugeint_t, hugeint_t, OP>(left, right, sel, count, true_sel, false_sel)
|
|
1061
|
+
return DistinctSelect<hugeint_t, hugeint_t, OP>(left, right, sel.get(), count, true_sel.get(), false_sel.get(),
|
|
1062
|
+
null_mask);
|
|
932
1063
|
case PhysicalType::UINT128:
|
|
933
|
-
return DistinctSelect<uhugeint_t, uhugeint_t, OP>(left, right, sel, count, true_sel,
|
|
1064
|
+
return DistinctSelect<uhugeint_t, uhugeint_t, OP>(left, right, sel.get(), count, true_sel.get(),
|
|
1065
|
+
false_sel.get(), null_mask);
|
|
934
1066
|
case PhysicalType::FLOAT:
|
|
935
|
-
return DistinctSelect<float, float, OP>(left, right, sel, count, true_sel, false_sel)
|
|
1067
|
+
return DistinctSelect<float, float, OP>(left, right, sel.get(), count, true_sel.get(), false_sel.get(),
|
|
1068
|
+
null_mask);
|
|
936
1069
|
case PhysicalType::DOUBLE:
|
|
937
|
-
return DistinctSelect<double, double, OP>(left, right, sel, count, true_sel, false_sel)
|
|
1070
|
+
return DistinctSelect<double, double, OP>(left, right, sel.get(), count, true_sel.get(), false_sel.get(),
|
|
1071
|
+
null_mask);
|
|
938
1072
|
case PhysicalType::INTERVAL:
|
|
939
|
-
return DistinctSelect<interval_t, interval_t, OP>(left, right, sel, count, true_sel,
|
|
1073
|
+
return DistinctSelect<interval_t, interval_t, OP>(left, right, sel.get(), count, true_sel.get(),
|
|
1074
|
+
false_sel.get(), null_mask);
|
|
940
1075
|
case PhysicalType::VARCHAR:
|
|
941
|
-
return DistinctSelect<string_t, string_t, OP>(left, right, sel, count, true_sel, false_sel)
|
|
1076
|
+
return DistinctSelect<string_t, string_t, OP>(left, right, sel.get(), count, true_sel.get(), false_sel.get(),
|
|
1077
|
+
null_mask);
|
|
942
1078
|
case PhysicalType::STRUCT:
|
|
943
1079
|
case PhysicalType::LIST:
|
|
944
1080
|
case PhysicalType::ARRAY:
|
|
945
|
-
return DistinctSelectNested<OP
|
|
1081
|
+
return DistinctSelectNested<OP>(left, right, sel, count, true_sel, false_sel, null_mask);
|
|
946
1082
|
default:
|
|
947
1083
|
throw InternalException("Invalid type for distinct selection");
|
|
948
1084
|
}
|
|
@@ -958,7 +1094,7 @@ static void NestedDistinctExecute(Vector &left, Vector &right, Vector &result, i
|
|
|
958
1094
|
result.SetVectorType(VectorType::CONSTANT_VECTOR);
|
|
959
1095
|
auto result_data = ConstantVector::GetData<bool>(result);
|
|
960
1096
|
SelectionVector true_sel(1);
|
|
961
|
-
auto match_count = TemplatedDistinctSelectOperation<OP>(left, right, nullptr, 1, &true_sel, nullptr);
|
|
1097
|
+
auto match_count = TemplatedDistinctSelectOperation<OP>(left, right, nullptr, 1, &true_sel, nullptr, nullptr);
|
|
962
1098
|
result_data[0] = match_count > 0;
|
|
963
1099
|
return;
|
|
964
1100
|
}
|
|
@@ -967,7 +1103,8 @@ static void NestedDistinctExecute(Vector &left, Vector &right, Vector &result, i
|
|
|
967
1103
|
SelectionVector false_sel(count);
|
|
968
1104
|
|
|
969
1105
|
// DISTINCT is either true or false
|
|
970
|
-
idx_t match_count =
|
|
1106
|
+
idx_t match_count =
|
|
1107
|
+
TemplatedDistinctSelectOperation<OP>(left, right, nullptr, count, &true_sel, &false_sel, nullptr);
|
|
971
1108
|
|
|
972
1109
|
result.SetVectorType(VectorType::FLAT_VECTOR);
|
|
973
1110
|
auto result_data = FlatVector::GetData<bool>(result);
|
|
@@ -993,65 +1130,85 @@ void VectorOperations::NotDistinctFrom(Vector &left, Vector &right, Vector &resu
|
|
|
993
1130
|
}
|
|
994
1131
|
|
|
995
1132
|
// true := A != B with nulls being equal
|
|
996
|
-
idx_t VectorOperations::DistinctFrom(Vector &left, Vector &right, const SelectionVector
|
|
997
|
-
SelectionVector
|
|
998
|
-
return TemplatedDistinctSelectOperation<duckdb::DistinctFrom>(left, right, sel, count, true_sel, false_sel
|
|
1133
|
+
idx_t VectorOperations::DistinctFrom(Vector &left, Vector &right, optional_ptr<const SelectionVector> sel, idx_t count,
|
|
1134
|
+
optional_ptr<SelectionVector> true_sel, optional_ptr<SelectionVector> false_sel) {
|
|
1135
|
+
return TemplatedDistinctSelectOperation<duckdb::DistinctFrom>(left, right, sel, count, true_sel, false_sel,
|
|
1136
|
+
nullptr);
|
|
999
1137
|
}
|
|
1000
1138
|
// true := A == B with nulls being equal
|
|
1001
|
-
idx_t VectorOperations::NotDistinctFrom(Vector &left, Vector &right, const SelectionVector
|
|
1002
|
-
|
|
1003
|
-
|
|
1139
|
+
idx_t VectorOperations::NotDistinctFrom(Vector &left, Vector &right, optional_ptr<const SelectionVector> sel,
|
|
1140
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
1141
|
+
optional_ptr<SelectionVector> false_sel) {
|
|
1142
|
+
return count - TemplatedDistinctSelectOperation<duckdb::DistinctFrom>(left, right, sel, count, false_sel, true_sel,
|
|
1143
|
+
nullptr);
|
|
1004
1144
|
}
|
|
1005
1145
|
|
|
1006
1146
|
// true := A > B with nulls being maximal
|
|
1007
|
-
idx_t VectorOperations::DistinctGreaterThan(Vector &left, Vector &right, const SelectionVector
|
|
1008
|
-
|
|
1009
|
-
|
|
1147
|
+
idx_t VectorOperations::DistinctGreaterThan(Vector &left, Vector &right, optional_ptr<const SelectionVector> sel,
|
|
1148
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
1149
|
+
optional_ptr<SelectionVector> false_sel,
|
|
1150
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
1151
|
+
return TemplatedDistinctSelectOperation<duckdb::DistinctGreaterThan>(left, right, sel, count, true_sel, false_sel,
|
|
1152
|
+
null_mask);
|
|
1010
1153
|
}
|
|
1011
1154
|
|
|
1012
1155
|
// true := A > B with nulls being minimal
|
|
1013
|
-
idx_t VectorOperations::DistinctGreaterThanNullsFirst(Vector &left, Vector &right,
|
|
1014
|
-
|
|
1015
|
-
SelectionVector
|
|
1016
|
-
|
|
1017
|
-
|
|
1156
|
+
idx_t VectorOperations::DistinctGreaterThanNullsFirst(Vector &left, Vector &right,
|
|
1157
|
+
optional_ptr<const SelectionVector> sel, idx_t count,
|
|
1158
|
+
optional_ptr<SelectionVector> true_sel,
|
|
1159
|
+
optional_ptr<SelectionVector> false_sel,
|
|
1160
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
1161
|
+
return TemplatedDistinctSelectOperation<duckdb::DistinctGreaterThanNullsFirst>(left, right, sel, count, true_sel,
|
|
1162
|
+
false_sel, null_mask);
|
|
1018
1163
|
}
|
|
1019
1164
|
// true := A >= B with nulls being maximal
|
|
1020
|
-
idx_t VectorOperations::DistinctGreaterThanEquals(Vector &left, Vector &right, const SelectionVector
|
|
1021
|
-
|
|
1022
|
-
|
|
1023
|
-
|
|
1165
|
+
idx_t VectorOperations::DistinctGreaterThanEquals(Vector &left, Vector &right, optional_ptr<const SelectionVector> sel,
|
|
1166
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
1167
|
+
optional_ptr<SelectionVector> false_sel,
|
|
1168
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
1169
|
+
return count - TemplatedDistinctSelectOperation<duckdb::DistinctGreaterThan>(right, left, sel, count, false_sel,
|
|
1170
|
+
true_sel, null_mask);
|
|
1024
1171
|
}
|
|
1025
1172
|
// true := A < B with nulls being maximal
|
|
1026
|
-
idx_t VectorOperations::DistinctLessThan(Vector &left, Vector &right, const SelectionVector
|
|
1027
|
-
|
|
1028
|
-
|
|
1173
|
+
idx_t VectorOperations::DistinctLessThan(Vector &left, Vector &right, optional_ptr<const SelectionVector> sel,
|
|
1174
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
1175
|
+
optional_ptr<SelectionVector> false_sel,
|
|
1176
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
1177
|
+
return TemplatedDistinctSelectOperation<duckdb::DistinctGreaterThan>(right, left, sel, count, true_sel, false_sel,
|
|
1178
|
+
null_mask);
|
|
1029
1179
|
}
|
|
1030
1180
|
|
|
1031
1181
|
// true := A < B with nulls being minimal
|
|
1032
|
-
idx_t VectorOperations::DistinctLessThanNullsFirst(Vector &left, Vector &right, const SelectionVector
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1182
|
+
idx_t VectorOperations::DistinctLessThanNullsFirst(Vector &left, Vector &right, optional_ptr<const SelectionVector> sel,
|
|
1183
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
1184
|
+
optional_ptr<SelectionVector> false_sel,
|
|
1185
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
1186
|
+
return TemplatedDistinctSelectOperation<duckdb::DistinctGreaterThanNullsFirst>(right, left, sel, count, true_sel,
|
|
1187
|
+
false_sel, nullptr);
|
|
1036
1188
|
}
|
|
1037
1189
|
|
|
1038
1190
|
// true := A <= B with nulls being maximal
|
|
1039
|
-
idx_t VectorOperations::DistinctLessThanEquals(Vector &left, Vector &right, const SelectionVector
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1191
|
+
idx_t VectorOperations::DistinctLessThanEquals(Vector &left, Vector &right, optional_ptr<const SelectionVector> sel,
|
|
1192
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
1193
|
+
optional_ptr<SelectionVector> false_sel,
|
|
1194
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
1195
|
+
return count - TemplatedDistinctSelectOperation<duckdb::DistinctGreaterThan>(left, right, sel, count, false_sel,
|
|
1196
|
+
true_sel, null_mask);
|
|
1043
1197
|
}
|
|
1044
1198
|
|
|
1045
1199
|
// true := A != B with nulls being equal, inputs selected
|
|
1046
|
-
idx_t VectorOperations::NestedNotEquals(Vector &left, Vector &right, const SelectionVector
|
|
1047
|
-
|
|
1048
|
-
|
|
1200
|
+
idx_t VectorOperations::NestedNotEquals(Vector &left, Vector &right, optional_ptr<const SelectionVector> sel,
|
|
1201
|
+
idx_t count, optional_ptr<SelectionVector> true_sel,
|
|
1202
|
+
optional_ptr<SelectionVector> false_sel, optional_ptr<ValidityMask> null_mask) {
|
|
1203
|
+
return TemplatedDistinctSelectOperation<duckdb::DistinctFrom>(left, right, sel, count, true_sel, false_sel,
|
|
1204
|
+
null_mask);
|
|
1049
1205
|
}
|
|
1050
1206
|
// true := A == B with nulls being equal, inputs selected
|
|
1051
|
-
idx_t VectorOperations::NestedEquals(Vector &left, Vector &right, const SelectionVector
|
|
1052
|
-
SelectionVector
|
|
1053
|
-
|
|
1054
|
-
|
|
1207
|
+
idx_t VectorOperations::NestedEquals(Vector &left, Vector &right, optional_ptr<const SelectionVector> sel, idx_t count,
|
|
1208
|
+
optional_ptr<SelectionVector> true_sel, optional_ptr<SelectionVector> false_sel,
|
|
1209
|
+
optional_ptr<ValidityMask> null_mask) {
|
|
1210
|
+
return count - TemplatedDistinctSelectOperation<duckdb::DistinctFrom>(left, right, sel, count, false_sel, true_sel,
|
|
1211
|
+
null_mask);
|
|
1055
1212
|
}
|
|
1056
1213
|
|
|
1057
1214
|
} // namespace duckdb
|