duckdb 0.7.2-dev12.0 → 0.7.2-dev1244.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/icu/third_party/icu/stubdata/stubdata.cpp +1 -1
- 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 +14 -3
- package/src/duckdb/extension/parquet/parquet_reader.cpp +6 -1
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +49 -36
- 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/hive_partitioning.cpp +3 -1
- package/src/duckdb/src/common/local_file_system.cpp +64 -7
- 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/progress_bar/progress_bar.cpp +7 -0
- 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/comparators.cpp +14 -5
- 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 +18 -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 +12 -10
- package/src/duckdb/src/common/types/data_chunk.cpp +1 -1
- package/src/duckdb/src/common/types/interval.cpp +0 -41
- package/src/duckdb/src/common/types/list_segment.cpp +658 -0
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/string_type.cpp +1 -1
- package/src/duckdb/src/common/types/time.cpp +13 -0
- package/src/duckdb/src/common/types/validity_mask.cpp +24 -7
- package/src/duckdb/src/common/types/value.cpp +320 -154
- package/src/duckdb/src/common/types/vector.cpp +158 -134
- package/src/duckdb/src/common/types.cpp +313 -153
- package/src/duckdb/src/common/value_operations/comparison_operations.cpp +14 -22
- package/src/duckdb/src/common/vector_operations/comparison_operators.cpp +10 -10
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +11 -10
- package/src/duckdb/src/common/vector_operations/vector_cast.cpp +2 -1
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +98 -74
- 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/expression_executor/execute_comparison.cpp +2 -2
- package/src/duckdb/src/execution/index/art/art.cpp +19 -5
- package/src/duckdb/src/execution/join_hashtable.cpp +3 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +1 -1
- 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_hash_join.cpp +2 -0
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +13 -4
- package/src/duckdb/src/execution/operator/join/physical_join.cpp +0 -3
- 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 +11 -4
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +24 -19
- package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +3 -0
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -1
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/physical_delete.cpp +1 -3
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -0
- 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/operator/set/physical_recursive_cte.cpp +2 -5
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +20 -5
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +22 -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_create_index.cpp +2 -1
- 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/radix_partitioned_hashtable.cpp +23 -15
- 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 +6 -712
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +138 -45
- 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/cast_rules.cpp +9 -4
- package/src/duckdb/src/function/function_binder.cpp +1 -8
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +24 -1
- 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_sort.cpp +25 -18
- 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 +60 -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 +9 -12
- 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/helper.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/{http_stats.hpp → http_state.hpp} +18 -4
- package/src/duckdb/src/include/duckdb/common/operator/comparison_operators.hpp +45 -149
- 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/progress_bar/progress_bar.hpp +2 -0
- 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 +27 -0
- package/src/duckdb/src/include/duckdb/common/types/bit.hpp +12 -7
- package/src/duckdb/src/include/duckdb/common/types/interval.hpp +39 -3
- package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +70 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +73 -3
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/validity_mask.hpp +4 -1
- 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 +35 -20
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +3 -14
- 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 +10 -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 +5 -1
- 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_config.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 +2 -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 +2 -1
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +4 -3
- package/src/duckdb/src/include/duckdb/storage/index.hpp +5 -4
- 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 +21 -7
- 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 +5 -6
- package/src/duckdb/src/include/duckdb/storage/table/column_segment_tree.hpp +18 -0
- 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 -3
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +41 -45
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +23 -7
- package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +35 -0
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +21 -29
- package/src/duckdb/src/include/duckdb/storage/table/segment_base.hpp +6 -6
- package/src/duckdb/src/include/duckdb/storage/table/segment_tree.hpp +281 -26
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +0 -4
- 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 +6 -3
- package/src/duckdb/src/include/duckdb.h +71 -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/capi/table_function-c.cpp +23 -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/main/settings/settings.cpp +20 -8
- 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 +3 -6
- 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 +107 -71
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +32 -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 -7
- 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 +85 -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 +10 -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 +29 -25
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +45 -46
- package/src/duckdb/src/storage/compression/numeric_constant.cpp +10 -11
- package/src/duckdb/src/storage/compression/patas.cpp +1 -1
- package/src/duckdb/src/storage/compression/rle.cpp +20 -15
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +6 -6
- package/src/duckdb/src/storage/data_table.cpp +23 -23
- package/src/duckdb/src/storage/index.cpp +12 -1
- package/src/duckdb/src/storage/local_storage.cpp +27 -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 +118 -62
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +10 -9
- package/src/duckdb/src/storage/table/column_segment.cpp +30 -45
- package/src/duckdb/src/storage/table/list_column_data.cpp +50 -71
- package/src/duckdb/src/storage/table/persistent_table_data.cpp +2 -1
- package/src/duckdb/src/storage/table/row_group.cpp +213 -143
- package/src/duckdb/src/storage/table/row_group_collection.cpp +151 -105
- package/src/duckdb/src/storage/table/scan_state.cpp +45 -33
- package/src/duckdb/src/storage/table/standard_column_data.cpp +11 -12
- package/src/duckdb/src/storage/table/struct_column_data.cpp +27 -34
- package/src/duckdb/src/storage/table/table_statistics.cpp +27 -7
- package/src/duckdb/src/storage/table/update_segment.cpp +23 -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_common_types.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
|
@@ -55,6 +55,7 @@ static constexpr ExtensionEntry EXTENSION_FUNCTIONS[] = {
|
|
|
55
55
|
{"json_transform_strict", "json"},
|
|
56
56
|
{"json_type", "json"},
|
|
57
57
|
{"json_valid", "json"},
|
|
58
|
+
{"json_serialize_sql", "json"},
|
|
58
59
|
{"make_timestamptz", "icu"},
|
|
59
60
|
{"parquet_metadata", "parquet"},
|
|
60
61
|
{"parquet_scan", "parquet"},
|
|
@@ -96,6 +97,7 @@ static constexpr ExtensionEntry EXTENSION_SETTINGS[] = {
|
|
|
96
97
|
{"http_retry_backoff", "httpfs"},
|
|
97
98
|
{"http_retry_wait_ms", "httpfs"},
|
|
98
99
|
{"http_timeout", "httpfs"},
|
|
100
|
+
{"force_download", "httpfs"},
|
|
99
101
|
{"s3_access_key_id", "httpfs"},
|
|
100
102
|
{"s3_endpoint", "httpfs"},
|
|
101
103
|
{"s3_region", "httpfs"},
|
|
@@ -48,6 +48,8 @@ public:
|
|
|
48
48
|
public:
|
|
49
49
|
//! Returns the stored error message
|
|
50
50
|
DUCKDB_API const string &GetError();
|
|
51
|
+
//! Returns the stored error object
|
|
52
|
+
DUCKDB_API PreservedError &GetErrorObject();
|
|
51
53
|
//! Returns whether or not an error occurred
|
|
52
54
|
DUCKDB_API bool HasError() const;
|
|
53
55
|
//! Returns the number of columns in the result
|
|
@@ -14,10 +14,11 @@ namespace duckdb {
|
|
|
14
14
|
|
|
15
15
|
class ExplainRelation : public Relation {
|
|
16
16
|
public:
|
|
17
|
-
explicit ExplainRelation(shared_ptr<Relation> child);
|
|
17
|
+
explicit ExplainRelation(shared_ptr<Relation> child, ExplainType type = ExplainType::EXPLAIN_STANDARD);
|
|
18
18
|
|
|
19
19
|
shared_ptr<Relation> child;
|
|
20
20
|
vector<ColumnDefinition> columns;
|
|
21
|
+
ExplainType type;
|
|
21
22
|
|
|
22
23
|
public:
|
|
23
24
|
BoundStatement Bind(Binder &binder) override;
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
#include "duckdb/common/named_parameter_map.hpp"
|
|
18
18
|
#include "duckdb/main/client_context.hpp"
|
|
19
19
|
#include "duckdb/main/external_dependencies.hpp"
|
|
20
|
+
#include "duckdb/parser/statement/explain_statement.hpp"
|
|
20
21
|
|
|
21
22
|
#include <memory>
|
|
22
23
|
|
|
@@ -66,7 +67,7 @@ public:
|
|
|
66
67
|
DUCKDB_API unique_ptr<QueryResult> Query(const string &name, const string &sql);
|
|
67
68
|
|
|
68
69
|
//! Explain the query plan of this relation
|
|
69
|
-
DUCKDB_API unique_ptr<QueryResult> Explain();
|
|
70
|
+
DUCKDB_API unique_ptr<QueryResult> Explain(ExplainType type = ExplainType::EXPLAIN_STANDARD);
|
|
70
71
|
|
|
71
72
|
DUCKDB_API virtual unique_ptr<TableRef> GetTableRef();
|
|
72
73
|
DUCKDB_API virtual bool IsReadOnly() {
|
|
@@ -67,6 +67,8 @@ private:
|
|
|
67
67
|
unique_ptr<LogicalOperator> PushdownSingleJoin(unique_ptr<LogicalOperator> op, unordered_set<idx_t> &left_bindings,
|
|
68
68
|
unordered_set<idx_t> &right_bindings);
|
|
69
69
|
|
|
70
|
+
//! Push any remaining filters into a LogicalFilter at this level
|
|
71
|
+
unique_ptr<LogicalOperator> PushFinalFilters(unique_ptr<LogicalOperator> op);
|
|
70
72
|
// Finish pushing down at this operator, creating a LogicalFilter to store any of the stored filters and recursively
|
|
71
73
|
// pushing down into its children (if any)
|
|
72
74
|
unique_ptr<LogicalOperator> FinishPushdown(unique_ptr<LogicalOperator> op);
|
|
@@ -106,7 +106,7 @@ private:
|
|
|
106
106
|
//! If there are multiple equivalence sets, they are merged.
|
|
107
107
|
void AddToEquivalenceSets(FilterInfo *filter_info, vector<idx_t> matching_equivalent_sets);
|
|
108
108
|
|
|
109
|
-
TableFilterSet *GetTableFilters(LogicalOperator *op);
|
|
109
|
+
TableFilterSet *GetTableFilters(LogicalOperator *op, idx_t table_index);
|
|
110
110
|
|
|
111
111
|
void AddRelationTdom(FilterInfo *filter_info);
|
|
112
112
|
bool EmptyFilter(FilterInfo *filter_info);
|
|
@@ -115,7 +115,7 @@ private:
|
|
|
115
115
|
unique_ptr<BaseStatistics> base_stats);
|
|
116
116
|
idx_t InspectConjunctionOR(idx_t cardinality, idx_t column_index, ConjunctionOrFilter *fil,
|
|
117
117
|
unique_ptr<BaseStatistics> base_stats);
|
|
118
|
-
idx_t InspectTableFilters(idx_t cardinality, LogicalOperator *op, TableFilterSet *table_filters);
|
|
118
|
+
idx_t InspectTableFilters(idx_t cardinality, LogicalOperator *op, TableFilterSet *table_filters, idx_t table_index);
|
|
119
119
|
};
|
|
120
120
|
|
|
121
121
|
} // namespace duckdb
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
|
2
|
+
// DuckDB
|
|
3
|
+
//
|
|
4
|
+
// duckdb/optimizer/rule/ordered_aggregate_optimizer.hpp
|
|
5
|
+
//
|
|
6
|
+
//
|
|
7
|
+
//===----------------------------------------------------------------------===//
|
|
8
|
+
|
|
9
|
+
#pragma once
|
|
10
|
+
|
|
11
|
+
#include "duckdb/optimizer/rule.hpp"
|
|
12
|
+
#include "duckdb/parser/expression_map.hpp"
|
|
13
|
+
|
|
14
|
+
namespace duckdb {
|
|
15
|
+
|
|
16
|
+
class OrderedAggregateOptimizer : public Rule {
|
|
17
|
+
public:
|
|
18
|
+
explicit OrderedAggregateOptimizer(ExpressionRewriter &rewriter);
|
|
19
|
+
|
|
20
|
+
unique_ptr<Expression> Apply(LogicalOperator &op, vector<Expression *> &bindings, bool &changes_made,
|
|
21
|
+
bool is_root) override;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
} // namespace duckdb
|
|
@@ -17,6 +17,10 @@ class SelectStatement;
|
|
|
17
17
|
struct CommonTableExpressionInfo {
|
|
18
18
|
vector<string> aliases;
|
|
19
19
|
unique_ptr<SelectStatement> query;
|
|
20
|
+
|
|
21
|
+
void FormatSerialize(FormatSerializer &serializer) const;
|
|
22
|
+
static unique_ptr<CommonTableExpressionInfo> FormatDeserialize(FormatDeserializer &deserializer);
|
|
23
|
+
unique_ptr<CommonTableExpressionInfo> Copy();
|
|
20
24
|
};
|
|
21
25
|
|
|
22
26
|
} // namespace duckdb
|
|
@@ -31,6 +31,9 @@ public:
|
|
|
31
31
|
void Serialize(FieldWriter &writer) const override;
|
|
32
32
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
33
33
|
|
|
34
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
35
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
36
|
+
|
|
34
37
|
public:
|
|
35
38
|
template <class T, class BASE>
|
|
36
39
|
static string ToString(const T &entry) {
|
|
@@ -16,6 +16,9 @@ namespace duckdb {
|
|
|
16
16
|
struct CaseCheck {
|
|
17
17
|
unique_ptr<ParsedExpression> when_expr;
|
|
18
18
|
unique_ptr<ParsedExpression> then_expr;
|
|
19
|
+
|
|
20
|
+
void FormatSerialize(FormatSerializer &serializer) const;
|
|
21
|
+
static CaseCheck FormatDeserialize(FormatDeserializer &deserializer);
|
|
19
22
|
};
|
|
20
23
|
|
|
21
24
|
//! The CaseExpression represents a CASE expression in the query
|
|
@@ -35,6 +38,8 @@ public:
|
|
|
35
38
|
|
|
36
39
|
void Serialize(FieldWriter &writer) const override;
|
|
37
40
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
41
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
42
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
38
43
|
|
|
39
44
|
public:
|
|
40
45
|
template <class T, class BASE>
|
|
@@ -34,6 +34,8 @@ public:
|
|
|
34
34
|
|
|
35
35
|
void Serialize(FieldWriter &writer) const override;
|
|
36
36
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
37
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
38
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
37
39
|
|
|
38
40
|
public:
|
|
39
41
|
template <class T, class BASE>
|
|
@@ -31,5 +31,7 @@ public:
|
|
|
31
31
|
|
|
32
32
|
void Serialize(FieldWriter &writer) const override;
|
|
33
33
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
34
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
35
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
34
36
|
};
|
|
35
37
|
} // namespace duckdb
|
|
@@ -45,5 +45,7 @@ public:
|
|
|
45
45
|
|
|
46
46
|
void Serialize(FieldWriter &writer) const override;
|
|
47
47
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
48
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
49
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
48
50
|
};
|
|
49
51
|
} // namespace duckdb
|
|
@@ -30,6 +30,8 @@ public:
|
|
|
30
30
|
|
|
31
31
|
void Serialize(FieldWriter &writer) const override;
|
|
32
32
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
33
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
34
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
33
35
|
|
|
34
36
|
public:
|
|
35
37
|
template <class T, class BASE>
|
|
@@ -34,6 +34,8 @@ public:
|
|
|
34
34
|
|
|
35
35
|
void Serialize(FieldWriter &writer) const override;
|
|
36
36
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
37
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
38
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
37
39
|
|
|
38
40
|
public:
|
|
39
41
|
template <class T, class BASE>
|
|
@@ -31,6 +31,9 @@ public:
|
|
|
31
31
|
|
|
32
32
|
void Serialize(FieldWriter &writer) const override;
|
|
33
33
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
34
|
+
|
|
35
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
36
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
34
37
|
};
|
|
35
38
|
|
|
36
39
|
} // namespace duckdb
|
|
@@ -55,13 +55,15 @@ public:
|
|
|
55
55
|
|
|
56
56
|
void Serialize(FieldWriter &writer) const override;
|
|
57
57
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
58
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
59
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
58
60
|
|
|
59
61
|
void Verify() const override;
|
|
60
62
|
|
|
61
63
|
public:
|
|
62
|
-
template <class T, class BASE>
|
|
64
|
+
template <class T, class BASE, class ORDER_MODIFIER = OrderModifier>
|
|
63
65
|
static string ToString(const T &entry, const string &schema, const string &function_name, bool is_operator = false,
|
|
64
|
-
bool distinct = false, BASE *filter = nullptr,
|
|
66
|
+
bool distinct = false, BASE *filter = nullptr, ORDER_MODIFIER *order_bys = nullptr,
|
|
65
67
|
bool export_state = false, bool add_alias = false) {
|
|
66
68
|
if (is_operator) {
|
|
67
69
|
// built-in operator
|
|
@@ -37,6 +37,8 @@ public:
|
|
|
37
37
|
|
|
38
38
|
void Serialize(FieldWriter &writer) const override;
|
|
39
39
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
40
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
41
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
40
42
|
};
|
|
41
43
|
|
|
42
44
|
} // namespace duckdb
|
|
@@ -32,6 +32,8 @@ public:
|
|
|
32
32
|
|
|
33
33
|
void Serialize(FieldWriter &writer) const override;
|
|
34
34
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
35
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
36
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
35
37
|
|
|
36
38
|
public:
|
|
37
39
|
template <class T, class BASE>
|
|
@@ -34,5 +34,7 @@ public:
|
|
|
34
34
|
|
|
35
35
|
void Serialize(FieldWriter &writer) const override;
|
|
36
36
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
37
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
38
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
37
39
|
};
|
|
38
40
|
} // namespace duckdb
|
|
@@ -30,5 +30,7 @@ public:
|
|
|
30
30
|
|
|
31
31
|
void Serialize(FieldWriter &writer) const override;
|
|
32
32
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
33
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
34
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
33
35
|
};
|
|
34
36
|
} // namespace duckdb
|
|
@@ -24,8 +24,8 @@ public:
|
|
|
24
24
|
case_insensitive_set_t exclude_list;
|
|
25
25
|
//! List of columns to replace with another expression
|
|
26
26
|
case_insensitive_map_t<unique_ptr<ParsedExpression>> replace_list;
|
|
27
|
-
//!
|
|
28
|
-
|
|
27
|
+
//! The expression to select the columns (regular expression or list)
|
|
28
|
+
unique_ptr<ParsedExpression> expr;
|
|
29
29
|
//! Whether or not this is a COLUMNS expression
|
|
30
30
|
bool columns = false;
|
|
31
31
|
|
|
@@ -38,5 +38,7 @@ public:
|
|
|
38
38
|
|
|
39
39
|
void Serialize(FieldWriter &writer) const override;
|
|
40
40
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
41
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
42
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
41
43
|
};
|
|
42
44
|
} // namespace duckdb
|
|
@@ -45,5 +45,7 @@ public:
|
|
|
45
45
|
|
|
46
46
|
void Serialize(FieldWriter &writer) const override;
|
|
47
47
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
48
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
49
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
48
50
|
};
|
|
49
51
|
} // namespace duckdb
|
|
@@ -25,6 +25,8 @@ enum class WindowBoundary : uint8_t {
|
|
|
25
25
|
EXPR_FOLLOWING_RANGE = 8
|
|
26
26
|
};
|
|
27
27
|
|
|
28
|
+
const char *ToString(WindowBoundary value);
|
|
29
|
+
|
|
28
30
|
//! The WindowExpression represents a window function in the query. They are a special case of aggregates which is why
|
|
29
31
|
//! they inherit from them.
|
|
30
32
|
class WindowExpression : public ParsedExpression {
|
|
@@ -71,6 +73,8 @@ public:
|
|
|
71
73
|
|
|
72
74
|
void Serialize(FieldWriter &writer) const override;
|
|
73
75
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
|
76
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
|
77
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
|
74
78
|
|
|
75
79
|
public:
|
|
76
80
|
template <class T, class BASE, class ORDER_NODE>
|
|
@@ -200,4 +204,5 @@ public:
|
|
|
200
204
|
return result;
|
|
201
205
|
}
|
|
202
206
|
};
|
|
207
|
+
|
|
203
208
|
} // namespace duckdb
|
|
@@ -20,7 +20,8 @@ enum class AlterType : uint8_t {
|
|
|
20
20
|
ALTER_VIEW = 2,
|
|
21
21
|
ALTER_SEQUENCE = 3,
|
|
22
22
|
CHANGE_OWNERSHIP = 4,
|
|
23
|
-
|
|
23
|
+
ALTER_SCALAR_FUNCTION = 5,
|
|
24
|
+
ALTER_TABLE_FUNCTION = 6
|
|
24
25
|
};
|
|
25
26
|
|
|
26
27
|
struct AlterEntryData {
|
|
@@ -58,6 +59,9 @@ public:
|
|
|
58
59
|
void Serialize(Serializer &serializer) const;
|
|
59
60
|
virtual void Serialize(FieldWriter &writer) const = 0;
|
|
60
61
|
static unique_ptr<AlterInfo> Deserialize(Deserializer &source);
|
|
62
|
+
virtual string GetColumnName() const {
|
|
63
|
+
return "";
|
|
64
|
+
};
|
|
61
65
|
|
|
62
66
|
AlterEntryData GetAlterEntryData() const;
|
|
63
67
|
};
|
|
@@ -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
|