duckdb 0.8.0 → 0.8.1-dev111.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/package.json +1 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
- package/src/duckdb/extension/json/include/json_common.hpp +1 -1
- package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
- package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
- package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
- package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
- package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
- package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
- package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
- package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
- package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
- package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/parquet-extension.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
- package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
- package/src/duckdb/src/catalog/catalog.cpp +0 -4
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +3 -0
- package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
- package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
- package/src/duckdb/src/catalog/duck_catalog.cpp +1 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +183 -94
- package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -2
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
- package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
- package/src/duckdb/src/common/checksum.cpp +1 -1
- package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
- package/src/duckdb/src/common/crypto/md5.cpp +9 -9
- package/src/duckdb/src/common/field_writer.cpp +1 -1
- package/src/duckdb/src/common/file_system.cpp +15 -2
- package/src/duckdb/src/common/fsst.cpp +11 -6
- package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
- package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
- package/src/duckdb/src/common/local_file_system.cpp +11 -11
- package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
- package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
- package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
- package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
- package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
- package/src/duckdb/src/common/serializer.cpp +1 -1
- package/src/duckdb/src/common/sort/comparators.cpp +1 -1
- package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
- package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
- package/src/duckdb/src/common/types/bit.cpp +5 -5
- package/src/duckdb/src/common/types/blob.cpp +8 -8
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
- package/src/duckdb/src/common/types/hash.cpp +2 -2
- package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
- package/src/duckdb/src/common/types/list_segment.cpp +77 -49
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +17 -17
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/value.cpp +2 -2
- package/src/duckdb/src/common/types/vector.cpp +101 -101
- package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
- package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
- package/src/duckdb/src/common/types.cpp +44 -33
- package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
- package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
- package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
- package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
- package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +32 -36
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +43 -43
- package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
- package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
- package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
- package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
- package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +36 -37
- package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +83 -119
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
- package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
- package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
- package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
- package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
- package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +45 -45
- package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
- package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
- package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
- package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
- package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
- package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
- package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
- package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
- package/src/duckdb/src/execution/expression_executor.cpp +33 -28
- package/src/duckdb/src/execution/index/art/art.cpp +30 -32
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
- package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
- package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +2 -0
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
- package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +3 -3
- package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
- package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
- package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/reservoir_sample.cpp +2 -2
- package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
- package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
- package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
- package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
- package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
- package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +3 -3
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
- package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
- package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
- package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +25 -23
- package/src/duckdb/src/function/scalar_function.cpp +3 -3
- package/src/duckdb/src/function/table/arrow.cpp +4 -4
- package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
- package/src/duckdb/src/function/table/checkpoint.cpp +1 -1
- package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
- package/src/duckdb/src/function/table/glob.cpp +1 -1
- package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
- package/src/duckdb/src/function/table/range.cpp +4 -4
- package/src/duckdb/src/function/table/read_csv.cpp +4 -7
- package/src/duckdb/src/function/table/repeat.cpp +2 -2
- package/src/duckdb/src/function/table/repeat_row.cpp +2 -2
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
- package/src/duckdb/src/function/table/system/test_vector_types.cpp +1 -1
- package/src/duckdb/src/function/table/table_scan.cpp +2 -2
- package/src/duckdb/src/function/table/unnest.cpp +1 -1
- package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
- package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/exception.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
- package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
- package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
- package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
- package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
- package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
- package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
- package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
- package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
- package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
- package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +8 -29
- package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
- package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
- package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +6 -6
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/query_result.hpp +17 -0
- package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
- package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
- package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
- package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +107 -91
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +34 -1
- package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
- 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_columnref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
- package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
- package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
- package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
- package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
- package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
- package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
- package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
- package/src/duckdb/src/main/capi/config-c.cpp +1 -1
- package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
- package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
- package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
- package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
- package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
- package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
- package/src/duckdb/src/main/capi/result-c.cpp +23 -23
- package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
- package/src/duckdb/src/main/client_context.cpp +3 -3
- package/src/duckdb/src/main/database_manager.cpp +1 -1
- package/src/duckdb/src/main/error_manager.cpp +1 -1
- package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
- package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
- package/src/duckdb/src/main/relation.cpp +1 -1
- package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
- package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
- package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +4 -7
- package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
- package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
- package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
- package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
- package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
- package/src/duckdb/src/parallel/executor.cpp +1 -1
- package/src/duckdb/src/parser/base_expression.cpp +2 -5
- package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
- package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
- package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
- package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
- package/src/duckdb/src/parser/parser.cpp +3 -3
- package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
- package/src/duckdb/src/parser/query_node.cpp +7 -6
- package/src/duckdb/src/parser/result_modifier.cpp +25 -18
- package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
- package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
- package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
- package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
- package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
- package/src/duckdb/src/parser/tableref.cpp +12 -3
- package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
- package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
- package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
- package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
- package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
- package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
- package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +28 -29
- package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
- package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
- package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
- package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
- package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
- package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
- package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
- package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
- package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
- package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
- package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
- package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
- package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
- package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
- package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
- package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -22
- package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
- package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
- package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
- package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
- package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
- package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
- package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
- package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
- package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
- package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
- package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
- package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
- package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
- package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
- package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
- package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +27 -27
- package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
- package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
- package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
- package/src/duckdb/src/parser/transformer.cpp +46 -46
- package/src/duckdb/src/planner/bind_context.cpp +6 -6
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +8 -8
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +13 -5
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +14 -7
- package/src/duckdb/src/planner/binder.cpp +1 -1
- package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
- package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
- package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
- package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
- package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
- package/src/duckdb/src/planner/expression.cpp +15 -0
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
- package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
- package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
- package/src/duckdb/src/planner/logical_operator.cpp +3 -4
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
- package/src/duckdb/src/planner/table_filter.cpp +1 -1
- package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
- package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
- package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
- package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
- package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
- package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
- package/src/duckdb/src/storage/compression/rle.cpp +8 -8
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
- package/src/duckdb/src/storage/data_table.cpp +2 -2
- package/src/duckdb/src/storage/index.cpp +1 -3
- package/src/duckdb/src/storage/local_storage.cpp +2 -1
- package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
- package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
- package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
- package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
- package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
- package/src/duckdb/src/storage/table/row_group.cpp +4 -4
- package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
- package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
- package/src/duckdb/src/storage/wal_replay.cpp +1 -1
- package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
- package/src/duckdb/src/transaction/commit_state.cpp +8 -8
- package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
- package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
- package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
- package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
- package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
- package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +13479 -13564
- package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -243,18 +243,26 @@ void Binder::BindLogicalType(ClientContext &context, LogicalType &type, optional
|
|
243
243
|
type = LogicalType::UNION(member_types);
|
244
244
|
type.SetAlias(alias);
|
245
245
|
} else if (type.id() == LogicalTypeId::USER) {
|
246
|
-
auto
|
246
|
+
auto user_type_name = UserType::GetTypeName(type);
|
247
247
|
if (catalog) {
|
248
|
+
// The search order is:
|
249
|
+
// 1) In the same schema as the table
|
250
|
+
// 2) In the same catalog
|
251
|
+
// 3) System catalog
|
248
252
|
type = catalog->GetType(context, schema, user_type_name, OnEntryNotFound::RETURN_NULL);
|
253
|
+
|
249
254
|
if (type.id() == LogicalTypeId::INVALID) {
|
250
|
-
|
251
|
-
|
255
|
+
type = catalog->GetType(context, INVALID_SCHEMA, user_type_name, OnEntryNotFound::RETURN_NULL);
|
256
|
+
}
|
257
|
+
|
258
|
+
if (type.id() == LogicalTypeId::INVALID) {
|
259
|
+
type = Catalog::GetType(context, INVALID_CATALOG, schema, user_type_name);
|
252
260
|
}
|
253
261
|
} else {
|
254
262
|
type = Catalog::GetType(context, INVALID_CATALOG, schema, user_type_name);
|
255
263
|
}
|
256
264
|
} else if (type.id() == LogicalTypeId::ENUM) {
|
257
|
-
auto
|
265
|
+
auto enum_type_name = EnumType::GetTypeName(type);
|
258
266
|
optional_ptr<TypeCatalogEntry> enum_type_catalog;
|
259
267
|
if (catalog) {
|
260
268
|
enum_type_catalog =
|
@@ -493,7 +501,7 @@ BoundStatement Binder::Bind(CreateStatement &stmt) {
|
|
493
501
|
result.plan = make_uniq<LogicalCreate>(LogicalOperatorType::LOGICAL_CREATE_SCHEMA, std::move(stmt.info));
|
494
502
|
break;
|
495
503
|
case CatalogType::VIEW_ENTRY: {
|
496
|
-
auto &base =
|
504
|
+
auto &base = stmt.info->Cast<CreateViewInfo>();
|
497
505
|
// bind the schema
|
498
506
|
auto &schema = BindCreateSchema(*stmt.info);
|
499
507
|
BindCreateViewInfo(base);
|
@@ -350,7 +350,7 @@ void Binder::BindOnConflictClause(LogicalInsert &insert, TableCatalogEntry &tabl
|
|
350
350
|
// Get the column_ids we need to fetch later on from the conflicting tuples
|
351
351
|
// of the original table, to execute the expressions
|
352
352
|
D_ASSERT(original_binding->binding_type == BindingType::TABLE);
|
353
|
-
auto &table_binding = (
|
353
|
+
auto &table_binding = original_binding->Cast<TableBinding>();
|
354
354
|
insert.columns_to_fetch = table_binding.GetBoundColumnIds();
|
355
355
|
return;
|
356
356
|
}
|
@@ -376,7 +376,7 @@ void Binder::BindOnConflictClause(LogicalInsert &insert, TableCatalogEntry &tabl
|
|
376
376
|
// Get the column_ids we need to fetch later on from the conflicting tuples
|
377
377
|
// of the original table, to execute the expressions
|
378
378
|
D_ASSERT(original_binding->binding_type == BindingType::TABLE);
|
379
|
-
auto &table_binding = (
|
379
|
+
auto &table_binding = original_binding->Cast<TableBinding>();
|
380
380
|
insert.columns_to_fetch = table_binding.GetBoundColumnIds();
|
381
381
|
|
382
382
|
// Replace the column bindings to refer to the child operator
|
@@ -87,7 +87,7 @@ static void BindUpdateConstraints(TableCatalogEntry &table, LogicalGet &get, Log
|
|
87
87
|
// with a "useless" update (i.e. i=i) so we can verify that the CHECK constraint is not violated
|
88
88
|
for (auto &constraint : table.GetBoundConstraints()) {
|
89
89
|
if (constraint->type == ConstraintType::CHECK) {
|
90
|
-
auto &check =
|
90
|
+
auto &check = constraint->Cast<BoundCheckConstraint>();
|
91
91
|
// check constraint! check if we need to add any extra columns to the UPDATE clause
|
92
92
|
BindExtraColumns(table, get, proj, update, check.bound_columns);
|
93
93
|
}
|
@@ -84,7 +84,7 @@ static unique_ptr<SelectNode> PivotInitialAggregate(PivotBindState &bind_state,
|
|
84
84
|
if (entry->type != ExpressionType::COLUMN_REF) {
|
85
85
|
throw InternalException("Unexpected child of pivot source - not a ColumnRef");
|
86
86
|
}
|
87
|
-
auto &columnref = (
|
87
|
+
auto &columnref = entry->Cast<ColumnRefExpression>();
|
88
88
|
if (handled_columns.find(columnref.GetColumnName()) == handled_columns.end()) {
|
89
89
|
// not handled - add to grouping set
|
90
90
|
subquery_stage1->groups.group_expressions.push_back(
|
@@ -78,6 +78,15 @@ bool Binder::BindTableFunctionParameters(TableFunctionCatalogEntry &table_functi
|
|
78
78
|
}
|
79
79
|
}
|
80
80
|
if (child->type == ExpressionType::SUBQUERY) {
|
81
|
+
auto fun = table_function.functions.GetFunctionByOffset(0);
|
82
|
+
if (table_function.functions.Size() != 1 || fun.arguments.empty() ||
|
83
|
+
fun.arguments[0].id() != LogicalTypeId::TABLE) {
|
84
|
+
throw BinderException(
|
85
|
+
"Only table-in-out functions can have subquery parameters - %s only accepts constant parameters",
|
86
|
+
fun.name);
|
87
|
+
}
|
88
|
+
// this separate subquery binding path is only used by python_map
|
89
|
+
// FIXME: this should be unified with `BindTableInTableOutFunction` above
|
81
90
|
if (seen_subquery) {
|
82
91
|
error = "Table function can have at most one subquery parameter ";
|
83
92
|
return false;
|
@@ -98,8 +107,8 @@ bool Binder::BindTableFunctionParameters(TableFunctionCatalogEntry &table_functi
|
|
98
107
|
throw ParameterNotResolvedException();
|
99
108
|
}
|
100
109
|
if (!expr->IsScalar()) {
|
101
|
-
|
102
|
-
|
110
|
+
// should have been eliminated before
|
111
|
+
throw InternalException("Table function requires a constant parameter");
|
103
112
|
}
|
104
113
|
auto constant = ExpressionExecutor::EvaluateScalar(context, *expr, true);
|
105
114
|
if (parameter_name.empty()) {
|
@@ -141,8 +150,8 @@ Binder::BindTableFunctionInternal(TableFunction &table_function, const string &f
|
|
141
150
|
}
|
142
151
|
bind_data = table_function.bind(context, bind_input, return_types, return_names);
|
143
152
|
if (table_function.name == "pandas_scan" || table_function.name == "arrow_scan") {
|
144
|
-
auto arrow_bind =
|
145
|
-
arrow_bind
|
153
|
+
auto &arrow_bind = bind_data->Cast<PyTableFunctionData>();
|
154
|
+
arrow_bind.external_dependency = std::move(external_dependency);
|
146
155
|
}
|
147
156
|
if (table_function.name == "read_csv" || table_function.name == "read_csv_auto") {
|
148
157
|
auto &csv_bind = bind_data->Cast<ReadCSVData>();
|
@@ -154,9 +163,7 @@ Binder::BindTableFunctionInternal(TableFunction &table_function, const string &f
|
|
154
163
|
}
|
155
164
|
}
|
156
165
|
if (return_types.size() != return_names.size()) {
|
157
|
-
throw InternalException(
|
158
|
-
"Failed to bind \"%s\": Table function return_types and return_names must be of the same size",
|
159
|
-
table_function.name);
|
166
|
+
throw InternalException("Failed to bind \"%s\": return_types/names must have same size", table_function.name);
|
160
167
|
}
|
161
168
|
if (return_types.empty()) {
|
162
169
|
throw InternalException("Failed to bind \"%s\": Table function must return at least one column",
|
@@ -208,7 +208,7 @@ unique_ptr<LogicalOperator> Binder::CreatePlan(BoundTableRef &ref) {
|
|
208
208
|
root = CreatePlan(ref.Cast<BoundCTERef>());
|
209
209
|
break;
|
210
210
|
case TableReferenceType::PIVOT:
|
211
|
-
root = CreatePlan((
|
211
|
+
root = CreatePlan(ref.Cast<BoundPivotRef>());
|
212
212
|
break;
|
213
213
|
case TableReferenceType::INVALID:
|
214
214
|
default:
|
@@ -29,7 +29,7 @@ bool BoundOrderByNode::Equals(const BoundOrderByNode &other) const {
|
|
29
29
|
if (type != other.type || null_order != other.null_order) {
|
30
30
|
return false;
|
31
31
|
}
|
32
|
-
if (!expression->Equals(other.expression
|
32
|
+
if (!expression->Equals(*other.expression)) {
|
33
33
|
return false;
|
34
34
|
}
|
35
35
|
|
@@ -88,24 +88,29 @@ unique_ptr<BoundOrderModifier> BoundOrderModifier::Copy() const {
|
|
88
88
|
return result;
|
89
89
|
}
|
90
90
|
|
91
|
-
bool BoundOrderModifier::Equals(const BoundOrderModifier
|
92
|
-
if (left
|
93
|
-
return true;
|
94
|
-
}
|
95
|
-
if (!left || !right) {
|
91
|
+
bool BoundOrderModifier::Equals(const BoundOrderModifier &left, const BoundOrderModifier &right) {
|
92
|
+
if (left.orders.size() != right.orders.size()) {
|
96
93
|
return false;
|
97
94
|
}
|
98
|
-
|
99
|
-
|
100
|
-
}
|
101
|
-
for (idx_t i = 0; i < left->orders.size(); i++) {
|
102
|
-
if (!left->orders[i].Equals(right->orders[i])) {
|
95
|
+
for (idx_t i = 0; i < left.orders.size(); i++) {
|
96
|
+
if (!left.orders[i].Equals(right.orders[i])) {
|
103
97
|
return false;
|
104
98
|
}
|
105
99
|
}
|
106
100
|
return true;
|
107
101
|
}
|
108
102
|
|
103
|
+
bool BoundOrderModifier::Equals(const unique_ptr<BoundOrderModifier> &left,
|
104
|
+
const unique_ptr<BoundOrderModifier> &right) {
|
105
|
+
if (left.get() == right.get()) {
|
106
|
+
return true;
|
107
|
+
}
|
108
|
+
if (!left || !right) {
|
109
|
+
return false;
|
110
|
+
}
|
111
|
+
return BoundOrderModifier::Equals(*left, *right);
|
112
|
+
}
|
113
|
+
|
109
114
|
BoundLimitModifier::BoundLimitModifier() : BoundResultModifier(ResultModifierType::LIMIT_MODIFIER) {
|
110
115
|
}
|
111
116
|
|
@@ -30,11 +30,11 @@ hash_t BoundAggregateExpression::Hash() const {
|
|
30
30
|
return result;
|
31
31
|
}
|
32
32
|
|
33
|
-
bool BoundAggregateExpression::Equals(const BaseExpression
|
33
|
+
bool BoundAggregateExpression::Equals(const BaseExpression &other_p) const {
|
34
34
|
if (!Expression::Equals(other_p)) {
|
35
35
|
return false;
|
36
36
|
}
|
37
|
-
auto &other = other_p
|
37
|
+
auto &other = other_p.Cast<BoundAggregateExpression>();
|
38
38
|
if (other.aggr_type != aggr_type) {
|
39
39
|
return false;
|
40
40
|
}
|
@@ -44,18 +44,18 @@ bool BoundAggregateExpression::Equals(const BaseExpression *other_p) const {
|
|
44
44
|
if (children.size() != other.children.size()) {
|
45
45
|
return false;
|
46
46
|
}
|
47
|
-
if (!Expression::Equals(other.filter
|
47
|
+
if (!Expression::Equals(other.filter, filter)) {
|
48
48
|
return false;
|
49
49
|
}
|
50
50
|
for (idx_t i = 0; i < children.size(); i++) {
|
51
|
-
if (!Expression::Equals(children[i]
|
51
|
+
if (!Expression::Equals(*children[i], *other.children[i])) {
|
52
52
|
return false;
|
53
53
|
}
|
54
54
|
}
|
55
55
|
if (!FunctionData::Equals(bind_info.get(), other.bind_info.get())) {
|
56
56
|
return false;
|
57
57
|
}
|
58
|
-
if (!BoundOrderModifier::Equals(order_bys
|
58
|
+
if (!BoundOrderModifier::Equals(order_bys, other.order_bys)) {
|
59
59
|
return false;
|
60
60
|
}
|
61
61
|
return true;
|
@@ -15,18 +15,18 @@ string BoundBetweenExpression::ToString() const {
|
|
15
15
|
return BetweenExpression::ToString<BoundBetweenExpression, Expression>(*this);
|
16
16
|
}
|
17
17
|
|
18
|
-
bool BoundBetweenExpression::Equals(const BaseExpression
|
18
|
+
bool BoundBetweenExpression::Equals(const BaseExpression &other_p) const {
|
19
19
|
if (!Expression::Equals(other_p)) {
|
20
20
|
return false;
|
21
21
|
}
|
22
|
-
auto &other = other_p
|
23
|
-
if (!Expression::Equals(input
|
22
|
+
auto &other = other_p.Cast<BoundBetweenExpression>();
|
23
|
+
if (!Expression::Equals(*input, *other.input)) {
|
24
24
|
return false;
|
25
25
|
}
|
26
|
-
if (!Expression::Equals(lower
|
26
|
+
if (!Expression::Equals(*lower, *other.lower)) {
|
27
27
|
return false;
|
28
28
|
}
|
29
|
-
if (!Expression::Equals(upper
|
29
|
+
if (!Expression::Equals(*upper, *other.upper)) {
|
30
30
|
return false;
|
31
31
|
}
|
32
32
|
return lower_inclusive == other.lower_inclusive && upper_inclusive == other.upper_inclusive;
|
@@ -22,23 +22,23 @@ string BoundCaseExpression::ToString() const {
|
|
22
22
|
return CaseExpression::ToString<BoundCaseExpression, Expression>(*this);
|
23
23
|
}
|
24
24
|
|
25
|
-
bool BoundCaseExpression::Equals(const BaseExpression
|
25
|
+
bool BoundCaseExpression::Equals(const BaseExpression &other_p) const {
|
26
26
|
if (!Expression::Equals(other_p)) {
|
27
27
|
return false;
|
28
28
|
}
|
29
|
-
auto &other = other_p
|
29
|
+
auto &other = other_p.Cast<BoundCaseExpression>();
|
30
30
|
if (case_checks.size() != other.case_checks.size()) {
|
31
31
|
return false;
|
32
32
|
}
|
33
33
|
for (idx_t i = 0; i < case_checks.size(); i++) {
|
34
|
-
if (!Expression::Equals(case_checks[i].when_expr
|
34
|
+
if (!Expression::Equals(*case_checks[i].when_expr, *other.case_checks[i].when_expr)) {
|
35
35
|
return false;
|
36
36
|
}
|
37
|
-
if (!Expression::Equals(case_checks[i].then_expr
|
37
|
+
if (!Expression::Equals(*case_checks[i].then_expr, *other.case_checks[i].then_expr)) {
|
38
38
|
return false;
|
39
39
|
}
|
40
40
|
}
|
41
|
-
if (!Expression::Equals(else_expr
|
41
|
+
if (!Expression::Equals(*else_expr, *other.else_expr)) {
|
42
42
|
return false;
|
43
43
|
}
|
44
44
|
return true;
|
@@ -169,12 +169,12 @@ string BoundCastExpression::ToString() const {
|
|
169
169
|
return (try_cast ? "TRY_CAST(" : "CAST(") + child->GetName() + " AS " + return_type.ToString() + ")";
|
170
170
|
}
|
171
171
|
|
172
|
-
bool BoundCastExpression::Equals(const BaseExpression
|
172
|
+
bool BoundCastExpression::Equals(const BaseExpression &other_p) const {
|
173
173
|
if (!Expression::Equals(other_p)) {
|
174
174
|
return false;
|
175
175
|
}
|
176
|
-
auto &other = other_p
|
177
|
-
if (!Expression::Equals(child
|
176
|
+
auto &other = other_p.Cast<BoundCastExpression>();
|
177
|
+
if (!Expression::Equals(*child, *other.child)) {
|
178
178
|
return false;
|
179
179
|
}
|
180
180
|
if (try_cast != other.try_cast) {
|
@@ -27,11 +27,11 @@ hash_t BoundColumnRefExpression::Hash() const {
|
|
27
27
|
return CombineHash(result, duckdb::Hash<uint64_t>(depth));
|
28
28
|
}
|
29
29
|
|
30
|
-
bool BoundColumnRefExpression::Equals(const BaseExpression
|
30
|
+
bool BoundColumnRefExpression::Equals(const BaseExpression &other_p) const {
|
31
31
|
if (!Expression::Equals(other_p)) {
|
32
32
|
return false;
|
33
33
|
}
|
34
|
-
auto &other = other_p
|
34
|
+
auto &other = other_p.Cast<BoundColumnRefExpression>();
|
35
35
|
return other.binding == binding && other.depth == depth;
|
36
36
|
}
|
37
37
|
|
@@ -14,15 +14,15 @@ string BoundComparisonExpression::ToString() const {
|
|
14
14
|
return ComparisonExpression::ToString<BoundComparisonExpression, Expression>(*this);
|
15
15
|
}
|
16
16
|
|
17
|
-
bool BoundComparisonExpression::Equals(const BaseExpression
|
17
|
+
bool BoundComparisonExpression::Equals(const BaseExpression &other_p) const {
|
18
18
|
if (!Expression::Equals(other_p)) {
|
19
19
|
return false;
|
20
20
|
}
|
21
|
-
auto &other = other_p
|
22
|
-
if (!Expression::Equals(left
|
21
|
+
auto &other = other_p.Cast<BoundComparisonExpression>();
|
22
|
+
if (!Expression::Equals(*left, *other.left)) {
|
23
23
|
return false;
|
24
24
|
}
|
25
|
-
if (!Expression::Equals(right
|
25
|
+
if (!Expression::Equals(*right, *other.right)) {
|
26
26
|
return false;
|
27
27
|
}
|
28
28
|
return true;
|
@@ -20,11 +20,11 @@ string BoundConjunctionExpression::ToString() const {
|
|
20
20
|
return ConjunctionExpression::ToString<BoundConjunctionExpression, Expression>(*this);
|
21
21
|
}
|
22
22
|
|
23
|
-
bool BoundConjunctionExpression::Equals(const BaseExpression
|
23
|
+
bool BoundConjunctionExpression::Equals(const BaseExpression &other_p) const {
|
24
24
|
if (!Expression::Equals(other_p)) {
|
25
25
|
return false;
|
26
26
|
}
|
27
|
-
auto &other = other_p
|
27
|
+
auto &other = other_p.Cast<BoundConjunctionExpression>();
|
28
28
|
return ExpressionUtil::SetEquals(children, other.children);
|
29
29
|
}
|
30
30
|
|
@@ -14,11 +14,11 @@ string BoundConstantExpression::ToString() const {
|
|
14
14
|
return value.ToSQLString();
|
15
15
|
}
|
16
16
|
|
17
|
-
bool BoundConstantExpression::Equals(const BaseExpression
|
17
|
+
bool BoundConstantExpression::Equals(const BaseExpression &other_p) const {
|
18
18
|
if (!Expression::Equals(other_p)) {
|
19
19
|
return false;
|
20
20
|
}
|
21
|
-
auto &other = other_p
|
21
|
+
auto &other = other_p.Cast<BoundConstantExpression>();
|
22
22
|
return value.type() == other.value.type() && !ValueOperations::DistinctFrom(value, other.value);
|
23
23
|
}
|
24
24
|
|
@@ -22,7 +22,7 @@ string BoundExpression::ToString() const {
|
|
22
22
|
return expr->ToString();
|
23
23
|
}
|
24
24
|
|
25
|
-
bool BoundExpression::Equals(const BaseExpression
|
25
|
+
bool BoundExpression::Equals(const BaseExpression &other) const {
|
26
26
|
return false;
|
27
27
|
}
|
28
28
|
hash_t BoundExpression::Hash() const {
|
@@ -2,7 +2,6 @@
|
|
2
2
|
#include "duckdb/parser/expression/function_expression.hpp"
|
3
3
|
#include "duckdb/catalog/catalog_entry/scalar_function_catalog_entry.hpp"
|
4
4
|
#include "duckdb/common/types/hash.hpp"
|
5
|
-
#include "duckdb/parser/expression_util.hpp"
|
6
5
|
#include "duckdb/function/function_serialization.hpp"
|
7
6
|
|
8
7
|
namespace duckdb {
|
@@ -39,15 +38,15 @@ hash_t BoundFunctionExpression::Hash() const {
|
|
39
38
|
return CombineHash(result, function.Hash());
|
40
39
|
}
|
41
40
|
|
42
|
-
bool BoundFunctionExpression::Equals(const BaseExpression
|
41
|
+
bool BoundFunctionExpression::Equals(const BaseExpression &other_p) const {
|
43
42
|
if (!Expression::Equals(other_p)) {
|
44
43
|
return false;
|
45
44
|
}
|
46
|
-
auto &other = other_p
|
45
|
+
auto &other = other_p.Cast<BoundFunctionExpression>();
|
47
46
|
if (other.function != function) {
|
48
47
|
return false;
|
49
48
|
}
|
50
|
-
if (!
|
49
|
+
if (!Expression::ListEquals(children, other.children)) {
|
51
50
|
return false;
|
52
51
|
}
|
53
52
|
if (!FunctionData::Equals(bind_info.get(), other.bind_info.get())) {
|
@@ -1,6 +1,5 @@
|
|
1
1
|
#include "duckdb/planner/expression/bound_lambda_expression.hpp"
|
2
2
|
#include "duckdb/common/string_util.hpp"
|
3
|
-
#include "duckdb/parser/expression_util.hpp"
|
4
3
|
|
5
4
|
namespace duckdb {
|
6
5
|
|
@@ -14,15 +13,15 @@ string BoundLambdaExpression::ToString() const {
|
|
14
13
|
return lambda_expr->ToString();
|
15
14
|
}
|
16
15
|
|
17
|
-
bool BoundLambdaExpression::Equals(const BaseExpression
|
16
|
+
bool BoundLambdaExpression::Equals(const BaseExpression &other_p) const {
|
18
17
|
if (!Expression::Equals(other_p)) {
|
19
18
|
return false;
|
20
19
|
}
|
21
|
-
auto &other = other_p
|
22
|
-
if (!Expression::Equals(lambda_expr
|
20
|
+
auto &other = other_p.Cast<BoundLambdaExpression>();
|
21
|
+
if (!Expression::Equals(*lambda_expr, *other.lambda_expr)) {
|
23
22
|
return false;
|
24
23
|
}
|
25
|
-
if (!
|
24
|
+
if (!Expression::ListEquals(captures, other.captures)) {
|
26
25
|
return false;
|
27
26
|
}
|
28
27
|
if (parameter_count != other.parameter_count) {
|
@@ -30,11 +30,11 @@ hash_t BoundLambdaRefExpression::Hash() const {
|
|
30
30
|
return CombineHash(result, duckdb::Hash<uint64_t>(depth));
|
31
31
|
}
|
32
32
|
|
33
|
-
bool BoundLambdaRefExpression::Equals(const BaseExpression
|
33
|
+
bool BoundLambdaRefExpression::Equals(const BaseExpression &other_p) const {
|
34
34
|
if (!Expression::Equals(other_p)) {
|
35
35
|
return false;
|
36
36
|
}
|
37
|
-
auto &other = other_p
|
37
|
+
auto &other = other_p.Cast<BoundLambdaRefExpression>();
|
38
38
|
return other.binding == binding && other.lambda_index == lambda_index && other.depth == depth;
|
39
39
|
}
|
40
40
|
|
@@ -1,6 +1,5 @@
|
|
1
1
|
#include "duckdb/planner/expression/bound_operator_expression.hpp"
|
2
2
|
#include "duckdb/common/string_util.hpp"
|
3
|
-
#include "duckdb/parser/expression_util.hpp"
|
4
3
|
#include "duckdb/parser/expression/operator_expression.hpp"
|
5
4
|
#include "duckdb/common/field_writer.hpp"
|
6
5
|
|
@@ -14,12 +13,12 @@ string BoundOperatorExpression::ToString() const {
|
|
14
13
|
return OperatorExpression::ToString<BoundOperatorExpression, Expression>(*this);
|
15
14
|
}
|
16
15
|
|
17
|
-
bool BoundOperatorExpression::Equals(const BaseExpression
|
16
|
+
bool BoundOperatorExpression::Equals(const BaseExpression &other_p) const {
|
18
17
|
if (!Expression::Equals(other_p)) {
|
19
18
|
return false;
|
20
19
|
}
|
21
|
-
auto &other = other_p
|
22
|
-
if (!
|
20
|
+
auto &other = other_p.Cast<BoundOperatorExpression>();
|
21
|
+
if (!Expression::ListEquals(children, other.children)) {
|
23
22
|
return false;
|
24
23
|
}
|
25
24
|
return true;
|
@@ -43,11 +43,11 @@ string BoundParameterExpression::ToString() const {
|
|
43
43
|
return "$" + to_string(parameter_nr);
|
44
44
|
}
|
45
45
|
|
46
|
-
bool BoundParameterExpression::Equals(const BaseExpression
|
46
|
+
bool BoundParameterExpression::Equals(const BaseExpression &other_p) const {
|
47
47
|
if (!Expression::Equals(other_p)) {
|
48
48
|
return false;
|
49
49
|
}
|
50
|
-
auto &other = other_p
|
50
|
+
auto &other = other_p.Cast<BoundParameterExpression>();
|
51
51
|
return parameter_nr == other.parameter_nr;
|
52
52
|
}
|
53
53
|
|
@@ -28,11 +28,11 @@ string BoundReferenceExpression::ToString() const {
|
|
28
28
|
return "#" + to_string(index);
|
29
29
|
}
|
30
30
|
|
31
|
-
bool BoundReferenceExpression::Equals(const BaseExpression
|
31
|
+
bool BoundReferenceExpression::Equals(const BaseExpression &other_p) const {
|
32
32
|
if (!Expression::Equals(other_p)) {
|
33
33
|
return false;
|
34
34
|
}
|
35
|
-
auto &other = other_p
|
35
|
+
auto &other = other_p.Cast<BoundReferenceExpression>();
|
36
36
|
return other.index == index;
|
37
37
|
}
|
38
38
|
|
@@ -12,7 +12,7 @@ string BoundSubqueryExpression::ToString() const {
|
|
12
12
|
return "SUBQUERY";
|
13
13
|
}
|
14
14
|
|
15
|
-
bool BoundSubqueryExpression::Equals(const BaseExpression
|
15
|
+
bool BoundSubqueryExpression::Equals(const BaseExpression &other_p) const {
|
16
16
|
// equality between bound subqueries not implemented currently
|
17
17
|
return false;
|
18
18
|
}
|
@@ -23,12 +23,12 @@ hash_t BoundUnnestExpression::Hash() const {
|
|
23
23
|
return CombineHash(result, duckdb::Hash("unnest"));
|
24
24
|
}
|
25
25
|
|
26
|
-
bool BoundUnnestExpression::Equals(const BaseExpression
|
26
|
+
bool BoundUnnestExpression::Equals(const BaseExpression &other_p) const {
|
27
27
|
if (!Expression::Equals(other_p)) {
|
28
28
|
return false;
|
29
29
|
}
|
30
|
-
auto &other = other_p
|
31
|
-
if (!Expression::Equals(child
|
30
|
+
auto &other = other_p.Cast<BoundUnnestExpression>();
|
31
|
+
if (!Expression::Equals(*child, *other.child)) {
|
32
32
|
return false;
|
33
33
|
}
|
34
34
|
return true;
|
@@ -21,11 +21,11 @@ string BoundWindowExpression::ToString() const {
|
|
21
21
|
function_name);
|
22
22
|
}
|
23
23
|
|
24
|
-
bool BoundWindowExpression::Equals(const BaseExpression
|
24
|
+
bool BoundWindowExpression::Equals(const BaseExpression &other_p) const {
|
25
25
|
if (!Expression::Equals(other_p)) {
|
26
26
|
return false;
|
27
27
|
}
|
28
|
-
auto &other = other_p
|
28
|
+
auto &other = other_p.Cast<BoundWindowExpression>();
|
29
29
|
|
30
30
|
if (ignore_nulls != other.ignore_nulls) {
|
31
31
|
return false;
|
@@ -34,24 +34,17 @@ bool BoundWindowExpression::Equals(const BaseExpression *other_p) const {
|
|
34
34
|
return false;
|
35
35
|
}
|
36
36
|
// check if the child expressions are equivalent
|
37
|
-
if (other.children
|
37
|
+
if (!Expression::ListEquals(children, other.children)) {
|
38
38
|
return false;
|
39
39
|
}
|
40
|
-
for (idx_t i = 0; i < children.size(); i++) {
|
41
|
-
if (!Expression::Equals(children[i].get(), other.children[i].get())) {
|
42
|
-
return false;
|
43
|
-
}
|
44
|
-
}
|
45
40
|
// check if the filter expressions are equivalent
|
46
|
-
if (!Expression::Equals(filter_expr
|
41
|
+
if (!Expression::Equals(filter_expr, other.filter_expr)) {
|
47
42
|
return false;
|
48
43
|
}
|
49
44
|
|
50
45
|
// check if the framing expressions are equivalent
|
51
|
-
if (!Expression::Equals(start_expr.
|
52
|
-
!Expression::Equals(
|
53
|
-
!Expression::Equals(offset_expr.get(), other.offset_expr.get()) ||
|
54
|
-
!Expression::Equals(default_expr.get(), other.default_expr.get())) {
|
46
|
+
if (!Expression::Equals(start_expr, other.start_expr) || !Expression::Equals(end_expr, other.end_expr) ||
|
47
|
+
!Expression::Equals(offset_expr, other.offset_expr) || !Expression::Equals(default_expr, other.default_expr)) {
|
55
48
|
return false;
|
56
49
|
}
|
57
50
|
|
@@ -60,14 +53,9 @@ bool BoundWindowExpression::Equals(const BaseExpression *other_p) const {
|
|
60
53
|
|
61
54
|
bool BoundWindowExpression::KeysAreCompatible(const BoundWindowExpression &other) const {
|
62
55
|
// check if the partitions are equivalent
|
63
|
-
if (partitions
|
56
|
+
if (!Expression::ListEquals(partitions, other.partitions)) {
|
64
57
|
return false;
|
65
58
|
}
|
66
|
-
for (idx_t i = 0; i < partitions.size(); i++) {
|
67
|
-
if (!Expression::Equals(partitions[i].get(), other.partitions[i].get())) {
|
68
|
-
return false;
|
69
|
-
}
|
70
|
-
}
|
71
59
|
// check if the orderings are equivalent
|
72
60
|
if (orders.size() != other.orders.size()) {
|
73
61
|
return false;
|
@@ -76,8 +64,7 @@ bool BoundWindowExpression::KeysAreCompatible(const BoundWindowExpression &other
|
|
76
64
|
if (orders[i].type != other.orders[i].type) {
|
77
65
|
return false;
|
78
66
|
}
|
79
|
-
if (!
|
80
|
-
(BaseExpression *)other.orders[i].expression.get())) {
|
67
|
+
if (!Expression::Equals(*orders[i].expression, *other.orders[i].expression)) {
|
81
68
|
return false;
|
82
69
|
}
|
83
70
|
}
|
@@ -6,6 +6,7 @@
|
|
6
6
|
#include "duckdb/planner/expression_iterator.hpp"
|
7
7
|
#include "duckdb/storage/statistics/base_statistics.hpp"
|
8
8
|
#include "duckdb/planner/expression/list.hpp"
|
9
|
+
#include "duckdb/parser/expression_util.hpp"
|
9
10
|
|
10
11
|
namespace duckdb {
|
11
12
|
|
@@ -165,4 +166,18 @@ unique_ptr<Expression> Expression::Deserialize(Deserializer &source, PlanDeseria
|
|
165
166
|
return result;
|
166
167
|
}
|
167
168
|
|
169
|
+
bool Expression::Equals(const unique_ptr<Expression> &left, const unique_ptr<Expression> &right) {
|
170
|
+
if (left.get() == right.get()) {
|
171
|
+
return true;
|
172
|
+
}
|
173
|
+
if (!left || !right) {
|
174
|
+
return false;
|
175
|
+
}
|
176
|
+
return left->Equals(*right);
|
177
|
+
}
|
178
|
+
|
179
|
+
bool Expression::ListEquals(const vector<unique_ptr<Expression>> &left, const vector<unique_ptr<Expression>> &right) {
|
180
|
+
return ExpressionUtil::ListEquals(left, right);
|
181
|
+
}
|
182
|
+
|
168
183
|
} // namespace duckdb
|
@@ -62,8 +62,8 @@ idx_t BaseSelectBinder::TryBindGroup(ParsedExpression &expr, idx_t depth) {
|
|
62
62
|
}
|
63
63
|
#ifdef DEBUG
|
64
64
|
for (auto entry : info.map) {
|
65
|
-
D_ASSERT(!entry.first.get().Equals(
|
66
|
-
D_ASSERT(!expr.Equals(
|
65
|
+
D_ASSERT(!entry.first.get().Equals(expr));
|
66
|
+
D_ASSERT(!expr.Equals(entry.first.get()));
|
67
67
|
}
|
68
68
|
#endif
|
69
69
|
return DConstants::INVALID_INDEX;
|
@@ -230,12 +230,12 @@ void ExpressionIterator::EnumerateQueryNodeChildren(BoundQueryNode &node,
|
|
230
230
|
for (idx_t i = 0; i < node.modifiers.size(); i++) {
|
231
231
|
switch (node.modifiers[i]->type) {
|
232
232
|
case ResultModifierType::DISTINCT_MODIFIER:
|
233
|
-
for (auto &expr :
|
233
|
+
for (auto &expr : node.modifiers[i]->Cast<BoundDistinctModifier>().target_distincts) {
|
234
234
|
EnumerateExpression(expr, callback);
|
235
235
|
}
|
236
236
|
break;
|
237
237
|
case ResultModifierType::ORDER_MODIFIER:
|
238
|
-
for (auto &order :
|
238
|
+
for (auto &order : node.modifiers[i]->Cast<BoundOrderModifier>().orders) {
|
239
239
|
EnumerateExpression(order.expression, callback);
|
240
240
|
}
|
241
241
|
break;
|