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
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
//===----------------------------------------------------------------------===//
|
|
2
2
|
// DuckDB
|
|
3
3
|
//
|
|
4
|
-
// duckdb/parser/parsed_data/
|
|
4
|
+
// duckdb/parser/parsed_data/alter_scalar_function_info.hpp
|
|
5
5
|
//
|
|
6
6
|
//
|
|
7
7
|
//===----------------------------------------------------------------------===//
|
|
8
8
|
|
|
9
9
|
#pragma once
|
|
10
10
|
|
|
11
|
-
#include "duckdb/parser/parsed_data/alter_info.hpp"
|
|
12
|
-
#include "duckdb/function/scalar_function.hpp"
|
|
13
11
|
#include "duckdb/function/function_set.hpp"
|
|
12
|
+
#include "duckdb/function/scalar_function.hpp"
|
|
13
|
+
#include "duckdb/parser/parsed_data/alter_info.hpp"
|
|
14
14
|
|
|
15
15
|
namespace duckdb {
|
|
16
16
|
|
|
17
17
|
//===--------------------------------------------------------------------===//
|
|
18
|
-
// Alter
|
|
18
|
+
// Alter Scalar Function
|
|
19
19
|
//===--------------------------------------------------------------------===//
|
|
20
|
-
enum class
|
|
20
|
+
enum class AlterScalarFunctionType : uint8_t { INVALID = 0, ADD_FUNCTION_OVERLOADS = 1 };
|
|
21
21
|
|
|
22
|
-
struct
|
|
23
|
-
|
|
24
|
-
virtual ~
|
|
22
|
+
struct AlterScalarFunctionInfo : public AlterInfo {
|
|
23
|
+
AlterScalarFunctionInfo(AlterScalarFunctionType type, AlterEntryData data);
|
|
24
|
+
virtual ~AlterScalarFunctionInfo() override;
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
AlterScalarFunctionType alter_scalar_function_type;
|
|
27
27
|
|
|
28
28
|
public:
|
|
29
29
|
CatalogType GetCatalogType() const override;
|
|
@@ -32,11 +32,11 @@ public:
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
//===--------------------------------------------------------------------===//
|
|
35
|
-
//
|
|
35
|
+
// AddScalarFunctionOverloadInfo
|
|
36
36
|
//===--------------------------------------------------------------------===//
|
|
37
|
-
struct
|
|
38
|
-
|
|
39
|
-
~
|
|
37
|
+
struct AddScalarFunctionOverloadInfo : public AlterScalarFunctionInfo {
|
|
38
|
+
AddScalarFunctionOverloadInfo(AlterEntryData data, ScalarFunctionSet new_overloads);
|
|
39
|
+
~AddScalarFunctionOverloadInfo() override;
|
|
40
40
|
|
|
41
41
|
ScalarFunctionSet new_overloads;
|
|
42
42
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
|
2
|
+
// DuckDB
|
|
3
|
+
//
|
|
4
|
+
// duckdb/parser/parsed_data/alter_scalar_function_info.hpp
|
|
5
|
+
//
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include "duckdb/function/function_set.hpp"
|
|
12
|
+
#include "duckdb/function/table_function.hpp"
|
|
13
|
+
#include "duckdb/parser/parsed_data/alter_info.hpp"
|
|
14
|
+
|
|
15
|
+
namespace duckdb {
|
|
16
|
+
|
|
17
|
+
//===--------------------------------------------------------------------===//
|
|
18
|
+
// Alter Table Function
|
|
19
|
+
//===--------------------------------------------------------------------===//
|
|
20
|
+
enum class AlterTableFunctionType : uint8_t { INVALID = 0, ADD_FUNCTION_OVERLOADS = 1 };
|
|
21
|
+
|
|
22
|
+
struct AlterTableFunctionInfo : public AlterInfo {
|
|
23
|
+
AlterTableFunctionInfo(AlterTableFunctionType type, AlterEntryData data);
|
|
24
|
+
virtual ~AlterTableFunctionInfo() override;
|
|
25
|
+
|
|
26
|
+
AlterTableFunctionType alter_table_function_type;
|
|
27
|
+
|
|
28
|
+
public:
|
|
29
|
+
CatalogType GetCatalogType() const override;
|
|
30
|
+
void Serialize(FieldWriter &writer) const override;
|
|
31
|
+
static unique_ptr<AlterInfo> Deserialize(FieldReader &reader);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
//===--------------------------------------------------------------------===//
|
|
35
|
+
// AddTableFunctionOverloadInfo
|
|
36
|
+
//===--------------------------------------------------------------------===//
|
|
37
|
+
struct AddTableFunctionOverloadInfo : public AlterTableFunctionInfo {
|
|
38
|
+
AddTableFunctionOverloadInfo(AlterEntryData data, TableFunctionSet new_overloads);
|
|
39
|
+
~AddTableFunctionOverloadInfo() override;
|
|
40
|
+
|
|
41
|
+
TableFunctionSet new_overloads;
|
|
42
|
+
|
|
43
|
+
public:
|
|
44
|
+
unique_ptr<AlterInfo> Copy() const override;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
} // namespace duckdb
|
|
@@ -137,6 +137,9 @@ public:
|
|
|
137
137
|
unique_ptr<AlterInfo> Copy() const override;
|
|
138
138
|
void SerializeAlterTable(FieldWriter &writer) const override;
|
|
139
139
|
static unique_ptr<AlterInfo> Deserialize(FieldReader &reader, AlterEntryData data);
|
|
140
|
+
string GetColumnName() const override {
|
|
141
|
+
return removed_column;
|
|
142
|
+
};
|
|
140
143
|
};
|
|
141
144
|
|
|
142
145
|
//===--------------------------------------------------------------------===//
|
|
@@ -158,6 +161,9 @@ public:
|
|
|
158
161
|
unique_ptr<AlterInfo> Copy() const override;
|
|
159
162
|
void SerializeAlterTable(FieldWriter &writer) const override;
|
|
160
163
|
static unique_ptr<AlterInfo> Deserialize(FieldReader &reader, AlterEntryData data);
|
|
164
|
+
string GetColumnName() const override {
|
|
165
|
+
return column_name;
|
|
166
|
+
};
|
|
161
167
|
};
|
|
162
168
|
|
|
163
169
|
//===--------------------------------------------------------------------===//
|
|
@@ -21,7 +21,8 @@ struct CreateTableFunctionInfo : public CreateFunctionInfo {
|
|
|
21
21
|
TableFunctionSet functions;
|
|
22
22
|
|
|
23
23
|
public:
|
|
24
|
-
DUCKDB_API unique_ptr<CreateInfo> Copy() const;
|
|
24
|
+
DUCKDB_API unique_ptr<CreateInfo> Copy() const override;
|
|
25
|
+
DUCKDB_API unique_ptr<AlterInfo> GetAlterInfo() const override;
|
|
25
26
|
};
|
|
26
27
|
|
|
27
28
|
} // namespace duckdb
|
|
@@ -29,6 +29,8 @@ struct SampleOptions {
|
|
|
29
29
|
void Serialize(Serializer &serializer);
|
|
30
30
|
static unique_ptr<SampleOptions> Deserialize(Deserializer &source);
|
|
31
31
|
static bool Equals(SampleOptions *a, SampleOptions *b);
|
|
32
|
+
void FormatSerialize(FormatSerializer &serializer) const;
|
|
33
|
+
static unique_ptr<SampleOptions> FormatDeserialize(FormatDeserializer &deserializer);
|
|
32
34
|
};
|
|
33
35
|
|
|
34
36
|
} // namespace duckdb
|
|
@@ -19,6 +19,8 @@ class Serializer;
|
|
|
19
19
|
class Deserializer;
|
|
20
20
|
class FieldWriter;
|
|
21
21
|
class FieldReader;
|
|
22
|
+
class FormatDeserializer;
|
|
23
|
+
class FormatSerializer;
|
|
22
24
|
|
|
23
25
|
//! The ParsedExpression class is a base class that can represent any expression
|
|
24
26
|
//! part of a SQL statement.
|
|
@@ -60,6 +62,9 @@ public:
|
|
|
60
62
|
//! SerializationException]
|
|
61
63
|
static unique_ptr<ParsedExpression> Deserialize(Deserializer &source);
|
|
62
64
|
|
|
65
|
+
virtual void FormatSerialize(FormatSerializer &serializer) const;
|
|
66
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(FormatDeserializer &deserializer);
|
|
67
|
+
|
|
63
68
|
protected:
|
|
64
69
|
//! Copy base Expression properties from another expression to this one,
|
|
65
70
|
//! used in Copy method
|
|
@@ -44,6 +44,9 @@ public:
|
|
|
44
44
|
void Serialize(FieldWriter &writer) const override;
|
|
45
45
|
//! Deserializes a blob back into a QueryNode
|
|
46
46
|
static unique_ptr<QueryNode> Deserialize(FieldReader &reader);
|
|
47
|
+
|
|
48
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
49
|
+
static unique_ptr<QueryNode> FormatDeserialize(FormatDeserializer &source);
|
|
47
50
|
};
|
|
48
51
|
|
|
49
52
|
} // namespace duckdb
|
|
@@ -49,13 +49,18 @@ public:
|
|
|
49
49
|
string ToString() const override;
|
|
50
50
|
|
|
51
51
|
bool Equals(const QueryNode *other) const override;
|
|
52
|
+
|
|
52
53
|
//! Create a copy of this SelectNode
|
|
53
54
|
unique_ptr<QueryNode> Copy() const override;
|
|
54
55
|
|
|
55
56
|
//! Serializes a QueryNode to a stand-alone binary blob
|
|
56
57
|
void Serialize(FieldWriter &writer) const override;
|
|
58
|
+
|
|
57
59
|
//! Deserializes a blob back into a QueryNode
|
|
58
60
|
static unique_ptr<QueryNode> Deserialize(FieldReader &reader);
|
|
61
|
+
|
|
62
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
63
|
+
static unique_ptr<QueryNode> FormatDeserialize(FormatDeserializer &deserializer);
|
|
59
64
|
};
|
|
60
65
|
|
|
61
66
|
} // namespace duckdb
|
|
@@ -43,6 +43,9 @@ public:
|
|
|
43
43
|
void Serialize(FieldWriter &writer) const override;
|
|
44
44
|
//! Deserializes a blob back into a QueryNode
|
|
45
45
|
static unique_ptr<QueryNode> Deserialize(FieldReader &reader);
|
|
46
|
+
|
|
47
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
48
|
+
static unique_ptr<QueryNode> FormatDeserialize(FormatDeserializer &source);
|
|
46
49
|
};
|
|
47
50
|
|
|
48
51
|
} // namespace duckdb
|
|
@@ -13,10 +13,14 @@
|
|
|
13
13
|
#include "duckdb/parser/parsed_expression.hpp"
|
|
14
14
|
#include "duckdb/parser/result_modifier.hpp"
|
|
15
15
|
#include "duckdb/parser/common_table_expression_info.hpp"
|
|
16
|
+
#include "duckdb/common/case_insensitive_map.hpp"
|
|
16
17
|
|
|
17
18
|
namespace duckdb {
|
|
18
19
|
|
|
19
|
-
|
|
20
|
+
class FormatDeserializer;
|
|
21
|
+
class FormatSerializer;
|
|
22
|
+
|
|
23
|
+
enum class QueryNodeType : uint8_t {
|
|
20
24
|
SELECT_NODE = 1,
|
|
21
25
|
SET_OPERATION_NODE = 2,
|
|
22
26
|
BOUND_SUBQUERY_NODE = 3,
|
|
@@ -29,11 +33,15 @@ class CommonTableExpressionMap {
|
|
|
29
33
|
public:
|
|
30
34
|
CommonTableExpressionMap();
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
case_insensitive_map_t<unique_ptr<CommonTableExpressionInfo>> map;
|
|
33
37
|
|
|
34
38
|
public:
|
|
35
39
|
string ToString() const;
|
|
36
40
|
CommonTableExpressionMap Copy() const;
|
|
41
|
+
|
|
42
|
+
void FormatSerialize(FormatSerializer &serializer) const;
|
|
43
|
+
// static void FormatDeserialize(FormatDeserializer &deserializer, CommonTableExpressionMap &ret);
|
|
44
|
+
static CommonTableExpressionMap FormatDeserialize(FormatDeserializer &deserializer);
|
|
37
45
|
};
|
|
38
46
|
|
|
39
47
|
class QueryNode {
|
|
@@ -72,6 +80,9 @@ public:
|
|
|
72
80
|
//! Adds a distinct modifier to the query node
|
|
73
81
|
void AddDistinct();
|
|
74
82
|
|
|
83
|
+
virtual void FormatSerialize(FormatSerializer &serializer) const;
|
|
84
|
+
static unique_ptr<QueryNode> FormatDeserialize(FormatDeserializer &deserializer);
|
|
85
|
+
|
|
75
86
|
protected:
|
|
76
87
|
//! Copy base QueryNode properties from another expression to this one,
|
|
77
88
|
//! used in Copy method
|
|
@@ -16,14 +16,19 @@
|
|
|
16
16
|
namespace duckdb {
|
|
17
17
|
class FieldWriter;
|
|
18
18
|
class FieldReader;
|
|
19
|
+
class FormatDeserializer;
|
|
20
|
+
class FormatSerializer;
|
|
19
21
|
|
|
20
|
-
enum ResultModifierType : uint8_t {
|
|
22
|
+
enum class ResultModifierType : uint8_t {
|
|
21
23
|
LIMIT_MODIFIER = 1,
|
|
22
24
|
ORDER_MODIFIER = 2,
|
|
23
25
|
DISTINCT_MODIFIER = 3,
|
|
24
26
|
LIMIT_PERCENT_MODIFIER = 4
|
|
25
27
|
};
|
|
26
28
|
|
|
29
|
+
const char *ToString(ResultModifierType value);
|
|
30
|
+
ResultModifierType ResultModifierFromString(const char *value);
|
|
31
|
+
|
|
27
32
|
//! A ResultModifier
|
|
28
33
|
class ResultModifier {
|
|
29
34
|
public:
|
|
@@ -46,6 +51,9 @@ public:
|
|
|
46
51
|
virtual void Serialize(FieldWriter &writer) const = 0;
|
|
47
52
|
//! Deserializes a blob back into a ResultModifier
|
|
48
53
|
static unique_ptr<ResultModifier> Deserialize(Deserializer &source);
|
|
54
|
+
|
|
55
|
+
virtual void FormatSerialize(FormatSerializer &serializer) const;
|
|
56
|
+
static unique_ptr<ResultModifier> FormatDeserialize(FormatDeserializer &deserializer);
|
|
49
57
|
};
|
|
50
58
|
|
|
51
59
|
//! Single node in ORDER BY statement
|
|
@@ -65,6 +73,9 @@ public:
|
|
|
65
73
|
void Serialize(Serializer &serializer) const;
|
|
66
74
|
string ToString() const;
|
|
67
75
|
static OrderByNode Deserialize(Deserializer &source);
|
|
76
|
+
|
|
77
|
+
void FormatSerialize(FormatSerializer &serializer) const;
|
|
78
|
+
static OrderByNode FormatDeserialize(FormatDeserializer &deserializer);
|
|
68
79
|
};
|
|
69
80
|
|
|
70
81
|
class LimitModifier : public ResultModifier {
|
|
@@ -82,6 +93,9 @@ public:
|
|
|
82
93
|
unique_ptr<ResultModifier> Copy() const override;
|
|
83
94
|
void Serialize(FieldWriter &writer) const override;
|
|
84
95
|
static unique_ptr<ResultModifier> Deserialize(FieldReader &reader);
|
|
96
|
+
|
|
97
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
98
|
+
static unique_ptr<ResultModifier> FormatDeserialize(FormatDeserializer &deserializer);
|
|
85
99
|
};
|
|
86
100
|
|
|
87
101
|
class OrderModifier : public ResultModifier {
|
|
@@ -97,6 +111,9 @@ public:
|
|
|
97
111
|
unique_ptr<ResultModifier> Copy() const override;
|
|
98
112
|
void Serialize(FieldWriter &writer) const override;
|
|
99
113
|
static unique_ptr<ResultModifier> Deserialize(FieldReader &reader);
|
|
114
|
+
|
|
115
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
116
|
+
static unique_ptr<ResultModifier> FormatDeserialize(FormatDeserializer &deserializer);
|
|
100
117
|
};
|
|
101
118
|
|
|
102
119
|
class DistinctModifier : public ResultModifier {
|
|
@@ -112,6 +129,9 @@ public:
|
|
|
112
129
|
unique_ptr<ResultModifier> Copy() const override;
|
|
113
130
|
void Serialize(FieldWriter &writer) const override;
|
|
114
131
|
static unique_ptr<ResultModifier> Deserialize(FieldReader &reader);
|
|
132
|
+
|
|
133
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
134
|
+
static unique_ptr<ResultModifier> FormatDeserialize(FormatDeserializer &deserializer);
|
|
115
135
|
};
|
|
116
136
|
|
|
117
137
|
class LimitPercentModifier : public ResultModifier {
|
|
@@ -129,6 +149,9 @@ public:
|
|
|
129
149
|
unique_ptr<ResultModifier> Copy() const override;
|
|
130
150
|
void Serialize(FieldWriter &writer) const override;
|
|
131
151
|
static unique_ptr<ResultModifier> Deserialize(FieldReader &reader);
|
|
152
|
+
|
|
153
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
154
|
+
static unique_ptr<ResultModifier> FormatDeserialize(FormatDeserializer &deserializer);
|
|
132
155
|
};
|
|
133
156
|
|
|
134
157
|
} // namespace duckdb
|
|
@@ -19,7 +19,8 @@ namespace duckdb {
|
|
|
19
19
|
//! SQLStatement is the base class of any type of SQL statement.
|
|
20
20
|
class SQLStatement {
|
|
21
21
|
public:
|
|
22
|
-
explicit SQLStatement(StatementType type) : type(type) {
|
|
22
|
+
explicit SQLStatement(StatementType type) : type(type) {
|
|
23
|
+
}
|
|
23
24
|
virtual ~SQLStatement() {
|
|
24
25
|
}
|
|
25
26
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
|
2
|
+
// DuckDB
|
|
3
|
+
//
|
|
4
|
+
// duckdb/parser/statement/multi_statement.hpp
|
|
5
|
+
//
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include "duckdb/parser/sql_statement.hpp"
|
|
12
|
+
|
|
13
|
+
namespace duckdb {
|
|
14
|
+
|
|
15
|
+
class MultiStatement : public SQLStatement {
|
|
16
|
+
public:
|
|
17
|
+
MultiStatement();
|
|
18
|
+
|
|
19
|
+
vector<unique_ptr<SQLStatement>> statements;
|
|
20
|
+
|
|
21
|
+
protected:
|
|
22
|
+
MultiStatement(const MultiStatement &other);
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
unique_ptr<SQLStatement> Copy() const override;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
} // namespace duckdb
|
|
@@ -10,13 +10,15 @@
|
|
|
10
10
|
|
|
11
11
|
#include "duckdb/common/unordered_map.hpp"
|
|
12
12
|
#include "duckdb/parser/parsed_expression.hpp"
|
|
13
|
-
#include "duckdb/parser/query_node.hpp"
|
|
14
13
|
#include "duckdb/parser/sql_statement.hpp"
|
|
15
14
|
#include "duckdb/parser/tableref.hpp"
|
|
15
|
+
#include "duckdb/parser/query_node.hpp"
|
|
16
16
|
|
|
17
17
|
namespace duckdb {
|
|
18
18
|
|
|
19
19
|
class QueryNode;
|
|
20
|
+
class FormatSerializer;
|
|
21
|
+
class FormatDeserializer;
|
|
20
22
|
|
|
21
23
|
//! SelectStatement is a typical SELECT clause
|
|
22
24
|
class SelectStatement : public SQLStatement {
|
|
@@ -42,5 +44,8 @@ public:
|
|
|
42
44
|
static unique_ptr<SelectStatement> Deserialize(Deserializer &source);
|
|
43
45
|
//! Whether or not the statements are equivalent
|
|
44
46
|
bool Equals(const SQLStatement *other) const;
|
|
47
|
+
|
|
48
|
+
void FormatSerialize(FormatSerializer &serializer) const;
|
|
49
|
+
static unique_ptr<SelectStatement> FormatDeserialize(FormatDeserializer &deserializer);
|
|
45
50
|
};
|
|
46
51
|
} // namespace duckdb
|
|
@@ -38,5 +38,9 @@ public:
|
|
|
38
38
|
void Serialize(FieldWriter &serializer) const override;
|
|
39
39
|
//! Deserializes a blob back into a BaseTableRef
|
|
40
40
|
static unique_ptr<TableRef> Deserialize(FieldReader &source);
|
|
41
|
+
|
|
42
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
43
|
+
|
|
44
|
+
static unique_ptr<TableRef> FormatDeserialize(FormatDeserializer &source);
|
|
41
45
|
};
|
|
42
46
|
} // namespace duckdb
|
|
@@ -27,5 +27,7 @@ public:
|
|
|
27
27
|
void Serialize(FieldWriter &serializer) const override;
|
|
28
28
|
//! Deserializes a blob back into a DummyTableRef
|
|
29
29
|
static unique_ptr<TableRef> Deserialize(FieldReader &source);
|
|
30
|
+
|
|
31
|
+
static unique_ptr<TableRef> FormatDeserialize(FormatDeserializer &source);
|
|
30
32
|
};
|
|
31
33
|
} // namespace duckdb
|
|
@@ -37,5 +37,8 @@ public:
|
|
|
37
37
|
void Serialize(FieldWriter &serializer) const override;
|
|
38
38
|
//! Deserializes a blob back into a ExpressionListRef
|
|
39
39
|
static unique_ptr<TableRef> Deserialize(FieldReader &source);
|
|
40
|
+
|
|
41
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
42
|
+
static unique_ptr<TableRef> FormatDeserialize(FormatDeserializer &source);
|
|
40
43
|
};
|
|
41
44
|
} // namespace duckdb
|
|
@@ -47,5 +47,8 @@ public:
|
|
|
47
47
|
void Serialize(FieldWriter &serializer) const override;
|
|
48
48
|
//! Deserializes a blob back into a JoinRef
|
|
49
49
|
static unique_ptr<TableRef> Deserialize(FieldReader &source);
|
|
50
|
+
|
|
51
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
52
|
+
static unique_ptr<TableRef> FormatDeserialize(FormatDeserializer &source);
|
|
50
53
|
};
|
|
51
54
|
} // namespace duckdb
|
|
@@ -2,5 +2,6 @@
|
|
|
2
2
|
#include "duckdb/parser/tableref/emptytableref.hpp"
|
|
3
3
|
#include "duckdb/parser/tableref/expressionlistref.hpp"
|
|
4
4
|
#include "duckdb/parser/tableref/joinref.hpp"
|
|
5
|
+
#include "duckdb/parser/tableref/pivotref.hpp"
|
|
5
6
|
#include "duckdb/parser/tableref/subqueryref.hpp"
|
|
6
7
|
#include "duckdb/parser/tableref/table_function_ref.hpp"
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
|
2
|
+
// DuckDB
|
|
3
|
+
//
|
|
4
|
+
// duckdb/parser/tableref/pivotref.hpp
|
|
5
|
+
//
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include "duckdb/parser/tableref.hpp"
|
|
12
|
+
|
|
13
|
+
namespace duckdb {
|
|
14
|
+
|
|
15
|
+
struct PivotColumnEntry {
|
|
16
|
+
//! The set of values to match on
|
|
17
|
+
vector<Value> values;
|
|
18
|
+
//! The star expression (UNPIVOT only)
|
|
19
|
+
unique_ptr<ParsedExpression> star_expr;
|
|
20
|
+
//! The alias of the pivot column entry
|
|
21
|
+
string alias;
|
|
22
|
+
|
|
23
|
+
bool Equals(const PivotColumnEntry &other) const;
|
|
24
|
+
void Serialize(Serializer &serializer) const;
|
|
25
|
+
PivotColumnEntry Copy() const;
|
|
26
|
+
static PivotColumnEntry Deserialize(Deserializer &source);
|
|
27
|
+
|
|
28
|
+
void FormatSerialize(FormatSerializer &serializer) const;
|
|
29
|
+
static PivotColumnEntry FormatDeserialize(FormatDeserializer &source);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
struct PivotColumn {
|
|
33
|
+
//! The set of expressions to pivot on
|
|
34
|
+
vector<unique_ptr<ParsedExpression>> pivot_expressions;
|
|
35
|
+
//! The set of unpivot names
|
|
36
|
+
vector<string> unpivot_names;
|
|
37
|
+
//! The set of values to pivot on
|
|
38
|
+
vector<PivotColumnEntry> entries;
|
|
39
|
+
//! The enum to read pivot values from (if any)
|
|
40
|
+
string pivot_enum;
|
|
41
|
+
|
|
42
|
+
string ToString() const;
|
|
43
|
+
bool Equals(const PivotColumn &other) const;
|
|
44
|
+
void Serialize(Serializer &serializer) const;
|
|
45
|
+
PivotColumn Copy() const;
|
|
46
|
+
static PivotColumn Deserialize(Deserializer &source);
|
|
47
|
+
|
|
48
|
+
void FormatSerialize(FormatSerializer &serializer) const;
|
|
49
|
+
static PivotColumn FormatDeserialize(FormatDeserializer &source);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
//! Represents a PIVOT or UNPIVOT expression
|
|
53
|
+
class PivotRef : public TableRef {
|
|
54
|
+
public:
|
|
55
|
+
explicit PivotRef() : TableRef(TableReferenceType::PIVOT), include_nulls(false) {
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
//! The source table of the pivot
|
|
59
|
+
unique_ptr<TableRef> source;
|
|
60
|
+
//! The aggregates to compute over the pivot (PIVOT only)
|
|
61
|
+
vector<unique_ptr<ParsedExpression>> aggregates;
|
|
62
|
+
//! The names of the unpivot expressions (UNPIVOT only)
|
|
63
|
+
vector<string> unpivot_names;
|
|
64
|
+
//! The set of pivots
|
|
65
|
+
vector<PivotColumn> pivots;
|
|
66
|
+
//! The groups to pivot over. If none are specified all columns not included in the pivots/aggregate are chosen.
|
|
67
|
+
vector<string> groups;
|
|
68
|
+
//! Aliases for the column names
|
|
69
|
+
vector<string> column_name_alias;
|
|
70
|
+
//! Whether or not to include nulls in the result (UNPIVOT only)
|
|
71
|
+
bool include_nulls;
|
|
72
|
+
|
|
73
|
+
public:
|
|
74
|
+
string ToString() const override;
|
|
75
|
+
bool Equals(const TableRef *other_p) const override;
|
|
76
|
+
|
|
77
|
+
unique_ptr<TableRef> Copy() override;
|
|
78
|
+
|
|
79
|
+
//! Serializes a blob into a JoinRef
|
|
80
|
+
void Serialize(FieldWriter &serializer) const override;
|
|
81
|
+
//! Deserializes a blob back into a JoinRef
|
|
82
|
+
static unique_ptr<TableRef> Deserialize(FieldReader &source);
|
|
83
|
+
|
|
84
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
85
|
+
static unique_ptr<TableRef> FormatDeserialize(FormatDeserializer &source);
|
|
86
|
+
};
|
|
87
|
+
} // namespace duckdb
|
|
@@ -32,5 +32,8 @@ public:
|
|
|
32
32
|
void Serialize(FieldWriter &serializer) const override;
|
|
33
33
|
//! Deserializes a blob back into a SubqueryRef
|
|
34
34
|
static unique_ptr<TableRef> Deserialize(FieldReader &source);
|
|
35
|
+
|
|
36
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
37
|
+
static unique_ptr<TableRef> FormatDeserialize(FormatDeserializer &source);
|
|
35
38
|
};
|
|
36
39
|
} // namespace duckdb
|
|
@@ -40,5 +40,8 @@ public:
|
|
|
40
40
|
void Serialize(FieldWriter &serializer) const override;
|
|
41
41
|
//! Deserializes a blob back into a BaseTableRef
|
|
42
42
|
static unique_ptr<TableRef> Deserialize(FieldReader &source);
|
|
43
|
+
|
|
44
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
45
|
+
static unique_ptr<TableRef> FormatDeserialize(FormatDeserializer &source);
|
|
43
46
|
};
|
|
44
47
|
} // namespace duckdb
|
|
@@ -48,8 +48,10 @@ public:
|
|
|
48
48
|
DUCKDB_API virtual void Serialize(FieldWriter &writer) const = 0;
|
|
49
49
|
//! Deserializes a blob back into a TableRef
|
|
50
50
|
DUCKDB_API static unique_ptr<TableRef> Deserialize(Deserializer &source);
|
|
51
|
-
|
|
52
51
|
//! Copy the properties of this table ref to the target
|
|
53
52
|
void CopyProperties(TableRef &target) const;
|
|
53
|
+
|
|
54
|
+
virtual void FormatSerialize(FormatSerializer &serializer) const;
|
|
55
|
+
static unique_ptr<TableRef> FormatDeserialize(FormatDeserializer &deserializer);
|
|
54
56
|
};
|
|
55
57
|
} // namespace duckdb
|
|
@@ -41,6 +41,7 @@ class SetVariableStatement;
|
|
|
41
41
|
class ResetVariableStatement;
|
|
42
42
|
class LoadStatement;
|
|
43
43
|
class LogicalPlanStatement;
|
|
44
|
+
class MultiStatement;
|
|
44
45
|
|
|
45
46
|
//===--------------------------------------------------------------------===//
|
|
46
47
|
// Query Node
|
|
@@ -94,6 +95,7 @@ class SubqueryRef;
|
|
|
94
95
|
class TableFunctionRef;
|
|
95
96
|
class EmptyTableRef;
|
|
96
97
|
class ExpressionListRef;
|
|
98
|
+
class PivotRef;
|
|
97
99
|
|
|
98
100
|
//===--------------------------------------------------------------------===//
|
|
99
101
|
// Other
|