duckdb 0.7.2-dev0.0 → 0.7.2-dev1034.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.gyp +12 -7
- package/lib/duckdb.d.ts +55 -2
- package/lib/duckdb.js +20 -1
- package/package.json +1 -1
- package/src/connection.cpp +1 -2
- package/src/database.cpp +1 -1
- package/src/duckdb/extension/icu/icu-extension.cpp +4 -0
- package/src/duckdb/extension/icu/icu-list-range.cpp +207 -0
- package/src/duckdb/extension/icu/icu-table-range.cpp +194 -0
- package/src/duckdb/extension/icu/include/icu-list-range.hpp +17 -0
- package/src/duckdb/extension/icu/include/icu-table-range.hpp +17 -0
- package/src/duckdb/extension/json/include/json_common.hpp +1 -0
- package/src/duckdb/extension/json/include/json_functions.hpp +2 -0
- package/src/duckdb/extension/json/include/json_serializer.hpp +77 -0
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +147 -0
- package/src/duckdb/extension/json/json_functions/read_json.cpp +6 -5
- package/src/duckdb/extension/json/json_functions.cpp +12 -4
- package/src/duckdb/extension/json/json_scan.cpp +2 -2
- package/src/duckdb/extension/json/json_serializer.cpp +217 -0
- package/src/duckdb/extension/parquet/column_reader.cpp +94 -15
- package/src/duckdb/extension/parquet/column_writer.cpp +0 -1
- package/src/duckdb/extension/parquet/include/column_reader.hpp +1 -2
- package/src/duckdb/extension/parquet/include/decode_utils.hpp +5 -4
- package/src/duckdb/extension/parquet/include/generated_column_reader.hpp +1 -11
- package/src/duckdb/extension/parquet/include/parquet_timestamp.hpp +2 -1
- package/src/duckdb/extension/parquet/parquet-extension.cpp +12 -2
- package/src/duckdb/extension/parquet/parquet_reader.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +26 -32
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +16 -6
- package/src/duckdb/src/catalog/catalog.cpp +34 -5
- package/src/duckdb/src/catalog/catalog_entry/duck_schema_entry.cpp +4 -0
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +2 -21
- package/src/duckdb/src/catalog/catalog_entry/scalar_function_catalog_entry.cpp +7 -6
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +3 -3
- package/src/duckdb/src/catalog/catalog_entry/table_function_catalog_entry.cpp +20 -1
- package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +8 -2
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -0
- package/src/duckdb/src/catalog/default/default_functions.cpp +3 -0
- package/src/duckdb/src/catalog/dependency_list.cpp +12 -0
- package/src/duckdb/src/catalog/duck_catalog.cpp +34 -7
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +48 -4
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +1 -1
- package/src/duckdb/src/common/box_renderer.cpp +109 -23
- package/src/duckdb/src/common/enums/expression_type.cpp +8 -222
- package/src/duckdb/src/common/enums/join_type.cpp +3 -22
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +2 -0
- package/src/duckdb/src/common/enums/statement_type.cpp +2 -0
- package/src/duckdb/src/common/exception.cpp +15 -1
- package/src/duckdb/src/common/field_writer.cpp +1 -0
- package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
- package/src/duckdb/src/common/preserved_error.cpp +7 -5
- package/src/duckdb/src/common/serializer/buffered_deserializer.cpp +4 -0
- package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +15 -2
- package/src/duckdb/src/common/serializer/enum_serializer.cpp +1176 -0
- package/src/duckdb/src/common/sort/sort_state.cpp +5 -7
- package/src/duckdb/src/common/sort/sorted_block.cpp +0 -1
- package/src/duckdb/src/common/string_util.cpp +4 -1
- package/src/duckdb/src/common/types/bit.cpp +166 -87
- package/src/duckdb/src/common/types/blob.cpp +1 -1
- package/src/duckdb/src/common/types/chunk_collection.cpp +2 -2
- package/src/duckdb/src/common/types/column_data_collection.cpp +39 -2
- package/src/duckdb/src/common/types/column_data_collection_segment.cpp +11 -6
- package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
- package/src/duckdb/src/common/types/time.cpp +13 -0
- package/src/duckdb/src/common/types/value.cpp +320 -154
- package/src/duckdb/src/common/types/vector.cpp +155 -127
- package/src/duckdb/src/common/types.cpp +313 -153
- package/src/duckdb/src/common/vector_operations/vector_cast.cpp +2 -1
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +10 -5
- package/src/duckdb/src/execution/column_binding_resolver.cpp +21 -5
- package/src/duckdb/src/execution/expression_executor/execute_cast.cpp +2 -1
- package/src/duckdb/src/execution/index/art/art.cpp +6 -5
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +4 -5
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +117 -26
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +3 -0
- package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +5 -3
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +64 -17
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +12 -4
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +6 -11
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +3 -1
- package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +6 -3
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +6 -14
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +2 -2
- package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +34 -0
- package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +20 -5
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +20 -40
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +14 -2
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +21 -16
- package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +97 -0
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +95 -47
- package/src/duckdb/src/execution/physical_plan/plan_distinct.cpp +5 -8
- package/src/duckdb/src/execution/physical_plan/plan_positional_join.cpp +14 -5
- package/src/duckdb/src/execution/physical_plan_generator.cpp +3 -0
- package/src/duckdb/src/execution/window_segment_tree.cpp +173 -1
- package/src/duckdb/src/function/aggregate/algebraic/avg.cpp +0 -6
- package/src/duckdb/src/function/aggregate/distributive/bitagg.cpp +99 -95
- package/src/duckdb/src/function/aggregate/distributive/bitstring_agg.cpp +269 -0
- package/src/duckdb/src/function/aggregate/distributive/bool.cpp +2 -0
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +3 -4
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +1 -0
- package/src/duckdb/src/function/aggregate/distributive/minmax.cpp +2 -0
- package/src/duckdb/src/function/aggregate/distributive/sum.cpp +19 -16
- package/src/duckdb/src/function/aggregate/distributive_functions.cpp +1 -0
- package/src/duckdb/src/function/aggregate/holistic/approximate_quantile.cpp +5 -2
- package/src/duckdb/src/function/aggregate/holistic/mode.cpp +1 -1
- package/src/duckdb/src/function/aggregate/holistic/quantile.cpp +16 -1
- package/src/duckdb/src/function/aggregate/nested/list.cpp +8 -8
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +58 -16
- package/src/duckdb/src/function/cast/bit_cast.cpp +0 -2
- package/src/duckdb/src/function/cast/blob_cast.cpp +0 -1
- package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
- package/src/duckdb/src/function/cast/enum_casts.cpp +25 -3
- package/src/duckdb/src/function/cast/list_casts.cpp +17 -4
- package/src/duckdb/src/function/cast/map_cast.cpp +5 -2
- package/src/duckdb/src/function/cast/string_cast.cpp +36 -10
- package/src/duckdb/src/function/cast/struct_cast.cpp +24 -4
- package/src/duckdb/src/function/cast/time_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/union_casts.cpp +33 -7
- package/src/duckdb/src/function/function_binder.cpp +1 -8
- package/src/duckdb/src/function/scalar/bit/bitstring.cpp +100 -0
- package/src/duckdb/src/function/scalar/date/current.cpp +0 -2
- package/src/duckdb/src/function/scalar/date/date_diff.cpp +0 -1
- package/src/duckdb/src/function/scalar/date/date_part.cpp +18 -26
- package/src/duckdb/src/function/scalar/date/date_sub.cpp +0 -1
- package/src/duckdb/src/function/scalar/date/date_trunc.cpp +10 -14
- package/src/duckdb/src/function/scalar/generic/stats.cpp +2 -4
- package/src/duckdb/src/function/scalar/list/contains_or_position.cpp +4 -146
- package/src/duckdb/src/function/scalar/list/flatten.cpp +5 -12
- package/src/duckdb/src/function/scalar/list/list_aggregates.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_concat.cpp +8 -12
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +5 -12
- package/src/duckdb/src/function/scalar/list/list_lambdas.cpp +7 -3
- package/src/duckdb/src/function/scalar/list/list_value.cpp +6 -10
- package/src/duckdb/src/function/scalar/map/map.cpp +47 -1
- package/src/duckdb/src/function/scalar/map/map_entries.cpp +61 -0
- package/src/duckdb/src/function/scalar/map/map_extract.cpp +68 -26
- package/src/duckdb/src/function/scalar/map/map_keys_values.cpp +97 -0
- package/src/duckdb/src/function/scalar/math/numeric.cpp +101 -17
- package/src/duckdb/src/function/scalar/math_functions.cpp +3 -0
- package/src/duckdb/src/function/scalar/nested_functions.cpp +3 -0
- package/src/duckdb/src/function/scalar/operators/add.cpp +0 -9
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +29 -48
- package/src/duckdb/src/function/scalar/operators/bitwise.cpp +0 -63
- package/src/duckdb/src/function/scalar/operators/multiply.cpp +5 -6
- package/src/duckdb/src/function/scalar/operators/subtract.cpp +0 -6
- package/src/duckdb/src/function/scalar/string/caseconvert.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/hex.cpp +201 -0
- package/src/duckdb/src/function/scalar/string/instr.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/length.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/like.cpp +2 -6
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +243 -0
- package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +79 -0
- package/src/duckdb/src/function/scalar/string/regexp.cpp +21 -80
- package/src/duckdb/src/function/scalar/string/substring.cpp +2 -6
- package/src/duckdb/src/function/scalar/string_functions.cpp +2 -0
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +5 -10
- package/src/duckdb/src/function/scalar/struct/struct_insert.cpp +11 -14
- package/src/duckdb/src/function/scalar/struct/struct_pack.cpp +6 -7
- package/src/duckdb/src/function/table/arrow.cpp +5 -2
- package/src/duckdb/src/function/table/arrow_conversion.cpp +25 -1
- package/src/duckdb/src/function/table/checkpoint.cpp +5 -1
- package/src/duckdb/src/function/table/read_csv.cpp +55 -0
- package/src/duckdb/src/function/table/system/duckdb_constraints.cpp +2 -2
- package/src/duckdb/src/function/table/system/test_all_types.cpp +2 -2
- package/src/duckdb/src/function/table/table_scan.cpp +1 -1
- package/src/duckdb/src/function/table/version/pragma_version.cpp +2 -2
- package/src/duckdb/src/function/table_function.cpp +30 -11
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +6 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +1 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_function_catalog_entry.hpp +6 -8
- package/src/duckdb/src/include/duckdb/catalog/dependency_list.hpp +3 -0
- package/src/duckdb/src/include/duckdb/catalog/duck_catalog.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/box_renderer.hpp +8 -2
- package/src/duckdb/src/include/duckdb/common/constants.hpp +0 -19
- package/src/duckdb/src/include/duckdb/common/enums/aggregate_handling.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/expression_type.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +7 -4
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/enums/order_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/set_operation_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/statement_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/tableref_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/exception.hpp +69 -2
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +12 -4
- package/src/duckdb/src/include/duckdb/common/{http_stats.hpp → http_state.hpp} +18 -4
- package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/optional_ptr.hpp +45 -0
- package/src/duckdb/src/include/duckdb/common/preserved_error.hpp +6 -1
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_deserializer.hpp +4 -2
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +8 -2
- package/src/duckdb/src/include/duckdb/common/serializer/enum_serializer.hpp +113 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +336 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +268 -0
- package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +126 -0
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +13 -0
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +25 -0
- package/src/duckdb/src/include/duckdb/common/types/bit.hpp +12 -7
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +17 -48
- package/src/duckdb/src/include/duckdb/common/types/value_map.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/types.hpp +45 -8
- package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_cross_product.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_file_handle.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +6 -0
- package/src/duckdb/src/include/duckdb/execution/operator/projection/physical_projection.hpp +5 -0
- package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +1 -3
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +54 -0
- package/src/duckdb/src/include/duckdb/function/aggregate/distributive_functions.hpp +5 -0
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +18 -6
- package/src/duckdb/src/include/duckdb/function/cast/bound_cast_data.hpp +84 -0
- package/src/duckdb/src/include/duckdb/function/cast/cast_function_set.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +28 -64
- package/src/duckdb/src/include/duckdb/function/function_binder.hpp +3 -6
- package/src/duckdb/src/include/duckdb/function/scalar/bit_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +138 -0
- package/src/duckdb/src/include/duckdb/function/scalar/math_functions.hpp +8 -0
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +59 -0
- package/src/duckdb/src/include/duckdb/function/scalar/regexp.hpp +81 -1
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +12 -1
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +10 -0
- package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +3 -3
- package/src/duckdb/src/include/duckdb/main/config.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/connection_manager.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/database.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/relation/explain_relation.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/relation.hpp +2 -1
- package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +2 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/optimizer/rule/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp +24 -0
- package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +4 -2
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +4 -2
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +5 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/{alter_function_info.hpp → alter_scalar_function_info.hpp} +13 -13
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_function_info.hpp +47 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +6 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_function_info.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/sample_options.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/recursive_cte_node.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/select_node.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/set_operation_node.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +13 -2
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +24 -1
- package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/statement/multi_statement.hpp +28 -0
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +6 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +87 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +3 -1
- package/src/duckdb/src/include/duckdb/parser/tokens.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +33 -0
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +15 -4
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/base_select_binder.hpp +64 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/having_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/order_binder.hpp +4 -1
- package/src/duckdb/src/include/duckdb/planner/expression_binder/qualify_binder.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder/select_binder.hpp +9 -38
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_asof_join.hpp +22 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +5 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/query_node/bound_select_node.hpp +8 -2
- package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +2 -0
- package/src/duckdb/src/include/duckdb/storage/buffer_manager.hpp +76 -44
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.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/chimp/chimp_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_scan.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_fetch.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_scan.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +5 -2
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/index.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/meta_block_reader.hpp +7 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +93 -29
- package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +22 -3
- package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +8 -6
- package/src/duckdb/src/include/duckdb/storage/statistics/list_stats.hpp +41 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/node_statistics.hpp +26 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +114 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats_union.hpp +62 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/segment_statistics.hpp +2 -7
- package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +74 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/struct_stats.hpp +42 -0
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +2 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +6 -3
- package/src/duckdb/src/include/duckdb/storage/table/column_data_checkpointer.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_segment.hpp +7 -5
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +6 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +10 -6
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +8 -5
- package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +37 -0
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +10 -1
- package/src/duckdb/src/include/duckdb/storage/table/segment_base.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +271 -26
- package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/table/update_segment.hpp +0 -1
- package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +1 -1
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -2
- package/src/duckdb/src/include/duckdb.h +50 -2
- package/src/duckdb/src/include/duckdb.hpp +0 -1
- package/src/duckdb/src/main/capi/pending-c.cpp +16 -3
- package/src/duckdb/src/main/capi/result-c.cpp +27 -1
- package/src/duckdb/src/main/capi/stream-c.cpp +25 -0
- package/src/duckdb/src/main/client_context.cpp +38 -34
- package/src/duckdb/src/main/client_data.cpp +7 -6
- package/src/duckdb/src/main/config.cpp +70 -1
- package/src/duckdb/src/main/database.cpp +19 -2
- package/src/duckdb/src/main/extension/extension_install.cpp +7 -2
- package/src/duckdb/src/main/prepared_statement.cpp +4 -0
- package/src/duckdb/src/main/query_profiler.cpp +17 -15
- package/src/duckdb/src/main/relation/explain_relation.cpp +3 -3
- package/src/duckdb/src/main/relation.cpp +3 -2
- package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +1 -0
- package/src/duckdb/src/optimizer/deliminator.cpp +1 -1
- package/src/duckdb/src/optimizer/filter_combiner.cpp +1 -1
- package/src/duckdb/src/optimizer/filter_pullup.cpp +3 -1
- package/src/duckdb/src/optimizer/filter_pushdown.cpp +14 -8
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +105 -71
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +31 -12
- package/src/duckdb/src/optimizer/optimizer.cpp +1 -0
- package/src/duckdb/src/optimizer/pullup/pullup_from_left.cpp +2 -2
- package/src/duckdb/src/optimizer/pushdown/pushdown_aggregate.cpp +33 -5
- package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +1 -1
- package/src/duckdb/src/optimizer/pushdown/pushdown_inner_join.cpp +3 -0
- package/src/duckdb/src/optimizer/pushdown/pushdown_left_join.cpp +5 -12
- package/src/duckdb/src/optimizer/pushdown/pushdown_mark_join.cpp +2 -2
- package/src/duckdb/src/optimizer/pushdown/pushdown_single_join.cpp +1 -1
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +1 -0
- package/src/duckdb/src/optimizer/rule/move_constants.cpp +10 -4
- package/src/duckdb/src/optimizer/rule/ordered_aggregate_optimizer.cpp +30 -0
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +9 -2
- package/src/duckdb/src/optimizer/statistics/expression/propagate_aggregate.cpp +9 -3
- package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +6 -7
- package/src/duckdb/src/optimizer/statistics/expression/propagate_cast.cpp +14 -11
- package/src/duckdb/src/optimizer/statistics/expression/propagate_columnref.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_comparison.cpp +13 -15
- package/src/duckdb/src/optimizer/statistics/expression/propagate_conjunction.cpp +0 -1
- package/src/duckdb/src/optimizer/statistics/expression/propagate_constant.cpp +3 -75
- package/src/duckdb/src/optimizer/statistics/expression/propagate_function.cpp +7 -2
- package/src/duckdb/src/optimizer/statistics/expression/propagate_operator.cpp +10 -0
- package/src/duckdb/src/optimizer/statistics/operator/propagate_aggregate.cpp +2 -3
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +29 -32
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +5 -5
- package/src/duckdb/src/optimizer/statistics/operator/propagate_set_operation.cpp +3 -3
- package/src/duckdb/src/optimizer/statistics_propagator.cpp +2 -1
- package/src/duckdb/src/optimizer/unnest_rewriter.cpp +2 -2
- package/src/duckdb/src/parallel/meta_pipeline.cpp +0 -4
- package/src/duckdb/src/parser/common_table_expression_info.cpp +19 -0
- package/src/duckdb/src/parser/expression/between_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/case_expression.cpp +28 -0
- package/src/duckdb/src/parser/expression/cast_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/collate_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +17 -0
- package/src/duckdb/src/parser/expression/constant_expression.cpp +14 -0
- package/src/duckdb/src/parser/expression/default_expression.cpp +7 -0
- package/src/duckdb/src/parser/expression/function_expression.cpp +35 -0
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +16 -0
- package/src/duckdb/src/parser/expression/operator_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +15 -0
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +14 -0
- package/src/duckdb/src/parser/expression/star_expression.cpp +26 -6
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +20 -0
- package/src/duckdb/src/parser/expression/window_expression.cpp +43 -0
- package/src/duckdb/src/parser/parsed_data/alter_info.cpp +7 -3
- package/src/duckdb/src/parser/parsed_data/alter_scalar_function_info.cpp +56 -0
- package/src/duckdb/src/parser/parsed_data/alter_table_function_info.cpp +51 -0
- package/src/duckdb/src/parser/parsed_data/create_scalar_function_info.cpp +3 -2
- package/src/duckdb/src/parser/parsed_data/create_table_function_info.cpp +6 -0
- package/src/duckdb/src/parser/parsed_data/sample_options.cpp +22 -10
- package/src/duckdb/src/parser/parsed_expression.cpp +72 -0
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +15 -1
- package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +21 -0
- package/src/duckdb/src/parser/query_node/select_node.cpp +31 -0
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +17 -0
- package/src/duckdb/src/parser/query_node.cpp +51 -1
- package/src/duckdb/src/parser/result_modifier.cpp +78 -0
- package/src/duckdb/src/parser/statement/multi_statement.cpp +18 -0
- package/src/duckdb/src/parser/statement/select_statement.cpp +12 -0
- package/src/duckdb/src/parser/tableref/basetableref.cpp +21 -0
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +4 -0
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +17 -0
- package/src/duckdb/src/parser/tableref/joinref.cpp +29 -0
- package/src/duckdb/src/parser/tableref/pivotref.cpp +373 -0
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +15 -0
- package/src/duckdb/src/parser/tableref/table_function.cpp +17 -0
- package/src/duckdb/src/parser/tableref.cpp +49 -0
- package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +11 -0
- package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +17 -2
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +63 -42
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +1 -1
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +1 -1
- package/src/duckdb/src/parser/transform/helpers/transform_alias.cpp +12 -6
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +24 -0
- package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +7 -0
- package/src/duckdb/src/parser/transform/helpers/transform_orderby.cpp +0 -7
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +3 -2
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +4 -0
- package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +4 -0
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +179 -0
- package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_select.cpp +8 -0
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +2 -3
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +12 -1
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +121 -0
- package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +2 -0
- package/src/duckdb/src/parser/transformer.cpp +15 -3
- package/src/duckdb/src/planner/bind_context.cpp +18 -25
- package/src/duckdb/src/planner/binder/expression/bind_aggregate_expression.cpp +9 -7
- package/src/duckdb/src/planner/binder/expression/bind_columnref_expression.cpp +4 -3
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +23 -12
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +3 -2
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +176 -0
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +4 -0
- package/src/duckdb/src/planner/binder/expression/bind_unnest_expression.cpp +163 -24
- package/src/duckdb/src/planner/binder/expression/bind_window_expression.cpp +2 -2
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +109 -94
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +11 -0
- package/src/duckdb/src/planner/binder/query_node/plan_select_node.cpp +9 -4
- package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +5 -3
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +3 -2
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +9 -1
- package/src/duckdb/src/planner/binder/statement/bind_delete.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +12 -8
- package/src/duckdb/src/planner/binder/statement/bind_logical_plan.cpp +17 -0
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +4 -2
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +19 -3
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +366 -0
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +11 -1
- package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -0
- package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +61 -13
- package/src/duckdb/src/planner/binder.cpp +19 -24
- package/src/duckdb/src/planner/bound_result_modifier.cpp +27 -1
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +9 -2
- package/src/duckdb/src/planner/expression/bound_expression.cpp +4 -0
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +146 -0
- package/src/duckdb/src/planner/expression_binder/having_binder.cpp +6 -3
- package/src/duckdb/src/planner/expression_binder/qualify_binder.cpp +3 -3
- package/src/duckdb/src/planner/expression_binder/select_binder.cpp +1 -132
- package/src/duckdb/src/planner/expression_binder.cpp +10 -3
- package/src/duckdb/src/planner/expression_iterator.cpp +17 -10
- package/src/duckdb/src/planner/filter/constant_filter.cpp +4 -6
- package/src/duckdb/src/planner/logical_operator.cpp +7 -2
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +6 -0
- package/src/duckdb/src/planner/operator/logical_asof_join.cpp +8 -0
- package/src/duckdb/src/planner/operator/logical_distinct.cpp +3 -0
- package/src/duckdb/src/planner/planner.cpp +2 -1
- package/src/duckdb/src/planner/pragma_handler.cpp +10 -2
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +3 -1
- package/src/duckdb/src/storage/buffer_manager.cpp +44 -46
- package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +4 -15
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +10 -4
- package/src/duckdb/src/storage/checkpoint_manager.cpp +9 -3
- package/src/duckdb/src/storage/compression/bitpacking.cpp +28 -24
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +43 -45
- package/src/duckdb/src/storage/compression/numeric_constant.cpp +9 -10
- package/src/duckdb/src/storage/compression/patas.cpp +1 -1
- package/src/duckdb/src/storage/compression/rle.cpp +19 -15
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +5 -5
- package/src/duckdb/src/storage/data_table.cpp +20 -20
- package/src/duckdb/src/storage/index.cpp +12 -1
- package/src/duckdb/src/storage/local_storage.cpp +20 -23
- package/src/duckdb/src/storage/meta_block_reader.cpp +22 -0
- package/src/duckdb/src/storage/statistics/base_statistics.cpp +373 -128
- package/src/duckdb/src/storage/statistics/column_statistics.cpp +57 -3
- package/src/duckdb/src/storage/statistics/distinct_statistics.cpp +8 -9
- package/src/duckdb/src/storage/statistics/list_stats.cpp +121 -0
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +591 -0
- package/src/duckdb/src/storage/statistics/numeric_stats_union.cpp +65 -0
- package/src/duckdb/src/storage/statistics/segment_statistics.cpp +2 -11
- package/src/duckdb/src/storage/statistics/string_stats.cpp +273 -0
- package/src/duckdb/src/storage/statistics/struct_stats.cpp +133 -0
- package/src/duckdb/src/storage/storage_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_checkpoint_state.cpp +4 -10
- package/src/duckdb/src/storage/table/column_data.cpp +45 -46
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +7 -8
- package/src/duckdb/src/storage/table/column_segment.cpp +13 -14
- package/src/duckdb/src/storage/table/list_column_data.cpp +41 -59
- package/src/duckdb/src/storage/table/persistent_table_data.cpp +2 -1
- package/src/duckdb/src/storage/table/row_group.cpp +38 -32
- package/src/duckdb/src/storage/table/row_group_collection.cpp +94 -78
- package/src/duckdb/src/storage/table/scan_state.cpp +22 -3
- package/src/duckdb/src/storage/table/standard_column_data.cpp +7 -6
- package/src/duckdb/src/storage/table/struct_column_data.cpp +16 -16
- package/src/duckdb/src/storage/table/table_statistics.cpp +27 -7
- package/src/duckdb/src/storage/table/update_segment.cpp +20 -18
- package/src/duckdb/src/storage/wal_replay.cpp +8 -5
- package/src/duckdb/src/storage/write_ahead_log.cpp +2 -2
- package/src/duckdb/src/transaction/commit_state.cpp +11 -7
- package/src/duckdb/src/verification/deserialized_statement_verifier.cpp +0 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +35 -0
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +36 -2
- package/src/duckdb/third_party/libpg_query/include/nodes/primnodes.hpp +3 -3
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +1022 -530
- package/src/duckdb/third_party/libpg_query/include/parser/kwlist.hpp +8 -0
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +24462 -22828
- package/src/duckdb/third_party/re2/re2/re2.cc +9 -0
- package/src/duckdb/third_party/re2/re2/re2.h +2 -0
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +4 -4
- package/src/duckdb/ub_extension_json_json_functions.cpp +2 -0
- package/src/duckdb/ub_src_common_serializer.cpp +2 -0
- package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
- package/src/duckdb/ub_src_function_aggregate_distributive.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_bit.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_map.cpp +4 -0
- package/src/duckdb/ub_src_function_scalar_string.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_string_regexp.cpp +4 -0
- package/src/duckdb/ub_src_main_capi.cpp +2 -0
- package/src/duckdb/ub_src_optimizer_rule.cpp +2 -0
- package/src/duckdb/ub_src_parser.cpp +2 -0
- package/src/duckdb/ub_src_parser_parsed_data.cpp +4 -2
- package/src/duckdb/ub_src_parser_statement.cpp +2 -0
- package/src/duckdb/ub_src_parser_tableref.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_statement.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_tableref.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_expression.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_tableref.cpp +2 -0
- package/src/duckdb/ub_src_planner_expression_binder.cpp +2 -0
- package/src/duckdb/ub_src_planner_operator.cpp +2 -0
- package/src/duckdb/ub_src_storage_statistics.cpp +6 -6
- package/src/duckdb/ub_src_storage_table.cpp +0 -2
- package/src/duckdb_node.hpp +2 -1
- package/src/statement.cpp +5 -5
- package/src/utils.cpp +27 -2
- package/test/extension.test.ts +44 -26
- package/test/syntax_error.test.ts +3 -1
- package/filelist.cache +0 -0
- package/src/duckdb/src/include/duckdb/main/loadable_extension.hpp +0 -59
- package/src/duckdb/src/include/duckdb/storage/statistics/list_statistics.hpp +0 -36
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_statistics.hpp +0 -75
- package/src/duckdb/src/include/duckdb/storage/statistics/string_statistics.hpp +0 -49
- package/src/duckdb/src/include/duckdb/storage/statistics/struct_statistics.hpp +0 -36
- package/src/duckdb/src/include/duckdb/storage/statistics/validity_statistics.hpp +0 -45
- package/src/duckdb/src/parser/parsed_data/alter_function_info.cpp +0 -55
- package/src/duckdb/src/storage/statistics/list_statistics.cpp +0 -94
- package/src/duckdb/src/storage/statistics/numeric_statistics.cpp +0 -307
- package/src/duckdb/src/storage/statistics/string_statistics.cpp +0 -220
- package/src/duckdb/src/storage/statistics/struct_statistics.cpp +0 -108
- package/src/duckdb/src/storage/statistics/validity_statistics.cpp +0 -91
- package/src/duckdb/src/storage/table/segment_tree.cpp +0 -179
|
@@ -32,15 +32,23 @@ struct CommonTableExpressionInfo;
|
|
|
32
32
|
struct GroupingExpressionMap;
|
|
33
33
|
class OnConflictInfo;
|
|
34
34
|
class UpdateSetInfo;
|
|
35
|
+
struct PivotColumn;
|
|
35
36
|
|
|
36
37
|
//! The transformer class is responsible for transforming the internal Postgres
|
|
37
38
|
//! parser representation into the DuckDB representation
|
|
38
39
|
class Transformer {
|
|
39
40
|
friend class StackChecker;
|
|
40
41
|
|
|
42
|
+
struct CreatePivotEntry {
|
|
43
|
+
string enum_name;
|
|
44
|
+
unique_ptr<SelectNode> base;
|
|
45
|
+
unique_ptr<ParsedExpression> column;
|
|
46
|
+
};
|
|
47
|
+
|
|
41
48
|
public:
|
|
42
49
|
explicit Transformer(idx_t max_expression_depth_p);
|
|
43
50
|
explicit Transformer(Transformer *parent);
|
|
51
|
+
~Transformer();
|
|
44
52
|
|
|
45
53
|
//! Transforms a Postgres parse tree into a set of SQL Statements
|
|
46
54
|
bool TransformParseTree(duckdb_libpgquery::PGList *tree, vector<unique_ptr<SQLStatement>> &statements);
|
|
@@ -59,6 +67,15 @@ private:
|
|
|
59
67
|
case_insensitive_map_t<idx_t> named_param_map;
|
|
60
68
|
//! Holds window expressions defined by name. We need those when transforming the expressions referring to them.
|
|
61
69
|
unordered_map<string, duckdb_libpgquery::PGWindowDef *> window_clauses;
|
|
70
|
+
//! The set of pivot entries to create
|
|
71
|
+
vector<unique_ptr<CreatePivotEntry>> pivot_entries;
|
|
72
|
+
//! Sets of stored CTEs, if any
|
|
73
|
+
vector<CommonTableExpressionMap *> stored_cte_map;
|
|
74
|
+
//! Whether or not we are currently binding a window definition
|
|
75
|
+
bool in_window_definition = false;
|
|
76
|
+
|
|
77
|
+
void Clear();
|
|
78
|
+
bool InWindowDefinition();
|
|
62
79
|
|
|
63
80
|
void SetParamCount(idx_t new_count) {
|
|
64
81
|
if (parent) {
|
|
@@ -91,6 +108,12 @@ private:
|
|
|
91
108
|
return parent ? parent->HasNamedParameters() : !named_param_map.empty();
|
|
92
109
|
}
|
|
93
110
|
|
|
111
|
+
void AddPivotEntry(string enum_name, unique_ptr<SelectNode> source, unique_ptr<ParsedExpression> column);
|
|
112
|
+
unique_ptr<SQLStatement> GenerateCreateEnumStmt(unique_ptr<CreatePivotEntry> entry);
|
|
113
|
+
bool HasPivotEntries();
|
|
114
|
+
idx_t PivotEntryCount();
|
|
115
|
+
void ExtractCTEsRecursive(CommonTableExpressionMap &cte_map);
|
|
116
|
+
|
|
94
117
|
private:
|
|
95
118
|
//! Transforms a Postgres statement into a single SQL statement
|
|
96
119
|
unique_ptr<SQLStatement> TransformStatement(duckdb_libpgquery::PGNode *stmt);
|
|
@@ -163,6 +186,10 @@ private:
|
|
|
163
186
|
unique_ptr<ExecuteStatement> TransformExecute(duckdb_libpgquery::PGNode *node);
|
|
164
187
|
unique_ptr<CallStatement> TransformCall(duckdb_libpgquery::PGNode *node);
|
|
165
188
|
unique_ptr<DropStatement> TransformDeallocate(duckdb_libpgquery::PGNode *node);
|
|
189
|
+
unique_ptr<QueryNode> TransformPivotStatement(duckdb_libpgquery::PGSelectStmt *stmt);
|
|
190
|
+
unique_ptr<SQLStatement> CreatePivotStatement(unique_ptr<SQLStatement> statement);
|
|
191
|
+
PivotColumn TransformPivotColumn(duckdb_libpgquery::PGPivot *pivot);
|
|
192
|
+
vector<PivotColumn> TransformPivotList(duckdb_libpgquery::PGList *list);
|
|
166
193
|
|
|
167
194
|
//===--------------------------------------------------------------------===//
|
|
168
195
|
// SetStatement Transform
|
|
@@ -179,6 +206,7 @@ private:
|
|
|
179
206
|
//===--------------------------------------------------------------------===//
|
|
180
207
|
//! Transform a Postgres duckdb_libpgquery::T_PGSelectStmt node into a QueryNode
|
|
181
208
|
unique_ptr<QueryNode> TransformSelectNode(duckdb_libpgquery::PGSelectStmt *node);
|
|
209
|
+
unique_ptr<QueryNode> TransformSelectInternal(duckdb_libpgquery::PGSelectStmt *node);
|
|
182
210
|
|
|
183
211
|
//===--------------------------------------------------------------------===//
|
|
184
212
|
// Expression Transform
|
|
@@ -256,6 +284,7 @@ private:
|
|
|
256
284
|
//===--------------------------------------------------------------------===//
|
|
257
285
|
OnCreateConflict TransformOnConflict(duckdb_libpgquery::PGOnCreateConflict conflict);
|
|
258
286
|
string TransformAlias(duckdb_libpgquery::PGAlias *root, vector<string> &column_name_alias);
|
|
287
|
+
vector<string> TransformStringList(duckdb_libpgquery::PGList *list);
|
|
259
288
|
void TransformCTE(duckdb_libpgquery::PGWithClause *de_with_clause, CommonTableExpressionMap &cte_map);
|
|
260
289
|
unique_ptr<SelectStatement> TransformRecursiveCTE(duckdb_libpgquery::PGCommonTableExpr *node,
|
|
261
290
|
CommonTableExpressionInfo &info);
|
|
@@ -276,6 +305,8 @@ private:
|
|
|
276
305
|
unique_ptr<TableRef> TransformRangeFunction(duckdb_libpgquery::PGRangeFunction *root);
|
|
277
306
|
//! Transform a Postgres join node into a TableRef
|
|
278
307
|
unique_ptr<TableRef> TransformJoin(duckdb_libpgquery::PGJoinExpr *root);
|
|
308
|
+
//! Transform a Postgres pivot node into a TableRef
|
|
309
|
+
unique_ptr<TableRef> TransformPivot(duckdb_libpgquery::PGPivotExpr *root);
|
|
279
310
|
//! Transform a table producing subquery into a TableRef
|
|
280
311
|
unique_ptr<TableRef> TransformRangeSubselect(duckdb_libpgquery::PGRangeSubselect *root);
|
|
281
312
|
//! Transform a VALUES list into a set of expressions
|
|
@@ -307,6 +338,8 @@ private:
|
|
|
307
338
|
void TransformWindowFrame(duckdb_libpgquery::PGWindowDef *window_spec, WindowExpression *expr);
|
|
308
339
|
|
|
309
340
|
unique_ptr<SampleOptions> TransformSampleOptions(duckdb_libpgquery::PGNode *options);
|
|
341
|
+
//! Returns true if an expression is only a star (i.e. "*", without any other decorators)
|
|
342
|
+
bool ExpressionIsEmptyStar(ParsedExpression &expr);
|
|
310
343
|
|
|
311
344
|
private:
|
|
312
345
|
//! Current stack depth
|
|
@@ -141,6 +141,8 @@ public:
|
|
|
141
141
|
|
|
142
142
|
//! Add all the bindings from a BindContext to this BindContext. The other BindContext is destroyed in the process.
|
|
143
143
|
void AddContext(BindContext other);
|
|
144
|
+
//! For semi and anti joins we remove the binding context of the right table after binding the condition.
|
|
145
|
+
void RemoveContext(vector<std::pair<string, duckdb::Binding *>> &other_bindings_list);
|
|
144
146
|
|
|
145
147
|
//! Gets a binding of the specified name. Returns a nullptr and sets the out_error if the binding could not be
|
|
146
148
|
//! found.
|
|
@@ -73,7 +73,6 @@ struct CorrelatedColumnInfo {
|
|
|
73
73
|
*/
|
|
74
74
|
class Binder : public std::enable_shared_from_this<Binder> {
|
|
75
75
|
friend class ExpressionBinder;
|
|
76
|
-
friend class SelectBinder;
|
|
77
76
|
friend class RecursiveSubqueryPlanner;
|
|
78
77
|
|
|
79
78
|
public:
|
|
@@ -185,6 +184,9 @@ public:
|
|
|
185
184
|
BindingMode GetBindingMode();
|
|
186
185
|
void AddTableName(string table_name);
|
|
187
186
|
const unordered_set<string> &GetTableNames();
|
|
187
|
+
SQLStatement *GetRootStatement() {
|
|
188
|
+
return root_statement;
|
|
189
|
+
}
|
|
188
190
|
|
|
189
191
|
void SetCanContainNulls(bool can_contain_nulls);
|
|
190
192
|
|
|
@@ -253,8 +255,8 @@ private:
|
|
|
253
255
|
BoundStatement Bind(DetachStatement &stmt);
|
|
254
256
|
|
|
255
257
|
BoundStatement BindReturning(vector<unique_ptr<ParsedExpression>> returning_list, TableCatalogEntry *table,
|
|
256
|
-
|
|
257
|
-
BoundStatement result);
|
|
258
|
+
const string &alias, idx_t update_table_index,
|
|
259
|
+
unique_ptr<LogicalOperator> child_operator, BoundStatement result);
|
|
258
260
|
|
|
259
261
|
unique_ptr<QueryNode> BindTableMacro(FunctionExpression &function, TableMacroCatalogEntry *macro_func, idx_t depth);
|
|
260
262
|
|
|
@@ -275,6 +277,12 @@ private:
|
|
|
275
277
|
unique_ptr<BoundTableRef> Bind(TableFunctionRef &ref);
|
|
276
278
|
unique_ptr<BoundTableRef> Bind(EmptyTableRef &ref);
|
|
277
279
|
unique_ptr<BoundTableRef> Bind(ExpressionListRef &ref);
|
|
280
|
+
unique_ptr<BoundTableRef> Bind(PivotRef &expr);
|
|
281
|
+
|
|
282
|
+
unique_ptr<SelectNode> BindPivot(PivotRef &expr, vector<unique_ptr<ParsedExpression>> all_columns);
|
|
283
|
+
unique_ptr<SelectNode> BindUnpivot(Binder &child_binder, PivotRef &expr,
|
|
284
|
+
vector<unique_ptr<ParsedExpression>> all_columns,
|
|
285
|
+
unique_ptr<ParsedExpression> &where_clause);
|
|
278
286
|
|
|
279
287
|
bool BindTableFunctionParameters(TableFunctionCatalogEntry &table_function,
|
|
280
288
|
vector<unique_ptr<ParsedExpression>> &expressions, vector<LogicalType> &arguments,
|
|
@@ -333,13 +341,16 @@ private:
|
|
|
333
341
|
void ExpandStarExpressions(vector<unique_ptr<ParsedExpression>> &select_list,
|
|
334
342
|
vector<unique_ptr<ParsedExpression>> &new_select_list);
|
|
335
343
|
void ExpandStarExpression(unique_ptr<ParsedExpression> expr, vector<unique_ptr<ParsedExpression>> &new_select_list);
|
|
336
|
-
bool FindStarExpression(ParsedExpression &expr, StarExpression **star);
|
|
344
|
+
bool FindStarExpression(unique_ptr<ParsedExpression> &expr, StarExpression **star, bool is_root, bool in_columns);
|
|
337
345
|
void ReplaceStarExpression(unique_ptr<ParsedExpression> &expr, unique_ptr<ParsedExpression> &replacement);
|
|
346
|
+
void BindWhereStarExpression(unique_ptr<ParsedExpression> &expr);
|
|
338
347
|
|
|
339
348
|
//! If only a schema name is provided (e.g. "a.b") then figure out if "a" is a schema or a catalog name
|
|
340
349
|
void BindSchemaOrCatalog(string &catalog_name, string &schema_name);
|
|
341
350
|
SchemaCatalogEntry *BindCreateSchema(CreateInfo &info);
|
|
342
351
|
|
|
352
|
+
unique_ptr<BoundQueryNode> BindSelectNode(SelectNode &statement, unique_ptr<BoundTableRef> from_table);
|
|
353
|
+
|
|
343
354
|
public:
|
|
344
355
|
// This should really be a private constructor, but make_shared does not allow it...
|
|
345
356
|
// If you are thinking about calling this, you should probably call Binder::CreateBinder
|
|
@@ -65,6 +65,9 @@ public:
|
|
|
65
65
|
|
|
66
66
|
//! List of order nodes
|
|
67
67
|
vector<BoundOrderByNode> orders;
|
|
68
|
+
|
|
69
|
+
unique_ptr<BoundOrderModifier> Copy() const;
|
|
70
|
+
static bool Equals(const BoundOrderModifier *left, const BoundOrderModifier *right);
|
|
68
71
|
};
|
|
69
72
|
|
|
70
73
|
class BoundDistinctModifier : public BoundResultModifier {
|
|
@@ -25,10 +25,13 @@ public:
|
|
|
25
25
|
vector<unique_ptr<Expression>> children;
|
|
26
26
|
//! The bound function data (if any)
|
|
27
27
|
unique_ptr<FunctionData> bind_info;
|
|
28
|
+
//! The aggregate type (distinct or non-distinct)
|
|
28
29
|
AggregateType aggr_type;
|
|
29
30
|
|
|
30
31
|
//! Filter for this aggregate
|
|
31
32
|
unique_ptr<Expression> filter;
|
|
33
|
+
//! The order by expression for this aggregate - if any
|
|
34
|
+
unique_ptr<BoundOrderModifier> order_bys;
|
|
32
35
|
|
|
33
36
|
public:
|
|
34
37
|
bool IsDistinct() const {
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
|
2
|
+
// DuckDB
|
|
3
|
+
//
|
|
4
|
+
// duckdb/planner/expression_binder/base_select_binder.hpp
|
|
5
|
+
//
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include "duckdb/common/case_insensitive_map.hpp"
|
|
12
|
+
#include "duckdb/parser/expression_map.hpp"
|
|
13
|
+
#include "duckdb/planner/expression_binder.hpp"
|
|
14
|
+
|
|
15
|
+
namespace duckdb {
|
|
16
|
+
class BoundColumnRefExpression;
|
|
17
|
+
class WindowExpression;
|
|
18
|
+
|
|
19
|
+
class BoundSelectNode;
|
|
20
|
+
|
|
21
|
+
struct BoundGroupInformation {
|
|
22
|
+
expression_map_t<idx_t> map;
|
|
23
|
+
case_insensitive_map_t<idx_t> alias_map;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
//! The BaseSelectBinder is the base binder of the SELECT, HAVING and QUALIFY binders. It can bind aggregates and window
|
|
27
|
+
//! functions.
|
|
28
|
+
class BaseSelectBinder : public ExpressionBinder {
|
|
29
|
+
public:
|
|
30
|
+
BaseSelectBinder(Binder &binder, ClientContext &context, BoundSelectNode &node, BoundGroupInformation &info,
|
|
31
|
+
case_insensitive_map_t<idx_t> alias_map);
|
|
32
|
+
BaseSelectBinder(Binder &binder, ClientContext &context, BoundSelectNode &node, BoundGroupInformation &info);
|
|
33
|
+
|
|
34
|
+
bool BoundAggregates() {
|
|
35
|
+
return bound_aggregate;
|
|
36
|
+
}
|
|
37
|
+
void ResetBindings() {
|
|
38
|
+
this->bound_aggregate = false;
|
|
39
|
+
this->bound_columns.clear();
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
protected:
|
|
43
|
+
BindResult BindExpression(unique_ptr<ParsedExpression> *expr_ptr, idx_t depth,
|
|
44
|
+
bool root_expression = false) override;
|
|
45
|
+
|
|
46
|
+
BindResult BindAggregate(FunctionExpression &expr, AggregateFunctionCatalogEntry *function, idx_t depth) override;
|
|
47
|
+
|
|
48
|
+
bool inside_window;
|
|
49
|
+
bool bound_aggregate = false;
|
|
50
|
+
|
|
51
|
+
BoundSelectNode &node;
|
|
52
|
+
BoundGroupInformation &info;
|
|
53
|
+
case_insensitive_map_t<idx_t> alias_map;
|
|
54
|
+
|
|
55
|
+
protected:
|
|
56
|
+
BindResult BindColumnRef(unique_ptr<ParsedExpression> *expr_ptr, idx_t depth);
|
|
57
|
+
BindResult BindGroupingFunction(OperatorExpression &op, idx_t depth) override;
|
|
58
|
+
BindResult BindWindow(WindowExpression &expr, idx_t depth);
|
|
59
|
+
|
|
60
|
+
idx_t TryBindGroup(ParsedExpression &expr, idx_t depth);
|
|
61
|
+
BindResult BindGroup(ParsedExpression &expr, idx_t depth, idx_t group_index);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
} // namespace duckdb
|
|
@@ -8,14 +8,14 @@
|
|
|
8
8
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
|
-
#include "duckdb/planner/expression_binder/
|
|
11
|
+
#include "duckdb/planner/expression_binder/base_select_binder.hpp"
|
|
12
12
|
#include "duckdb/planner/expression_binder/column_alias_binder.hpp"
|
|
13
13
|
#include "duckdb/common/enums/aggregate_handling.hpp"
|
|
14
14
|
|
|
15
15
|
namespace duckdb {
|
|
16
16
|
|
|
17
17
|
//! The HAVING binder is responsible for binding an expression within the HAVING clause of a SQL statement
|
|
18
|
-
class HavingBinder : public
|
|
18
|
+
class HavingBinder : public BaseSelectBinder {
|
|
19
19
|
public:
|
|
20
20
|
HavingBinder(Binder &binder, ClientContext &context, BoundSelectNode &node, BoundGroupInformation &info,
|
|
21
21
|
case_insensitive_map_t<idx_t> &alias_map, AggregateHandling aggregate_handling);
|
|
@@ -32,10 +32,13 @@ public:
|
|
|
32
32
|
idx_t MaxCount() const {
|
|
33
33
|
return max_count;
|
|
34
34
|
}
|
|
35
|
-
|
|
36
35
|
bool HasExtraList() const {
|
|
37
36
|
return extra_list;
|
|
38
37
|
}
|
|
38
|
+
const vector<Binder *> &GetBinders() const {
|
|
39
|
+
return binders;
|
|
40
|
+
}
|
|
41
|
+
|
|
39
42
|
unique_ptr<Expression> CreateExtraReference(unique_ptr<ParsedExpression> expr);
|
|
40
43
|
|
|
41
44
|
private:
|
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
|
-
#include "duckdb/planner/expression_binder/
|
|
11
|
+
#include "duckdb/planner/expression_binder/base_select_binder.hpp"
|
|
12
12
|
#include "duckdb/planner/expression_binder/column_alias_binder.hpp"
|
|
13
13
|
|
|
14
14
|
namespace duckdb {
|
|
15
15
|
|
|
16
16
|
//! The QUALIFY binder is responsible for binding an expression within the QUALIFY clause of a SQL statement
|
|
17
|
-
class QualifyBinder : public
|
|
17
|
+
class QualifyBinder : public BaseSelectBinder {
|
|
18
18
|
public:
|
|
19
19
|
QualifyBinder(Binder &binder, ClientContext &context, BoundSelectNode &node, BoundGroupInformation &info,
|
|
20
20
|
case_insensitive_map_t<idx_t> &alias_map);
|
|
@@ -8,58 +8,29 @@
|
|
|
8
8
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
|
-
#include "duckdb/
|
|
12
|
-
#include "duckdb/parser/expression_map.hpp"
|
|
13
|
-
#include "duckdb/planner/expression_binder.hpp"
|
|
11
|
+
#include "duckdb/planner/expression_binder/base_select_binder.hpp"
|
|
14
12
|
|
|
15
13
|
namespace duckdb {
|
|
16
|
-
class BoundColumnRefExpression;
|
|
17
|
-
class WindowExpression;
|
|
18
|
-
|
|
19
|
-
class BoundSelectNode;
|
|
20
|
-
|
|
21
|
-
struct BoundGroupInformation {
|
|
22
|
-
expression_map_t<idx_t> map;
|
|
23
|
-
case_insensitive_map_t<idx_t> alias_map;
|
|
24
|
-
};
|
|
25
14
|
|
|
26
15
|
//! The SELECT binder is responsible for binding an expression within the SELECT clause of a SQL statement
|
|
27
|
-
class SelectBinder : public
|
|
16
|
+
class SelectBinder : public BaseSelectBinder {
|
|
28
17
|
public:
|
|
29
18
|
SelectBinder(Binder &binder, ClientContext &context, BoundSelectNode &node, BoundGroupInformation &info,
|
|
30
19
|
case_insensitive_map_t<idx_t> alias_map);
|
|
31
20
|
SelectBinder(Binder &binder, ClientContext &context, BoundSelectNode &node, BoundGroupInformation &info);
|
|
32
21
|
|
|
33
|
-
bool
|
|
34
|
-
return
|
|
22
|
+
bool HasExpandedExpressions() {
|
|
23
|
+
return !expanded_expressions.empty();
|
|
35
24
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
this->bound_columns.clear();
|
|
25
|
+
vector<unique_ptr<Expression>> &ExpandedExpressions() {
|
|
26
|
+
return expanded_expressions;
|
|
39
27
|
}
|
|
40
28
|
|
|
41
29
|
protected:
|
|
42
|
-
BindResult
|
|
43
|
-
bool root_expression = false) override;
|
|
44
|
-
|
|
45
|
-
BindResult BindAggregate(FunctionExpression &expr, AggregateFunctionCatalogEntry *function, idx_t depth) override;
|
|
46
|
-
|
|
47
|
-
BindResult BindUnnest(FunctionExpression &function, idx_t depth) override;
|
|
48
|
-
|
|
49
|
-
bool inside_window;
|
|
50
|
-
bool bound_aggregate = false;
|
|
51
|
-
|
|
52
|
-
BoundSelectNode &node;
|
|
53
|
-
BoundGroupInformation &info;
|
|
54
|
-
case_insensitive_map_t<idx_t> alias_map;
|
|
55
|
-
|
|
56
|
-
protected:
|
|
57
|
-
BindResult BindColumnRef(unique_ptr<ParsedExpression> *expr_ptr, idx_t depth);
|
|
58
|
-
BindResult BindGroupingFunction(OperatorExpression &op, idx_t depth) override;
|
|
59
|
-
BindResult BindWindow(WindowExpression &expr, idx_t depth);
|
|
30
|
+
BindResult BindUnnest(FunctionExpression &function, idx_t depth, bool root_expression) override;
|
|
60
31
|
|
|
61
|
-
idx_t
|
|
62
|
-
|
|
32
|
+
idx_t unnest_level = 0;
|
|
33
|
+
vector<unique_ptr<Expression>> expanded_expressions;
|
|
63
34
|
};
|
|
64
35
|
|
|
65
36
|
} // namespace duckdb
|
|
@@ -135,7 +135,7 @@ protected:
|
|
|
135
135
|
virtual BindResult BindFunction(FunctionExpression &expr, ScalarFunctionCatalogEntry *function, idx_t depth);
|
|
136
136
|
virtual BindResult BindLambdaFunction(FunctionExpression &expr, ScalarFunctionCatalogEntry *function, idx_t depth);
|
|
137
137
|
virtual BindResult BindAggregate(FunctionExpression &expr, AggregateFunctionCatalogEntry *function, idx_t depth);
|
|
138
|
-
virtual BindResult BindUnnest(FunctionExpression &expr, idx_t depth);
|
|
138
|
+
virtual BindResult BindUnnest(FunctionExpression &expr, idx_t depth, bool root_expression);
|
|
139
139
|
virtual BindResult BindMacro(FunctionExpression &expr, ScalarMacroCatalogEntry *macro, idx_t depth,
|
|
140
140
|
unique_ptr<ParsedExpression> *expr_ptr);
|
|
141
141
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#include "duckdb/planner/operator/logical_aggregate.hpp"
|
|
2
2
|
#include "duckdb/planner/operator/logical_any_join.hpp"
|
|
3
|
+
#include "duckdb/planner/operator/logical_asof_join.hpp"
|
|
3
4
|
#include "duckdb/planner/operator/logical_column_data_get.hpp"
|
|
4
5
|
#include "duckdb/planner/operator/logical_comparison_join.hpp"
|
|
5
6
|
#include "duckdb/planner/operator/logical_copy_to_file.hpp"
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
|
2
|
+
// DuckDB
|
|
3
|
+
//
|
|
4
|
+
// duckdb/planner/operator/logical_asof_join.hpp
|
|
5
|
+
//
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include "duckdb/planner/operator/logical_comparison_join.hpp"
|
|
12
|
+
|
|
13
|
+
namespace duckdb {
|
|
14
|
+
|
|
15
|
+
//! LogicalAsOfJoin represents a temporal-style join with one less-than inequality.
|
|
16
|
+
//! This inequality matches the greatest value on the right that satisfies the condition.
|
|
17
|
+
class LogicalAsOfJoin : public LogicalComparisonJoin {
|
|
18
|
+
public:
|
|
19
|
+
explicit LogicalAsOfJoin(JoinType type);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
} // namespace duckdb
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
11
|
#include "duckdb/common/constants.hpp"
|
|
12
|
+
#include "duckdb/common/enums/joinref_type.hpp"
|
|
12
13
|
#include "duckdb/common/unordered_set.hpp"
|
|
13
14
|
#include "duckdb/planner/joinside.hpp"
|
|
14
15
|
#include "duckdb/planner/operator/logical_join.hpp"
|
|
@@ -34,10 +35,12 @@ public:
|
|
|
34
35
|
FieldReader &reader);
|
|
35
36
|
|
|
36
37
|
public:
|
|
37
|
-
static unique_ptr<LogicalOperator> CreateJoin(JoinType type,
|
|
38
|
+
static unique_ptr<LogicalOperator> CreateJoin(JoinType type, JoinRefType ref_type,
|
|
39
|
+
unique_ptr<LogicalOperator> left_child,
|
|
38
40
|
unique_ptr<LogicalOperator> right_child,
|
|
39
41
|
unique_ptr<Expression> condition);
|
|
40
|
-
static unique_ptr<LogicalOperator> CreateJoin(JoinType type,
|
|
42
|
+
static unique_ptr<LogicalOperator> CreateJoin(JoinType type, JoinRefType ref_type,
|
|
43
|
+
unique_ptr<LogicalOperator> left_child,
|
|
41
44
|
unique_ptr<LogicalOperator> right_child,
|
|
42
45
|
vector<JoinCondition> conditions,
|
|
43
46
|
vector<unique_ptr<Expression>> arbitrary_expressions);
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
11
|
#include "duckdb/planner/logical_operator.hpp"
|
|
12
|
+
#include "duckdb/planner/bound_result_modifier.hpp"
|
|
12
13
|
|
|
13
14
|
namespace duckdb {
|
|
14
15
|
|
|
@@ -22,6 +23,8 @@ public:
|
|
|
22
23
|
}
|
|
23
24
|
//! The set of distinct targets (optional).
|
|
24
25
|
vector<unique_ptr<Expression>> distinct_targets;
|
|
26
|
+
//! The order by modifier (optional, only for distinct on)
|
|
27
|
+
unique_ptr<BoundOrderModifier> order_by;
|
|
25
28
|
|
|
26
29
|
public:
|
|
27
30
|
string ParamsToString() const override;
|
|
@@ -25,6 +25,13 @@ public:
|
|
|
25
25
|
vector<GroupingSet> grouping_sets;
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
+
struct BoundUnnestNode {
|
|
29
|
+
//! The index of the UNNEST node
|
|
30
|
+
idx_t index;
|
|
31
|
+
//! The set of expressions
|
|
32
|
+
vector<unique_ptr<Expression>> expressions;
|
|
33
|
+
};
|
|
34
|
+
|
|
28
35
|
//! Bound equivalent of SelectNode
|
|
29
36
|
class BoundSelectNode : public BoundQueryNode {
|
|
30
37
|
public:
|
|
@@ -78,9 +85,8 @@ public:
|
|
|
78
85
|
//! Window functions to compute (only used if HasWindow is true)
|
|
79
86
|
vector<unique_ptr<Expression>> windows;
|
|
80
87
|
|
|
81
|
-
idx_t unnest_index;
|
|
82
88
|
//! Unnest expression
|
|
83
|
-
|
|
89
|
+
unordered_map<idx_t, BoundUnnestNode> unnests;
|
|
84
90
|
|
|
85
91
|
//! Index of pruned node
|
|
86
92
|
idx_t prune_index;
|
|
@@ -17,6 +17,7 @@ namespace duckdb {
|
|
|
17
17
|
class BlockManager;
|
|
18
18
|
class BufferHandle;
|
|
19
19
|
class BufferManager;
|
|
20
|
+
class BufferPool;
|
|
20
21
|
class DatabaseInstance;
|
|
21
22
|
class FileBuffer;
|
|
22
23
|
|
|
@@ -55,6 +56,7 @@ class BlockHandle {
|
|
|
55
56
|
friend struct BufferEvictionNode;
|
|
56
57
|
friend class BufferHandle;
|
|
57
58
|
friend class BufferManager;
|
|
59
|
+
friend class BufferPool;
|
|
58
60
|
|
|
59
61
|
public:
|
|
60
62
|
BlockHandle(BlockManager &block_manager, block_id_t block_id);
|