duckdb 0.8.2-dev157.0 → 0.8.2-dev1573.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_structure.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +17 -37
- 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 +192 -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 +5 -11
- 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 +44 -11
- 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.cpp +8 -655
- 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/copy_csv.cpp +8 -1
- package/src/duckdb/src/function/table/read_csv.cpp +100 -17
- 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/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 +13 -0
- 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 +0 -1
- 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.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/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 +96 -89
- 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 +51 -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/test_all_types.test.ts +233 -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
@@ -6,88 +6,85 @@
|
|
6
6
|
#include "duckdb/main/client_context.hpp"
|
7
7
|
#include "duckdb/main/database.hpp"
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#define ICU_STATICALLY_LOADED false
|
9
|
+
// Note that c++ preprocessor doesn't have a nice way to clean this up so we need to set the defines we use to false
|
10
|
+
// explicitly when they are undefined
|
11
|
+
#ifndef DUCKDB_EXTENSION_ICU_LINKED
|
12
|
+
#define DUCKDB_EXTENSION_ICU_LINKED false
|
14
13
|
#endif
|
15
14
|
|
16
|
-
#
|
17
|
-
#define
|
18
|
-
#include "parquet_extension.hpp"
|
19
|
-
#else
|
20
|
-
#define PARQUET_STATICALLY_LOADED false
|
15
|
+
#ifndef DUCKDB_EXTENSION_PARQUET_LINKED
|
16
|
+
#define DUCKDB_EXTENSION_PARQUET_LINKED false
|
21
17
|
#endif
|
22
18
|
|
23
|
-
#
|
24
|
-
#define
|
25
|
-
#include "tpch_extension.hpp"
|
26
|
-
#else
|
27
|
-
#define TPCH_STATICALLY_LOADED false
|
19
|
+
#ifndef DUCKDB_EXTENSION_TPCH_LINKED
|
20
|
+
#define DUCKDB_EXTENSION_TPCH_LINKED false
|
28
21
|
#endif
|
29
22
|
|
30
|
-
#
|
31
|
-
#define
|
32
|
-
#include "tpcds_extension.hpp"
|
33
|
-
#else
|
34
|
-
#define TPCDS_STATICALLY_LOADED false
|
23
|
+
#ifndef DUCKDB_EXTENSION_TPCDS_LINKED
|
24
|
+
#define DUCKDB_EXTENSION_TPCDS_LINKED false
|
35
25
|
#endif
|
36
26
|
|
37
|
-
#
|
38
|
-
#define
|
39
|
-
#include "fts_extension.hpp"
|
40
|
-
#else
|
41
|
-
#define FTS_STATICALLY_LOADED false
|
27
|
+
#ifndef DUCKDB_EXTENSION_FTS_LINKED
|
28
|
+
#define DUCKDB_EXTENSION_FTS_LINKED false
|
42
29
|
#endif
|
43
30
|
|
44
|
-
#
|
45
|
-
#define
|
46
|
-
#include "httpfs_extension.hpp"
|
47
|
-
#else
|
48
|
-
#define HTTPFS_STATICALLY_LOADED false
|
31
|
+
#ifndef DUCKDB_EXTENSION_HTTPFS_LINKED
|
32
|
+
#define DUCKDB_EXTENSION_HTTPFS_LINKED false
|
49
33
|
#endif
|
50
34
|
|
51
|
-
#
|
52
|
-
#
|
35
|
+
#ifndef DUCKDB_EXTENSION_JSON_LINKED
|
36
|
+
#define DUCKDB_EXTENSION_JSON_LINKED false
|
53
37
|
#endif
|
54
38
|
|
55
|
-
#
|
56
|
-
#define
|
57
|
-
#include "json_extension.hpp"
|
58
|
-
#else
|
59
|
-
#define JSON_STATICALLY_LOADED false
|
39
|
+
#ifndef DUCKDB_EXTENSION_JEMALLOC_LINKED
|
40
|
+
#define DUCKDB_EXTENSION_JEMALLOC_LINKED false
|
60
41
|
#endif
|
61
42
|
|
62
|
-
#
|
63
|
-
#define
|
64
|
-
#
|
43
|
+
#ifndef DUCKDB_EXTENSION_AUTOCOMPLETE_LINKED
|
44
|
+
#define DUCKDB_EXTENSION_AUTOCOMPLETE_LINKED false
|
45
|
+
#endif
|
46
|
+
|
47
|
+
// Load the generated header file containing our list of extension headers
|
48
|
+
#if defined(GENERATED_EXTENSION_HEADERS) && GENERATED_EXTENSION_HEADERS && !defined(DUCKDB_AMALGAMATION)
|
49
|
+
#include "generated_extension_loader.hpp"
|
65
50
|
#else
|
66
|
-
|
51
|
+
// TODO: rewrite package_build.py to allow also loading out-of-tree extensions in non-cmake builds, after that
|
52
|
+
// these can be removed
|
53
|
+
#if DUCKDB_EXTENSION_ICU_LINKED
|
54
|
+
#include "icu_extension.hpp"
|
67
55
|
#endif
|
68
56
|
|
69
|
-
#if
|
70
|
-
#include "
|
57
|
+
#if DUCKDB_EXTENSION_PARQUET_LINKED
|
58
|
+
#include "parquet_extension.hpp"
|
71
59
|
#endif
|
72
60
|
|
73
|
-
#if
|
74
|
-
#include "
|
61
|
+
#if DUCKDB_EXTENSION_TPCH_LINKED
|
62
|
+
#include "tpch_extension.hpp"
|
75
63
|
#endif
|
76
64
|
|
77
|
-
#if
|
78
|
-
#include "
|
65
|
+
#if DUCKDB_EXTENSION_TPCDS_LINKED
|
66
|
+
#include "tpcds_extension.hpp"
|
79
67
|
#endif
|
80
68
|
|
81
|
-
#if
|
82
|
-
#
|
83
|
-
#include "autocomplete_extension.hpp"
|
84
|
-
#else
|
85
|
-
#define AUTOCOMPLETE_STATICALLY_LOADED false
|
69
|
+
#if DUCKDB_EXTENSION_FTS_LINKED
|
70
|
+
#include "fts_extension.hpp"
|
86
71
|
#endif
|
87
72
|
|
88
|
-
|
89
|
-
#
|
90
|
-
#
|
73
|
+
#if DUCKDB_EXTENSION_HTTPFS_LINKED
|
74
|
+
#include "httpfs_extension.hpp"
|
75
|
+
#endif
|
76
|
+
|
77
|
+
#if DUCKDB_EXTENSION_JSON_LINKED
|
78
|
+
#include "json_extension.hpp"
|
79
|
+
#endif
|
80
|
+
|
81
|
+
#if DUCKDB_EXTENSION_JEMALLOC_LINKED
|
82
|
+
#include "jemalloc_extension.hpp"
|
83
|
+
#endif
|
84
|
+
|
85
|
+
#if DUCKDB_EXTENSION_AUTOCOMPLETE_LINKED
|
86
|
+
#include "autocomplete_extension.hpp"
|
87
|
+
#endif
|
91
88
|
#endif
|
92
89
|
|
93
90
|
namespace duckdb {
|
@@ -96,15 +93,15 @@ namespace duckdb {
|
|
96
93
|
// Default Extensions
|
97
94
|
//===--------------------------------------------------------------------===//
|
98
95
|
static DefaultExtension internal_extensions[] = {
|
99
|
-
{"icu", "Adds support for time zones and collations using the ICU library",
|
100
|
-
{"parquet", "Adds support for reading and writing parquet files",
|
101
|
-
{"tpch", "Adds TPC-H data generation and query support",
|
102
|
-
{"tpcds", "Adds TPC-DS data generation and query support",
|
103
|
-
{"fts", "Adds support for Full-Text Search Indexes",
|
104
|
-
{"httpfs", "Adds support for reading and writing files over a HTTP(S) connection",
|
105
|
-
{"json", "Adds support for JSON operations",
|
106
|
-
{"jemalloc", "Overwrites system allocator with JEMalloc",
|
107
|
-
{"autocomplete", "Add supports for autocomplete in the shell",
|
96
|
+
{"icu", "Adds support for time zones and collations using the ICU library", DUCKDB_EXTENSION_ICU_LINKED},
|
97
|
+
{"parquet", "Adds support for reading and writing parquet files", DUCKDB_EXTENSION_PARQUET_LINKED},
|
98
|
+
{"tpch", "Adds TPC-H data generation and query support", DUCKDB_EXTENSION_TPCH_LINKED},
|
99
|
+
{"tpcds", "Adds TPC-DS data generation and query support", DUCKDB_EXTENSION_TPCDS_LINKED},
|
100
|
+
{"fts", "Adds support for Full-Text Search Indexes", DUCKDB_EXTENSION_FTS_LINKED},
|
101
|
+
{"httpfs", "Adds support for reading and writing files over a HTTP(S) connection", DUCKDB_EXTENSION_HTTPFS_LINKED},
|
102
|
+
{"json", "Adds support for JSON operations", DUCKDB_EXTENSION_JSON_LINKED},
|
103
|
+
{"jemalloc", "Overwrites system allocator with JEMalloc", DUCKDB_EXTENSION_JEMALLOC_LINKED},
|
104
|
+
{"autocomplete", "Add supports for autocomplete in the shell", DUCKDB_EXTENSION_AUTOCOMPLETE_LINKED},
|
108
105
|
{"motherduck", "Enables motherduck integration with the system", false},
|
109
106
|
{"sqlite_scanner", "Adds support for reading SQLite database files", false},
|
110
107
|
{"postgres_scanner", "Adds support for reading from a Postgres database", false},
|
@@ -143,15 +140,20 @@ bool ExtensionHelper::AllowAutoInstall(const string &extension) {
|
|
143
140
|
// Load Statically Compiled Extension
|
144
141
|
//===--------------------------------------------------------------------===//
|
145
142
|
void ExtensionHelper::LoadAllExtensions(DuckDB &db) {
|
143
|
+
// The in-tree extensions that we check. Non-cmake builds are currently limited to these for static linking
|
144
|
+
// TODO: rewrite package_build.py to allow also loading out-of-tree extensions in non-cmake builds, after that
|
145
|
+
// these can be removed
|
146
146
|
unordered_set<string> extensions {"parquet", "icu", "tpch", "tpcds", "fts", "httpfs", "visualizer",
|
147
147
|
"json", "excel", "sqlsmith", "inet", "jemalloc", "autocomplete"};
|
148
148
|
for (auto &ext : extensions) {
|
149
149
|
LoadExtensionInternal(db, ext, true);
|
150
150
|
}
|
151
151
|
|
152
|
-
#if defined(
|
153
|
-
for (auto &ext :
|
154
|
-
|
152
|
+
#if defined(GENERATED_EXTENSION_HEADERS) && GENERATED_EXTENSION_HEADERS
|
153
|
+
for (auto &ext : LINKED_EXTENSIONS) {
|
154
|
+
if (extensions.find(ext) != extensions.end()) {
|
155
|
+
LoadExtensionInternal(db, ext, true);
|
156
|
+
}
|
155
157
|
}
|
156
158
|
#endif
|
157
159
|
}
|
@@ -178,105 +180,110 @@ ExtensionLoadResult ExtensionHelper::LoadExtensionInternal(DuckDB &db, const std
|
|
178
180
|
return ExtensionLoadResult::LOADED_EXTENSION;
|
179
181
|
}
|
180
182
|
#endif
|
183
|
+
|
184
|
+
// This is the main extension loading mechanism that loads the extension that are statically linked.
|
185
|
+
#if defined(GENERATED_EXTENSION_HEADERS) && GENERATED_EXTENSION_HEADERS
|
186
|
+
if (TryLoadLinkedExtension(db, extension)) {
|
187
|
+
return ExtensionLoadResult::LOADED_EXTENSION;
|
188
|
+
} else {
|
189
|
+
return ExtensionLoadResult::NOT_LOADED;
|
190
|
+
}
|
191
|
+
#endif
|
192
|
+
|
193
|
+
// This is the fallback to the "old" extension loading mechanism for non-cmake builds
|
194
|
+
// TODO: rewrite package_build.py to allow also loading out-of-tree extensions in non-cmake builds
|
181
195
|
if (extension == "parquet") {
|
182
|
-
#if
|
196
|
+
#if DUCKDB_EXTENSION_PARQUET_LINKED
|
183
197
|
db.LoadExtension<ParquetExtension>();
|
184
198
|
#else
|
185
199
|
// parquet extension required but not build: skip this test
|
186
200
|
return ExtensionLoadResult::NOT_LOADED;
|
187
201
|
#endif
|
188
202
|
} else if (extension == "icu") {
|
189
|
-
#if
|
203
|
+
#if DUCKDB_EXTENSION_ICU_LINKED
|
190
204
|
db.LoadExtension<IcuExtension>();
|
191
205
|
#else
|
192
206
|
// icu extension required but not build: skip this test
|
193
207
|
return ExtensionLoadResult::NOT_LOADED;
|
194
208
|
#endif
|
195
209
|
} else if (extension == "tpch") {
|
196
|
-
#if
|
210
|
+
#if DUCKDB_EXTENSION_TPCH_LINKED
|
197
211
|
db.LoadExtension<TpchExtension>();
|
198
212
|
#else
|
199
213
|
// icu extension required but not build: skip this test
|
200
214
|
return ExtensionLoadResult::NOT_LOADED;
|
201
215
|
#endif
|
202
216
|
} else if (extension == "tpcds") {
|
203
|
-
#if
|
217
|
+
#if DUCKDB_EXTENSION_TPCDS_LINKED
|
204
218
|
db.LoadExtension<TpcdsExtension>();
|
205
219
|
#else
|
206
220
|
// icu extension required but not build: skip this test
|
207
221
|
return ExtensionLoadResult::NOT_LOADED;
|
208
222
|
#endif
|
209
223
|
} else if (extension == "fts") {
|
210
|
-
#if
|
211
|
-
db.LoadExtension<FtsExtension>();
|
224
|
+
#if DUCKDB_EXTENSION_FTS_LINKED
|
225
|
+
// db.LoadExtension<FtsExtension>();
|
212
226
|
#else
|
213
227
|
// fts extension required but not build: skip this test
|
214
228
|
return ExtensionLoadResult::NOT_LOADED;
|
215
229
|
#endif
|
216
230
|
} else if (extension == "httpfs") {
|
217
|
-
#if
|
231
|
+
#if DUCKDB_EXTENSION_HTTPFS_LINKED
|
218
232
|
db.LoadExtension<HttpfsExtension>();
|
219
233
|
#else
|
220
234
|
return ExtensionLoadResult::NOT_LOADED;
|
221
235
|
#endif
|
222
236
|
} else if (extension == "visualizer") {
|
223
|
-
#if
|
237
|
+
#if DUCKDB_EXTENSION_VISUALIZER_LINKED
|
224
238
|
db.LoadExtension<VisualizerExtension>();
|
225
239
|
#else
|
226
240
|
// visualizer extension required but not build: skip this test
|
227
241
|
return ExtensionLoadResult::NOT_LOADED;
|
228
242
|
#endif
|
229
243
|
} else if (extension == "json") {
|
230
|
-
#if
|
244
|
+
#if DUCKDB_EXTENSION_JSON_LINKED
|
231
245
|
db.LoadExtension<JsonExtension>();
|
232
246
|
#else
|
233
247
|
// json extension required but not build: skip this test
|
234
248
|
return ExtensionLoadResult::NOT_LOADED;
|
235
249
|
#endif
|
236
250
|
} else if (extension == "excel") {
|
237
|
-
#if
|
251
|
+
#if DUCKDB_EXTENSION_EXCEL_LINKED
|
238
252
|
db.LoadExtension<ExcelExtension>();
|
239
253
|
#else
|
240
254
|
// excel extension required but not build: skip this test
|
241
255
|
return ExtensionLoadResult::NOT_LOADED;
|
242
256
|
#endif
|
243
257
|
} else if (extension == "sqlsmith") {
|
244
|
-
#if
|
258
|
+
#if DUCKDB_EXTENSION_SQLSMITH_LINKED
|
245
259
|
db.LoadExtension<SqlsmithExtension>();
|
246
260
|
#else
|
247
261
|
// excel extension required but not build: skip this test
|
248
262
|
return ExtensionLoadResult::NOT_LOADED;
|
249
263
|
#endif
|
250
264
|
} else if (extension == "jemalloc") {
|
251
|
-
#if
|
265
|
+
#if DUCKDB_EXTENSION_JEMALLOC_LINKED
|
252
266
|
db.LoadExtension<JemallocExtension>();
|
253
267
|
#else
|
254
268
|
// jemalloc extension required but not build: skip this test
|
255
269
|
return ExtensionLoadResult::NOT_LOADED;
|
256
270
|
#endif
|
257
271
|
} else if (extension == "autocomplete") {
|
258
|
-
#if
|
272
|
+
#if DUCKDB_EXTENSION_AUTOCOMPLETE_LINKED
|
259
273
|
db.LoadExtension<AutocompleteExtension>();
|
260
274
|
#else
|
261
275
|
// autocomplete extension required but not build: skip this test
|
262
276
|
return ExtensionLoadResult::NOT_LOADED;
|
263
277
|
#endif
|
264
278
|
} else if (extension == "inet") {
|
265
|
-
#if
|
279
|
+
#if DUCKDB_EXTENSION_INET_LINKED
|
266
280
|
db.LoadExtension<InetExtension>();
|
267
281
|
#else
|
268
282
|
// inet extension required but not build: skip this test
|
269
283
|
return ExtensionLoadResult::NOT_LOADED;
|
270
284
|
#endif
|
271
|
-
} else {
|
272
|
-
|
273
|
-
#if defined(OOTE_HEADERS_AVAILABLE) && OOTE_HEADERS_AVAILABLE
|
274
|
-
if (TryLoadLinkedExtension(db, extension)) {
|
275
|
-
return ExtensionLoadResult::LOADED_EXTENSION;
|
276
|
-
}
|
277
|
-
#endif
|
278
|
-
return ExtensionLoadResult::EXTENSION_UNKNOWN;
|
279
285
|
}
|
286
|
+
|
280
287
|
return ExtensionLoadResult::LOADED_EXTENSION;
|
281
288
|
}
|
282
289
|
|
@@ -4,8 +4,10 @@
|
|
4
4
|
#include "duckdb/common/string_util.hpp"
|
5
5
|
|
6
6
|
#ifndef DISABLE_DUCKDB_REMOTE_INSTALL
|
7
|
+
#ifndef DUCKDB_DISABLE_EXTENSION_LOAD
|
7
8
|
#include "httplib.hpp"
|
8
9
|
#endif
|
10
|
+
#endif
|
9
11
|
#include "duckdb/common/windows_undefs.hpp"
|
10
12
|
|
11
13
|
#include <fstream>
|
@@ -27,6 +29,9 @@ bool ExtensionHelper::IsRelease(const string &version_tag) {
|
|
27
29
|
}
|
28
30
|
|
29
31
|
const string ExtensionHelper::GetVersionDirectoryName() {
|
32
|
+
#ifdef DUCKDB_WASM_VERSION
|
33
|
+
return DUCKDB_QUOTE_DEFINE(DUCKDB_WASM_VERSION);
|
34
|
+
#endif
|
30
35
|
if (IsRelease(DuckDB::LibraryVersion())) {
|
31
36
|
return NormalizeVersionTag(DuckDB::LibraryVersion());
|
32
37
|
} else {
|
@@ -152,6 +157,9 @@ void WriteExtensionFileToDisk(FileSystem &fs, const string &path, void *data, id
|
|
152
157
|
|
153
158
|
void ExtensionHelper::InstallExtensionInternal(DBConfig &config, ClientConfig *client_config, FileSystem &fs,
|
154
159
|
const string &local_path, const string &extension, bool force_install) {
|
160
|
+
#ifdef DUCKDB_DISABLE_EXTENSION_LOAD
|
161
|
+
throw PermissionException("Installing external extensions is disabled through a compile time flag");
|
162
|
+
#else
|
155
163
|
if (!config.options.enable_external_access) {
|
156
164
|
throw PermissionException("Installing extensions is disabled through configuration");
|
157
165
|
}
|
@@ -237,6 +245,7 @@ void ExtensionHelper::InstallExtensionInternal(DBConfig &config, ClientConfig *c
|
|
237
245
|
WriteExtensionFileToDisk(fs, temp_path, (void *)decompressed_body.data(), decompressed_body.size());
|
238
246
|
fs.MoveFile(temp_path, local_extension_path);
|
239
247
|
#endif
|
248
|
+
#endif
|
240
249
|
}
|
241
250
|
|
242
251
|
} // namespace duckdb
|
@@ -17,6 +17,7 @@ namespace duckdb {
|
|
17
17
|
//===--------------------------------------------------------------------===//
|
18
18
|
// Load External Extension
|
19
19
|
//===--------------------------------------------------------------------===//
|
20
|
+
#ifndef DUCKDB_DISABLE_EXTENSION_LOAD
|
20
21
|
typedef void (*ext_init_fun_t)(DatabaseInstance &);
|
21
22
|
typedef const char *(*ext_version_fun_t)(void);
|
22
23
|
typedef bool (*ext_is_storage_t)(void);
|
@@ -43,9 +44,13 @@ static void ComputeSHA256FileSegment(FileHandle *handle, const idx_t start, cons
|
|
43
44
|
|
44
45
|
ComputeSHA256String(file_content, res);
|
45
46
|
}
|
47
|
+
#endif
|
46
48
|
|
47
49
|
bool ExtensionHelper::TryInitialLoad(DBConfig &config, FileSystem &fs, const string &extension,
|
48
50
|
ExtensionInitResult &result, string &error) {
|
51
|
+
#ifdef DUCKDB_DISABLE_EXTENSION_LOAD
|
52
|
+
throw PermissionException("Loading external extensions is disabled through a compile time flag");
|
53
|
+
#else
|
49
54
|
if (!config.options.enable_external_access) {
|
50
55
|
throw PermissionException("Loading external extensions is disabled through configuration");
|
51
56
|
}
|
@@ -197,6 +202,7 @@ bool ExtensionHelper::TryInitialLoad(DBConfig &config, FileSystem &fs, const str
|
|
197
202
|
result.filename = filename;
|
198
203
|
result.lib_hdl = lib_hdl;
|
199
204
|
return true;
|
205
|
+
#endif
|
200
206
|
}
|
201
207
|
|
202
208
|
ExtensionInitResult ExtensionHelper::InitialLoad(DBConfig &config, FileSystem &fs, const string &extension) {
|
@@ -241,7 +247,9 @@ void ExtensionHelper::LoadExternalExtension(DatabaseInstance &db, FileSystem &fs
|
|
241
247
|
if (db.ExtensionIsLoaded(extension)) {
|
242
248
|
return;
|
243
249
|
}
|
244
|
-
|
250
|
+
#ifdef DUCKDB_DISABLE_EXTENSION_LOAD
|
251
|
+
throw PermissionException("Loading external extensions is disabled through a compile time flag");
|
252
|
+
#else
|
245
253
|
auto res = InitialLoad(DBConfig::GetConfig(db), fs, extension);
|
246
254
|
auto init_fun_name = res.basename + "_init";
|
247
255
|
|
@@ -256,6 +264,7 @@ void ExtensionHelper::LoadExternalExtension(DatabaseInstance &db, FileSystem &fs
|
|
256
264
|
}
|
257
265
|
|
258
266
|
db.SetExtensionLoaded(extension);
|
267
|
+
#endif
|
259
268
|
}
|
260
269
|
|
261
270
|
void ExtensionHelper::LoadExternalExtension(ClientContext &context, const string &extension) {
|
@@ -6,9 +6,10 @@
|
|
6
6
|
|
7
7
|
namespace duckdb {
|
8
8
|
|
9
|
-
CrossProductRelation::CrossProductRelation(shared_ptr<Relation> left_p, shared_ptr<Relation> right_p
|
9
|
+
CrossProductRelation::CrossProductRelation(shared_ptr<Relation> left_p, shared_ptr<Relation> right_p,
|
10
|
+
JoinRefType ref_type)
|
10
11
|
: Relation(left_p->context, RelationType::CROSS_PRODUCT_RELATION), left(std::move(left_p)),
|
11
|
-
right(std::move(right_p)) {
|
12
|
+
right(std::move(right_p)), ref_type(ref_type) {
|
12
13
|
if (left->context.GetContext() != right->context.GetContext()) {
|
13
14
|
throw Exception("Cannot combine LEFT and RIGHT relations of different connections!");
|
14
15
|
}
|
@@ -23,7 +24,7 @@ unique_ptr<QueryNode> CrossProductRelation::GetQueryNode() {
|
|
23
24
|
}
|
24
25
|
|
25
26
|
unique_ptr<TableRef> CrossProductRelation::GetTableRef() {
|
26
|
-
auto cross_product_ref = make_uniq<JoinRef>(
|
27
|
+
auto cross_product_ref = make_uniq<JoinRef>(ref_type);
|
27
28
|
cross_product_ref->left = left->GetTableRef();
|
28
29
|
cross_product_ref->right = right->GetTableRef();
|
29
30
|
return std::move(cross_product_ref);
|
@@ -8,9 +8,9 @@
|
|
8
8
|
namespace duckdb {
|
9
9
|
|
10
10
|
JoinRelation::JoinRelation(shared_ptr<Relation> left_p, shared_ptr<Relation> right_p,
|
11
|
-
unique_ptr<ParsedExpression> condition_p, JoinType type)
|
11
|
+
unique_ptr<ParsedExpression> condition_p, JoinType type, JoinRefType join_ref_type)
|
12
12
|
: Relation(left_p->context, RelationType::JOIN_RELATION), left(std::move(left_p)), right(std::move(right_p)),
|
13
|
-
condition(std::move(condition_p)), join_type(type) {
|
13
|
+
condition(std::move(condition_p)), join_type(type), join_ref_type(join_ref_type) {
|
14
14
|
if (left->context.GetContext() != right->context.GetContext()) {
|
15
15
|
throw Exception("Cannot combine LEFT and RIGHT relations of different connections!");
|
16
16
|
}
|
@@ -18,9 +18,9 @@ JoinRelation::JoinRelation(shared_ptr<Relation> left_p, shared_ptr<Relation> rig
|
|
18
18
|
}
|
19
19
|
|
20
20
|
JoinRelation::JoinRelation(shared_ptr<Relation> left_p, shared_ptr<Relation> right_p, vector<string> using_columns_p,
|
21
|
-
JoinType type)
|
21
|
+
JoinType type, JoinRefType join_ref_type)
|
22
22
|
: Relation(left_p->context, RelationType::JOIN_RELATION), left(std::move(left_p)), right(std::move(right_p)),
|
23
|
-
using_columns(std::move(using_columns_p)), join_type(type) {
|
23
|
+
using_columns(std::move(using_columns_p)), join_type(type), join_ref_type(join_ref_type) {
|
24
24
|
if (left->context.GetContext() != right->context.GetContext()) {
|
25
25
|
throw Exception("Cannot combine LEFT and RIGHT relations of different connections!");
|
26
26
|
}
|
@@ -35,7 +35,7 @@ unique_ptr<QueryNode> JoinRelation::GetQueryNode() {
|
|
35
35
|
}
|
36
36
|
|
37
37
|
unique_ptr<TableRef> JoinRelation::GetTableRef() {
|
38
|
-
auto join_ref = make_uniq<JoinRef>(
|
38
|
+
auto join_ref = make_uniq<JoinRef>(join_ref_type);
|
39
39
|
join_ref->left = left->GetTableRef();
|
40
40
|
join_ref->right = right->GetTableRef();
|
41
41
|
if (condition) {
|
@@ -113,7 +113,8 @@ shared_ptr<Relation> Relation::Order(const vector<string> &expressions) {
|
|
113
113
|
return make_shared<OrderRelation>(shared_from_this(), std::move(order_list));
|
114
114
|
}
|
115
115
|
|
116
|
-
shared_ptr<Relation> Relation::Join(const shared_ptr<Relation> &other, const string &condition, JoinType type
|
116
|
+
shared_ptr<Relation> Relation::Join(const shared_ptr<Relation> &other, const string &condition, JoinType type,
|
117
|
+
JoinRefType ref_type) {
|
117
118
|
auto expression_list = Parser::ParseExpressionList(condition, context.GetContext()->GetParserOptions());
|
118
119
|
D_ASSERT(!expression_list.empty());
|
119
120
|
|
@@ -130,15 +131,15 @@ shared_ptr<Relation> Relation::Join(const shared_ptr<Relation> &other, const str
|
|
130
131
|
}
|
131
132
|
using_columns.push_back(colref.column_names[0]);
|
132
133
|
}
|
133
|
-
return make_shared<JoinRelation>(shared_from_this(), other, std::move(using_columns), type);
|
134
|
+
return make_shared<JoinRelation>(shared_from_this(), other, std::move(using_columns), type, ref_type);
|
134
135
|
} else {
|
135
136
|
// single expression that is not a column reference: use the expression as a join condition
|
136
|
-
return make_shared<JoinRelation>(shared_from_this(), other, std::move(expression_list[0]), type);
|
137
|
+
return make_shared<JoinRelation>(shared_from_this(), other, std::move(expression_list[0]), type, ref_type);
|
137
138
|
}
|
138
139
|
}
|
139
140
|
|
140
|
-
shared_ptr<Relation> Relation::CrossProduct(const shared_ptr<Relation> &other) {
|
141
|
-
return make_shared<CrossProductRelation>(shared_from_this(), other);
|
141
|
+
shared_ptr<Relation> Relation::CrossProduct(const shared_ptr<Relation> &other, JoinRefType join_ref_type) {
|
142
|
+
return make_shared<CrossProductRelation>(shared_from_this(), other, join_ref_type);
|
142
143
|
}
|
143
144
|
|
144
145
|
shared_ptr<Relation> Relation::Union(const shared_ptr<Relation> &other) {
|