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
@@ -0,0 +1,36 @@
|
|
1
|
+
#pragma once
|
2
|
+
|
3
|
+
#include "duckdb.hpp"
|
4
|
+
#ifndef DUCKDB_AMALGAMATION
|
5
|
+
#include "duckdb/storage/object_cache.hpp"
|
6
|
+
#endif
|
7
|
+
|
8
|
+
namespace duckdb {
|
9
|
+
|
10
|
+
struct ReadCSVData;
|
11
|
+
|
12
|
+
class CSVRejectsTable : public ObjectCacheEntry {
|
13
|
+
public:
|
14
|
+
CSVRejectsTable(string name) : name(name), count(0) {
|
15
|
+
}
|
16
|
+
~CSVRejectsTable() override = default;
|
17
|
+
mutex write_lock;
|
18
|
+
string name;
|
19
|
+
idx_t count;
|
20
|
+
|
21
|
+
static shared_ptr<CSVRejectsTable> GetOrCreate(ClientContext &context, const string &name);
|
22
|
+
|
23
|
+
void InitializeTable(ClientContext &context, const ReadCSVData &options);
|
24
|
+
TableCatalogEntry &GetTable(ClientContext &context);
|
25
|
+
|
26
|
+
public:
|
27
|
+
static string ObjectType() {
|
28
|
+
return "csv_rejects_table_cache";
|
29
|
+
}
|
30
|
+
|
31
|
+
string GetObjectType() override {
|
32
|
+
return ObjectType();
|
33
|
+
}
|
34
|
+
};
|
35
|
+
|
36
|
+
} // namespace duckdb
|
@@ -137,7 +137,7 @@ public:
|
|
137
137
|
//! Extract a single DataChunk from the CSV file and stores it in insert_chunk
|
138
138
|
void ParseCSV(DataChunk &insert_chunk);
|
139
139
|
|
140
|
-
idx_t GetLineError(idx_t line_error, idx_t buffer_idx) override;
|
140
|
+
idx_t GetLineError(idx_t line_error, idx_t buffer_idx, bool stop_at_first = true) override;
|
141
141
|
|
142
142
|
private:
|
143
143
|
//! Initialize Parser
|
@@ -22,11 +22,19 @@ public:
|
|
22
22
|
PhysicalColumnDataScan(vector<LogicalType> types, PhysicalOperatorType op_type, idx_t estimated_cardinality,
|
23
23
|
unique_ptr<ColumnDataCollection> owned_collection = nullptr);
|
24
24
|
|
25
|
+
PhysicalColumnDataScan(vector<LogicalType> types, PhysicalOperatorType op_type, idx_t estimated_cardinality,
|
26
|
+
idx_t cte_index)
|
27
|
+
: PhysicalOperator(op_type, std::move(types), estimated_cardinality), collection(nullptr),
|
28
|
+
cte_index(cte_index) {
|
29
|
+
}
|
30
|
+
|
25
31
|
// the column data collection to scan
|
26
32
|
optional_ptr<ColumnDataCollection> collection;
|
27
33
|
//! Owned column data collection, if any
|
28
34
|
unique_ptr<ColumnDataCollection> owned_collection;
|
29
35
|
|
36
|
+
idx_t cte_index;
|
37
|
+
|
30
38
|
public:
|
31
39
|
unique_ptr<GlobalSourceState> GetGlobalSourceState(ClientContext &context) const override;
|
32
40
|
SourceResultType GetData(ExecutionContext &context, DataChunk &chunk, OperatorSourceInput &input) const override;
|
@@ -35,6 +43,8 @@ public:
|
|
35
43
|
return true;
|
36
44
|
}
|
37
45
|
|
46
|
+
string ParamsToString() const override;
|
47
|
+
|
38
48
|
public:
|
39
49
|
void BuildPipelines(Pipeline ¤t, MetaPipeline &meta_pipeline) override;
|
40
50
|
};
|
@@ -12,6 +12,7 @@
|
|
12
12
|
#include "duckdb/function/table_function.hpp"
|
13
13
|
#include "duckdb/planner/table_filter.hpp"
|
14
14
|
#include "duckdb/storage/data_table.hpp"
|
15
|
+
#include "duckdb/common/extra_operator_info.hpp"
|
15
16
|
|
16
17
|
namespace duckdb {
|
17
18
|
|
@@ -28,7 +29,8 @@ public:
|
|
28
29
|
//! Table scan that immediately projects out filter columns that are unused in the remainder of the query plan
|
29
30
|
PhysicalTableScan(vector<LogicalType> types, TableFunction function, unique_ptr<FunctionData> bind_data,
|
30
31
|
vector<LogicalType> returned_types, vector<column_t> column_ids, vector<idx_t> projection_ids,
|
31
|
-
vector<string> names, unique_ptr<TableFilterSet> table_filters, idx_t estimated_cardinality
|
32
|
+
vector<string> names, unique_ptr<TableFilterSet> table_filters, idx_t estimated_cardinality,
|
33
|
+
ExtraOperatorInfo extra_info);
|
32
34
|
|
33
35
|
//! The table function
|
34
36
|
TableFunction function;
|
@@ -44,6 +46,8 @@ public:
|
|
44
46
|
vector<string> names;
|
45
47
|
//! The table filters
|
46
48
|
unique_ptr<TableFilterSet> table_filters;
|
49
|
+
//! Currently stores any filters applied to file names (as strings)
|
50
|
+
ExtraOperatorInfo extra_info;
|
47
51
|
|
48
52
|
public:
|
49
53
|
string GetName() const override;
|
@@ -0,0 +1,62 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/execution/operator/set/physical_cte.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
|
9
|
+
#pragma once
|
10
|
+
|
11
|
+
#include "duckdb/common/types/column/column_data_collection.hpp"
|
12
|
+
#include "duckdb/execution/physical_operator.hpp"
|
13
|
+
|
14
|
+
namespace duckdb {
|
15
|
+
|
16
|
+
class RecursiveCTEState;
|
17
|
+
|
18
|
+
class PhysicalCTE : public PhysicalOperator {
|
19
|
+
public:
|
20
|
+
static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::CTE;
|
21
|
+
|
22
|
+
public:
|
23
|
+
PhysicalCTE(string ctename, idx_t table_index, vector<LogicalType> types, unique_ptr<PhysicalOperator> top,
|
24
|
+
unique_ptr<PhysicalOperator> bottom, idx_t estimated_cardinality);
|
25
|
+
~PhysicalCTE() override;
|
26
|
+
|
27
|
+
std::shared_ptr<ColumnDataCollection> working_table;
|
28
|
+
shared_ptr<MetaPipeline> recursive_meta_pipeline;
|
29
|
+
|
30
|
+
idx_t table_index;
|
31
|
+
string ctename;
|
32
|
+
|
33
|
+
public:
|
34
|
+
// Source interface
|
35
|
+
SourceResultType GetData(ExecutionContext &context, DataChunk &chunk, OperatorSourceInput &input) const override;
|
36
|
+
|
37
|
+
bool IsSource() const override {
|
38
|
+
return true;
|
39
|
+
}
|
40
|
+
|
41
|
+
public:
|
42
|
+
// Sink interface
|
43
|
+
SinkResultType Sink(ExecutionContext &context, DataChunk &chunk, OperatorSinkInput &input) const override;
|
44
|
+
|
45
|
+
unique_ptr<GlobalSinkState> GetGlobalSinkState(ClientContext &context) const override;
|
46
|
+
|
47
|
+
bool IsSink() const override {
|
48
|
+
return true;
|
49
|
+
}
|
50
|
+
|
51
|
+
string ParamsToString() const override;
|
52
|
+
|
53
|
+
public:
|
54
|
+
void BuildPipelines(Pipeline ¤t, MetaPipeline &meta_pipeline) override;
|
55
|
+
|
56
|
+
vector<const_reference<PhysicalOperator>> GetSources() const override;
|
57
|
+
|
58
|
+
private:
|
59
|
+
void ExecuteRecursivePipelines(ExecutionContext &context) const;
|
60
|
+
};
|
61
|
+
|
62
|
+
} // namespace duckdb
|
@@ -20,10 +20,14 @@ public:
|
|
20
20
|
static constexpr const PhysicalOperatorType TYPE = PhysicalOperatorType::RECURSIVE_CTE;
|
21
21
|
|
22
22
|
public:
|
23
|
-
PhysicalRecursiveCTE(vector<LogicalType> types, bool union_all,
|
24
|
-
unique_ptr<PhysicalOperator>
|
23
|
+
PhysicalRecursiveCTE(string ctename, idx_t table_index, vector<LogicalType> types, bool union_all,
|
24
|
+
unique_ptr<PhysicalOperator> top, unique_ptr<PhysicalOperator> bottom,
|
25
|
+
idx_t estimated_cardinality);
|
25
26
|
~PhysicalRecursiveCTE() override;
|
26
27
|
|
28
|
+
string ctename;
|
29
|
+
idx_t table_index;
|
30
|
+
|
27
31
|
bool union_all;
|
28
32
|
std::shared_ptr<ColumnDataCollection> working_table;
|
29
33
|
shared_ptr<MetaPipeline> recursive_meta_pipeline;
|
@@ -46,6 +50,8 @@ public:
|
|
46
50
|
return true;
|
47
51
|
}
|
48
52
|
|
53
|
+
string ParamsToString() const override;
|
54
|
+
|
49
55
|
public:
|
50
56
|
void BuildPipelines(Pipeline ¤t, MetaPipeline &meta_pipeline) override;
|
51
57
|
|
@@ -33,14 +33,18 @@ public:
|
|
33
33
|
vector<BoundAggregateExpression *> bindings_p);
|
34
34
|
|
35
35
|
idx_t AddChunk(DataChunk &groups, DataChunk &payload, bool do_partition, const unsafe_vector<idx_t> &filter);
|
36
|
-
void Partition();
|
36
|
+
void Partition(bool sink_done);
|
37
37
|
bool IsPartitioned();
|
38
38
|
|
39
39
|
HashTableList GetPartition(idx_t partition);
|
40
40
|
HashTableList GetUnpartitioned();
|
41
|
+
idx_t GetPartitionCount(idx_t partition) const;
|
42
|
+
idx_t GetPartitionSize(idx_t partition) const;
|
41
43
|
|
42
44
|
void Finalize();
|
43
45
|
|
46
|
+
void Append(GroupedAggregateHashTable &ht);
|
47
|
+
|
44
48
|
private:
|
45
49
|
ClientContext &context;
|
46
50
|
Allocator &allocator;
|
@@ -32,6 +32,8 @@ public:
|
|
32
32
|
//! Recursive CTEs require at least one ChunkScan, referencing the working_table.
|
33
33
|
//! This data structure is used to establish it.
|
34
34
|
unordered_map<idx_t, std::shared_ptr<ColumnDataCollection>> recursive_cte_tables;
|
35
|
+
//! Materialized CTE ids must be collected.
|
36
|
+
unordered_set<idx_t> materialized_ctes;
|
35
37
|
|
36
38
|
public:
|
37
39
|
//! Creates a plan from the logical operator. This involves resolving column bindings and generating physical
|
@@ -87,6 +89,7 @@ protected:
|
|
87
89
|
unique_ptr<PhysicalOperator> CreatePlan(LogicalSimple &op);
|
88
90
|
unique_ptr<PhysicalOperator> CreatePlan(LogicalUnnest &op);
|
89
91
|
unique_ptr<PhysicalOperator> CreatePlan(LogicalRecursiveCTE &op);
|
92
|
+
unique_ptr<PhysicalOperator> CreatePlan(LogicalMaterializedCTE &op);
|
90
93
|
unique_ptr<PhysicalOperator> CreatePlan(LogicalCTERef &op);
|
91
94
|
unique_ptr<PhysicalOperator> CreatePlan(LogicalPivot &op);
|
92
95
|
|
@@ -8,10 +8,10 @@
|
|
8
8
|
|
9
9
|
#pragma once
|
10
10
|
|
11
|
+
#include "duckdb/execution/operator/aggregate/grouped_aggregate_data.hpp"
|
11
12
|
#include "duckdb/execution/partitionable_hashtable.hpp"
|
12
|
-
#include "duckdb/parser/group_by_node.hpp"
|
13
13
|
#include "duckdb/execution/physical_operator.hpp"
|
14
|
-
#include "duckdb/
|
14
|
+
#include "duckdb/parser/group_by_node.hpp"
|
15
15
|
|
16
16
|
namespace duckdb {
|
17
17
|
class BufferManager;
|
@@ -57,11 +57,18 @@ public:
|
|
57
57
|
OperatorSourceInput &input) const;
|
58
58
|
|
59
59
|
static void SetMultiScan(GlobalSinkState &state);
|
60
|
-
bool ForceSingleHT(GlobalSinkState &state)
|
60
|
+
static bool ForceSingleHT(GlobalSinkState &state);
|
61
|
+
static bool AnyPartitioned(GlobalSinkState &state);
|
62
|
+
static void GetRepartitionInfo(ClientContext &context, GlobalSinkState &state, idx_t &repartition_radix_bits,
|
63
|
+
idx_t &concurrent_repartitions, idx_t &tasks_per_partition);
|
61
64
|
|
62
65
|
private:
|
63
66
|
void SetGroupingValues();
|
64
67
|
void PopulateGroupChunk(DataChunk &group_chunk, DataChunk &input_chunk) const;
|
68
|
+
void InitializeFinalizedHTs(ClientContext &context, GlobalSinkState &state) const;
|
69
|
+
void ScheduleRepartitionTasks(Executor &executor, const shared_ptr<Event> &event, GlobalSinkState &state,
|
70
|
+
vector<shared_ptr<Task>> &tasks, const idx_t repartition_radix_bits,
|
71
|
+
const idx_t concurrent_repartitions, const idx_t tasks_per_partition) const;
|
65
72
|
};
|
66
73
|
|
67
74
|
} // namespace duckdb
|
@@ -18,12 +18,13 @@ namespace duckdb {
|
|
18
18
|
|
19
19
|
class WindowAggregateState {
|
20
20
|
public:
|
21
|
-
WindowAggregateState(AggregateObject aggr, const LogicalType &result_type_p);
|
21
|
+
WindowAggregateState(AggregateObject aggr, const LogicalType &result_type_p, idx_t partition_count);
|
22
22
|
virtual ~WindowAggregateState();
|
23
23
|
|
24
24
|
virtual void Sink(DataChunk &payload_chunk, SelectionVector *filter_sel, idx_t filtered);
|
25
25
|
virtual void Finalize();
|
26
26
|
virtual void Compute(Vector &result, idx_t rid, idx_t start, idx_t end);
|
27
|
+
virtual void Evaluate(const idx_t *begins, const idx_t *ends, Vector &result, idx_t count);
|
27
28
|
|
28
29
|
protected:
|
29
30
|
void AggregateInit();
|
@@ -33,20 +34,28 @@ protected:
|
|
33
34
|
//! The result type of the window function
|
34
35
|
LogicalType result_type;
|
35
36
|
|
37
|
+
//! The cardinality of the partition
|
38
|
+
const idx_t partition_count;
|
39
|
+
//! The size of a single aggregate state
|
40
|
+
const idx_t state_size;
|
36
41
|
//! Data pointer that contains a single state, used for intermediate window segment aggregation
|
37
42
|
vector<data_t> state;
|
38
43
|
//! Reused result state container for the window functions
|
39
|
-
Vector
|
40
|
-
//!
|
41
|
-
Vector statep;
|
42
|
-
//! Input data chunk, used for intermediate window segment aggregation
|
44
|
+
Vector statef;
|
45
|
+
//! Partition data chunk
|
43
46
|
DataChunk inputs;
|
47
|
+
|
48
|
+
//! The filtered rows in inputs.
|
49
|
+
vector<validity_t> filter_bits;
|
50
|
+
ValidityMask filter_mask;
|
51
|
+
idx_t filter_pos;
|
52
|
+
|
53
|
+
//! Allocator for aggregates
|
54
|
+
ArenaAllocator allocator;
|
44
55
|
};
|
45
56
|
|
46
57
|
class WindowConstantAggregate : public WindowAggregateState {
|
47
58
|
public:
|
48
|
-
static bool IsConstantAggregate(const BoundWindowExpression &wexpr);
|
49
|
-
|
50
59
|
WindowConstantAggregate(AggregateObject aggr, const LogicalType &result_type_p, const ValidityMask &partition_mask,
|
51
60
|
const idx_t count);
|
52
61
|
~WindowConstantAggregate() override {
|
@@ -54,7 +63,7 @@ public:
|
|
54
63
|
|
55
64
|
void Sink(DataChunk &payload_chunk, SelectionVector *filter_sel, idx_t filtered) override;
|
56
65
|
void Finalize() override;
|
57
|
-
void
|
66
|
+
void Evaluate(const idx_t *begins, const idx_t *ends, Vector &result, idx_t count) override;
|
58
67
|
|
59
68
|
private:
|
60
69
|
//! Partition starts
|
@@ -65,52 +74,57 @@ private:
|
|
65
74
|
idx_t partition;
|
66
75
|
//! The current input row being built/read
|
67
76
|
idx_t row;
|
77
|
+
//! A vector of pointers to "state", used for intermediate window segment aggregation
|
78
|
+
Vector statep;
|
79
|
+
//! Shared SV for evaluation
|
80
|
+
SelectionVector matches;
|
81
|
+
};
|
82
|
+
|
83
|
+
class WindowCustomAggregate : public WindowAggregateState {
|
84
|
+
public:
|
85
|
+
WindowCustomAggregate(AggregateObject aggr, const LogicalType &result_type_p, idx_t partition_count);
|
86
|
+
~WindowCustomAggregate() override;
|
87
|
+
|
88
|
+
void Compute(Vector &result, idx_t rid, idx_t start, idx_t end) override;
|
89
|
+
|
90
|
+
private:
|
91
|
+
//! The frame boundaries, used for the window functions
|
92
|
+
FrameBounds frame;
|
68
93
|
};
|
69
94
|
|
70
|
-
class WindowSegmentTree {
|
95
|
+
class WindowSegmentTree : public WindowAggregateState {
|
71
96
|
public:
|
72
97
|
using FrameBounds = std::pair<idx_t, idx_t>;
|
73
98
|
|
74
|
-
WindowSegmentTree(AggregateObject aggr, const LogicalType &result_type,
|
75
|
-
|
76
|
-
~WindowSegmentTree();
|
99
|
+
WindowSegmentTree(AggregateObject aggr, const LogicalType &result_type, idx_t count, WindowAggregationMode mode_p);
|
100
|
+
~WindowSegmentTree() override;
|
77
101
|
|
78
|
-
|
79
|
-
void
|
102
|
+
void Finalize() override;
|
103
|
+
void Evaluate(const idx_t *begins, const idx_t *ends, Vector &result, idx_t count) override;
|
80
104
|
|
81
105
|
private:
|
82
106
|
void ConstructTree();
|
83
|
-
void ExtractFrame(idx_t begin, idx_t end);
|
84
|
-
void
|
85
|
-
void
|
86
|
-
void AggegateFinal(Vector &result, idx_t rid);
|
107
|
+
void ExtractFrame(idx_t begin, idx_t end, data_ptr_t current_state);
|
108
|
+
void FlushStates(bool combining);
|
109
|
+
void WindowSegmentValue(idx_t l_idx, idx_t begin, idx_t end, data_ptr_t current_state);
|
87
110
|
|
88
|
-
//! Use the window API, if available
|
89
|
-
inline bool UseWindowAPI() const {
|
90
|
-
return mode < WindowAggregationMode::COMBINE;
|
91
|
-
}
|
92
111
|
//! Use the combine API, if available
|
93
112
|
inline bool UseCombineAPI() const {
|
94
113
|
return mode < WindowAggregationMode::SEPARATE;
|
95
114
|
}
|
96
115
|
|
97
|
-
//!
|
98
|
-
|
99
|
-
//! The result type of the window function
|
100
|
-
LogicalType result_type;
|
101
|
-
|
102
|
-
//! Data pointer that contains a single state, used for intermediate window segment aggregation
|
103
|
-
vector<data_t> state;
|
104
|
-
//! Input data chunk, used for intermediate window segment aggregation
|
105
|
-
DataChunk inputs;
|
116
|
+
//! Input data chunk, used for leaf segment aggregation
|
117
|
+
DataChunk leaves;
|
106
118
|
//! The filtered rows in inputs.
|
107
119
|
SelectionVector filter_sel;
|
108
120
|
//! A vector of pointers to "state", used for intermediate window segment aggregation
|
109
121
|
Vector statep;
|
110
122
|
//! The frame boundaries, used for the window functions
|
111
123
|
FrameBounds frame;
|
112
|
-
//! Reused
|
113
|
-
Vector
|
124
|
+
//! Reused state pointers for combining segment tree levels
|
125
|
+
Vector statel;
|
126
|
+
//! Count of buffered values
|
127
|
+
idx_t flush_count;
|
114
128
|
|
115
129
|
//! The actual window segment tree: an array of aggregate states that represent all the intermediate nodes
|
116
130
|
unsafe_unique_array<data_t> levels_flat_native;
|
@@ -120,17 +134,14 @@ private:
|
|
120
134
|
//! The total number of internal nodes of the tree, stored in levels_flat_native
|
121
135
|
idx_t internal_nodes;
|
122
136
|
|
123
|
-
//! The (sorted) input chunk collection on which the tree is built
|
124
|
-
DataChunk *input_ref;
|
125
|
-
|
126
|
-
//! The filtered rows in input_ref.
|
127
|
-
const ValidityMask &filter_mask;
|
128
|
-
|
129
137
|
//! Use the window API, if available
|
130
138
|
WindowAggregationMode mode;
|
131
139
|
|
140
|
+
//! Aggregate allocator
|
141
|
+
ArenaAllocator allocator;
|
142
|
+
|
132
143
|
// TREE_FANOUT needs to cleanly divide STANDARD_VECTOR_SIZE
|
133
|
-
static constexpr idx_t TREE_FANOUT =
|
144
|
+
static constexpr idx_t TREE_FANOUT = 16;
|
134
145
|
};
|
135
146
|
|
136
147
|
} // namespace duckdb
|
@@ -8,10 +8,10 @@
|
|
8
8
|
|
9
9
|
#pragma once
|
10
10
|
|
11
|
+
#include "duckdb/common/vector_operations/aggregate_executor.hpp"
|
11
12
|
#include "duckdb/function/aggregate_state.hpp"
|
12
13
|
#include "duckdb/planner/bound_result_modifier.hpp"
|
13
14
|
#include "duckdb/planner/expression.hpp"
|
14
|
-
#include "duckdb/common/vector_operations/aggregate_executor.hpp"
|
15
15
|
|
16
16
|
namespace duckdb {
|
17
17
|
|
@@ -21,11 +21,11 @@ enum class AggregateOrderDependent : uint8_t { ORDER_DEPENDENT = 1, NOT_ORDER_DE
|
|
21
21
|
class BoundAggregateExpression;
|
22
22
|
|
23
23
|
struct AggregateInputData {
|
24
|
-
AggregateInputData(optional_ptr<FunctionData> bind_data_p,
|
24
|
+
AggregateInputData(optional_ptr<FunctionData> bind_data_p, ArenaAllocator &allocator_p)
|
25
25
|
: bind_data(bind_data_p), allocator(allocator_p) {
|
26
26
|
}
|
27
27
|
optional_ptr<FunctionData> bind_data;
|
28
|
-
|
28
|
+
ArenaAllocator &allocator;
|
29
29
|
};
|
30
30
|
|
31
31
|
struct AggregateUnaryInput {
|
package/src/duckdb/src/include/duckdb/function/scalar/compressed_materialization_functions.hpp
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/function/scalar/compressed_materialization_functions.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
|
9
|
+
#pragma once
|
10
|
+
|
11
|
+
#include "duckdb/function/built_in_functions.hpp"
|
12
|
+
#include "duckdb/function/function_set.hpp"
|
13
|
+
|
14
|
+
namespace duckdb {
|
15
|
+
|
16
|
+
struct CompressedMaterializationFunctions {
|
17
|
+
//! The types we compress integral types to
|
18
|
+
static const vector<LogicalType> IntegralTypes();
|
19
|
+
//! The types we compress strings to
|
20
|
+
static const vector<LogicalType> StringTypes();
|
21
|
+
|
22
|
+
static unique_ptr<FunctionData> Bind(ClientContext &context, ScalarFunction &bound_function,
|
23
|
+
vector<unique_ptr<Expression>> &arguments);
|
24
|
+
};
|
25
|
+
|
26
|
+
//! Needed for (de)serialization without binding
|
27
|
+
enum class CompressedMaterializationDirection : uint8_t { INVALID = 0, COMPRESS = 1, DECOMPRESS = 2 };
|
28
|
+
|
29
|
+
struct CMIntegralCompressFun {
|
30
|
+
static ScalarFunction GetFunction(const LogicalType &input_type, const LogicalType &result_type);
|
31
|
+
static void RegisterFunction(BuiltinFunctions &set);
|
32
|
+
};
|
33
|
+
|
34
|
+
struct CMIntegralDecompressFun {
|
35
|
+
static ScalarFunction GetFunction(const LogicalType &input_type, const LogicalType &result_type);
|
36
|
+
static void RegisterFunction(BuiltinFunctions &set);
|
37
|
+
};
|
38
|
+
|
39
|
+
struct CMStringCompressFun {
|
40
|
+
static ScalarFunction GetFunction(const LogicalType &result_type);
|
41
|
+
static void RegisterFunction(BuiltinFunctions &set);
|
42
|
+
};
|
43
|
+
|
44
|
+
struct CMStringDecompressFun {
|
45
|
+
static ScalarFunction GetFunction(const LogicalType &input_type);
|
46
|
+
static void RegisterFunction(BuiltinFunctions &set);
|
47
|
+
};
|
48
|
+
|
49
|
+
} // namespace duckdb
|
@@ -130,7 +130,7 @@ void ListContainsOrPosition(DataChunk &args, Vector &result) {
|
|
130
130
|
TemplatedContainsOrPosition<int8_t, T, OP, LIST_ACCESSOR>(args, result, true);
|
131
131
|
break;
|
132
132
|
default:
|
133
|
-
throw NotImplementedException("This function has not been implemented for
|
133
|
+
throw NotImplementedException("This function has not been implemented for logical type %s",
|
134
134
|
TypeIdToString(physical_type));
|
135
135
|
}
|
136
136
|
}
|
@@ -99,6 +99,11 @@ struct ListPositionFun {
|
|
99
99
|
static void RegisterFunction(BuiltinFunctions &set);
|
100
100
|
};
|
101
101
|
|
102
|
+
struct ListResizeFun {
|
103
|
+
static ScalarFunction GetFunction();
|
104
|
+
static void RegisterFunction(BuiltinFunctions &set);
|
105
|
+
};
|
106
|
+
|
102
107
|
struct StructExtractFun {
|
103
108
|
static ScalarFunction GetFunction();
|
104
109
|
static void RegisterFunction(BuiltinFunctions &set);
|
@@ -83,12 +83,14 @@ struct LengthFun {
|
|
83
83
|
};
|
84
84
|
|
85
85
|
struct LikeFun {
|
86
|
+
static ScalarFunction GetLikeFunction();
|
86
87
|
static void RegisterFunction(BuiltinFunctions &set);
|
87
88
|
DUCKDB_API static bool Glob(const char *s, idx_t slen, const char *pattern, idx_t plen,
|
88
89
|
bool allow_question_mark = true);
|
89
90
|
};
|
90
91
|
|
91
92
|
struct LikeEscapeFun {
|
93
|
+
static ScalarFunction GetLikeEscapeFun();
|
92
94
|
static void RegisterFunction(BuiltinFunctions &set);
|
93
95
|
};
|
94
96
|
|
@@ -37,6 +37,10 @@ struct PragmaVersion {
|
|
37
37
|
static void RegisterFunction(BuiltinFunctions &set);
|
38
38
|
};
|
39
39
|
|
40
|
+
struct PragmaPlatform {
|
41
|
+
static void RegisterFunction(BuiltinFunctions &set);
|
42
|
+
};
|
43
|
+
|
40
44
|
struct PragmaDatabaseSize {
|
41
45
|
static void RegisterFunction(BuiltinFunctions &set);
|
42
46
|
};
|
@@ -75,6 +75,8 @@ struct ClientConfig {
|
|
75
75
|
bool force_no_cross_product = false;
|
76
76
|
//! Force use of IEJoin to implement AsOfJoin, used for testing
|
77
77
|
bool force_asof_iejoin = false;
|
78
|
+
//! Use range joins for inequalities, even if there are equality predicates
|
79
|
+
bool prefer_range_joins = false;
|
78
80
|
//! If this context should also try to use the available replacement scans
|
79
81
|
//! True by default
|
80
82
|
bool use_replacement_scans = true;
|
@@ -96,6 +98,9 @@ struct ClientConfig {
|
|
96
98
|
//! The maximum amount of pivot columns
|
97
99
|
idx_t pivot_limit = 100000;
|
98
100
|
|
101
|
+
//! The threshold at which we switch from using filtered aggregates to LIST with a dedicated pivot operator
|
102
|
+
idx_t pivot_filter_threshold = 10;
|
103
|
+
|
99
104
|
//! Whether or not the "/" division operator defaults to integer division or floating point division
|
100
105
|
bool integer_division = false;
|
101
106
|
|
@@ -158,6 +158,8 @@ struct DBConfigOptions {
|
|
158
158
|
bool lock_configuration = false;
|
159
159
|
//! Whether to print bindings when printing the plan (debug mode only)
|
160
160
|
static bool debug_print_bindings;
|
161
|
+
//! The peak allocation threshold at which to flush the allocator after completing a task (1 << 27, ~128MB)
|
162
|
+
idx_t allocator_flush_threshold = 134217728;
|
161
163
|
|
162
164
|
bool operator==(const DBConfigOptions &other) const;
|
163
165
|
};
|
@@ -169,8 +169,7 @@ public:
|
|
169
169
|
template <typename TR, typename... Args>
|
170
170
|
void CreateScalarFunction(const string &name, vector<LogicalType> args, LogicalType ret_type,
|
171
171
|
TR (*udf_func)(Args...)) {
|
172
|
-
scalar_function_t function =
|
173
|
-
UDFWrapper::CreateScalarFunction<TR, Args...>(name, args, std::move(ret_type), udf_func);
|
172
|
+
scalar_function_t function = UDFWrapper::CreateScalarFunction<TR, Args...>(name, args, ret_type, udf_func);
|
174
173
|
UDFWrapper::RegisterFunction(name, args, ret_type, function, *context);
|
175
174
|
}
|
176
175
|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
//===----------------------------------------------------------------------===//
|
2
|
+
// DuckDB
|
3
|
+
//
|
4
|
+
// duckdb/main/extension/generated_extension_loader.hpp
|
5
|
+
//
|
6
|
+
//
|
7
|
+
//===----------------------------------------------------------------------===//
|
8
|
+
|
9
|
+
#pragma once
|
10
|
+
|
11
|
+
#if defined(GENERATED_EXTENSION_HEADERS) and !defined(DUCKDB_AMALGAMATION)
|
12
|
+
#include "generated_extension_headers.hpp"
|
13
|
+
|
14
|
+
namespace duckdb {
|
15
|
+
|
16
|
+
//! Looks through the CMake-generated list of extensions that are linked into DuckDB currently to try load <extension>
|
17
|
+
bool TryLoadLinkedExtension(DuckDB &db, const std::string &extension);
|
18
|
+
extern vector<string> linked_extensions;
|
19
|
+
extern vector<string> loaded_extension_test_paths;
|
20
|
+
|
21
|
+
} // namespace duckdb
|
22
|
+
#endif
|
@@ -58,6 +58,7 @@ static constexpr ExtensionEntry EXTENSION_FUNCTIONS[] = {{"->>", "json"},
|
|
58
58
|
{"json_deserialize_sql", "json"},
|
59
59
|
{"json_serialize_sql", "json"},
|
60
60
|
{"json_execute_serialized_sql", "json"},
|
61
|
+
{"load_aws_credentials", "aws"},
|
61
62
|
{"make_timestamptz", "icu"},
|
62
63
|
{"parquet_metadata", "parquet"},
|
63
64
|
{"parquet_scan", "parquet"},
|
@@ -161,6 +162,7 @@ static constexpr ExtensionEntry EXTENSION_FUNCTIONS[] = {{"->>", "json"},
|
|
161
162
|
{"st_numpoints", "spatial"}};
|
162
163
|
|
163
164
|
static constexpr ExtensionEntry EXTENSION_SETTINGS[] = {
|
165
|
+
{"azure_storage_connection_string", "azure"},
|
164
166
|
{"binary_as_string", "parquet"},
|
165
167
|
{"calendar", "icu"},
|
166
168
|
{"http_retries", "httpfs"},
|