duckdb 0.10.2-dev0.0 → 0.10.2-dev5.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
- package/test/jsdoc.test.ts +3 -0
|
@@ -7,43 +7,26 @@ namespace duckdb {
|
|
|
7
7
|
|
|
8
8
|
template <class SRC_TYPE, class RES_TYPE>
|
|
9
9
|
bool EnumEnumCast(Vector &source, Vector &result, idx_t count, CastParameters ¶meters) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
auto &str_vec = EnumType::GetValuesInsertOrder(source.GetType());
|
|
13
|
-
auto str_vec_ptr = FlatVector::GetData<string_t>(str_vec);
|
|
14
|
-
|
|
10
|
+
auto &enum_dictionary = EnumType::GetValuesInsertOrder(source.GetType());
|
|
11
|
+
auto dictionary_data = FlatVector::GetData<string_t>(enum_dictionary);
|
|
15
12
|
auto res_enum_type = result.GetType();
|
|
16
13
|
|
|
17
|
-
UnifiedVectorFormat vdata;
|
|
18
|
-
source.ToUnifiedFormat(count, vdata);
|
|
19
|
-
|
|
20
|
-
auto source_data = UnifiedVectorFormat::GetData<SRC_TYPE>(vdata);
|
|
21
|
-
auto source_sel = vdata.sel;
|
|
22
|
-
auto source_mask = vdata.validity;
|
|
23
|
-
|
|
24
|
-
auto result_data = FlatVector::GetData<RES_TYPE>(result);
|
|
25
|
-
auto &result_mask = FlatVector::Validity(result);
|
|
26
|
-
|
|
27
14
|
VectorTryCastData vector_cast_data(result, parameters);
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
continue;
|
|
44
|
-
}
|
|
45
|
-
result_data[i] = UnsafeNumericCast<RES_TYPE>(key);
|
|
46
|
-
}
|
|
15
|
+
UnaryExecutor::ExecuteWithNulls<SRC_TYPE, RES_TYPE>(
|
|
16
|
+
source, result, count, [&](SRC_TYPE value, ValidityMask &mask, idx_t row_idx) {
|
|
17
|
+
auto key = EnumType::GetPos(res_enum_type, dictionary_data[value]);
|
|
18
|
+
if (key == -1) {
|
|
19
|
+
if (!parameters.error_message) {
|
|
20
|
+
return HandleVectorCastError::Operation<RES_TYPE>(CastExceptionText<SRC_TYPE, RES_TYPE>(value),
|
|
21
|
+
mask, row_idx, vector_cast_data);
|
|
22
|
+
} else {
|
|
23
|
+
mask.SetInvalid(row_idx);
|
|
24
|
+
}
|
|
25
|
+
return RES_TYPE();
|
|
26
|
+
} else {
|
|
27
|
+
return UnsafeNumericCast<RES_TYPE>(key);
|
|
28
|
+
}
|
|
29
|
+
});
|
|
47
30
|
return vector_cast_data.all_converted;
|
|
48
31
|
}
|
|
49
32
|
|
|
@@ -65,27 +48,9 @@ template <class SRC>
|
|
|
65
48
|
static bool EnumToVarcharCast(Vector &source, Vector &result, idx_t count, CastParameters ¶meters) {
|
|
66
49
|
auto &enum_dictionary = EnumType::GetValuesInsertOrder(source.GetType());
|
|
67
50
|
auto dictionary_data = FlatVector::GetData<string_t>(enum_dictionary);
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
UnifiedVectorFormat vdata;
|
|
72
|
-
source.ToUnifiedFormat(count, vdata);
|
|
73
|
-
|
|
74
|
-
auto source_data = UnifiedVectorFormat::GetData<SRC>(vdata);
|
|
75
|
-
for (idx_t i = 0; i < count; i++) {
|
|
76
|
-
auto source_idx = vdata.sel->get_index(i);
|
|
77
|
-
if (!vdata.validity.RowIsValid(source_idx)) {
|
|
78
|
-
result_mask.SetInvalid(i);
|
|
79
|
-
continue;
|
|
80
|
-
}
|
|
81
|
-
auto enum_idx = source_data[source_idx];
|
|
82
|
-
result_data[i] = dictionary_data[enum_idx];
|
|
83
|
-
}
|
|
84
|
-
if (source.GetVectorType() == VectorType::CONSTANT_VECTOR) {
|
|
85
|
-
result.SetVectorType(VectorType::CONSTANT_VECTOR);
|
|
86
|
-
} else {
|
|
87
|
-
result.SetVectorType(VectorType::FLAT_VECTOR);
|
|
88
|
-
}
|
|
51
|
+
|
|
52
|
+
UnaryExecutor::Execute<SRC, string_t>(source, result, count,
|
|
53
|
+
[&](SRC enum_idx) { return dictionary_data[enum_idx]; });
|
|
89
54
|
return true;
|
|
90
55
|
}
|
|
91
56
|
|
|
@@ -39,25 +39,26 @@ static bool SkipToCloseQuotes(idx_t &pos, const char *buf, idx_t &len) {
|
|
|
39
39
|
static bool SkipToClose(idx_t &idx, const char *buf, idx_t &len, idx_t &lvl, char close_bracket) {
|
|
40
40
|
idx++;
|
|
41
41
|
|
|
42
|
+
vector<char> brackets;
|
|
43
|
+
brackets.push_back(close_bracket);
|
|
42
44
|
while (idx < len) {
|
|
43
45
|
if (buf[idx] == '"' || buf[idx] == '\'') {
|
|
44
46
|
if (!SkipToCloseQuotes(idx, buf, len)) {
|
|
45
47
|
return false;
|
|
46
48
|
}
|
|
47
49
|
} else if (buf[idx] == '{') {
|
|
48
|
-
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
50
|
+
brackets.push_back('}');
|
|
51
51
|
} else if (buf[idx] == '[') {
|
|
52
|
-
|
|
53
|
-
return false;
|
|
54
|
-
}
|
|
52
|
+
brackets.push_back(']');
|
|
55
53
|
lvl++;
|
|
56
|
-
} else if (buf[idx] ==
|
|
57
|
-
if (
|
|
54
|
+
} else if (buf[idx] == brackets.back()) {
|
|
55
|
+
if (buf[idx] == ']') {
|
|
58
56
|
lvl--;
|
|
59
57
|
}
|
|
60
|
-
|
|
58
|
+
brackets.pop_back();
|
|
59
|
+
if (brackets.empty()) {
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
61
62
|
}
|
|
62
63
|
idx++;
|
|
63
64
|
}
|
|
@@ -24,6 +24,8 @@ static int64_t TargetTypeCost(const LogicalType &type) {
|
|
|
24
24
|
return 121;
|
|
25
25
|
case LogicalTypeId::TIMESTAMP_SEC:
|
|
26
26
|
return 122;
|
|
27
|
+
case LogicalTypeId::TIMESTAMP_TZ:
|
|
28
|
+
return 123;
|
|
27
29
|
case LogicalTypeId::VARCHAR:
|
|
28
30
|
return 149;
|
|
29
31
|
case LogicalTypeId::STRUCT:
|
|
@@ -259,6 +261,8 @@ static int64_t ImplicitCastTimestamp(const LogicalType &to) {
|
|
|
259
261
|
switch (to.id()) {
|
|
260
262
|
case LogicalTypeId::TIMESTAMP_NS:
|
|
261
263
|
return TargetTypeCost(to);
|
|
264
|
+
case LogicalTypeId::TIMESTAMP_TZ:
|
|
265
|
+
return TargetTypeCost(to);
|
|
262
266
|
default:
|
|
263
267
|
return -1;
|
|
264
268
|
}
|
|
@@ -382,8 +386,12 @@ int64_t CastRules::ImplicitCast(const LogicalType &from, const LogicalType &to)
|
|
|
382
386
|
}
|
|
383
387
|
if (from.id() == LogicalTypeId::ARRAY && to.id() == LogicalTypeId::LIST) {
|
|
384
388
|
// Arrays can be cast to lists for the cost of casting the child type
|
|
389
|
+
auto child_cost = ImplicitCast(ArrayType::GetChildType(from), ListType::GetChildType(to));
|
|
390
|
+
if (child_cost < 0) {
|
|
391
|
+
return -1;
|
|
392
|
+
}
|
|
385
393
|
// add 1 because we prefer ARRAY->ARRAY casts over ARRAY->LIST casts
|
|
386
|
-
return
|
|
394
|
+
return child_cost + 1;
|
|
387
395
|
}
|
|
388
396
|
if (from.id() == LogicalTypeId::LIST && (to.id() == LogicalTypeId::ARRAY && !ArrayType::IsAnySize(to))) {
|
|
389
397
|
// Lists can be cast to arrays for the cost of casting the child type, if the target size is known
|
|
@@ -14,7 +14,7 @@ struct DefaultCompressionMethod {
|
|
|
14
14
|
compression_supports_type_t supports_type;
|
|
15
15
|
};
|
|
16
16
|
|
|
17
|
-
static DefaultCompressionMethod internal_compression_methods[] = {
|
|
17
|
+
static const DefaultCompressionMethod internal_compression_methods[] = {
|
|
18
18
|
{CompressionType::COMPRESSION_CONSTANT, ConstantFun::GetFunction, ConstantFun::TypeIsSupported},
|
|
19
19
|
{CompressionType::COMPRESSION_UNCOMPRESSED, UncompressedFun::GetFunction, UncompressedFun::TypeIsSupported},
|
|
20
20
|
{CompressionType::COMPRESSION_RLE, RLEFun::GetFunction, RLEFun::TypeIsSupported},
|
|
@@ -18,12 +18,12 @@ namespace duckdb {
|
|
|
18
18
|
FunctionBinder::FunctionBinder(ClientContext &context) : context(context) {
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
optional_idx FunctionBinder::BindVarArgsFunctionCost(const SimpleFunction &func, const vector<LogicalType> &arguments) {
|
|
22
22
|
if (arguments.size() < func.arguments.size()) {
|
|
23
23
|
// not enough arguments to fulfill the non-vararg part of the function
|
|
24
|
-
return
|
|
24
|
+
return optional_idx();
|
|
25
25
|
}
|
|
26
|
-
|
|
26
|
+
idx_t cost = 0;
|
|
27
27
|
for (idx_t i = 0; i < arguments.size(); i++) {
|
|
28
28
|
LogicalType arg_type = i < func.arguments.size() ? func.arguments[i] : func.varargs;
|
|
29
29
|
if (arguments[i] == arg_type) {
|
|
@@ -33,25 +33,25 @@ int64_t FunctionBinder::BindVarArgsFunctionCost(const SimpleFunction &func, cons
|
|
|
33
33
|
int64_t cast_cost = CastFunctionSet::Get(context).ImplicitCastCost(arguments[i], arg_type);
|
|
34
34
|
if (cast_cost >= 0) {
|
|
35
35
|
// we can implicitly cast, add the cost to the total cost
|
|
36
|
-
cost += cast_cost;
|
|
36
|
+
cost += idx_t(cast_cost);
|
|
37
37
|
} else {
|
|
38
38
|
// we can't implicitly cast: throw an error
|
|
39
|
-
return
|
|
39
|
+
return optional_idx();
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
return cost;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
optional_idx FunctionBinder::BindFunctionCost(const SimpleFunction &func, const vector<LogicalType> &arguments) {
|
|
46
46
|
if (func.HasVarArgs()) {
|
|
47
47
|
// special case varargs function
|
|
48
48
|
return BindVarArgsFunctionCost(func, arguments);
|
|
49
49
|
}
|
|
50
50
|
if (func.arguments.size() != arguments.size()) {
|
|
51
51
|
// invalid argument count: check the next function
|
|
52
|
-
return
|
|
52
|
+
return optional_idx();
|
|
53
53
|
}
|
|
54
|
-
|
|
54
|
+
idx_t cost = 0;
|
|
55
55
|
bool has_parameter = false;
|
|
56
56
|
for (idx_t i = 0; i < arguments.size(); i++) {
|
|
57
57
|
if (arguments[i].id() == LogicalTypeId::UNKNOWN) {
|
|
@@ -61,10 +61,10 @@ int64_t FunctionBinder::BindFunctionCost(const SimpleFunction &func, const vecto
|
|
|
61
61
|
int64_t cast_cost = CastFunctionSet::Get(context).ImplicitCastCost(arguments[i], func.arguments[i]);
|
|
62
62
|
if (cast_cost >= 0) {
|
|
63
63
|
// we can implicitly cast, add the cost to the total cost
|
|
64
|
-
cost += cast_cost;
|
|
64
|
+
cost += idx_t(cast_cost);
|
|
65
65
|
} else {
|
|
66
66
|
// we can't implicitly cast: throw an error
|
|
67
|
-
return
|
|
67
|
+
return optional_idx();
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
70
|
if (has_parameter) {
|
|
@@ -77,17 +77,18 @@ int64_t FunctionBinder::BindFunctionCost(const SimpleFunction &func, const vecto
|
|
|
77
77
|
template <class T>
|
|
78
78
|
vector<idx_t> FunctionBinder::BindFunctionsFromArguments(const string &name, FunctionSet<T> &functions,
|
|
79
79
|
const vector<LogicalType> &arguments, ErrorData &error) {
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
optional_idx best_function;
|
|
81
|
+
idx_t lowest_cost = NumericLimits<idx_t>::Maximum();
|
|
82
82
|
vector<idx_t> candidate_functions;
|
|
83
83
|
for (idx_t f_idx = 0; f_idx < functions.functions.size(); f_idx++) {
|
|
84
84
|
auto &func = functions.functions[f_idx];
|
|
85
85
|
// check the arguments of the function
|
|
86
|
-
|
|
87
|
-
if (
|
|
86
|
+
auto bind_cost = BindFunctionCost(func, arguments);
|
|
87
|
+
if (!bind_cost.IsValid()) {
|
|
88
88
|
// auto casting was not possible
|
|
89
89
|
continue;
|
|
90
90
|
}
|
|
91
|
+
auto cost = bind_cost.GetIndex();
|
|
91
92
|
if (cost == lowest_cost) {
|
|
92
93
|
candidate_functions.push_back(f_idx);
|
|
93
94
|
continue;
|
|
@@ -99,7 +100,7 @@ vector<idx_t> FunctionBinder::BindFunctionsFromArguments(const string &name, Fun
|
|
|
99
100
|
lowest_cost = cost;
|
|
100
101
|
best_function = f_idx;
|
|
101
102
|
}
|
|
102
|
-
if (best_function
|
|
103
|
+
if (!best_function.IsValid()) {
|
|
103
104
|
// no matching function was found, throw an error
|
|
104
105
|
vector<string> candidates;
|
|
105
106
|
for (auto &f : functions.functions) {
|
|
@@ -108,14 +109,14 @@ vector<idx_t> FunctionBinder::BindFunctionsFromArguments(const string &name, Fun
|
|
|
108
109
|
error = ErrorData(BinderException::NoMatchingFunction(name, arguments, candidates));
|
|
109
110
|
return candidate_functions;
|
|
110
111
|
}
|
|
111
|
-
candidate_functions.push_back(best_function);
|
|
112
|
+
candidate_functions.push_back(best_function.GetIndex());
|
|
112
113
|
return candidate_functions;
|
|
113
114
|
}
|
|
114
115
|
|
|
115
116
|
template <class T>
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
117
|
+
optional_idx FunctionBinder::MultipleCandidateException(const string &name, FunctionSet<T> &functions,
|
|
118
|
+
vector<idx_t> &candidate_functions,
|
|
119
|
+
const vector<LogicalType> &arguments, ErrorData &error) {
|
|
119
120
|
D_ASSERT(functions.functions.size() > 1);
|
|
120
121
|
// there are multiple possible function definitions
|
|
121
122
|
// throw an exception explaining which overloads are there
|
|
@@ -130,16 +131,16 @@ idx_t FunctionBinder::MultipleCandidateException(const string &name, FunctionSet
|
|
|
130
131
|
StringUtil::Format("Could not choose a best candidate function for the function call \"%s\". In order to "
|
|
131
132
|
"select one, please add explicit type casts.\n\tCandidate functions:\n%s",
|
|
132
133
|
call_str, candidate_str));
|
|
133
|
-
return
|
|
134
|
+
return optional_idx();
|
|
134
135
|
}
|
|
135
136
|
|
|
136
137
|
template <class T>
|
|
137
|
-
|
|
138
|
-
|
|
138
|
+
optional_idx FunctionBinder::BindFunctionFromArguments(const string &name, FunctionSet<T> &functions,
|
|
139
|
+
const vector<LogicalType> &arguments, ErrorData &error) {
|
|
139
140
|
auto candidate_functions = BindFunctionsFromArguments<T>(name, functions, arguments, error);
|
|
140
141
|
if (candidate_functions.empty()) {
|
|
141
142
|
// no candidates
|
|
142
|
-
return
|
|
143
|
+
return optional_idx();
|
|
143
144
|
}
|
|
144
145
|
if (candidate_functions.size() > 1) {
|
|
145
146
|
// multiple candidates, check if there are any unknown arguments
|
|
@@ -157,32 +158,32 @@ idx_t FunctionBinder::BindFunctionFromArguments(const string &name, FunctionSet<
|
|
|
157
158
|
return candidate_functions[0];
|
|
158
159
|
}
|
|
159
160
|
|
|
160
|
-
|
|
161
|
-
|
|
161
|
+
optional_idx FunctionBinder::BindFunction(const string &name, ScalarFunctionSet &functions,
|
|
162
|
+
const vector<LogicalType> &arguments, ErrorData &error) {
|
|
162
163
|
return BindFunctionFromArguments(name, functions, arguments, error);
|
|
163
164
|
}
|
|
164
165
|
|
|
165
|
-
|
|
166
|
-
|
|
166
|
+
optional_idx FunctionBinder::BindFunction(const string &name, AggregateFunctionSet &functions,
|
|
167
|
+
const vector<LogicalType> &arguments, ErrorData &error) {
|
|
167
168
|
return BindFunctionFromArguments(name, functions, arguments, error);
|
|
168
169
|
}
|
|
169
170
|
|
|
170
|
-
|
|
171
|
-
|
|
171
|
+
optional_idx FunctionBinder::BindFunction(const string &name, TableFunctionSet &functions,
|
|
172
|
+
const vector<LogicalType> &arguments, ErrorData &error) {
|
|
172
173
|
return BindFunctionFromArguments(name, functions, arguments, error);
|
|
173
174
|
}
|
|
174
175
|
|
|
175
|
-
|
|
176
|
-
|
|
176
|
+
optional_idx FunctionBinder::BindFunction(const string &name, PragmaFunctionSet &functions, vector<Value> ¶meters,
|
|
177
|
+
ErrorData &error) {
|
|
177
178
|
vector<LogicalType> types;
|
|
178
179
|
for (auto &value : parameters) {
|
|
179
180
|
types.push_back(value.type());
|
|
180
181
|
}
|
|
181
|
-
|
|
182
|
-
if (entry
|
|
182
|
+
auto entry = BindFunctionFromArguments(name, functions, types, error);
|
|
183
|
+
if (!entry.IsValid()) {
|
|
183
184
|
error.Throw();
|
|
184
185
|
}
|
|
185
|
-
auto candidate_function = functions.GetFunctionByOffset(entry);
|
|
186
|
+
auto candidate_function = functions.GetFunctionByOffset(entry.GetIndex());
|
|
186
187
|
// cast the input parameters
|
|
187
188
|
for (idx_t i = 0; i < parameters.size(); i++) {
|
|
188
189
|
auto target_type =
|
|
@@ -201,25 +202,25 @@ vector<LogicalType> FunctionBinder::GetLogicalTypesFromExpressions(vector<unique
|
|
|
201
202
|
return types;
|
|
202
203
|
}
|
|
203
204
|
|
|
204
|
-
|
|
205
|
-
|
|
205
|
+
optional_idx FunctionBinder::BindFunction(const string &name, ScalarFunctionSet &functions,
|
|
206
|
+
vector<unique_ptr<Expression>> &arguments, ErrorData &error) {
|
|
206
207
|
auto types = GetLogicalTypesFromExpressions(arguments);
|
|
207
208
|
return BindFunction(name, functions, types, error);
|
|
208
209
|
}
|
|
209
210
|
|
|
210
|
-
|
|
211
|
-
|
|
211
|
+
optional_idx FunctionBinder::BindFunction(const string &name, AggregateFunctionSet &functions,
|
|
212
|
+
vector<unique_ptr<Expression>> &arguments, ErrorData &error) {
|
|
212
213
|
auto types = GetLogicalTypesFromExpressions(arguments);
|
|
213
214
|
return BindFunction(name, functions, types, error);
|
|
214
215
|
}
|
|
215
216
|
|
|
216
|
-
|
|
217
|
-
|
|
217
|
+
optional_idx FunctionBinder::BindFunction(const string &name, TableFunctionSet &functions,
|
|
218
|
+
vector<unique_ptr<Expression>> &arguments, ErrorData &error) {
|
|
218
219
|
auto types = GetLogicalTypesFromExpressions(arguments);
|
|
219
220
|
return BindFunction(name, functions, types, error);
|
|
220
221
|
}
|
|
221
222
|
|
|
222
|
-
enum class LogicalTypeComparisonResult { IDENTICAL_TYPE, TARGET_IS_ANY, DIFFERENT_TYPES };
|
|
223
|
+
enum class LogicalTypeComparisonResult : uint8_t { IDENTICAL_TYPE, TARGET_IS_ANY, DIFFERENT_TYPES };
|
|
223
224
|
|
|
224
225
|
LogicalTypeComparisonResult RequiresCast(const LogicalType &source_type, const LogicalType &target_type) {
|
|
225
226
|
if (target_type.id() == LogicalTypeId::ANY) {
|
|
@@ -291,13 +292,13 @@ unique_ptr<Expression> FunctionBinder::BindScalarFunction(ScalarFunctionCatalogE
|
|
|
291
292
|
vector<unique_ptr<Expression>> children, ErrorData &error,
|
|
292
293
|
bool is_operator, Binder *binder) {
|
|
293
294
|
// bind the function
|
|
294
|
-
|
|
295
|
-
if (best_function
|
|
295
|
+
auto best_function = BindFunction(func.name, func.functions, children, error);
|
|
296
|
+
if (!best_function.IsValid()) {
|
|
296
297
|
return nullptr;
|
|
297
298
|
}
|
|
298
299
|
|
|
299
300
|
// found a matching function!
|
|
300
|
-
auto bound_function = func.functions.GetFunctionByOffset(best_function);
|
|
301
|
+
auto bound_function = func.functions.GetFunctionByOffset(best_function.GetIndex());
|
|
301
302
|
|
|
302
303
|
// If any of the parameters are NULL, the function will just be replaced with a NULL constant
|
|
303
304
|
// But this NULL constant needs to have to correct type, because we use LogicalType::SQLNULL for binding macro's
|
|
@@ -16,12 +16,12 @@ ScalarFunctionSet::ScalarFunctionSet(ScalarFunction fun) : FunctionSet(std::move
|
|
|
16
16
|
ScalarFunction ScalarFunctionSet::GetFunctionByArguments(ClientContext &context, const vector<LogicalType> &arguments) {
|
|
17
17
|
ErrorData error;
|
|
18
18
|
FunctionBinder binder(context);
|
|
19
|
-
|
|
20
|
-
if (index
|
|
19
|
+
auto index = binder.BindFunction(name, *this, arguments, error);
|
|
20
|
+
if (!index.IsValid()) {
|
|
21
21
|
throw InternalException("Failed to find function %s(%s)\n%s", name, StringUtil::ToString(arguments, ","),
|
|
22
22
|
error.Message());
|
|
23
23
|
}
|
|
24
|
-
return GetFunctionByOffset(index);
|
|
24
|
+
return GetFunctionByOffset(index.GetIndex());
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
AggregateFunctionSet::AggregateFunctionSet() : FunctionSet("") {
|
|
@@ -38,8 +38,8 @@ AggregateFunction AggregateFunctionSet::GetFunctionByArguments(ClientContext &co
|
|
|
38
38
|
const vector<LogicalType> &arguments) {
|
|
39
39
|
ErrorData error;
|
|
40
40
|
FunctionBinder binder(context);
|
|
41
|
-
|
|
42
|
-
if (index
|
|
41
|
+
auto index = binder.BindFunction(name, *this, arguments, error);
|
|
42
|
+
if (!index.IsValid()) {
|
|
43
43
|
// check if the arguments are a prefix of any of the arguments
|
|
44
44
|
// this is used for functions such as quantile or string_agg that delete part of their arguments during bind
|
|
45
45
|
// FIXME: we should come up with a better solution here
|
|
@@ -61,7 +61,7 @@ AggregateFunction AggregateFunctionSet::GetFunctionByArguments(ClientContext &co
|
|
|
61
61
|
throw InternalException("Failed to find function %s(%s)\n%s", name, StringUtil::ToString(arguments, ","),
|
|
62
62
|
error.Message());
|
|
63
63
|
}
|
|
64
|
-
return GetFunctionByOffset(index);
|
|
64
|
+
return GetFunctionByOffset(index.GetIndex());
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
TableFunctionSet::TableFunctionSet(string name) : FunctionSet(std::move(name)) {
|
|
@@ -74,12 +74,12 @@ TableFunctionSet::TableFunctionSet(TableFunction fun) : FunctionSet(std::move(fu
|
|
|
74
74
|
TableFunction TableFunctionSet::GetFunctionByArguments(ClientContext &context, const vector<LogicalType> &arguments) {
|
|
75
75
|
ErrorData error;
|
|
76
76
|
FunctionBinder binder(context);
|
|
77
|
-
|
|
78
|
-
if (index
|
|
77
|
+
auto index = binder.BindFunction(name, *this, arguments, error);
|
|
78
|
+
if (!index.IsValid()) {
|
|
79
79
|
throw InternalException("Failed to find function %s(%s)\n%s", name, StringUtil::ToString(arguments, ","),
|
|
80
80
|
error.Message());
|
|
81
81
|
}
|
|
82
|
-
return GetFunctionByOffset(index);
|
|
82
|
+
return GetFunctionByOffset(index.GetIndex());
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
PragmaFunctionSet::PragmaFunctionSet(string name) : FunctionSet(std::move(name)) {
|
|
@@ -139,8 +139,7 @@ string PragmaImportDatabase(ClientContext &context, const FunctionParameters &pa
|
|
|
139
139
|
vector<string> files = {"schema.sql", "load.sql"};
|
|
140
140
|
for (auto &file : files) {
|
|
141
141
|
auto file_path = fs.JoinPath(parameters.values[0].ToString(), file);
|
|
142
|
-
auto handle = fs.OpenFile(file_path, FileFlags::FILE_FLAGS_READ
|
|
143
|
-
FileSystem::DEFAULT_COMPRESSION);
|
|
142
|
+
auto handle = fs.OpenFile(file_path, FileFlags::FILE_FLAGS_READ);
|
|
144
143
|
auto fsize = fs.GetFileSize(*handle);
|
|
145
144
|
auto buffer = make_unsafe_uniq_array<char>(fsize);
|
|
146
145
|
fs.Read(*handle, buffer.get(), fsize);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#include "duckdb/common/numeric_utils.hpp"
|
|
2
|
-
#include "duckdb/common/serializer/serializer.hpp"
|
|
3
2
|
#include "duckdb/common/serializer/deserializer.hpp"
|
|
3
|
+
#include "duckdb/common/serializer/serializer.hpp"
|
|
4
4
|
#include "duckdb/function/function_set.hpp"
|
|
5
5
|
#include "duckdb/function/scalar/compressed_materialization_functions.hpp"
|
|
6
6
|
|
|
@@ -97,9 +97,25 @@ static string IntegralDecompressFunctionName(const LogicalType &result_type) {
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
template <class INPUT_TYPE, class RESULT_TYPE>
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
100
|
+
struct TemplatedIntegralDecompress {
|
|
101
|
+
static inline RESULT_TYPE Operation(const INPUT_TYPE &input, const RESULT_TYPE &min_val) {
|
|
102
|
+
return min_val + UnsafeNumericCast<RESULT_TYPE, INPUT_TYPE>(input);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
template <class INPUT_TYPE>
|
|
107
|
+
struct TemplatedIntegralDecompress<INPUT_TYPE, hugeint_t> {
|
|
108
|
+
static inline hugeint_t Operation(const INPUT_TYPE &input, const hugeint_t &min_val) {
|
|
109
|
+
return min_val + hugeint_t(0, input);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
template <class INPUT_TYPE>
|
|
114
|
+
struct TemplatedIntegralDecompress<INPUT_TYPE, uhugeint_t> {
|
|
115
|
+
static inline uhugeint_t Operation(const INPUT_TYPE &input, const uhugeint_t &min_val) {
|
|
116
|
+
return min_val + uhugeint_t(0, input);
|
|
117
|
+
}
|
|
118
|
+
};
|
|
103
119
|
|
|
104
120
|
template <class INPUT_TYPE, class RESULT_TYPE>
|
|
105
121
|
static void IntegralDecompressFunction(DataChunk &args, ExpressionState &state, Vector &result) {
|
|
@@ -108,7 +124,7 @@ static void IntegralDecompressFunction(DataChunk &args, ExpressionState &state,
|
|
|
108
124
|
D_ASSERT(args.data[1].GetType() == result.GetType());
|
|
109
125
|
const auto min_val = ConstantVector::GetData<RESULT_TYPE>(args.data[1])[0];
|
|
110
126
|
UnaryExecutor::Execute<INPUT_TYPE, RESULT_TYPE>(args.data[0], result, args.size(), [&](const INPUT_TYPE &input) {
|
|
111
|
-
return TemplatedIntegralDecompress<INPUT_TYPE, RESULT_TYPE
|
|
127
|
+
return TemplatedIntegralDecompress<INPUT_TYPE, RESULT_TYPE>::Operation(input, min_val);
|
|
112
128
|
});
|
|
113
129
|
}
|
|
114
130
|
|
|
@@ -11,13 +11,13 @@ static string StringCompressFunctionName(const LogicalType &result_type) {
|
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
template <idx_t LENGTH>
|
|
14
|
-
static inline void TemplatedReverseMemCpy(const data_ptr_t __restrict
|
|
14
|
+
static inline void TemplatedReverseMemCpy(const data_ptr_t &__restrict dest, const const_data_ptr_t &__restrict src) {
|
|
15
15
|
for (idx_t i = 0; i < LENGTH; i++) {
|
|
16
16
|
dest[i] = src[LENGTH - 1 - i];
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
static inline void ReverseMemCpy(const data_ptr_t __restrict
|
|
20
|
+
static inline void ReverseMemCpy(const data_ptr_t &__restrict dest, const const_data_ptr_t &__restrict src,
|
|
21
21
|
const idx_t &length) {
|
|
22
22
|
for (idx_t i = 0; i < length; i++) {
|
|
23
23
|
dest[i] = src[length - 1 - i];
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
#include "duckdb/planner/expression_binder.hpp"
|
|
4
4
|
#include "duckdb/planner/expression/bound_function_expression.hpp"
|
|
5
5
|
#include "duckdb/planner/expression/bound_parameter_expression.hpp"
|
|
6
|
+
#include "duckdb/planner/expression/bound_cast_expression.hpp"
|
|
6
7
|
|
|
7
8
|
namespace duckdb {
|
|
8
9
|
|
|
@@ -140,6 +141,10 @@ static void ListSelectFunction(DataChunk &args, ExpressionState &state, Vector &
|
|
|
140
141
|
static unique_ptr<FunctionData> ListSelectBind(ClientContext &context, ScalarFunction &bound_function,
|
|
141
142
|
vector<unique_ptr<Expression>> &arguments) {
|
|
142
143
|
D_ASSERT(bound_function.arguments.size() == 2);
|
|
144
|
+
|
|
145
|
+
// If the first argument is an array, cast it to a list
|
|
146
|
+
arguments[0] = BoundCastExpression::AddArrayCastToList(context, std::move(arguments[0]));
|
|
147
|
+
|
|
143
148
|
LogicalType child_type;
|
|
144
149
|
if (arguments[0]->return_type == LogicalTypeId::UNKNOWN || arguments[1]->return_type == LogicalTypeId::UNKNOWN) {
|
|
145
150
|
bound_function.arguments[0] = LogicalTypeId::UNKNOWN;
|
|
@@ -149,8 +154,6 @@ static unique_ptr<FunctionData> ListSelectBind(ClientContext &context, ScalarFun
|
|
|
149
154
|
|
|
150
155
|
D_ASSERT(LogicalTypeId::LIST == arguments[0]->return_type.id() ||
|
|
151
156
|
LogicalTypeId::SQLNULL == arguments[0]->return_type.id());
|
|
152
|
-
D_ASSERT(LogicalTypeId::LIST == arguments[1]->return_type.id() ||
|
|
153
|
-
LogicalTypeId::SQLNULL == arguments[1]->return_type.id());
|
|
154
157
|
|
|
155
158
|
bound_function.return_type = arguments[0]->return_type;
|
|
156
159
|
return make_uniq<VariableReturnBindData>(bound_function.return_type);
|
|
@@ -31,13 +31,14 @@ static void ListZipFunction(DataChunk &args, ExpressionState &state, Vector &res
|
|
|
31
31
|
idx_t result_size = 0;
|
|
32
32
|
vector<idx_t> lengths;
|
|
33
33
|
for (idx_t j = 0; j < count; j++) {
|
|
34
|
-
|
|
35
34
|
// Is flag for current row set
|
|
36
35
|
bool truncate_to_shortest = false;
|
|
37
36
|
if (truncate_flags_set) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
auto &flag_vec = input_lists.back();
|
|
38
|
+
idx_t flag_idx = flag_vec.sel->get_index(j);
|
|
39
|
+
if (flag_vec.validity.RowIsValid(flag_idx)) {
|
|
40
|
+
truncate_to_shortest = UnifiedVectorFormat::GetData<bool>(flag_vec)[flag_idx];
|
|
41
|
+
}
|
|
41
42
|
}
|
|
42
43
|
|
|
43
44
|
// Calculation of the outgoing list size
|