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
@@ -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 "duckdb/main/extension/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,14 +140,17 @@ 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 :
|
152
|
+
#if defined(GENERATED_EXTENSION_HEADERS) && GENERATED_EXTENSION_HEADERS
|
153
|
+
for (auto &ext : linked_extensions) {
|
154
154
|
LoadExtensionInternal(db, ext, true);
|
155
155
|
}
|
156
156
|
#endif
|
@@ -178,105 +178,110 @@ ExtensionLoadResult ExtensionHelper::LoadExtensionInternal(DuckDB &db, const std
|
|
178
178
|
return ExtensionLoadResult::LOADED_EXTENSION;
|
179
179
|
}
|
180
180
|
#endif
|
181
|
+
|
182
|
+
// This is the main extension loading mechanism that loads the extension that are statically linked.
|
183
|
+
#if defined(GENERATED_EXTENSION_HEADERS) && GENERATED_EXTENSION_HEADERS
|
184
|
+
if (TryLoadLinkedExtension(db, extension)) {
|
185
|
+
return ExtensionLoadResult::LOADED_EXTENSION;
|
186
|
+
} else {
|
187
|
+
return ExtensionLoadResult::NOT_LOADED;
|
188
|
+
}
|
189
|
+
#endif
|
190
|
+
|
191
|
+
// This is the fallback to the "old" extension loading mechanism for non-cmake builds
|
192
|
+
// TODO: rewrite package_build.py to allow also loading out-of-tree extensions in non-cmake builds
|
181
193
|
if (extension == "parquet") {
|
182
|
-
#if
|
194
|
+
#if DUCKDB_EXTENSION_PARQUET_LINKED
|
183
195
|
db.LoadExtension<ParquetExtension>();
|
184
196
|
#else
|
185
197
|
// parquet extension required but not build: skip this test
|
186
198
|
return ExtensionLoadResult::NOT_LOADED;
|
187
199
|
#endif
|
188
200
|
} else if (extension == "icu") {
|
189
|
-
#if
|
201
|
+
#if DUCKDB_EXTENSION_ICU_LINKED
|
190
202
|
db.LoadExtension<IcuExtension>();
|
191
203
|
#else
|
192
204
|
// icu extension required but not build: skip this test
|
193
205
|
return ExtensionLoadResult::NOT_LOADED;
|
194
206
|
#endif
|
195
207
|
} else if (extension == "tpch") {
|
196
|
-
#if
|
208
|
+
#if DUCKDB_EXTENSION_TPCH_LINKED
|
197
209
|
db.LoadExtension<TpchExtension>();
|
198
210
|
#else
|
199
211
|
// icu extension required but not build: skip this test
|
200
212
|
return ExtensionLoadResult::NOT_LOADED;
|
201
213
|
#endif
|
202
214
|
} else if (extension == "tpcds") {
|
203
|
-
#if
|
215
|
+
#if DUCKDB_EXTENSION_TPCDS_LINKED
|
204
216
|
db.LoadExtension<TpcdsExtension>();
|
205
217
|
#else
|
206
218
|
// icu extension required but not build: skip this test
|
207
219
|
return ExtensionLoadResult::NOT_LOADED;
|
208
220
|
#endif
|
209
221
|
} else if (extension == "fts") {
|
210
|
-
#if
|
211
|
-
db.LoadExtension<FtsExtension>();
|
222
|
+
#if DUCKDB_EXTENSION_FTS_LINKED
|
223
|
+
// db.LoadExtension<FtsExtension>();
|
212
224
|
#else
|
213
225
|
// fts extension required but not build: skip this test
|
214
226
|
return ExtensionLoadResult::NOT_LOADED;
|
215
227
|
#endif
|
216
228
|
} else if (extension == "httpfs") {
|
217
|
-
#if
|
229
|
+
#if DUCKDB_EXTENSION_HTTPFS_LINKED
|
218
230
|
db.LoadExtension<HttpfsExtension>();
|
219
231
|
#else
|
220
232
|
return ExtensionLoadResult::NOT_LOADED;
|
221
233
|
#endif
|
222
234
|
} else if (extension == "visualizer") {
|
223
|
-
#if
|
235
|
+
#if DUCKDB_EXTENSION_VISUALIZER_LINKED
|
224
236
|
db.LoadExtension<VisualizerExtension>();
|
225
237
|
#else
|
226
238
|
// visualizer extension required but not build: skip this test
|
227
239
|
return ExtensionLoadResult::NOT_LOADED;
|
228
240
|
#endif
|
229
241
|
} else if (extension == "json") {
|
230
|
-
#if
|
242
|
+
#if DUCKDB_EXTENSION_JSON_LINKED
|
231
243
|
db.LoadExtension<JsonExtension>();
|
232
244
|
#else
|
233
245
|
// json extension required but not build: skip this test
|
234
246
|
return ExtensionLoadResult::NOT_LOADED;
|
235
247
|
#endif
|
236
248
|
} else if (extension == "excel") {
|
237
|
-
#if
|
249
|
+
#if DUCKDB_EXTENSION_EXCEL_LINKED
|
238
250
|
db.LoadExtension<ExcelExtension>();
|
239
251
|
#else
|
240
252
|
// excel extension required but not build: skip this test
|
241
253
|
return ExtensionLoadResult::NOT_LOADED;
|
242
254
|
#endif
|
243
255
|
} else if (extension == "sqlsmith") {
|
244
|
-
#if
|
256
|
+
#if DUCKDB_EXTENSION_SQLSMITH_LINKED
|
245
257
|
db.LoadExtension<SqlsmithExtension>();
|
246
258
|
#else
|
247
259
|
// excel extension required but not build: skip this test
|
248
260
|
return ExtensionLoadResult::NOT_LOADED;
|
249
261
|
#endif
|
250
262
|
} else if (extension == "jemalloc") {
|
251
|
-
#if
|
263
|
+
#if DUCKDB_EXTENSION_JEMALLOC_LINKED
|
252
264
|
db.LoadExtension<JemallocExtension>();
|
253
265
|
#else
|
254
266
|
// jemalloc extension required but not build: skip this test
|
255
267
|
return ExtensionLoadResult::NOT_LOADED;
|
256
268
|
#endif
|
257
269
|
} else if (extension == "autocomplete") {
|
258
|
-
#if
|
270
|
+
#if DUCKDB_EXTENSION_AUTOCOMPLETE_LINKED
|
259
271
|
db.LoadExtension<AutocompleteExtension>();
|
260
272
|
#else
|
261
273
|
// autocomplete extension required but not build: skip this test
|
262
274
|
return ExtensionLoadResult::NOT_LOADED;
|
263
275
|
#endif
|
264
276
|
} else if (extension == "inet") {
|
265
|
-
#if
|
277
|
+
#if DUCKDB_EXTENSION_INET_LINKED
|
266
278
|
db.LoadExtension<InetExtension>();
|
267
279
|
#else
|
268
280
|
// inet extension required but not build: skip this test
|
269
281
|
return ExtensionLoadResult::NOT_LOADED;
|
270
282
|
#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
283
|
}
|
284
|
+
|
280
285
|
return ExtensionLoadResult::LOADED_EXTENSION;
|
281
286
|
}
|
282
287
|
|
@@ -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) {
|