duckdb 0.8.1-dev23.0 → 0.8.1-dev253.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/icu/icu-makedate.cpp +5 -4
- 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/json/json_functions.cpp +3 -0
- 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 +5 -17
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +113 -0
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
- package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
- package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
- package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
- 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 +301 -106
- package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
- 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/exception.cpp +4 -1
- package/src/duckdb/src/common/exception_format_value.cpp +19 -14
- 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/multi_file_reader.cpp +3 -0
- 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/row_data_collection_scanner.cpp +5 -4
- 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 +61 -24
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/value.cpp +3 -2
- package/src/duckdb/src/common/types/vector.cpp +98 -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 +44 -44
- 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 +97 -121
- 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/function_list.cpp +1 -0
- 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/generic/system_functions.cpp +14 -0
- 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 +4 -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 +28 -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/aggregate/physical_window.cpp +7 -5
- package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
- package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
- package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -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/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/list_casts.cpp +2 -4
- 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/pragma/pragma_queries.cpp +33 -23
- 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/regexp_util.cpp +6 -2
- 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 +6 -6
- 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 +15 -20
- package/src/duckdb/src/function/table/repeat.cpp +2 -2
- package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
- 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 -5
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +6 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
- package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
- 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 +5 -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/core_functions/scalar/generic_functions.hpp +9 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
- package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
- 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/function_serialization.hpp +3 -1
- 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 +8 -7
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
- 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/settings.hpp +9 -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/parser.hpp +2 -0
- 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 +2 -2
- 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 +2 -2
- 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/expression_binder.hpp +1 -1
- 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 +7 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -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/config.cpp +1 -0
- 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/main/settings/settings.cpp +22 -6
- 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/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/column_definition.cpp +5 -8
- 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 +4 -4
- 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 +30 -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 +9 -10
- 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_positional_reference_expression.cpp +8 -3
- 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 +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +4 -2
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +17 -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_binder.cpp +3 -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/planner.cpp +5 -15
- 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 +8 -7
- 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 +3 -3
- 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 +5 -6
- 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 +11391 -11442
- package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -4,11 +4,16 @@
|
|
4
4
|
|
5
5
|
namespace duckdb {
|
6
6
|
|
7
|
-
BindResult ExpressionBinder::
|
7
|
+
BindResult ExpressionBinder::BindPositionalReference(unique_ptr<ParsedExpression> &expr, idx_t depth,
|
8
|
+
bool root_expression) {
|
9
|
+
auto &ref = expr->Cast<PositionalReferenceExpression>();
|
8
10
|
if (depth != 0) {
|
9
|
-
|
11
|
+
throw InternalException("Positional reference expression could not be bound");
|
10
12
|
}
|
11
|
-
|
13
|
+
// replace the positional reference with a column
|
14
|
+
auto column = binder.bind_context.PositionToColumn(ref);
|
15
|
+
expr = std::move(column);
|
16
|
+
return BindExpression(expr, depth, root_expression);
|
12
17
|
}
|
13
18
|
|
14
19
|
} // namespace duckdb
|
@@ -55,7 +55,7 @@ bool Binder::FindStarExpression(unique_ptr<ParsedExpression> &expr, StarExpressi
|
|
55
55
|
in_columns = true;
|
56
56
|
if (*star) {
|
57
57
|
// we can have multiple
|
58
|
-
if (!
|
58
|
+
if (!(*star)->Equals(current_star)) {
|
59
59
|
throw BinderException(
|
60
60
|
FormatError(*expr, "Multiple different STAR/COLUMNS in the same expression are not supported"));
|
61
61
|
}
|
@@ -8,6 +8,9 @@
|
|
8
8
|
namespace duckdb {
|
9
9
|
|
10
10
|
class BoundSubqueryNode : public QueryNode {
|
11
|
+
public:
|
12
|
+
static constexpr const QueryNodeType TYPE = QueryNodeType::BOUND_SUBQUERY_NODE;
|
13
|
+
|
11
14
|
public:
|
12
15
|
BoundSubqueryNode(shared_ptr<Binder> subquery_binder, unique_ptr<BoundQueryNode> bound_node,
|
13
16
|
unique_ptr<SelectStatement> subquery)
|
@@ -74,9 +77,9 @@ BindResult ExpressionBinder::BindExpression(SubqueryExpression &expr, idx_t dept
|
|
74
77
|
}
|
75
78
|
// both binding the child and binding the subquery was successful
|
76
79
|
D_ASSERT(expr.subquery->node->type == QueryNodeType::BOUND_SUBQUERY_NODE);
|
77
|
-
auto bound_subquery =
|
78
|
-
auto subquery_binder = std::move(bound_subquery
|
79
|
-
auto bound_node = std::move(bound_subquery
|
80
|
+
auto &bound_subquery = expr.subquery->node->Cast<BoundSubqueryNode>();
|
81
|
+
auto subquery_binder = std::move(bound_subquery.subquery_binder);
|
82
|
+
auto bound_node = std::move(bound_subquery.bound_node);
|
80
83
|
LogicalType return_type =
|
81
84
|
expr.subquery_type == SubqueryType::SCALAR ? bound_node->types[0] : LogicalType(LogicalTypeId::BOOLEAN);
|
82
85
|
if (return_type.id() == LogicalTypeId::UNKNOWN) {
|
@@ -113,7 +113,7 @@ void Binder::BindModifiers(OrderBinder &order_binder, QueryNode &statement, Boun
|
|
113
113
|
unique_ptr<BoundResultModifier> bound_modifier;
|
114
114
|
switch (mod->type) {
|
115
115
|
case ResultModifierType::DISTINCT_MODIFIER: {
|
116
|
-
auto &distinct = (
|
116
|
+
auto &distinct = mod->Cast<DistinctModifier>();
|
117
117
|
auto bound_distinct = make_uniq<BoundDistinctModifier>();
|
118
118
|
bound_distinct->distinct_type =
|
119
119
|
distinct.distinct_on_targets.empty() ? DistinctType::DISTINCT : DistinctType::DISTINCT_ON;
|
@@ -133,7 +133,7 @@ void Binder::BindModifiers(OrderBinder &order_binder, QueryNode &statement, Boun
|
|
133
133
|
break;
|
134
134
|
}
|
135
135
|
case ResultModifierType::ORDER_MODIFIER: {
|
136
|
-
auto &order = (
|
136
|
+
auto &order = mod->Cast<OrderModifier>();
|
137
137
|
auto bound_order = make_uniq<BoundOrderModifier>();
|
138
138
|
auto &config = DBConfig::GetConfig(context);
|
139
139
|
D_ASSERT(!order.orders.empty());
|
@@ -174,10 +174,10 @@ void Binder::BindModifiers(OrderBinder &order_binder, QueryNode &statement, Boun
|
|
174
174
|
break;
|
175
175
|
}
|
176
176
|
case ResultModifierType::LIMIT_MODIFIER:
|
177
|
-
bound_modifier = BindLimit(order_binder, (
|
177
|
+
bound_modifier = BindLimit(order_binder, mod->Cast<LimitModifier>());
|
178
178
|
break;
|
179
179
|
case ResultModifierType::LIMIT_PERCENT_MODIFIER:
|
180
|
-
bound_modifier = BindLimitPercent(order_binder, (
|
180
|
+
bound_modifier = BindLimitPercent(order_binder, mod->Cast<LimitPercentModifier>());
|
181
181
|
break;
|
182
182
|
default:
|
183
183
|
throw Exception("Unsupported result modifier");
|
@@ -203,7 +203,7 @@ void Binder::BindModifierTypes(BoundQueryNode &result, const vector<LogicalType>
|
|
203
203
|
for (auto &bound_mod : result.modifiers) {
|
204
204
|
switch (bound_mod->type) {
|
205
205
|
case ResultModifierType::DISTINCT_MODIFIER: {
|
206
|
-
auto &distinct = (
|
206
|
+
auto &distinct = bound_mod->Cast<BoundDistinctModifier>();
|
207
207
|
D_ASSERT(!distinct.target_distincts.empty());
|
208
208
|
// set types of distinct targets
|
209
209
|
for (auto &expr : distinct.target_distincts) {
|
@@ -226,19 +226,19 @@ void Binder::BindModifierTypes(BoundQueryNode &result, const vector<LogicalType>
|
|
226
226
|
break;
|
227
227
|
}
|
228
228
|
case ResultModifierType::LIMIT_MODIFIER: {
|
229
|
-
auto &limit = (
|
229
|
+
auto &limit = bound_mod->Cast<BoundLimitModifier>();
|
230
230
|
AssignReturnType(limit.limit, sql_types);
|
231
231
|
AssignReturnType(limit.offset, sql_types);
|
232
232
|
break;
|
233
233
|
}
|
234
234
|
case ResultModifierType::LIMIT_PERCENT_MODIFIER: {
|
235
|
-
auto &limit = (
|
235
|
+
auto &limit = bound_mod->Cast<BoundLimitPercentModifier>();
|
236
236
|
AssignReturnType(limit.limit, sql_types);
|
237
237
|
AssignReturnType(limit.offset, sql_types);
|
238
238
|
break;
|
239
239
|
}
|
240
240
|
case ResultModifierType::ORDER_MODIFIER: {
|
241
|
-
auto &order = (
|
241
|
+
auto &order = bound_mod->Cast<BoundOrderModifier>();
|
242
242
|
for (auto &order_node : order.orders) {
|
243
243
|
auto &expr = order_node.expression;
|
244
244
|
D_ASSERT(expr->type == ExpressionType::BOUND_COLUMN_REF);
|
@@ -13,14 +13,14 @@ unique_ptr<LogicalOperator> Binder::VisitQueryNode(BoundQueryNode &node, unique_
|
|
13
13
|
for (auto &mod : node.modifiers) {
|
14
14
|
switch (mod->type) {
|
15
15
|
case ResultModifierType::DISTINCT_MODIFIER: {
|
16
|
-
auto &bound = (
|
16
|
+
auto &bound = mod->Cast<BoundDistinctModifier>();
|
17
17
|
auto distinct = make_uniq<LogicalDistinct>(std::move(bound.target_distincts), bound.distinct_type);
|
18
18
|
distinct->AddChild(std::move(root));
|
19
19
|
root = std::move(distinct);
|
20
20
|
break;
|
21
21
|
}
|
22
22
|
case ResultModifierType::ORDER_MODIFIER: {
|
23
|
-
auto &bound = (
|
23
|
+
auto &bound = mod->Cast<BoundOrderModifier>();
|
24
24
|
if (root->type == LogicalOperatorType::LOGICAL_DISTINCT) {
|
25
25
|
auto &distinct = root->Cast<LogicalDistinct>();
|
26
26
|
if (distinct.distinct_type == DistinctType::DISTINCT_ON) {
|
@@ -37,7 +37,7 @@ unique_ptr<LogicalOperator> Binder::VisitQueryNode(BoundQueryNode &node, unique_
|
|
37
37
|
break;
|
38
38
|
}
|
39
39
|
case ResultModifierType::LIMIT_MODIFIER: {
|
40
|
-
auto &bound = (
|
40
|
+
auto &bound = mod->Cast<BoundLimitModifier>();
|
41
41
|
auto limit = make_uniq<LogicalLimit>(bound.limit_val, bound.offset_val, std::move(bound.limit),
|
42
42
|
std::move(bound.offset));
|
43
43
|
limit->AddChild(std::move(root));
|
@@ -45,7 +45,7 @@ unique_ptr<LogicalOperator> Binder::VisitQueryNode(BoundQueryNode &node, unique_
|
|
45
45
|
break;
|
46
46
|
}
|
47
47
|
case ResultModifierType::LIMIT_PERCENT_MODIFIER: {
|
48
|
-
auto &bound = (
|
48
|
+
auto &bound = mod->Cast<BoundLimitPercentModifier>();
|
49
49
|
auto limit = make_uniq<LogicalLimitPercent>(bound.limit_percent, bound.offset_val, std::move(bound.limit),
|
50
50
|
std::move(bound.offset));
|
51
51
|
limit->AddChild(std::move(root));
|
@@ -501,7 +501,7 @@ BoundStatement Binder::Bind(CreateStatement &stmt) {
|
|
501
501
|
result.plan = make_uniq<LogicalCreate>(LogicalOperatorType::LOGICAL_CREATE_SCHEMA, std::move(stmt.info));
|
502
502
|
break;
|
503
503
|
case CatalogType::VIEW_ENTRY: {
|
504
|
-
auto &base =
|
504
|
+
auto &base = stmt.info->Cast<CreateViewInfo>();
|
505
505
|
// bind the schema
|
506
506
|
auto &schema = BindCreateSchema(*stmt.info);
|
507
507
|
BindCreateViewInfo(base);
|
@@ -294,9 +294,26 @@ unique_ptr<BoundCreateTableInfo> Binder::BindCreateTableInfo(unique_ptr<CreateIn
|
|
294
294
|
BindLogicalType(context, column.TypeMutable(), &result->schema.catalog);
|
295
295
|
// We add a catalog dependency
|
296
296
|
auto type_dependency = EnumType::GetCatalog(column.Type());
|
297
|
+
|
297
298
|
if (type_dependency) {
|
298
299
|
// Only if the USER comes from a create type
|
299
|
-
|
300
|
+
if (!schema.catalog.IsTemporaryCatalog()) {
|
301
|
+
// If it is not a TEMP table we add a dependency
|
302
|
+
result->dependencies.AddDependency(*type_dependency);
|
303
|
+
} else {
|
304
|
+
auto enum_type = type_dependency->user_type;
|
305
|
+
auto &enum_entries = EnumType::GetValuesInsertOrder(enum_type);
|
306
|
+
auto enum_size = EnumType::GetSize(enum_type);
|
307
|
+
Vector copy_enum_entries_vec(LogicalType::VARCHAR, enum_size);
|
308
|
+
auto copy_enum_entries_ptr = FlatVector::GetData<string_t>(copy_enum_entries_vec);
|
309
|
+
auto enum_entries_ptr = FlatVector::GetData<string_t>(enum_entries);
|
310
|
+
for (idx_t enum_idx = 0; enum_idx < enum_size; enum_idx++) {
|
311
|
+
copy_enum_entries_ptr[enum_idx] =
|
312
|
+
StringVector::AddStringOrBlob(copy_enum_entries_vec, enum_entries_ptr[enum_idx]);
|
313
|
+
}
|
314
|
+
auto copy_type = LogicalType::ENUM(EnumType::GetTypeName(enum_type), copy_enum_entries_vec, enum_size);
|
315
|
+
column.SetType(copy_type);
|
316
|
+
}
|
300
317
|
}
|
301
318
|
}
|
302
319
|
result->dependencies.VerifyDependencies(schema.catalog, result->Base().table);
|
@@ -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
|
@@ -20,119 +20,6 @@
|
|
20
20
|
|
21
21
|
namespace duckdb {
|
22
22
|
|
23
|
-
static void BindExtraColumns(TableCatalogEntry &table, LogicalGet &get, LogicalProjection &proj, LogicalUpdate &update,
|
24
|
-
physical_index_set_t &bound_columns) {
|
25
|
-
if (bound_columns.size() <= 1) {
|
26
|
-
return;
|
27
|
-
}
|
28
|
-
idx_t found_column_count = 0;
|
29
|
-
physical_index_set_t found_columns;
|
30
|
-
for (idx_t i = 0; i < update.columns.size(); i++) {
|
31
|
-
if (bound_columns.find(update.columns[i]) != bound_columns.end()) {
|
32
|
-
// this column is referenced in the CHECK constraint
|
33
|
-
found_column_count++;
|
34
|
-
found_columns.insert(update.columns[i]);
|
35
|
-
}
|
36
|
-
}
|
37
|
-
if (found_column_count > 0 && found_column_count != bound_columns.size()) {
|
38
|
-
// columns in this CHECK constraint were referenced, but not all were part of the UPDATE
|
39
|
-
// add them to the scan and update set
|
40
|
-
for (auto &check_column_id : bound_columns) {
|
41
|
-
if (found_columns.find(check_column_id) != found_columns.end()) {
|
42
|
-
// column is already projected
|
43
|
-
continue;
|
44
|
-
}
|
45
|
-
// column is not projected yet: project it by adding the clause "i=i" to the set of updated columns
|
46
|
-
auto &column = table.GetColumns().GetColumn(check_column_id);
|
47
|
-
update.expressions.push_back(make_uniq<BoundColumnRefExpression>(
|
48
|
-
column.Type(), ColumnBinding(proj.table_index, proj.expressions.size())));
|
49
|
-
proj.expressions.push_back(make_uniq<BoundColumnRefExpression>(
|
50
|
-
column.Type(), ColumnBinding(get.table_index, get.column_ids.size())));
|
51
|
-
get.column_ids.push_back(check_column_id.index);
|
52
|
-
update.columns.push_back(check_column_id);
|
53
|
-
}
|
54
|
-
}
|
55
|
-
}
|
56
|
-
|
57
|
-
static bool TypeSupportsRegularUpdate(const LogicalType &type) {
|
58
|
-
switch (type.id()) {
|
59
|
-
case LogicalTypeId::LIST:
|
60
|
-
case LogicalTypeId::MAP:
|
61
|
-
case LogicalTypeId::UNION:
|
62
|
-
// lists and maps and unions don't support updates directly
|
63
|
-
return false;
|
64
|
-
case LogicalTypeId::STRUCT: {
|
65
|
-
auto &child_types = StructType::GetChildTypes(type);
|
66
|
-
for (auto &entry : child_types) {
|
67
|
-
if (!TypeSupportsRegularUpdate(entry.second)) {
|
68
|
-
return false;
|
69
|
-
}
|
70
|
-
}
|
71
|
-
return true;
|
72
|
-
}
|
73
|
-
default:
|
74
|
-
return true;
|
75
|
-
}
|
76
|
-
}
|
77
|
-
|
78
|
-
static void BindUpdateConstraints(TableCatalogEntry &table, LogicalGet &get, LogicalProjection &proj,
|
79
|
-
LogicalUpdate &update) {
|
80
|
-
if (!table.IsDuckTable()) {
|
81
|
-
return;
|
82
|
-
}
|
83
|
-
// check the constraints and indexes of the table to see if we need to project any additional columns
|
84
|
-
// we do this for indexes with multiple columns and CHECK constraints in the UPDATE clause
|
85
|
-
// suppose we have a constraint CHECK(i + j < 10); now we need both i and j to check the constraint
|
86
|
-
// if we are only updating one of the two columns we add the other one to the UPDATE set
|
87
|
-
// with a "useless" update (i.e. i=i) so we can verify that the CHECK constraint is not violated
|
88
|
-
for (auto &constraint : table.GetBoundConstraints()) {
|
89
|
-
if (constraint->type == ConstraintType::CHECK) {
|
90
|
-
auto &check = *reinterpret_cast<BoundCheckConstraint *>(constraint.get());
|
91
|
-
// check constraint! check if we need to add any extra columns to the UPDATE clause
|
92
|
-
BindExtraColumns(table, get, proj, update, check.bound_columns);
|
93
|
-
}
|
94
|
-
}
|
95
|
-
auto &storage = table.GetStorage();
|
96
|
-
if (update.return_chunk) {
|
97
|
-
physical_index_set_t all_columns;
|
98
|
-
for (idx_t i = 0; i < storage.column_definitions.size(); i++) {
|
99
|
-
all_columns.insert(PhysicalIndex(i));
|
100
|
-
}
|
101
|
-
BindExtraColumns(table, get, proj, update, all_columns);
|
102
|
-
}
|
103
|
-
// for index updates we always turn any update into an insert and a delete
|
104
|
-
// we thus need all the columns to be available, hence we check if the update touches any index columns
|
105
|
-
// If the returning keyword is used, we need access to the whole row in case the user requests it.
|
106
|
-
// Therefore switch the update to a delete and insert.
|
107
|
-
update.update_is_del_and_insert = false;
|
108
|
-
storage.info->indexes.Scan([&](Index &index) {
|
109
|
-
if (index.IndexIsUpdated(update.columns)) {
|
110
|
-
update.update_is_del_and_insert = true;
|
111
|
-
return true;
|
112
|
-
}
|
113
|
-
return false;
|
114
|
-
});
|
115
|
-
|
116
|
-
// we also convert any updates on LIST columns into delete + insert
|
117
|
-
for (auto &col_index : update.columns) {
|
118
|
-
auto &column = table.GetColumns().GetColumn(col_index);
|
119
|
-
if (!TypeSupportsRegularUpdate(column.Type())) {
|
120
|
-
update.update_is_del_and_insert = true;
|
121
|
-
break;
|
122
|
-
}
|
123
|
-
}
|
124
|
-
|
125
|
-
if (update.update_is_del_and_insert) {
|
126
|
-
// the update updates a column required by an index or requires returning the updated rows,
|
127
|
-
// push projections for all columns
|
128
|
-
physical_index_set_t all_columns;
|
129
|
-
for (idx_t i = 0; i < storage.column_definitions.size(); i++) {
|
130
|
-
all_columns.insert(PhysicalIndex(i));
|
131
|
-
}
|
132
|
-
BindExtraColumns(table, get, proj, update, all_columns);
|
133
|
-
}
|
134
|
-
}
|
135
|
-
|
136
23
|
// This creates a LogicalProjection and moves 'root' into it as a child
|
137
24
|
// unless there are no expressions to project, in which case it just returns 'root'
|
138
25
|
unique_ptr<LogicalOperator> Binder::BindUpdateSet(LogicalOperator &op, unique_ptr<LogicalOperator> root,
|
@@ -239,7 +126,8 @@ BoundStatement Binder::Bind(UpdateStatement &stmt) {
|
|
239
126
|
auto proj = unique_ptr_cast<LogicalOperator, LogicalProjection>(std::move(proj_tmp));
|
240
127
|
|
241
128
|
// bind any extra columns necessary for CHECK constraints or indexes
|
242
|
-
BindUpdateConstraints(
|
129
|
+
table.BindUpdateConstraints(*get, *proj, *update);
|
130
|
+
|
243
131
|
// finally add the row id column to the projection list
|
244
132
|
proj->expressions.push_back(make_uniq<BoundColumnRefExpression>(
|
245
133
|
LogicalType::ROW_TYPE, ColumnBinding(get->table_index, get->column_ids.size())));
|
@@ -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(
|
@@ -250,7 +250,9 @@ unique_ptr<BoundTableRef> Binder::BindBoundPivot(PivotRef &ref) {
|
|
250
250
|
auto &aggregates = result->bound_pivot.aggregates;
|
251
251
|
ExtractPivotAggregates(*result->child, aggregates);
|
252
252
|
if (aggregates.size() != ref.bound_aggregate_names.size()) {
|
253
|
-
throw
|
253
|
+
throw BinderException("Pivot aggregate count mismatch. Expected %llu aggregates but found %llu. Are all pivot "
|
254
|
+
"expressions aggregate functions?",
|
255
|
+
ref.bound_aggregate_names.size(), aggregates.size());
|
254
256
|
}
|
255
257
|
|
256
258
|
vector<string> child_names;
|
@@ -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>();
|
@@ -152,11 +161,12 @@ Binder::BindTableFunctionInternal(TableFunction &table_function, const string &f
|
|
152
161
|
table_function.extra_info = "(Multi-Threaded)";
|
153
162
|
}
|
154
163
|
}
|
164
|
+
} else {
|
165
|
+
throw InvalidInputException("Cannot call function \"%s\" directly - it has no bind function",
|
166
|
+
table_function.name);
|
155
167
|
}
|
156
168
|
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);
|
169
|
+
throw InternalException("Failed to bind \"%s\": return_types/names must have same size", table_function.name);
|
160
170
|
}
|
161
171
|
if (return_types.empty()) {
|
162
172
|
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
|
|