duckdb 0.8.2-dev161.0 → 0.8.2-dev1764.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 +15 -12
- package/binding.gyp.in +1 -1
- package/configure.py +1 -1
- package/duckdb_extension_config.cmake +10 -0
- package/package.json +1 -1
- package/src/duckdb/extension/icu/icu-dateadd.cpp +2 -2
- package/src/duckdb/extension/icu/icu-datefunc.cpp +1 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
- package/src/duckdb/extension/icu/icu-datesub.cpp +2 -2
- package/src/duckdb/extension/icu/icu-datetrunc.cpp +1 -1
- package/src/duckdb/extension/icu/icu-list-range.cpp +1 -1
- package/src/duckdb/extension/icu/icu-makedate.cpp +7 -0
- package/src/duckdb/extension/icu/icu-strptime.cpp +4 -4
- package/src/duckdb/extension/icu/icu-table-range.cpp +5 -5
- package/src/duckdb/extension/icu/icu-timebucket.cpp +16 -16
- package/src/duckdb/extension/icu/icu-timezone.cpp +8 -8
- package/src/duckdb/extension/icu/icu_extension.cpp +3 -3
- package/src/duckdb/extension/json/include/json_common.hpp +47 -231
- package/src/duckdb/extension/json/include/json_executors.hpp +49 -13
- package/src/duckdb/extension/json/include/json_functions.hpp +2 -1
- package/src/duckdb/extension/json/json_common.cpp +272 -40
- package/src/duckdb/extension/json/json_functions/json_create.cpp +21 -2
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +91 -38
- package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
- package/src/duckdb/extension/json/json_functions.cpp +24 -24
- package/src/duckdb/extension/json/json_scan.cpp +3 -6
- package/src/duckdb/extension/parquet/column_reader.cpp +19 -21
- package/src/duckdb/extension/parquet/column_writer.cpp +77 -61
- package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +2 -2
- package/src/duckdb/extension/parquet/include/column_reader.hpp +14 -16
- package/src/duckdb/extension/parquet/include/column_writer.hpp +9 -7
- package/src/duckdb/extension/parquet/include/list_column_reader.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +3 -3
- package/src/duckdb/extension/parquet/include/parquet_decimal_utils.hpp +3 -3
- package/src/duckdb/extension/parquet/include/parquet_file_metadata_cache.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_statistics.hpp +2 -2
- package/src/duckdb/extension/parquet/include/parquet_support.hpp +9 -11
- package/src/duckdb/extension/parquet/include/parquet_writer.hpp +24 -5
- package/src/duckdb/extension/parquet/include/string_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +2 -3
- package/src/duckdb/extension/parquet/include/zstd_file_system.hpp +2 -2
- package/src/duckdb/extension/parquet/parquet_extension.cpp +194 -20
- package/src/duckdb/extension/parquet/parquet_reader.cpp +6 -6
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +7 -6
- package/src/duckdb/extension/parquet/parquet_writer.cpp +79 -16
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +2 -2
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +1 -1
- package/src/duckdb/src/catalog/catalog_search_path.cpp +5 -4
- package/src/duckdb/src/catalog/default/default_functions.cpp +16 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +75 -10
- package/src/duckdb/src/common/adbc/driver_manager.cpp +6 -11
- package/src/duckdb/src/common/allocator.cpp +14 -2
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +79 -12
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +44 -19
- package/src/duckdb/src/common/assert.cpp +3 -0
- package/src/duckdb/src/common/enum_util.cpp +4619 -4446
- package/src/duckdb/src/common/enums/logical_operator_type.cpp +4 -0
- package/src/duckdb/src/common/enums/optimizer_type.cpp +2 -0
- package/src/duckdb/src/common/enums/physical_operator_type.cpp +4 -0
- package/src/duckdb/src/common/exception.cpp +2 -2
- package/src/duckdb/src/common/extra_type_info.cpp +506 -0
- package/src/duckdb/src/common/file_system.cpp +19 -0
- package/src/duckdb/src/common/hive_partitioning.cpp +10 -6
- package/src/duckdb/src/common/local_file_system.cpp +14 -14
- package/src/duckdb/src/common/multi_file_reader.cpp +184 -20
- package/src/duckdb/src/common/operator/cast_operators.cpp +35 -1
- package/src/duckdb/src/common/radix_partitioning.cpp +26 -8
- package/src/duckdb/src/common/re2_regex.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_external.cpp +1 -1
- package/src/duckdb/src/common/sort/merge_sorter.cpp +9 -16
- package/src/duckdb/src/common/sort/partition_state.cpp +70 -50
- package/src/duckdb/src/common/types/batched_data_collection.cpp +7 -2
- package/src/duckdb/src/common/types/bit.cpp +51 -0
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +9 -6
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +17 -2
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +15 -6
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
- package/src/duckdb/src/common/types/data_chunk.cpp +2 -2
- package/src/duckdb/src/common/types/date.cpp +9 -0
- package/src/duckdb/src/common/types/list_segment.cpp +24 -74
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +3 -9
- package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +2 -0
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +2 -2
- package/src/duckdb/src/common/types/uuid.cpp +2 -2
- package/src/duckdb/src/common/types/validity_mask.cpp +33 -0
- package/src/duckdb/src/common/types/value.cpp +11 -6
- package/src/duckdb/src/common/types.cpp +9 -656
- package/src/duckdb/src/common/virtual_file_system.cpp +138 -1
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +2 -0
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +5 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +8 -8
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +4 -3
- package/src/duckdb/src/core_functions/function_list.cpp +4 -2
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +208 -42
- package/src/duckdb/src/core_functions/scalar/date/epoch.cpp +10 -24
- package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +19 -4
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +4 -2
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +34 -18
- package/src/duckdb/src/execution/expression_executor.cpp +1 -1
- package/src/duckdb/src/execution/index/art/art.cpp +149 -139
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +1 -1
- package/src/duckdb/src/execution/index/art/iterator.cpp +129 -207
- package/src/duckdb/src/execution/index/art/leaf.cpp +8 -37
- package/src/duckdb/src/execution/index/art/node.cpp +113 -120
- package/src/duckdb/src/execution/index/art/node16.cpp +1 -10
- package/src/duckdb/src/execution/index/art/node256.cpp +1 -9
- package/src/duckdb/src/execution/index/art/node4.cpp +12 -13
- package/src/duckdb/src/execution/index/art/node48.cpp +1 -11
- package/src/duckdb/src/execution/index/art/prefix.cpp +228 -350
- package/src/duckdb/src/execution/join_hashtable.cpp +4 -4
- package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -0
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -3
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +32 -22
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +512 -300
- package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +4 -3
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +5 -5
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +444 -284
- package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +21 -10
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +28 -12
- package/src/duckdb/src/execution/operator/join/physical_join.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +23 -4
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +41 -5
- package/src/duckdb/src/execution/operator/persistent/base_csv_reader.cpp +100 -13
- package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/csv_reader_options.cpp +20 -0
- package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +48 -0
- package/src/duckdb/src/execution/operator/persistent/parallel_csv_reader.cpp +2 -3
- package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +6 -4
- package/src/duckdb/src/execution/operator/persistent/physical_fixed_batch_copy.cpp +3 -3
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -1
- package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +19 -0
- package/src/duckdb/src/execution/operator/scan/physical_table_scan.cpp +7 -2
- package/src/duckdb/src/execution/operator/set/physical_cte.cpp +160 -0
- package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +15 -5
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +41 -6
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +30 -5
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +43 -10
- package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +56 -33
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +17 -13
- package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +33 -0
- package/src/duckdb/src/execution/physical_plan/plan_get.cpp +2 -2
- package/src/duckdb/src/execution/physical_plan/plan_recursive_cte.cpp +25 -4
- package/src/duckdb/src/execution/physical_plan_generator.cpp +4 -0
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +290 -43
- package/src/duckdb/src/execution/window_segment_tree.cpp +286 -129
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +2 -1
- package/src/duckdb/src/function/cast/bit_cast.cpp +34 -2
- package/src/duckdb/src/function/cast/blob_cast.cpp +3 -0
- package/src/duckdb/src/function/cast/numeric_casts.cpp +2 -0
- package/src/duckdb/src/function/function.cpp +3 -1
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +5 -0
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_integral.cpp +212 -0
- package/src/duckdb/src/function/scalar/compressed_materialization/compress_string.cpp +249 -0
- package/src/duckdb/src/function/scalar/compressed_materialization_functions.cpp +29 -0
- package/src/duckdb/src/function/scalar/list/list_resize.cpp +162 -0
- package/src/duckdb/src/function/scalar/nested_functions.cpp +1 -0
- package/src/duckdb/src/function/scalar/string/like.cpp +12 -4
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +12 -5
- package/src/duckdb/src/function/table/arrow.cpp +19 -0
- package/src/duckdb/src/function/table/arrow_conversion.cpp +35 -1
- package/src/duckdb/src/function/table/copy_csv.cpp +8 -1
- package/src/duckdb/src/function/table/read_csv.cpp +100 -17
- package/src/duckdb/src/function/table/system/test_all_types.cpp +7 -0
- package/src/duckdb/src/function/table/system_functions.cpp +1 -0
- package/src/duckdb/src/function/table/table_scan.cpp +9 -0
- package/src/duckdb/src/function/table/version/pragma_version.cpp +46 -2
- package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/bswap.hpp +42 -0
- package/src/duckdb/src/include/duckdb/common/dl.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +616 -584
- package/src/duckdb/src/include/duckdb/common/enums/cte_materialize.hpp +21 -0
- package/src/duckdb/src/include/duckdb/common/enums/joinref_type.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/enums/logical_operator_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/extra_operator_info.hpp +27 -0
- package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +219 -0
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +6 -4
- package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +10 -42
- package/src/duckdb/src/include/duckdb/common/mutex.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +43 -3
- package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +10 -0
- package/src/duckdb/src/include/duckdb/common/radix.hpp +9 -20
- package/src/duckdb/src/include/duckdb/common/radix_partitioning.hpp +6 -21
- package/src/duckdb/src/include/duckdb/common/row_operations/row_operations.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +23 -8
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -0
- package/src/duckdb/src/include/duckdb/common/types/batched_data_collection.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/types/bit.hpp +81 -0
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_allocator.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +6 -1
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_scan_states.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/types/data_chunk.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/date.hpp +7 -5
- package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +6 -8
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +5 -2
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/types.hpp +1 -15
- package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +38 -97
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +4 -4
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/distributive_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/holistic_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/nested_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -0
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +3 -3
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/bit_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/blob_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/date_functions.hpp +31 -11
- package/src/duckdb/src/include/duckdb/core_functions/scalar/enum_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/list_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/math_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/random_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/struct_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/core_functions/scalar/union_functions.hpp +3 -1
- package/src/duckdb/src/include/duckdb/execution/aggregate_hashtable.hpp +21 -3
- package/src/duckdb/src/include/duckdb/execution/executor.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +4 -5
- package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +31 -27
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +6 -14
- package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +4 -10
- package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +3 -6
- package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +3 -6
- package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +5 -8
- package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +3 -6
- package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +63 -52
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +3 -10
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +12 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/base_csv_reader.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_line_info.hpp +4 -3
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_reader_options.hpp +8 -1
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_rejects_table.hpp +36 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/parallel_csv_reader.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_column_data_scan.hpp +10 -0
- package/src/duckdb/src/include/duckdb/execution/operator/scan/physical_table_scan.hpp +5 -1
- package/src/duckdb/src/include/duckdb/execution/operator/set/physical_cte.hpp +62 -0
- package/src/duckdb/src/include/duckdb/execution/operator/set/physical_recursive_cte.hpp +8 -2
- package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +5 -1
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +10 -3
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +51 -40
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/built_in_functions.hpp +1 -0
- package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp +49 -0
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +5 -0
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +2 -0
- package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +4 -0
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +5 -0
- package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/connection.hpp +1 -2
- package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +22 -0
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +2 -0
- package/src/duckdb/src/include/duckdb/main/relation/cross_product_relation.hpp +4 -1
- package/src/duckdb/src/include/duckdb/main/relation/join_relation.hpp +5 -2
- package/src/duckdb/src/include/duckdb/main/relation.hpp +4 -2
- package/src/duckdb/src/include/duckdb/main/settings.hpp +39 -1
- package/src/duckdb/src/include/duckdb/optimizer/column_binding_replacer.hpp +47 -0
- package/src/duckdb/src/include/duckdb/optimizer/compressed_materialization.hpp +132 -0
- package/src/duckdb/src/include/duckdb/optimizer/deliminator.hpp +13 -16
- package/src/duckdb/src/include/duckdb/optimizer/filter_pushdown.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +10 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +1 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/matcher/set_matcher.hpp +13 -0
- package/src/duckdb/src/include/duckdb/optimizer/optimizer.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/remove_duplicate_groups.hpp +40 -0
- package/src/duckdb/src/include/duckdb/optimizer/statistics_propagator.hpp +11 -3
- package/src/duckdb/src/include/duckdb/optimizer/topn_optimizer.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +3 -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 +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/cte_node.hpp +54 -0
- package/src/duckdb/src/include/duckdb/parser/query_node/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +15 -8
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +12 -5
- package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +3 -3
- package/src/duckdb/src/include/duckdb/planner/expression_binder/lateral_binder.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +5 -5
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +7 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +43 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +49 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +5 -4
- package/src/duckdb/src/include/duckdb/planner/query_node/bound_cte_node.hpp +44 -0
- package/src/duckdb/src/include/duckdb/planner/query_node/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/subquery/flatten_dependent_join.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/subquery/has_correlated_expressions.hpp +4 -1
- package/src/duckdb/src/include/duckdb/planner/subquery/recursive_dependent_join_planner.hpp +31 -0
- package/src/duckdb/src/include/duckdb/planner/subquery/rewrite_correlated_expressions.hpp +8 -2
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_cteref.hpp +5 -2
- package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +22 -0
- package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +2 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +3 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +1 -3
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -3
- package/src/duckdb/src/include/duckdb.h +28 -0
- package/src/duckdb/src/main/capi/arrow-c.cpp +155 -1
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +1 -1
- package/src/duckdb/src/main/config.cpp +4 -0
- package/src/duckdb/src/main/database.cpp +1 -1
- package/src/duckdb/src/main/extension/extension_helper.cpp +93 -88
- package/src/duckdb/src/main/extension/extension_install.cpp +9 -0
- package/src/duckdb/src/main/extension/extension_load.cpp +10 -1
- package/src/duckdb/src/main/relation/cross_product_relation.cpp +4 -3
- package/src/duckdb/src/main/relation/join_relation.cpp +5 -5
- package/src/duckdb/src/main/relation.cpp +6 -5
- package/src/duckdb/src/main/settings/settings.cpp +79 -18
- package/src/duckdb/src/optimizer/column_binding_replacer.cpp +43 -0
- package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +1 -2
- package/src/duckdb/src/optimizer/compressed_materialization/compress_aggregate.cpp +140 -0
- package/src/duckdb/src/optimizer/compressed_materialization/compress_distinct.cpp +42 -0
- package/src/duckdb/src/optimizer/compressed_materialization/compress_order.cpp +65 -0
- package/src/duckdb/src/optimizer/compressed_materialization.cpp +478 -0
- package/src/duckdb/src/optimizer/deliminator.cpp +176 -321
- package/src/duckdb/src/optimizer/filter_pushdown.cpp +9 -0
- package/src/duckdb/src/optimizer/join_order/estimated_properties.cpp +7 -0
- package/src/duckdb/src/optimizer/join_order/join_node.cpp +2 -2
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +113 -82
- package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +2 -6
- package/src/duckdb/src/optimizer/join_order/query_graph.cpp +22 -14
- package/src/duckdb/src/optimizer/optimizer.cpp +49 -14
- package/src/duckdb/src/optimizer/pushdown/pushdown_cross_product.cpp +5 -5
- package/src/duckdb/src/optimizer/pushdown/pushdown_get.cpp +0 -1
- package/src/duckdb/src/optimizer/remove_duplicate_groups.cpp +127 -0
- package/src/duckdb/src/optimizer/remove_unused_columns.cpp +4 -0
- package/src/duckdb/src/optimizer/rule/regex_optimizations.cpp +154 -15
- package/src/duckdb/src/optimizer/statistics/operator/propagate_join.cpp +65 -8
- package/src/duckdb/src/optimizer/statistics/operator/propagate_order.cpp +1 -1
- package/src/duckdb/src/optimizer/statistics_propagator.cpp +7 -5
- package/src/duckdb/src/optimizer/topn_optimizer.cpp +20 -10
- package/src/duckdb/src/parallel/executor.cpp +15 -0
- package/src/duckdb/src/parallel/task_scheduler.cpp +11 -2
- package/src/duckdb/src/parser/common_table_expression_info.cpp +2 -0
- package/src/duckdb/src/parser/expression/between_expression.cpp +3 -15
- package/src/duckdb/src/parser/expression/case_expression.cpp +0 -13
- package/src/duckdb/src/parser/expression/cast_expression.cpp +3 -14
- package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -13
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +3 -12
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -13
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +0 -12
- package/src/duckdb/src/parser/expression/constant_expression.cpp +3 -11
- package/src/duckdb/src/parser/expression/default_expression.cpp +0 -4
- package/src/duckdb/src/parser/expression/function_expression.cpp +3 -32
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +4 -14
- package/src/duckdb/src/parser/expression/operator_expression.cpp +0 -12
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +0 -12
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +4 -11
- package/src/duckdb/src/parser/expression/star_expression.cpp +0 -19
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +0 -18
- package/src/duckdb/src/parser/expression/window_expression.cpp +3 -39
- package/src/duckdb/src/parser/parsed_expression.cpp +0 -70
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +7 -0
- package/src/duckdb/src/parser/parser.cpp +8 -2
- package/src/duckdb/src/parser/query_node/cte_node.cpp +58 -0
- package/src/duckdb/src/parser/query_node/recursive_cte_node.cpp +0 -19
- package/src/duckdb/src/parser/query_node/select_node.cpp +0 -29
- package/src/duckdb/src/parser/query_node/set_operation_node.cpp +0 -15
- package/src/duckdb/src/parser/query_node.cpp +15 -37
- package/src/duckdb/src/parser/result_modifier.cpp +0 -74
- package/src/duckdb/src/parser/tableref/basetableref.cpp +0 -19
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +0 -4
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +0 -15
- package/src/duckdb/src/parser/tableref/joinref.cpp +3 -23
- package/src/duckdb/src/parser/tableref/pivotref.cpp +0 -23
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -13
- package/src/duckdb/src/parser/tableref/table_function.cpp +0 -15
- package/src/duckdb/src/parser/tableref.cpp +0 -44
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +55 -3
- package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +2 -0
- package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +44 -0
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +19 -1
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +13 -0
- package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +6 -1
- package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +6 -1
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -2
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +14 -11
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +11 -2
- package/src/duckdb/src/parser/transform/statement/transform_update.cpp +6 -1
- package/src/duckdb/src/parser/transformer.cpp +15 -0
- package/src/duckdb/src/planner/binder/query_node/bind_cte_node.cpp +64 -0
- package/src/duckdb/src/planner/binder/query_node/plan_cte_node.cpp +26 -0
- package/src/duckdb/src/planner/binder/query_node/plan_recursive_cte_node.cpp +5 -5
- package/src/duckdb/src/planner/binder/query_node/plan_setop.cpp +4 -4
- package/src/duckdb/src/planner/binder/query_node/plan_subquery.cpp +32 -29
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +5 -4
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +11 -2
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +32 -5
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +116 -49
- package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +64 -26
- package/src/duckdb/src/planner/binder/tableref/plan_subqueryref.cpp +3 -3
- package/src/duckdb/src/planner/binder.cpp +44 -31
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +4 -31
- package/src/duckdb/src/planner/expression_binder.cpp +3 -0
- package/src/duckdb/src/planner/expression_iterator.cpp +6 -0
- package/src/duckdb/src/planner/logical_operator.cpp +5 -0
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +2 -0
- package/src/duckdb/src/planner/operator/logical_cteref.cpp +3 -1
- package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +26 -0
- package/src/duckdb/src/planner/operator/logical_get.cpp +9 -4
- package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +21 -0
- package/src/duckdb/src/planner/subquery/flatten_dependent_join.cpp +90 -38
- package/src/duckdb/src/planner/subquery/has_correlated_expressions.cpp +22 -7
- package/src/duckdb/src/planner/subquery/rewrite_correlated_expressions.cpp +65 -7
- package/src/duckdb/src/storage/arena_allocator.cpp +1 -2
- package/src/duckdb/src/storage/buffer/block_manager.cpp +3 -0
- package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -0
- package/src/duckdb/src/storage/compression/rle.cpp +0 -1
- package/src/duckdb/src/storage/data_table.cpp +1 -1
- package/src/duckdb/src/storage/local_storage.cpp +3 -3
- package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +340 -0
- package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +122 -0
- package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +86 -0
- package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +166 -0
- package/src/duckdb/src/storage/serialization/serialize_types.cpp +127 -0
- package/src/duckdb/src/storage/single_file_block_manager.cpp +23 -0
- package/src/duckdb/src/storage/statistics/string_stats.cpp +21 -2
- package/src/duckdb/src/storage/storage_info.cpp +1 -1
- package/src/duckdb/src/storage/table/chunk_info.cpp +17 -0
- package/src/duckdb/src/storage/table/row_group.cpp +25 -9
- package/src/duckdb/src/storage/table/row_group_collection.cpp +19 -18
- package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +2 -2
- package/src/duckdb/third_party/concurrentqueue/lightweightsemaphore.h +76 -0
- package/src/duckdb/third_party/fast_float/fast_float/fast_float.h +2 -0
- package/src/duckdb/third_party/httplib/httplib.hpp +10 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +9 -0
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +2 -1
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12487 -12331
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +6 -6
- package/src/duckdb/ub_src_common.cpp +2 -0
- package/src/duckdb/ub_src_execution_index_art.cpp +0 -2
- package/src/duckdb/ub_src_execution_operator_persistent.cpp +2 -0
- package/src/duckdb/ub_src_execution_operator_set.cpp +2 -0
- package/src/duckdb/ub_src_execution_physical_plan.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar.cpp +2 -0
- package/src/duckdb/ub_src_function_scalar_compressed_materialization.cpp +4 -0
- package/src/duckdb/ub_src_function_scalar_list.cpp +2 -0
- package/src/duckdb/ub_src_optimizer.cpp +6 -0
- package/src/duckdb/ub_src_optimizer_compressed_materialization.cpp +6 -0
- package/src/duckdb/ub_src_optimizer_statistics_expression.cpp +0 -2
- package/src/duckdb/ub_src_parser_query_node.cpp +2 -0
- package/src/duckdb/ub_src_parser_transform_expression.cpp +2 -0
- package/src/duckdb/ub_src_planner_binder_query_node.cpp +4 -0
- package/src/duckdb/ub_src_planner_operator.cpp +4 -0
- package/src/duckdb/ub_src_storage_serialization.cpp +10 -0
- package/src/statement.cpp +10 -3
- package/test/columns.test.ts +24 -1
- package/test/test_all_types.test.ts +234 -0
- package/tsconfig.json +1 -0
- package/src/duckdb/src/execution/index/art/prefix_segment.cpp +0 -42
- package/src/duckdb/src/include/duckdb/execution/index/art/prefix_segment.hpp +0 -40
- package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +0 -118
@@ -36,5 +36,8 @@ public:
|
|
36
36
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
37
37
|
void FormatSerialize(FormatSerializer &serializer) const override;
|
38
38
|
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
39
|
+
|
40
|
+
private:
|
41
|
+
CollateExpression();
|
39
42
|
};
|
40
43
|
} // namespace duckdb
|
@@ -50,5 +50,8 @@ public:
|
|
50
50
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
51
51
|
void FormatSerialize(FormatSerializer &serializer) const override;
|
52
52
|
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
53
|
+
|
54
|
+
private:
|
55
|
+
ColumnRefExpression();
|
53
56
|
};
|
54
57
|
} // namespace duckdb
|
@@ -37,6 +37,9 @@ public:
|
|
37
37
|
|
38
38
|
void FormatSerialize(FormatSerializer &serializer) const override;
|
39
39
|
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
40
|
+
|
41
|
+
private:
|
42
|
+
ConstantExpression();
|
40
43
|
};
|
41
44
|
|
42
45
|
} // namespace duckdb
|
@@ -31,5 +31,6 @@ public:
|
|
31
31
|
void Serialize(FieldWriter &writer) const override;
|
32
32
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
33
33
|
void FormatSerialize(FormatSerializer &serializer) const override;
|
34
|
+
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
34
35
|
};
|
35
36
|
} // namespace duckdb
|
@@ -42,6 +42,9 @@ public:
|
|
42
42
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
43
43
|
void FormatSerialize(FormatSerializer &serializer) const override;
|
44
44
|
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
45
|
+
|
46
|
+
private:
|
47
|
+
LambdaExpression();
|
45
48
|
};
|
46
49
|
|
47
50
|
} // namespace duckdb
|
@@ -35,5 +35,8 @@ public:
|
|
35
35
|
static unique_ptr<ParsedExpression> Deserialize(ExpressionType type, FieldReader &source);
|
36
36
|
void FormatSerialize(FormatSerializer &serializer) const override;
|
37
37
|
static unique_ptr<ParsedExpression> FormatDeserialize(ExpressionType type, FormatDeserializer &deserializer);
|
38
|
+
|
39
|
+
private:
|
40
|
+
PositionalReferenceExpression();
|
38
41
|
};
|
39
42
|
} // namespace duckdb
|
@@ -0,0 +1,54 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/parser/query_node/cte_node.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
|
9
|
+
#pragma once
|
10
|
+
|
11
|
+
#include "duckdb/parser/parsed_expression.hpp"
|
12
|
+
#include "duckdb/parser/query_node.hpp"
|
13
|
+
#include "duckdb/parser/sql_statement.hpp"
|
14
|
+
|
15
|
+
namespace duckdb {
|
16
|
+
|
17
|
+
class CTENode : public QueryNode {
|
18
|
+
public:
|
19
|
+
static constexpr const QueryNodeType TYPE = QueryNodeType::CTE_NODE;
|
20
|
+
|
21
|
+
public:
|
22
|
+
CTENode() : QueryNode(QueryNodeType::CTE_NODE) {
|
23
|
+
}
|
24
|
+
|
25
|
+
string ctename;
|
26
|
+
//! The query of the CTE
|
27
|
+
unique_ptr<QueryNode> query;
|
28
|
+
//! Child
|
29
|
+
unique_ptr<QueryNode> child;
|
30
|
+
//! Aliases of the CTE node
|
31
|
+
vector<string> aliases;
|
32
|
+
|
33
|
+
const vector<unique_ptr<ParsedExpression>> &GetSelectList() const override {
|
34
|
+
return query->GetSelectList();
|
35
|
+
}
|
36
|
+
|
37
|
+
public:
|
38
|
+
//! Convert the query node to a string
|
39
|
+
string ToString() const override;
|
40
|
+
|
41
|
+
bool Equals(const QueryNode *other) const override;
|
42
|
+
//! Create a copy of this SelectNode
|
43
|
+
unique_ptr<QueryNode> Copy() const override;
|
44
|
+
|
45
|
+
//! Serializes a QueryNode to a stand-alone binary blob
|
46
|
+
void Serialize(FieldWriter &writer) const override;
|
47
|
+
//! Deserializes a blob back into a QueryNode
|
48
|
+
static unique_ptr<QueryNode> Deserialize(FieldReader &reader);
|
49
|
+
|
50
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
51
|
+
static unique_ptr<QueryNode> FormatDeserialize(FormatDeserializer &source);
|
52
|
+
};
|
53
|
+
|
54
|
+
} // namespace duckdb
|
@@ -31,6 +31,7 @@ public:
|
|
31
31
|
//! Deserializes a blob back into a DummyTableRef
|
32
32
|
static unique_ptr<TableRef> Deserialize(FieldReader &source);
|
33
33
|
|
34
|
+
void FormatSerialize(FormatSerializer &serializer) const override;
|
34
35
|
static unique_ptr<TableRef> FormatDeserialize(FormatDeserializer &source);
|
35
36
|
};
|
36
37
|
} // namespace duckdb
|
@@ -23,7 +23,7 @@ public:
|
|
23
23
|
static constexpr const TableReferenceType TYPE = TableReferenceType::JOIN;
|
24
24
|
|
25
25
|
public:
|
26
|
-
explicit JoinRef(JoinRefType ref_type)
|
26
|
+
explicit JoinRef(JoinRefType ref_type = JoinRefType::REGULAR)
|
27
27
|
: TableRef(TableReferenceType::JOIN), type(JoinType::INNER), ref_type(ref_type) {
|
28
28
|
}
|
29
29
|
|
@@ -17,6 +17,9 @@ class SubqueryRef : public TableRef {
|
|
17
17
|
public:
|
18
18
|
static constexpr const TableReferenceType TYPE = TableReferenceType::SUBQUERY;
|
19
19
|
|
20
|
+
private:
|
21
|
+
SubqueryRef();
|
22
|
+
|
20
23
|
public:
|
21
24
|
DUCKDB_API explicit SubqueryRef(unique_ptr<SelectStatement> subquery, string alias = string());
|
22
25
|
|
@@ -8,20 +8,20 @@
|
|
8
8
|
|
9
9
|
#pragma once
|
10
10
|
|
11
|
+
#include "duckdb/common/case_insensitive_map.hpp"
|
11
12
|
#include "duckdb/common/constants.hpp"
|
12
13
|
#include "duckdb/common/enums/expression_type.hpp"
|
13
14
|
#include "duckdb/common/types.hpp"
|
14
15
|
#include "duckdb/common/unordered_map.hpp"
|
15
|
-
#include "duckdb/parser/qualified_name.hpp"
|
16
|
-
#include "duckdb/parser/tokens.hpp"
|
17
|
-
#include "duckdb/parser/parsed_data/create_info.hpp"
|
18
16
|
#include "duckdb/parser/group_by_node.hpp"
|
17
|
+
#include "duckdb/parser/parsed_data/create_info.hpp"
|
18
|
+
#include "duckdb/parser/qualified_name.hpp"
|
19
19
|
#include "duckdb/parser/query_node.hpp"
|
20
|
-
#include "duckdb/
|
21
|
-
|
22
|
-
#include "pg_definitions.hpp"
|
20
|
+
#include "duckdb/parser/query_node/cte_node.hpp"
|
21
|
+
#include "duckdb/parser/tokens.hpp"
|
23
22
|
#include "nodes/parsenodes.hpp"
|
24
23
|
#include "nodes/primnodes.hpp"
|
24
|
+
#include "pg_definitions.hpp"
|
25
25
|
|
26
26
|
namespace duckdb {
|
27
27
|
|
@@ -232,6 +232,9 @@ private:
|
|
232
232
|
unique_ptr<ParsedExpression> TransformParamRef(duckdb_libpgquery::PGParamRef &node);
|
233
233
|
unique_ptr<ParsedExpression> TransformNamedArg(duckdb_libpgquery::PGNamedArgExpr &root);
|
234
234
|
|
235
|
+
//! Transform multi assignment reference into an Expression
|
236
|
+
unique_ptr<ParsedExpression> TransformMultiAssignRef(duckdb_libpgquery::PGMultiAssignRef &root);
|
237
|
+
|
235
238
|
unique_ptr<ParsedExpression> TransformSQLValueFunction(duckdb_libpgquery::PGSQLValueFunction &node);
|
236
239
|
|
237
240
|
unique_ptr<ParsedExpression> TransformSubquery(duckdb_libpgquery::PGSubLink &root);
|
@@ -269,13 +272,17 @@ private:
|
|
269
272
|
OnCreateConflict TransformOnConflict(duckdb_libpgquery::PGOnCreateConflict conflict);
|
270
273
|
string TransformAlias(duckdb_libpgquery::PGAlias *root, vector<string> &column_name_alias);
|
271
274
|
vector<string> TransformStringList(duckdb_libpgquery::PGList *list);
|
272
|
-
void TransformCTE(duckdb_libpgquery::PGWithClause &de_with_clause, CommonTableExpressionMap &cte_map
|
273
|
-
|
275
|
+
void TransformCTE(duckdb_libpgquery::PGWithClause &de_with_clause, CommonTableExpressionMap &cte_map,
|
276
|
+
vector<unique_ptr<CTENode>> &materialized_ctes);
|
277
|
+
static unique_ptr<QueryNode> TransformMaterializedCTE(unique_ptr<QueryNode> root,
|
278
|
+
vector<unique_ptr<CTENode>> &materialized_ctes);
|
279
|
+
unique_ptr<SelectStatement> TransformRecursiveCTE(duckdb_libpgquery::PGCommonTableExpr &node,
|
274
280
|
CommonTableExpressionInfo &info);
|
275
281
|
|
276
282
|
unique_ptr<ParsedExpression> TransformUnaryOperator(const string &op, unique_ptr<ParsedExpression> child);
|
277
283
|
unique_ptr<ParsedExpression> TransformBinaryOperator(string op, unique_ptr<ParsedExpression> left,
|
278
284
|
unique_ptr<ParsedExpression> right);
|
285
|
+
static bool ConstructConstantFromExpression(const ParsedExpression &expr, Value &value);
|
279
286
|
//===--------------------------------------------------------------------===//
|
280
287
|
// TableRef transform
|
281
288
|
//===--------------------------------------------------------------------===//
|
@@ -21,6 +21,7 @@
|
|
21
21
|
#include "duckdb/planner/bound_tokens.hpp"
|
22
22
|
#include "duckdb/planner/expression/bound_columnref_expression.hpp"
|
23
23
|
#include "duckdb/planner/logical_operator.hpp"
|
24
|
+
#include "duckdb/planner/joinside.hpp"
|
24
25
|
#include "duckdb/common/reference_map.hpp"
|
25
26
|
|
26
27
|
namespace duckdb {
|
@@ -75,7 +76,7 @@ struct CorrelatedColumnInfo {
|
|
75
76
|
*/
|
76
77
|
class Binder : public std::enable_shared_from_this<Binder> {
|
77
78
|
friend class ExpressionBinder;
|
78
|
-
friend class
|
79
|
+
friend class RecursiveDependentJoinPlanner;
|
79
80
|
|
80
81
|
public:
|
81
82
|
DUCKDB_API static shared_ptr<Binder> CreateBinder(ClientContext &context, optional_ptr<Binder> parent = nullptr,
|
@@ -199,10 +200,10 @@ private:
|
|
199
200
|
vector<reference<ExpressionBinder>> active_binders;
|
200
201
|
//! The count of bound_tables
|
201
202
|
idx_t bound_tables;
|
202
|
-
//! Whether or not the binder has any unplanned
|
203
|
-
bool
|
204
|
-
//! Whether or not
|
205
|
-
bool
|
203
|
+
//! Whether or not the binder has any unplanned dependent joins that still need to be planned/flattened
|
204
|
+
bool has_unplanned_dependent_joins = false;
|
205
|
+
//! Whether or not outside dependent joins have been planned and flattened
|
206
|
+
bool is_outside_flattened = true;
|
206
207
|
//! Whether CTEs should reference the parent binder (if it exists)
|
207
208
|
bool inherit_ctes = true;
|
208
209
|
//! Whether or not the binder can contain NULLs as the root of expressions
|
@@ -217,6 +218,10 @@ private:
|
|
217
218
|
reference_set_t<ViewCatalogEntry> bound_views;
|
218
219
|
|
219
220
|
private:
|
221
|
+
//! Get the root binder (binder with no parent)
|
222
|
+
Binder *GetRootBinder();
|
223
|
+
//! Determine the depth of the binder
|
224
|
+
idx_t GetBinderDepth() const;
|
220
225
|
//! Bind the expressions of generated columns to check for errors
|
221
226
|
void BindGeneratedColumns(BoundCreateTableInfo &info);
|
222
227
|
//! Bind the default values of the columns of a table
|
@@ -265,10 +270,12 @@ private:
|
|
265
270
|
unique_ptr<BoundQueryNode> BindNode(SelectNode &node);
|
266
271
|
unique_ptr<BoundQueryNode> BindNode(SetOperationNode &node);
|
267
272
|
unique_ptr<BoundQueryNode> BindNode(RecursiveCTENode &node);
|
273
|
+
unique_ptr<BoundQueryNode> BindNode(CTENode &node);
|
268
274
|
unique_ptr<BoundQueryNode> BindNode(QueryNode &node);
|
269
275
|
|
270
276
|
unique_ptr<LogicalOperator> VisitQueryNode(BoundQueryNode &node, unique_ptr<LogicalOperator> root);
|
271
277
|
unique_ptr<LogicalOperator> CreatePlan(BoundRecursiveCTENode &node);
|
278
|
+
unique_ptr<LogicalOperator> CreatePlan(BoundCTENode &node);
|
272
279
|
unique_ptr<LogicalOperator> CreatePlan(BoundSelectNode &statement);
|
273
280
|
unique_ptr<LogicalOperator> CreatePlan(BoundSetOperationNode &node);
|
274
281
|
unique_ptr<LogicalOperator> CreatePlan(BoundQueryNode &node);
|
@@ -32,6 +32,10 @@ struct ColumnBinding {
|
|
32
32
|
bool operator==(const ColumnBinding &rhs) const {
|
33
33
|
return table_index == rhs.table_index && column_index == rhs.column_index;
|
34
34
|
}
|
35
|
+
|
36
|
+
bool operator!=(const ColumnBinding &rhs) const {
|
37
|
+
return !(*this == rhs);
|
38
|
+
}
|
35
39
|
};
|
36
40
|
|
37
41
|
} // namespace duckdb
|
@@ -23,9 +23,9 @@ public:
|
|
23
23
|
: BoundConstraint(ConstraintType::UNIQUE), keys(std::move(keys)), key_set(std::move(key_set)),
|
24
24
|
is_primary_key(is_primary_key) {
|
25
25
|
#ifdef DEBUG
|
26
|
-
D_ASSERT(keys.size() == key_set.size());
|
27
|
-
for (auto &key : keys) {
|
28
|
-
D_ASSERT(key_set.find(key) != key_set.end());
|
26
|
+
D_ASSERT(this->keys.size() == this->key_set.size());
|
27
|
+
for (auto &key : this->keys) {
|
28
|
+
D_ASSERT(this->key_set.find(key) != this->key_set.end());
|
29
29
|
}
|
30
30
|
#endif
|
31
31
|
}
|
@@ -20,8 +20,6 @@ class LateralBinder : public ExpressionBinder {
|
|
20
20
|
public:
|
21
21
|
LateralBinder(Binder &binder, ClientContext &context);
|
22
22
|
|
23
|
-
//! Extract the correlated lateral join columns and remove them from the targeted binder
|
24
|
-
vector<CorrelatedColumnInfo> ExtractCorrelatedColumns(Binder &binder);
|
25
23
|
bool HasCorrelatedColumns() const {
|
26
24
|
return !correlated_columns.empty();
|
27
25
|
}
|
@@ -25,6 +25,7 @@
|
|
25
25
|
#include "duckdb/planner/operator/logical_join.hpp"
|
26
26
|
#include "duckdb/planner/operator/logical_limit.hpp"
|
27
27
|
#include "duckdb/planner/operator/logical_limit_percent.hpp"
|
28
|
+
#include "duckdb/planner/operator/logical_materialized_cte.hpp"
|
28
29
|
#include "duckdb/planner/operator/logical_order.hpp"
|
29
30
|
#include "duckdb/planner/operator/logical_pivot.hpp"
|
30
31
|
#include "duckdb/planner/operator/logical_positional_join.hpp"
|
@@ -32,9 +33,9 @@
|
|
32
33
|
#include "duckdb/planner/operator/logical_prepare.hpp"
|
33
34
|
#include "duckdb/planner/operator/logical_projection.hpp"
|
34
35
|
#include "duckdb/planner/operator/logical_recursive_cte.hpp"
|
36
|
+
#include "duckdb/planner/operator/logical_reset.hpp"
|
35
37
|
#include "duckdb/planner/operator/logical_sample.hpp"
|
36
38
|
#include "duckdb/planner/operator/logical_set.hpp"
|
37
|
-
#include "duckdb/planner/operator/logical_reset.hpp"
|
38
39
|
#include "duckdb/planner/operator/logical_set_operation.hpp"
|
39
40
|
#include "duckdb/planner/operator/logical_show.hpp"
|
40
41
|
#include "duckdb/planner/operator/logical_simple.hpp"
|
@@ -38,25 +38,25 @@ public:
|
|
38
38
|
FieldReader &reader);
|
39
39
|
|
40
40
|
public:
|
41
|
-
static unique_ptr<LogicalOperator> CreateJoin(JoinType type, JoinRefType ref_type,
|
41
|
+
static unique_ptr<LogicalOperator> CreateJoin(ClientContext &context, JoinType type, JoinRefType ref_type,
|
42
42
|
unique_ptr<LogicalOperator> left_child,
|
43
43
|
unique_ptr<LogicalOperator> right_child,
|
44
44
|
unique_ptr<Expression> condition);
|
45
|
-
static unique_ptr<LogicalOperator> CreateJoin(JoinType type, JoinRefType ref_type,
|
45
|
+
static unique_ptr<LogicalOperator> CreateJoin(ClientContext &context, JoinType type, JoinRefType ref_type,
|
46
46
|
unique_ptr<LogicalOperator> left_child,
|
47
47
|
unique_ptr<LogicalOperator> right_child,
|
48
48
|
vector<JoinCondition> conditions,
|
49
49
|
vector<unique_ptr<Expression>> arbitrary_expressions);
|
50
50
|
|
51
|
-
static void ExtractJoinConditions(JoinType type, unique_ptr<LogicalOperator> &left_child,
|
51
|
+
static void ExtractJoinConditions(ClientContext &context, JoinType type, unique_ptr<LogicalOperator> &left_child,
|
52
52
|
unique_ptr<LogicalOperator> &right_child, unique_ptr<Expression> condition,
|
53
53
|
vector<JoinCondition> &conditions,
|
54
54
|
vector<unique_ptr<Expression>> &arbitrary_expressions);
|
55
|
-
static void ExtractJoinConditions(JoinType type, unique_ptr<LogicalOperator> &left_child,
|
55
|
+
static void ExtractJoinConditions(ClientContext &context, JoinType type, unique_ptr<LogicalOperator> &left_child,
|
56
56
|
unique_ptr<LogicalOperator> &right_child,
|
57
57
|
vector<unique_ptr<Expression>> &expressions, vector<JoinCondition> &conditions,
|
58
58
|
vector<unique_ptr<Expression>> &arbitrary_expressions);
|
59
|
-
static void ExtractJoinConditions(JoinType type, unique_ptr<LogicalOperator> &left_child,
|
59
|
+
static void ExtractJoinConditions(ClientContext &context, JoinType type, unique_ptr<LogicalOperator> &left_child,
|
60
60
|
unique_ptr<LogicalOperator> &right_child,
|
61
61
|
const unordered_set<idx_t> &left_bindings,
|
62
62
|
const unordered_set<idx_t> &right_bindings,
|
@@ -10,6 +10,7 @@
|
|
10
10
|
|
11
11
|
#include "duckdb/common/types/chunk_collection.hpp"
|
12
12
|
#include "duckdb/planner/logical_operator.hpp"
|
13
|
+
#include "duckdb/common/enums/cte_materialize.hpp"
|
13
14
|
|
14
15
|
namespace duckdb {
|
15
16
|
|
@@ -19,8 +20,10 @@ public:
|
|
19
20
|
static constexpr const LogicalOperatorType TYPE = LogicalOperatorType::LOGICAL_CTE_REF;
|
20
21
|
|
21
22
|
public:
|
22
|
-
LogicalCTERef(idx_t table_index, idx_t cte_index, vector<LogicalType> types, vector<string> colnames
|
23
|
-
|
23
|
+
LogicalCTERef(idx_t table_index, idx_t cte_index, vector<LogicalType> types, vector<string> colnames,
|
24
|
+
CTEMaterialize materialized_cte)
|
25
|
+
: LogicalOperator(LogicalOperatorType::LOGICAL_CTE_REF), table_index(table_index), cte_index(cte_index),
|
26
|
+
materialized_cte(materialized_cte) {
|
24
27
|
D_ASSERT(types.size() > 0);
|
25
28
|
chunk_types = types;
|
26
29
|
bound_columns = colnames;
|
@@ -33,6 +36,8 @@ public:
|
|
33
36
|
idx_t cte_index;
|
34
37
|
//! The types of the chunk
|
35
38
|
vector<LogicalType> chunk_types;
|
39
|
+
//! Does this operator read a materialized CTE?
|
40
|
+
CTEMaterialize materialized_cte;
|
36
41
|
|
37
42
|
public:
|
38
43
|
vector<ColumnBinding> GetColumnBindings() override {
|
@@ -0,0 +1,43 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/planner/operator/logical_dependent_join.hpp
|
5
|
+
//
|
6
|
+
// logical_dependent_join represents a logical operator for lateral joins that
|
7
|
+
// is planned but not yet flattened
|
8
|
+
//
|
9
|
+
// This construct only exists during planning and should not exist in the plan
|
10
|
+
// once flattening is complete. Although the same information can be kept in the
|
11
|
+
// join itself, creating a new construct makes the code cleaner and easier to
|
12
|
+
// understand.
|
13
|
+
//
|
14
|
+
//===----------------------------------------------------------------------===//
|
15
|
+
|
16
|
+
#pragma once
|
17
|
+
|
18
|
+
#include "duckdb/planner/binder.hpp"
|
19
|
+
#include "duckdb/planner/operator/logical_comparison_join.hpp"
|
20
|
+
|
21
|
+
namespace duckdb {
|
22
|
+
|
23
|
+
class LogicalDependentJoin : public LogicalComparisonJoin {
|
24
|
+
public:
|
25
|
+
static constexpr const LogicalOperatorType TYPE = LogicalOperatorType::LOGICAL_DEPENDENT_JOIN;
|
26
|
+
|
27
|
+
public:
|
28
|
+
explicit LogicalDependentJoin(unique_ptr<LogicalOperator> left, unique_ptr<LogicalOperator> right,
|
29
|
+
vector<CorrelatedColumnInfo> correlated_columns, JoinType type,
|
30
|
+
unique_ptr<Expression> condition);
|
31
|
+
|
32
|
+
//! The conditions of the join
|
33
|
+
unique_ptr<Expression> join_condition;
|
34
|
+
//! The list of columns that have correlations with the right
|
35
|
+
vector<CorrelatedColumnInfo> correlated_columns;
|
36
|
+
|
37
|
+
public:
|
38
|
+
static unique_ptr<LogicalOperator> Create(unique_ptr<LogicalOperator> left, unique_ptr<LogicalOperator> right,
|
39
|
+
vector<CorrelatedColumnInfo> correlated_columns, JoinType type,
|
40
|
+
unique_ptr<Expression> condition);
|
41
|
+
void Serialize(FieldWriter &writer) const override;
|
42
|
+
};
|
43
|
+
} // namespace duckdb
|
@@ -11,6 +11,7 @@
|
|
11
11
|
#include "duckdb/function/table_function.hpp"
|
12
12
|
#include "duckdb/planner/logical_operator.hpp"
|
13
13
|
#include "duckdb/planner/table_filter.hpp"
|
14
|
+
#include "duckdb/common/extra_operator_info.hpp"
|
14
15
|
|
15
16
|
namespace duckdb {
|
16
17
|
|
@@ -49,6 +50,9 @@ public:
|
|
49
50
|
vector<string> input_table_names;
|
50
51
|
//! For a table-in-out function, the set of projected input columns
|
51
52
|
vector<column_t> projected_input;
|
53
|
+
//! Currently stores File Filters (as strings) applied by hive partitioning/complex filter pushdown
|
54
|
+
//! Stored so the can be included in explain output
|
55
|
+
ExtraOperatorInfo extra_info;
|
52
56
|
|
53
57
|
string GetName() const override;
|
54
58
|
string ParamsToString() const override;
|
@@ -0,0 +1,49 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/planner/operator/logical_materialized_cte.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
|
9
|
+
#pragma once
|
10
|
+
|
11
|
+
#include "duckdb/planner/logical_operator.hpp"
|
12
|
+
|
13
|
+
namespace duckdb {
|
14
|
+
|
15
|
+
class LogicalMaterializedCTE : public LogicalOperator {
|
16
|
+
LogicalMaterializedCTE(idx_t table_index)
|
17
|
+
: LogicalOperator(LogicalOperatorType::LOGICAL_MATERIALIZED_CTE), table_index(table_index) {
|
18
|
+
}
|
19
|
+
|
20
|
+
public:
|
21
|
+
static constexpr const LogicalOperatorType TYPE = LogicalOperatorType::LOGICAL_MATERIALIZED_CTE;
|
22
|
+
|
23
|
+
public:
|
24
|
+
LogicalMaterializedCTE(string ctename, idx_t table_index, idx_t column_count, unique_ptr<LogicalOperator> cte,
|
25
|
+
unique_ptr<LogicalOperator> child)
|
26
|
+
: LogicalOperator(LogicalOperatorType::LOGICAL_MATERIALIZED_CTE), table_index(table_index),
|
27
|
+
column_count(column_count), ctename(ctename) {
|
28
|
+
children.push_back(std::move(cte));
|
29
|
+
children.push_back(std::move(child));
|
30
|
+
}
|
31
|
+
|
32
|
+
idx_t table_index;
|
33
|
+
idx_t column_count;
|
34
|
+
string ctename;
|
35
|
+
|
36
|
+
public:
|
37
|
+
vector<ColumnBinding> GetColumnBindings() override {
|
38
|
+
return children[1]->GetColumnBindings();
|
39
|
+
}
|
40
|
+
void Serialize(FieldWriter &writer) const override;
|
41
|
+
static unique_ptr<LogicalOperator> Deserialize(LogicalDeserializationState &state, FieldReader &reader);
|
42
|
+
vector<idx_t> GetTableIndex() const override;
|
43
|
+
|
44
|
+
protected:
|
45
|
+
void ResolveTypes() override {
|
46
|
+
types = children[1]->types;
|
47
|
+
}
|
48
|
+
};
|
49
|
+
} // namespace duckdb
|
@@ -22,15 +22,16 @@ public:
|
|
22
22
|
static constexpr const LogicalOperatorType TYPE = LogicalOperatorType::LOGICAL_RECURSIVE_CTE;
|
23
23
|
|
24
24
|
public:
|
25
|
-
LogicalRecursiveCTE(idx_t table_index, idx_t column_count, bool union_all,
|
26
|
-
unique_ptr<LogicalOperator> bottom)
|
27
|
-
: LogicalOperator(LogicalOperatorType::LOGICAL_RECURSIVE_CTE), union_all(union_all),
|
28
|
-
column_count(column_count) {
|
25
|
+
LogicalRecursiveCTE(string ctename, idx_t table_index, idx_t column_count, bool union_all,
|
26
|
+
unique_ptr<LogicalOperator> top, unique_ptr<LogicalOperator> bottom)
|
27
|
+
: LogicalOperator(LogicalOperatorType::LOGICAL_RECURSIVE_CTE), union_all(union_all), ctename(ctename),
|
28
|
+
table_index(table_index), column_count(column_count) {
|
29
29
|
children.push_back(std::move(top));
|
30
30
|
children.push_back(std::move(bottom));
|
31
31
|
}
|
32
32
|
|
33
33
|
bool union_all;
|
34
|
+
string ctename;
|
34
35
|
idx_t table_index;
|
35
36
|
idx_t column_count;
|
36
37
|
|
@@ -0,0 +1,44 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/planner/query_node/bound_cte_node.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
|
9
|
+
#pragma once
|
10
|
+
|
11
|
+
#include "duckdb/planner/binder.hpp"
|
12
|
+
#include "duckdb/planner/bound_query_node.hpp"
|
13
|
+
|
14
|
+
namespace duckdb {
|
15
|
+
|
16
|
+
class BoundCTENode : public BoundQueryNode {
|
17
|
+
public:
|
18
|
+
static constexpr const QueryNodeType TYPE = QueryNodeType::CTE_NODE;
|
19
|
+
|
20
|
+
public:
|
21
|
+
BoundCTENode() : BoundQueryNode(QueryNodeType::CTE_NODE) {
|
22
|
+
}
|
23
|
+
|
24
|
+
//! Keep track of the CTE name this node represents
|
25
|
+
string ctename;
|
26
|
+
|
27
|
+
//! The cte node
|
28
|
+
unique_ptr<BoundQueryNode> query;
|
29
|
+
//! The child node
|
30
|
+
unique_ptr<BoundQueryNode> child;
|
31
|
+
//! Index used by the set operation
|
32
|
+
idx_t setop_index;
|
33
|
+
//! The binder used by the query side of the CTE
|
34
|
+
shared_ptr<Binder> query_binder;
|
35
|
+
//! The binder used by the child side of the CTE
|
36
|
+
shared_ptr<Binder> child_binder;
|
37
|
+
|
38
|
+
public:
|
39
|
+
idx_t GetRootIndex() override {
|
40
|
+
return child->GetRootIndex();
|
41
|
+
}
|
42
|
+
};
|
43
|
+
|
44
|
+
} // namespace duckdb
|