duckdb 0.8.2-dev37.0 → 0.8.2-dev3989.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/README.md +7 -0
- package/binding.gyp +29 -13
- package/binding.gyp.in +1 -1
- package/configure.py +11 -3
- 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 +10 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +162 -41
- package/src/duckdb/extension/icu/icu-datesub.cpp +3 -2
- package/src/duckdb/extension/icu/icu-datetrunc.cpp +2 -1
- package/src/duckdb/extension/icu/icu-list-range.cpp +1 -1
- package/src/duckdb/extension/icu/icu-makedate.cpp +19 -6
- package/src/duckdb/extension/icu/icu-strptime.cpp +5 -24
- 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 +10 -12
- package/src/duckdb/extension/json/buffered_json_reader.cpp +2 -0
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +5 -19
- package/src/duckdb/extension/json/include/json_common.hpp +47 -231
- package/src/duckdb/extension/json/include/json_deserializer.hpp +7 -16
- package/src/duckdb/extension/json/include/json_enums.hpp +60 -0
- 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/include/json_scan.hpp +14 -10
- package/src/duckdb/extension/json/include/json_serializer.hpp +9 -15
- package/src/duckdb/extension/json/include/json_transform.hpp +3 -0
- package/src/duckdb/extension/json/json_common.cpp +272 -40
- package/src/duckdb/extension/json/json_deserializer.cpp +37 -73
- package/src/duckdb/extension/json/json_enums.cpp +105 -0
- 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 +93 -38
- package/src/duckdb/extension/json/json_functions/json_type.cpp +1 -1
- package/src/duckdb/extension/json/json_functions.cpp +26 -25
- package/src/duckdb/extension/json/json_scan.cpp +47 -6
- package/src/duckdb/extension/json/json_serializer.cpp +29 -72
- package/src/duckdb/extension/json/serialize_json.cpp +92 -0
- package/src/duckdb/extension/parquet/column_reader.cpp +37 -25
- 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_reader.hpp +4 -0
- 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_timestamp.hpp +1 -0
- package/src/duckdb/extension/parquet/include/parquet_writer.hpp +28 -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 +258 -40
- package/src/duckdb/extension/parquet/parquet_reader.cpp +10 -10
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +25 -8
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +6 -0
- package/src/duckdb/extension/parquet/parquet_writer.cpp +149 -31
- package/src/duckdb/extension/parquet/serialize_parquet.cpp +26 -0
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +2 -2
- package/src/duckdb/src/catalog/catalog.cpp +147 -70
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +8 -11
- package/src/duckdb/src/catalog/catalog_entry/index_catalog_entry.cpp +17 -41
- package/src/duckdb/src/catalog/catalog_entry/macro_catalog_entry.cpp +2 -10
- package/src/duckdb/src/catalog/catalog_entry/schema_catalog_entry.cpp +4 -14
- package/src/duckdb/src/catalog/catalog_entry/sequence_catalog_entry.cpp +11 -28
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +11 -42
- package/src/duckdb/src/catalog/catalog_entry/type_catalog_entry.cpp +7 -26
- package/src/duckdb/src/catalog/catalog_entry/view_catalog_entry.cpp +11 -27
- package/src/duckdb/src/catalog/catalog_entry.cpp +25 -1
- package/src/duckdb/src/catalog/catalog_search_path.cpp +5 -4
- package/src/duckdb/src/catalog/catalog_set.cpp +0 -63
- package/src/duckdb/src/catalog/default/default_functions.cpp +21 -0
- package/src/duckdb/src/catalog/dependency_manager.cpp +0 -36
- package/src/duckdb/src/common/adbc/adbc.cpp +541 -171
- package/src/duckdb/src/common/adbc/driver_manager.cpp +92 -39
- package/src/duckdb/src/common/adbc/nanoarrow/allocator.cpp +57 -0
- package/src/duckdb/src/common/adbc/nanoarrow/metadata.cpp +121 -0
- package/src/duckdb/src/common/adbc/nanoarrow/schema.cpp +474 -0
- package/src/duckdb/src/common/adbc/nanoarrow/single_batch_array_stream.cpp +84 -0
- package/src/duckdb/src/common/allocator.cpp +14 -2
- package/src/duckdb/src/common/arrow/appender/bool_data.cpp +44 -0
- package/src/duckdb/src/common/arrow/appender/list_data.cpp +78 -0
- package/src/duckdb/src/common/arrow/appender/map_data.cpp +86 -0
- package/src/duckdb/src/common/arrow/appender/struct_data.cpp +45 -0
- package/src/duckdb/src/common/arrow/appender/union_data.cpp +70 -0
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +95 -666
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +65 -37
- package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +37 -42
- package/src/duckdb/src/common/assert.cpp +3 -0
- package/src/duckdb/src/common/constants.cpp +2 -1
- package/src/duckdb/src/common/enum_util.cpp +4979 -4458
- package/src/duckdb/src/common/enums/date_part_specifier.cpp +2 -0
- 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 +15 -2
- package/src/duckdb/src/common/extra_type_info.cpp +487 -0
- package/src/duckdb/src/common/field_writer.cpp +1 -1
- package/src/duckdb/src/common/file_buffer.cpp +1 -1
- package/src/duckdb/src/common/file_system.cpp +46 -12
- package/src/duckdb/src/common/filename_pattern.cpp +1 -1
- package/src/duckdb/src/common/gzip_file_system.cpp +7 -12
- package/src/duckdb/src/common/hive_partitioning.cpp +10 -6
- package/src/duckdb/src/common/http_state.cpp +78 -0
- package/src/duckdb/src/common/local_file_system.cpp +36 -28
- package/src/duckdb/src/common/multi_file_reader.cpp +193 -20
- package/src/duckdb/src/common/operator/cast_operators.cpp +92 -1
- package/src/duckdb/src/common/operator/string_cast.cpp +45 -8
- package/src/duckdb/src/common/radix_partitioning.cpp +34 -39
- package/src/duckdb/src/common/re2_regex.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_aggregate.cpp +18 -3
- package/src/duckdb/src/common/row_operations/row_external.cpp +1 -1
- package/src/duckdb/src/common/serializer/binary_deserializer.cpp +63 -73
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +85 -80
- package/src/duckdb/src/common/serializer/buffered_file_reader.cpp +0 -9
- package/src/duckdb/src/common/serializer/format_serializer.cpp +15 -0
- package/src/duckdb/src/common/sort/merge_sorter.cpp +9 -16
- package/src/duckdb/src/common/sort/partition_state.cpp +102 -74
- package/src/duckdb/src/common/sort/sort_state.cpp +1 -1
- package/src/duckdb/src/common/sort/sorted_block.cpp +1 -1
- 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 +68 -2
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +20 -6
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
- package/src/duckdb/src/common/types/data_chunk.cpp +46 -10
- package/src/duckdb/src/common/types/date.cpp +15 -0
- package/src/duckdb/src/common/types/hugeint.cpp +40 -0
- package/src/duckdb/src/common/types/hyperloglog.cpp +21 -0
- package/src/duckdb/src/common/types/interval.cpp +6 -0
- package/src/duckdb/src/common/types/list_segment.cpp +56 -198
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +251 -131
- package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +35 -5
- package/src/duckdb/src/common/types/row/row_layout.cpp +3 -31
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +40 -32
- package/src/duckdb/src/common/types/row/tuple_data_collection.cpp +41 -26
- package/src/duckdb/src/common/types/row/tuple_data_layout.cpp +11 -1
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +2 -2
- package/src/duckdb/src/common/types/row/tuple_data_segment.cpp +21 -16
- package/src/duckdb/src/common/types/string_heap.cpp +4 -0
- package/src/duckdb/src/common/types/time.cpp +105 -0
- package/src/duckdb/src/common/types/timestamp.cpp +7 -0
- 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 +99 -60
- package/src/duckdb/src/common/types/vector.cpp +73 -80
- package/src/duckdb/src/common/types.cpp +38 -724
- package/src/duckdb/src/common/virtual_file_system.cpp +142 -1
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +26 -0
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +5 -7
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +64 -19
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +30 -0
- package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +1 -0
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +83 -59
- 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 +10 -4
- package/src/duckdb/src/core_functions/scalar/date/date_diff.cpp +2 -0
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +380 -89
- package/src/duckdb/src/core_functions/scalar/date/date_sub.cpp +2 -0
- package/src/duckdb/src/core_functions/scalar/date/date_trunc.cpp +4 -0
- 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/date/strftime.cpp +10 -0
- package/src/duckdb/src/core_functions/scalar/debug/vector_type.cpp +23 -0
- package/src/duckdb/src/core_functions/scalar/enum/enum_functions.cpp +16 -12
- package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +3 -1
- package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +314 -82
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +4 -2
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +23 -3
- package/src/duckdb/src/core_functions/scalar/map/map_entries.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/string/to_base.cpp +66 -0
- package/src/duckdb/src/core_functions/scalar/union/union_tag.cpp +1 -1
- package/src/duckdb/src/execution/aggregate_hashtable.cpp +226 -346
- package/src/duckdb/src/execution/column_binding_resolver.cpp +10 -7
- package/src/duckdb/src/execution/expression_executor/execute_parameter.cpp +2 -2
- package/src/duckdb/src/execution/expression_executor.cpp +1 -1
- package/src/duckdb/src/execution/index/art/art.cpp +219 -259
- package/src/duckdb/src/execution/index/art/art_key.cpp +0 -11
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +11 -15
- package/src/duckdb/src/execution/index/art/iterator.cpp +130 -214
- package/src/duckdb/src/execution/index/art/leaf.cpp +300 -266
- package/src/duckdb/src/execution/index/art/node.cpp +211 -205
- package/src/duckdb/src/execution/index/art/node16.cpp +10 -19
- package/src/duckdb/src/execution/index/art/node256.cpp +10 -18
- package/src/duckdb/src/execution/index/art/node4.cpp +21 -23
- package/src/duckdb/src/execution/index/art/node48.cpp +10 -20
- package/src/duckdb/src/execution/index/art/prefix.cpp +308 -338
- package/src/duckdb/src/execution/join_hashtable.cpp +9 -10
- package/src/duckdb/src/execution/operator/aggregate/aggregate_object.cpp +1 -0
- package/src/duckdb/src/execution/operator/aggregate/physical_hash_aggregate.cpp +250 -317
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +6 -4
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +8 -3
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +231 -190
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +367 -1068
- package/src/duckdb/src/execution/operator/{persistent → csv_scanner}/base_csv_reader.cpp +157 -174
- package/src/duckdb/src/execution/operator/csv_scanner/buffered_csv_reader.cpp +434 -0
- package/src/duckdb/src/execution/operator/csv_scanner/csv_buffer.cpp +80 -0
- package/src/duckdb/src/execution/operator/csv_scanner/csv_buffer_manager.cpp +90 -0
- package/src/duckdb/src/execution/operator/csv_scanner/csv_file_handle.cpp +95 -0
- package/src/duckdb/src/execution/operator/{persistent → csv_scanner}/csv_reader_options.cpp +67 -28
- package/src/duckdb/src/execution/operator/csv_scanner/csv_state_machine.cpp +35 -0
- package/src/duckdb/src/execution/operator/csv_scanner/csv_state_machine_cache.cpp +107 -0
- package/src/duckdb/src/execution/operator/{persistent → csv_scanner}/parallel_csv_reader.cpp +46 -47
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/csv_sniffer.cpp +52 -0
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/dialect_detection.cpp +336 -0
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/header_detection.cpp +165 -0
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_detection.cpp +398 -0
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_refinement.cpp +175 -0
- package/src/duckdb/src/execution/operator/csv_scanner/sniffer/type_replacement.cpp +39 -0
- package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
- package/src/duckdb/src/execution/operator/helper/physical_batch_collector.cpp +12 -9
- package/src/duckdb/src/execution/operator/helper/physical_explain_analyze.cpp +2 -2
- package/src/duckdb/src/execution/operator/helper/physical_limit.cpp +10 -8
- package/src/duckdb/src/execution/operator/helper/physical_load.cpp +2 -1
- package/src/duckdb/src/execution/operator/helper/physical_materialized_collector.cpp +7 -5
- package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +3 -1
- package/src/duckdb/src/execution/operator/helper/physical_set.cpp +3 -1
- package/src/duckdb/src/execution/operator/helper/physical_vacuum.cpp +7 -5
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +449 -288
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_comparison_join.cpp +1 -2
- package/src/duckdb/src/execution/operator/join/physical_delim_join.cpp +13 -6
- package/src/duckdb/src/execution/operator/join/physical_hash_join.cpp +28 -15
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +35 -17
- package/src/duckdb/src/execution/operator/join/physical_join.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +7 -4
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +31 -10
- package/src/duckdb/src/execution/operator/join/physical_range_join.cpp +41 -5
- package/src/duckdb/src/execution/operator/order/physical_order.cpp +7 -5
- package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +7 -5
- package/src/duckdb/src/execution/operator/persistent/csv_rejects_table.cpp +48 -0
- package/src/duckdb/src/execution/operator/persistent/physical_batch_copy_to_file.cpp +14 -10
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +11 -9
- package/src/duckdb/src/execution/operator/persistent/physical_copy_to_file.cpp +9 -7
- package/src/duckdb/src/execution/operator/persistent/physical_fixed_batch_copy.cpp +14 -12
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +11 -11
- package/src/duckdb/src/execution/operator/persistent/physical_update.cpp +4 -2
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -1
- package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +24 -27
- 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 -12
- package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +2 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_art_index.cpp +198 -0
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +2 -6
- package/src/duckdb/src/execution/operator/set/physical_cte.cpp +160 -0
- package/src/duckdb/src/execution/operator/set/physical_recursive_cte.cpp +16 -7
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +37 -6
- package/src/duckdb/src/execution/physical_operator.cpp +20 -16
- package/src/duckdb/src/execution/physical_plan/plan_aggregate.cpp +43 -10
- package/src/duckdb/src/execution/physical_plan/plan_asof_join.cpp +57 -35
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +32 -15
- package/src/duckdb/src/execution/physical_plan/plan_create_index.cpp +45 -34
- package/src/duckdb/src/execution/physical_plan/plan_cte.cpp +33 -0
- package/src/duckdb/src/execution/physical_plan/plan_delim_join.cpp +2 -5
- 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 +6 -11
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +636 -349
- package/src/duckdb/src/execution/window_executor.cpp +1285 -0
- package/src/duckdb/src/execution/window_segment_tree.cpp +408 -144
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +2 -13
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +6 -12
- 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/cast_function_set.cpp +1 -0
- package/src/duckdb/src/function/cast/numeric_casts.cpp +2 -0
- package/src/duckdb/src/function/cast/string_cast.cpp +2 -2
- package/src/duckdb/src/function/cast/time_casts.cpp +7 -6
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +7 -2
- package/src/duckdb/src/function/function.cpp +3 -1
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +7 -1
- 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/operators/add.cpp +9 -0
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +6 -3
- package/src/duckdb/src/function/scalar/strftime_format.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/like.cpp +12 -4
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +39 -5
- package/src/duckdb/src/function/scalar_function.cpp +5 -20
- package/src/duckdb/src/function/table/arrow/arrow_duck_schema.cpp +57 -0
- package/src/duckdb/src/function/table/arrow.cpp +110 -88
- package/src/duckdb/src/function/table/arrow_conversion.cpp +86 -73
- package/src/duckdb/src/function/table/copy_csv.cpp +102 -97
- package/src/duckdb/src/function/table/read_csv.cpp +263 -141
- package/src/duckdb/src/function/table/system/test_all_types.cpp +48 -21
- package/src/duckdb/src/function/table/system_functions.cpp +1 -0
- package/src/duckdb/src/function/table/table_scan.cpp +42 -0
- package/src/duckdb/src/function/table/version/pragma_version.cpp +49 -2
- package/src/duckdb/src/function/table_function.cpp +4 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +20 -5
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/index_catalog_entry.hpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/macro_catalog_entry.hpp +1 -4
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/schema_catalog_entry.hpp +2 -5
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/sequence_catalog_entry.hpp +1 -6
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +2 -13
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/type_catalog_entry.hpp +1 -4
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/view_catalog_entry.hpp +2 -5
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +14 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_set.hpp +0 -6
- package/src/duckdb/src/include/duckdb/common/adbc/adbc.h +1 -0
- package/src/duckdb/src/include/duckdb/common/adbc/adbc.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/adbc/single_batch_array_stream.hpp +16 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/append_data.hpp +109 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/bool_data.hpp +15 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/enum_data.hpp +69 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/list.hpp +8 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/list_data.hpp +18 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/map_data.hpp +18 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/scalar_data.hpp +88 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/struct_data.hpp +18 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/union_data.hpp +21 -0
- package/src/duckdb/src/include/duckdb/common/arrow/appender/varchar_data.hpp +105 -0
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +9 -4
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +3 -5
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_wrapper.hpp +5 -3
- package/src/duckdb/src/include/duckdb/common/arrow/nanoarrow/nanoarrow.h +462 -0
- package/src/duckdb/src/include/duckdb/common/arrow/nanoarrow/nanoarrow.hpp +14 -0
- package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +4 -0
- package/src/duckdb/src/include/duckdb/common/assert.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/bitpacking.hpp +70 -55
- package/src/duckdb/src/include/duckdb/common/bswap.hpp +42 -0
- package/src/duckdb/src/include/duckdb/common/case_insensitive_map.hpp +1 -0
- package/src/duckdb/src/include/duckdb/common/constants.hpp +4 -0
- package/src/duckdb/src/include/duckdb/common/dl.hpp +3 -1
- package/src/duckdb/src/include/duckdb/common/enum_util.hpp +681 -577
- package/src/duckdb/src/include/duckdb/common/enums/cte_materialize.hpp +21 -0
- package/src/duckdb/src/include/duckdb/common/enums/date_part_specifier.hpp +9 -1
- package/src/duckdb/src/include/duckdb/common/enums/index_type.hpp +4 -3
- 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/operator_result_type.hpp +5 -1
- package/src/duckdb/src/include/duckdb/common/enums/optimizer_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/enums/pending_execution_result.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/enums/physical_operator_type.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/exception.hpp +15 -1
- package/src/duckdb/src/include/duckdb/common/extra_operator_info.hpp +27 -0
- package/src/duckdb/src/include/duckdb/common/extra_type_info.hpp +215 -0
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +0 -4
- package/src/duckdb/src/include/duckdb/common/file_opener.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +10 -8
- package/src/duckdb/src/include/duckdb/common/filename_pattern.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/fixed_size_map.hpp +208 -0
- package/src/duckdb/src/include/duckdb/common/helper.hpp +8 -3
- package/src/duckdb/src/include/duckdb/common/hive_partitioning.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/http_state.hpp +61 -28
- package/src/duckdb/src/include/duckdb/common/hugeint.hpp +15 -0
- package/src/duckdb/src/include/duckdb/common/index_vector.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/limits.hpp +52 -149
- package/src/duckdb/src/include/duckdb/common/multi_file_reader.hpp +11 -5
- package/src/duckdb/src/include/duckdb/common/multi_file_reader_options.hpp +12 -42
- package/src/duckdb/src/include/duckdb/common/mutex.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/numeric_utils.hpp +48 -0
- package/src/duckdb/src/include/duckdb/common/opener_file_system.hpp +6 -2
- package/src/duckdb/src/include/duckdb/common/operator/add.hpp +5 -2
- package/src/duckdb/src/include/duckdb/common/operator/cast_operators.hpp +65 -4
- package/src/duckdb/src/include/duckdb/common/operator/multiply.hpp +3 -2
- package/src/duckdb/src/include/duckdb/common/operator/numeric_cast.hpp +10 -0
- package/src/duckdb/src/include/duckdb/common/operator/string_cast.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/operator/subtract.hpp +3 -2
- package/src/duckdb/src/include/duckdb/common/optional_idx.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/perfect_map_set.hpp +2 -1
- package/src/duckdb/src/include/duckdb/common/printer.hpp +11 -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/serializer/binary_deserializer.hpp +71 -30
- package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +48 -39
- package/src/duckdb/src/include/duckdb/common/serializer/buffered_file_reader.hpp +0 -4
- package/src/duckdb/src/include/duckdb/common/serializer/deserialization_data.hpp +128 -0
- package/src/duckdb/src/include/duckdb/common/serializer/encoding_util.hpp +132 -0
- package/src/duckdb/src/include/duckdb/common/serializer/format_deserializer.hpp +186 -133
- package/src/duckdb/src/include/duckdb/common/serializer/format_serializer.hpp +166 -121
- package/src/duckdb/src/include/duckdb/common/serializer/serialization_traits.hpp +27 -4
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +0 -7
- package/src/duckdb/src/include/duckdb/common/shared_ptr.hpp +8 -0
- package/src/duckdb/src/include/duckdb/common/sort/partition_state.hpp +34 -13
- package/src/duckdb/src/include/duckdb/common/stack_checker.hpp +34 -0
- package/src/duckdb/src/include/duckdb/common/string_util.hpp +11 -0
- package/src/duckdb/src/include/duckdb/common/type_util.hpp +8 -0
- package/src/duckdb/src/include/duckdb/common/typedefs.hpp +8 -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 +11 -1
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection.hpp +12 -1
- package/src/duckdb/src/include/duckdb/common/types/column/column_data_collection_segment.hpp +3 -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 +6 -3
- package/src/duckdb/src/include/duckdb/common/types/date.hpp +9 -5
- package/src/duckdb/src/include/duckdb/common/types/datetime.hpp +46 -3
- package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +7 -1
- package/src/duckdb/src/include/duckdb/common/types/interval.hpp +7 -0
- package/src/duckdb/src/include/duckdb/common/types/list_segment.hpp +11 -15
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +46 -11
- package/src/duckdb/src/include/duckdb/common/types/row/row_data_collection_scanner.hpp +10 -1
- package/src/duckdb/src/include/duckdb/common/types/row/row_layout.hpp +1 -23
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_allocator.hpp +14 -8
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_collection.hpp +7 -3
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_layout.hpp +7 -0
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_segment.hpp +13 -8
- package/src/duckdb/src/include/duckdb/common/types/row/tuple_data_states.hpp +6 -2
- package/src/duckdb/src/include/duckdb/common/types/string_heap.hpp +3 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +16 -10
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +7 -2
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +10 -3
- package/src/duckdb/src/include/duckdb/common/types.hpp +6 -25
- package/src/duckdb/src/include/duckdb/common/vector.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +7 -2
- package/src/duckdb/src/include/duckdb/common/virtual_file_system.hpp +40 -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 +4 -2
- 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 +40 -11
- package/src/duckdb/src/include/duckdb/core_functions/scalar/debug_functions.hpp +27 -0
- 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 +7 -5
- 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 +6 -4
- package/src/duckdb/src/include/duckdb/core_functions/scalar/operators_functions.hpp +4 -2
- 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 +12 -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 +128 -131
- package/src/duckdb/src/include/duckdb/execution/executor.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +13 -12
- package/src/duckdb/src/include/duckdb/execution/index/art/art_key.hpp +0 -1
- package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +22 -24
- package/src/duckdb/src/include/duckdb/execution/index/art/iterator.hpp +32 -28
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +46 -51
- package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +134 -53
- package/src/duckdb/src/include/duckdb/execution/index/art/node16.hpp +5 -7
- package/src/duckdb/src/include/duckdb/execution/index/art/node256.hpp +5 -7
- package/src/duckdb/src/include/duckdb/execution/index/art/node4.hpp +7 -9
- package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +5 -7
- package/src/duckdb/src/include/duckdb/execution/index/art/prefix.hpp +63 -52
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp +8 -7
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_perfecthash_aggregate.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_ungrouped_aggregate.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/aggregate/physical_window.hpp +6 -5
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_batch_collector.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_explain_analyze.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_limit.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_materialized_collector.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_vacuum.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_asof_join.hpp +5 -12
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_blockwise_nl_join.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_delim_join.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_hash_join.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_iejoin.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_nested_loop_join.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_piecewise_merge_join.hpp +3 -3
- package/src/duckdb/src/include/duckdb/execution/operator/join/physical_range_join.hpp +12 -1
- package/src/duckdb/src/include/duckdb/execution/operator/order/physical_order.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/order/physical_top_n.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_rejects_table.hpp +36 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_copy_to_file.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_batch_insert.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_copy_to_file.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_fixed_batch_copy.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_insert.hpp +2 -2
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/physical_update.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/base_csv_reader.hpp +19 -19
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/buffered_csv_reader.hpp +72 -0
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_buffer.hpp +110 -0
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_buffer_manager.hpp +103 -0
- package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/csv_file_handle.hpp +8 -15
- package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/csv_line_info.hpp +5 -4
- package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/csv_reader_options.hpp +61 -28
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_sniffer.hpp +127 -0
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_state_machine.hpp +75 -0
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/csv_state_machine_cache.hpp +51 -0
- package/src/duckdb/src/include/duckdb/execution/operator/{persistent → scan/csv}/parallel_csv_reader.hpp +22 -28
- package/src/duckdb/src/include/duckdb/execution/operator/scan/csv/quote_rules.hpp +21 -0
- 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 -5
- package/src/duckdb/src/include/duckdb/execution/operator/schema/{physical_create_index.hpp → physical_create_art_index.hpp} +14 -7
- 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/perfect_aggregate_hashtable.hpp +4 -2
- package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +6 -5
- package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +11 -0
- package/src/duckdb/src/include/duckdb/execution/physical_plan_generator.hpp +6 -2
- package/src/duckdb/src/include/duckdb/execution/radix_partitioned_hashtable.hpp +19 -21
- package/src/duckdb/src/include/duckdb/execution/window_executor.hpp +313 -0
- package/src/duckdb/src/include/duckdb/execution/window_segment_tree.hpp +79 -63
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +12 -4
- 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/copy_function.hpp +6 -1
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +80 -0
- package/src/duckdb/src/include/duckdb/function/macro_function.hpp +3 -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/strftime_format.hpp +12 -4
- package/src/duckdb/src/include/duckdb/function/scalar/string_functions.hpp +2 -0
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +8 -3
- package/src/duckdb/src/include/duckdb/function/scalar_macro_function.hpp +3 -0
- package/src/duckdb/src/include/duckdb/function/table/arrow/arrow_duck_schema.hpp +99 -0
- package/src/duckdb/src/include/duckdb/function/table/arrow.hpp +6 -36
- package/src/duckdb/src/include/duckdb/function/table/read_csv.hpp +24 -12
- package/src/duckdb/src/include/duckdb/function/table/system_functions.hpp +5 -1
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -0
- package/src/duckdb/src/include/duckdb/function/table_macro_function.hpp +3 -0
- package/src/duckdb/src/include/duckdb/function/udf_function.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +4 -3
- package/src/duckdb/src/include/duckdb/main/chunk_scan_state/query_result.hpp +29 -0
- package/src/duckdb/src/include/duckdb/main/chunk_scan_state.hpp +43 -0
- package/src/duckdb/src/include/duckdb/main/client_config.hpp +7 -2
- package/src/duckdb/src/include/duckdb/main/client_context.hpp +16 -14
- package/src/duckdb/src/include/duckdb/main/client_context_file_opener.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/client_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/main/client_properties.hpp +25 -0
- package/src/duckdb/src/include/duckdb/main/config.hpp +16 -1
- package/src/duckdb/src/include/duckdb/main/connection.hpp +3 -4
- package/src/duckdb/src/include/duckdb/main/extension/generated_extension_loader.hpp +27 -0
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +210 -144
- package/src/duckdb/src/include/duckdb/main/extension_helper.hpp +41 -6
- package/src/duckdb/src/include/duckdb/main/extension_util.hpp +4 -0
- package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +5 -0
- package/src/duckdb/src/include/duckdb/main/prepared_statement.hpp +73 -5
- package/src/duckdb/src/include/duckdb/main/prepared_statement_data.hpp +6 -6
- package/src/duckdb/src/include/duckdb/main/query_result.hpp +2 -27
- package/src/duckdb/src/include/duckdb/main/relation/aggregate_relation.hpp +4 -1
- 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/read_csv_relation.hpp +6 -6
- package/src/duckdb/src/include/duckdb/main/relation.hpp +4 -2
- package/src/duckdb/src/include/duckdb/main/settings.hpp +71 -11
- 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 +7 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +38 -64
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cost_model.hpp +37 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/estimated_properties.hpp +10 -1
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_node.hpp +14 -29
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_order_optimizer.hpp +8 -22
- package/src/duckdb/src/include/duckdb/optimizer/join_order/join_relation.hpp +1 -12
- package/src/duckdb/src/include/duckdb/optimizer/join_order/plan_enumerator.hpp +89 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph.hpp +19 -30
- package/src/duckdb/src/include/duckdb/optimizer/join_order/query_graph_manager.hpp +113 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_manager.hpp +73 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/relation_statistics_helper.hpp +73 -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/event.hpp +12 -1
- package/src/duckdb/src/include/duckdb/parallel/pipeline.hpp +2 -3
- package/src/duckdb/src/include/duckdb/parallel/pipeline_executor.hpp +3 -2
- package/src/duckdb/src/include/duckdb/parallel/task_scheduler.hpp +9 -1
- package/src/duckdb/src/include/duckdb/parser/column_definition.hpp +6 -5
- package/src/duckdb/src/include/duckdb/parser/column_list.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parser/common_table_expression_info.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/constraint.hpp +5 -0
- package/src/duckdb/src/include/duckdb/parser/constraints/check_constraint.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/constraints/foreign_key_constraint.hpp +6 -0
- package/src/duckdb/src/include/duckdb/parser/constraints/not_null_constraint.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/constraints/unique_constraint.hpp +6 -0
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +4 -1
- package/src/duckdb/src/include/duckdb/parser/expression/case_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/cast_expression.hpp +4 -1
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +4 -1
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +4 -1
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +4 -1
- package/src/duckdb/src/include/duckdb/parser/expression/conjunction_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/constant_expression.hpp +4 -1
- package/src/duckdb/src/include/duckdb/parser/expression/default_expression.hpp +1 -0
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +4 -1
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +4 -1
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +21 -4
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +18 -2
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +4 -1
- package/src/duckdb/src/include/duckdb/parser/expression/star_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/window_expression.hpp +4 -1
- package/src/duckdb/src/include/duckdb/parser/group_by_node.hpp +11 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_info.hpp +12 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/alter_table_info.hpp +66 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/attach_info.hpp +8 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/copy_info.hpp +8 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_index_info.hpp +9 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_info.hpp +9 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_macro_info.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_schema_info.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_sequence_info.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_table_info.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_type_info.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_view_info.hpp +3 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/detach_info.hpp +7 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/drop_info.hpp +7 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/exported_table_data.hpp +7 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/load_info.hpp +17 -3
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +22 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/pragma_info.hpp +10 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/show_select_info.hpp +7 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/transaction_info.hpp +10 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/vacuum_info.hpp +10 -0
- package/src/duckdb/src/include/duckdb/parser/parser.hpp +4 -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/statement/execute_statement.hpp +1 -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 +23 -26
- package/src/duckdb/src/include/duckdb/planner/binder.hpp +16 -5
- package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +0 -8
- package/src/duckdb/src/include/duckdb/planner/bound_parameter_map.hpp +2 -1
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/bound_tokens.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/column_binding.hpp +9 -0
- package/src/duckdb/src/include/duckdb/planner/constraints/bound_unique_constraint.hpp +3 -3
- package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_default_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +3 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_data.hpp +24 -6
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +9 -2
- package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression/list.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/expression_binder/lateral_binder.hpp +0 -2
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +13 -1
- package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/joinside.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +3 -2
- package/src/duckdb/src/include/duckdb/planner/logical_tokens.hpp +1 -2
- package/src/duckdb/src/include/duckdb/planner/operator/list.hpp +3 -3
- package/src/duckdb/src/include/duckdb/planner/operator/logical_aggregate.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_any_join.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_column_data_get.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_comparison_join.hpp +12 -7
- package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create.hpp +9 -6
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create_index.hpp +12 -23
- package/src/duckdb/src/include/duckdb/planner/operator/logical_create_table.hpp +10 -6
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cross_product.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_cteref.hpp +9 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_delete.hpp +7 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_get.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_dependent_join.hpp +43 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_distinct.hpp +6 -10
- package/src/duckdb/src/include/duckdb/planner/operator/logical_dummy_scan.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_empty_result.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_expression_get.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_extension_operator.hpp +8 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_filter.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +11 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_insert.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_limit.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_limit_percent.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_materialized_cte.hpp +52 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_order.hpp +7 -35
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_positional_join.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_projection.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_recursive_cte.hpp +10 -7
- package/src/duckdb/src/include/duckdb/planner/operator/logical_reset.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_sample.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_set.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_set_operation.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_show.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_simple.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_top_n.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_unnest.hpp +2 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_update.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_window.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator_extension.hpp +1 -0
- package/src/duckdb/src/include/duckdb/planner/planner.hpp +4 -3
- 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/table_filter.hpp +7 -1
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_cteref.hpp +5 -2
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/arena_allocator.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/block.hpp +33 -4
- package/src/duckdb/src/include/duckdb/storage/block_manager.hpp +11 -11
- package/src/duckdb/src/include/duckdb/storage/buffer/block_handle.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/checkpoint/row_group_writer.hpp +5 -5
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_reader.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/checkpoint/table_data_writer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/checkpoint_manager.hpp +19 -16
- package/src/duckdb/src/include/duckdb/storage/data_pointer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/index.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_manager.hpp +88 -0
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_reader.hpp +54 -0
- package/src/duckdb/src/include/duckdb/storage/metadata/metadata_writer.hpp +45 -0
- package/src/duckdb/src/include/duckdb/storage/object_cache.hpp +22 -0
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/single_file_block_manager.hpp +8 -5
- package/src/duckdb/src/include/duckdb/storage/statistics/base_statistics.hpp +7 -3
- package/src/duckdb/src/include/duckdb/storage/statistics/column_statistics.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/distinct_statistics.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/list_stats.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/numeric_stats.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/string_stats.hpp +7 -0
- package/src/duckdb/src/include/duckdb/storage/statistics/struct_stats.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/storage_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +18 -3
- package/src/duckdb/src/include/duckdb/storage/table/persistent_table_data.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +8 -3
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +3 -3
- package/src/duckdb/src/include/duckdb/storage/table/row_group_segment_tree.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/table_index_list.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/table_statistics.hpp +5 -0
- package/src/duckdb/src/include/duckdb/storage/table_io_manager.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/write_ahead_log.hpp +3 -4
- package/src/duckdb/src/include/duckdb/transaction/local_storage.hpp +2 -3
- package/src/duckdb/src/include/duckdb/verification/deserialized_statement_verifier_v2.hpp +6 -0
- package/src/duckdb/src/include/duckdb/verification/prepared_statement_verifier.hpp +1 -1
- package/src/duckdb/src/include/duckdb/verification/statement_verifier.hpp +1 -0
- package/src/duckdb/src/include/duckdb.h +98 -1
- package/src/duckdb/src/main/appender.cpp +3 -1
- package/src/duckdb/src/main/attached_database.cpp +2 -2
- package/src/duckdb/src/main/capi/arrow-c.cpp +196 -8
- package/src/duckdb/src/main/capi/duckdb-c.cpp +16 -0
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +1 -1
- package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -0
- package/src/duckdb/src/main/capi/pending-c.cpp +23 -0
- package/src/duckdb/src/main/capi/prepared-c.cpp +106 -28
- package/src/duckdb/src/main/capi/result-c.cpp +3 -1
- package/src/duckdb/src/main/chunk_scan_state/query_result.cpp +53 -0
- package/src/duckdb/src/main/chunk_scan_state.cpp +48 -0
- package/src/duckdb/src/main/client_context.cpp +42 -19
- package/src/duckdb/src/main/client_context_file_opener.cpp +17 -0
- package/src/duckdb/src/main/client_verify.cpp +18 -0
- package/src/duckdb/src/main/config.cpp +9 -3
- package/src/duckdb/src/main/connection.cpp +3 -3
- package/src/duckdb/src/main/database.cpp +3 -12
- package/src/duckdb/src/main/db_instance_cache.cpp +14 -6
- package/src/duckdb/src/main/extension/extension_helper.cpp +164 -88
- package/src/duckdb/src/main/extension/extension_install.cpp +76 -15
- package/src/duckdb/src/main/extension/extension_load.cpp +62 -13
- package/src/duckdb/src/main/extension/extension_util.cpp +16 -0
- package/src/duckdb/src/main/pending_query_result.cpp +9 -1
- package/src/duckdb/src/main/prepared_statement.cpp +38 -11
- package/src/duckdb/src/main/prepared_statement_data.cpp +23 -18
- package/src/duckdb/src/main/query_result.cpp +0 -21
- package/src/duckdb/src/main/relation/aggregate_relation.cpp +20 -10
- package/src/duckdb/src/main/relation/cross_product_relation.cpp +4 -3
- package/src/duckdb/src/main/relation/join_relation.cpp +6 -6
- package/src/duckdb/src/main/relation/read_csv_relation.cpp +19 -13
- package/src/duckdb/src/main/relation.cpp +10 -9
- package/src/duckdb/src/main/settings/settings.cpp +125 -33
- package/src/duckdb/src/optimizer/column_binding_replacer.cpp +43 -0
- package/src/duckdb/src/optimizer/column_lifetime_analyzer.cpp +2 -4
- 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 +477 -0
- package/src/duckdb/src/optimizer/deliminator.cpp +180 -323
- package/src/duckdb/src/optimizer/filter_pushdown.cpp +23 -6
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +79 -325
- package/src/duckdb/src/optimizer/join_order/cost_model.cpp +19 -0
- package/src/duckdb/src/optimizer/join_order/estimated_properties.cpp +7 -0
- package/src/duckdb/src/optimizer/join_order/join_node.cpp +5 -37
- package/src/duckdb/src/optimizer/join_order/join_order_optimizer.cpp +48 -1047
- package/src/duckdb/src/optimizer/join_order/join_relation_set.cpp +2 -6
- package/src/duckdb/src/optimizer/join_order/plan_enumerator.cpp +552 -0
- package/src/duckdb/src/optimizer/join_order/query_graph.cpp +52 -41
- package/src/duckdb/src/optimizer/join_order/query_graph_manager.cpp +409 -0
- package/src/duckdb/src/optimizer/join_order/relation_manager.cpp +356 -0
- package/src/duckdb/src/optimizer/join_order/relation_statistics_helper.cpp +351 -0
- 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/pushdown/pushdown_projection.cpp +34 -7
- 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 +27 -10
- package/src/duckdb/src/optimizer/unnest_rewriter.cpp +3 -5
- package/src/duckdb/src/parallel/executor.cpp +25 -1
- package/src/duckdb/src/parallel/pipeline.cpp +0 -17
- package/src/duckdb/src/parallel/pipeline_executor.cpp +33 -13
- package/src/duckdb/src/parallel/pipeline_finish_event.cpp +55 -1
- package/src/duckdb/src/parallel/task_scheduler.cpp +18 -2
- package/src/duckdb/src/parser/column_definition.cpp +20 -32
- package/src/duckdb/src/parser/column_list.cpp +8 -0
- package/src/duckdb/src/parser/constraints/foreign_key_constraint.cpp +3 -0
- package/src/duckdb/src/parser/constraints/unique_constraint.cpp +3 -0
- package/src/duckdb/src/parser/expression/between_expression.cpp +3 -15
- package/src/duckdb/src/parser/expression/case_expression.cpp +0 -25
- 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 +7 -19
- 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_data/alter_info.cpp +5 -2
- package/src/duckdb/src/parser/parsed_data/alter_table_info.cpp +38 -0
- package/src/duckdb/src/parser/parsed_data/create_index_info.cpp +17 -1
- package/src/duckdb/src/parser/parsed_data/create_sequence_info.cpp +2 -0
- package/src/duckdb/src/parser/parsed_data/detach_info.cpp +1 -1
- package/src/duckdb/src/parser/parsed_data/drop_info.cpp +1 -1
- package/src/duckdb/src/parser/parsed_data/sample_options.cpp +0 -18
- package/src/duckdb/src/parser/parsed_data/transaction_info.cpp +4 -1
- package/src/duckdb/src/parser/parsed_data/vacuum_info.cpp +1 -1
- 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 +62 -36
- 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 -47
- package/src/duckdb/src/parser/result_modifier.cpp +0 -87
- package/src/duckdb/src/parser/statement/execute_statement.cpp +2 -2
- package/src/duckdb/src/parser/statement/select_statement.cpp +0 -10
- 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 -55
- 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/constraint/transform_constraint.cpp +55 -38
- package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +13 -4
- 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_function.cpp +3 -0
- package/src/duckdb/src/parser/transform/expression/transform_multi_assign_reference.cpp +44 -0
- package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +45 -26
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +19 -1
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +16 -1
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +13 -0
- package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +32 -17
- package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +1 -1
- 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_load.cpp +1 -0
- 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_prepare.cpp +28 -6
- 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 +44 -25
- package/src/duckdb/src/planner/binder/expression/bind_macro_expression.cpp +5 -3
- package/src/duckdb/src/planner/binder/expression/bind_parameter_expression.cpp +10 -10
- 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 +36 -33
- package/src/duckdb/src/planner/binder/statement/bind_copy.cpp +1 -1
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +14 -52
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +0 -23
- package/src/duckdb/src/planner/binder/statement/bind_execute.cpp +13 -7
- package/src/duckdb/src/planner/binder/statement/bind_export.cpp +70 -29
- package/src/duckdb/src/planner/binder/tableref/bind_basetableref.cpp +93 -28
- package/src/duckdb/src/planner/binder/tableref/bind_joinref.cpp +32 -5
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +116 -50
- package/src/duckdb/src/planner/binder/tableref/plan_cteref.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/plan_joinref.cpp +67 -31
- 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 +24 -1
- package/src/duckdb/src/planner/expression/bound_between_expression.cpp +4 -0
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +13 -8
- package/src/duckdb/src/planner/expression/bound_function_expression.cpp +22 -0
- package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +28 -20
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +48 -4
- package/src/duckdb/src/planner/expression_binder/lateral_binder.cpp +4 -31
- package/src/duckdb/src/planner/expression_binder/order_binder.cpp +5 -4
- package/src/duckdb/src/planner/expression_binder.cpp +23 -0
- package/src/duckdb/src/planner/expression_iterator.cpp +6 -0
- package/src/duckdb/src/planner/logical_operator.cpp +19 -7
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +5 -6
- package/src/duckdb/src/planner/operator/logical_comparison_join.cpp +4 -2
- package/src/duckdb/src/planner/operator/logical_copy_to_file.cpp +8 -0
- package/src/duckdb/src/planner/operator/logical_create.cpp +14 -0
- package/src/duckdb/src/planner/operator/logical_create_index.cpp +36 -7
- package/src/duckdb/src/planner/operator/logical_create_table.cpp +16 -0
- package/src/duckdb/src/planner/operator/logical_cteref.cpp +3 -1
- package/src/duckdb/src/planner/operator/logical_delete.cpp +9 -2
- package/src/duckdb/src/planner/operator/logical_dependent_join.cpp +26 -0
- package/src/duckdb/src/planner/operator/logical_distinct.cpp +13 -0
- package/src/duckdb/src/planner/operator/logical_explain.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_extension_operator.cpp +39 -0
- package/src/duckdb/src/planner/operator/logical_get.cpp +82 -4
- package/src/duckdb/src/planner/operator/logical_insert.cpp +8 -2
- package/src/duckdb/src/planner/operator/logical_materialized_cte.cpp +22 -0
- package/src/duckdb/src/planner/operator/logical_order.cpp +39 -0
- package/src/duckdb/src/planner/operator/logical_pivot.cpp +3 -0
- package/src/duckdb/src/planner/operator/logical_recursive_cte.cpp +5 -5
- package/src/duckdb/src/planner/operator/logical_sample.cpp +3 -0
- package/src/duckdb/src/planner/operator/logical_update.cpp +8 -2
- package/src/duckdb/src/planner/parsed_data/bound_create_table_info.cpp +4 -2
- package/src/duckdb/src/planner/planner.cpp +18 -7
- 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 +13 -2
- package/src/duckdb/src/storage/buffer/block_manager.cpp +13 -9
- package/src/duckdb/src/storage/checkpoint/row_group_writer.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/table_data_reader.cpp +3 -4
- package/src/duckdb/src/storage/checkpoint/table_data_writer.cpp +7 -7
- package/src/duckdb/src/storage/checkpoint_manager.cpp +78 -72
- package/src/duckdb/src/storage/compression/bitpacking.cpp +87 -63
- package/src/duckdb/src/storage/compression/bitpacking_hugeint.cpp +295 -0
- package/src/duckdb/src/storage/compression/fsst.cpp +1 -1
- package/src/duckdb/src/storage/compression/rle.cpp +52 -13
- package/src/duckdb/src/storage/data_table.cpp +36 -25
- package/src/duckdb/src/storage/index.cpp +4 -26
- package/src/duckdb/src/storage/local_storage.cpp +3 -4
- package/src/duckdb/src/storage/metadata/metadata_manager.cpp +267 -0
- package/src/duckdb/src/storage/metadata/metadata_reader.cpp +80 -0
- package/src/duckdb/src/storage/metadata/metadata_writer.cpp +86 -0
- package/src/duckdb/src/storage/serialization/serialize_constraint.cpp +98 -0
- package/src/duckdb/src/storage/serialization/serialize_create_info.cpp +194 -0
- package/src/duckdb/src/storage/serialization/serialize_expression.cpp +283 -0
- package/src/duckdb/src/storage/serialization/serialize_logical_operator.cpp +762 -0
- package/src/duckdb/src/storage/serialization/serialize_macro_function.cpp +62 -0
- package/src/duckdb/src/storage/serialization/serialize_nodes.cpp +461 -0
- package/src/duckdb/src/storage/serialization/serialize_parse_info.cpp +421 -0
- package/src/duckdb/src/storage/serialization/serialize_parsed_expression.cpp +342 -0
- package/src/duckdb/src/storage/serialization/serialize_query_node.cpp +122 -0
- package/src/duckdb/src/storage/serialization/serialize_result_modifier.cpp +97 -0
- package/src/duckdb/src/storage/serialization/serialize_statement.cpp +22 -0
- package/src/duckdb/src/storage/serialization/serialize_storage.cpp +39 -0
- package/src/duckdb/src/storage/serialization/serialize_table_filter.cpp +97 -0
- package/src/duckdb/src/storage/serialization/serialize_tableref.cpp +164 -0
- package/src/duckdb/src/storage/serialization/serialize_types.cpp +127 -0
- package/src/duckdb/src/storage/single_file_block_manager.cpp +69 -51
- package/src/duckdb/src/storage/statistics/base_statistics.cpp +67 -4
- package/src/duckdb/src/storage/statistics/column_statistics.cpp +16 -0
- package/src/duckdb/src/storage/statistics/list_stats.cpp +21 -0
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +126 -1
- package/src/duckdb/src/storage/statistics/string_stats.cpp +44 -2
- package/src/duckdb/src/storage/statistics/struct_stats.cpp +27 -0
- package/src/duckdb/src/storage/storage_info.cpp +3 -2
- package/src/duckdb/src/storage/storage_manager.cpp +11 -5
- package/src/duckdb/src/storage/table/chunk_info.cpp +99 -3
- package/src/duckdb/src/storage/table/column_data_checkpointer.cpp +3 -3
- package/src/duckdb/src/storage/table/list_column_data.cpp +6 -3
- package/src/duckdb/src/storage/table/persistent_table_data.cpp +1 -2
- package/src/duckdb/src/storage/table/row_group.cpp +102 -20
- package/src/duckdb/src/storage/table/row_group_collection.cpp +23 -19
- package/src/duckdb/src/storage/table/table_statistics.cpp +21 -0
- package/src/duckdb/src/storage/table/update_segment.cpp +1 -1
- package/src/duckdb/src/storage/table_index_list.cpp +1 -1
- package/src/duckdb/src/storage/wal_replay.cpp +26 -26
- package/src/duckdb/src/storage/write_ahead_log.cpp +3 -2
- package/src/duckdb/src/verification/deserialized_statement_verifier_v2.cpp +15 -1
- package/src/duckdb/src/verification/prepared_statement_verifier.cpp +16 -11
- package/src/duckdb/src/verification/statement_verifier.cpp +2 -0
- package/src/duckdb/third_party/concurrentqueue/concurrentqueue.h +2 -2
- package/src/duckdb/third_party/concurrentqueue/lightweightsemaphore.h +5 -2
- 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 +11 -0
- package/src/duckdb/third_party/libpg_query/include/parser/gram.hpp +2 -1
- package/src/duckdb/third_party/libpg_query/pg_functions.cpp +13 -0
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +11019 -10364
- package/src/duckdb/third_party/libpg_query/src_backend_parser_scansup.cpp +9 -0
- package/src/duckdb/third_party/mbedtls/include/mbedtls_wrapper.hpp +10 -0
- package/src/duckdb/third_party/mbedtls/mbedtls_wrapper.cpp +31 -1
- package/src/duckdb/third_party/utf8proc/include/utf8proc_wrapper.hpp +8 -0
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +4 -4
- package/src/duckdb/ub_src_common.cpp +4 -0
- package/src/duckdb/ub_src_common_adbc_nanoarrow.cpp +8 -0
- package/src/duckdb/ub_src_common_arrow_appender.cpp +10 -0
- package/src/duckdb/ub_src_common_serializer.cpp +2 -0
- package/src/duckdb/ub_src_core_functions_scalar_debug.cpp +2 -0
- package/src/duckdb/ub_src_core_functions_scalar_string.cpp +2 -0
- package/src/duckdb/ub_src_execution.cpp +2 -2
- package/src/duckdb/ub_src_execution_index_art.cpp +0 -6
- package/src/duckdb/ub_src_execution_operator_csv_scanner.cpp +18 -0
- package/src/duckdb/ub_src_execution_operator_csv_scanner_sniffer.cpp +12 -0
- package/src/duckdb/ub_src_execution_operator_persistent.cpp +1 -11
- package/src/duckdb/ub_src_execution_operator_schema.cpp +1 -1
- 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_function_table_arrow.cpp +2 -0
- package/src/duckdb/ub_src_main.cpp +2 -0
- package/src/duckdb/ub_src_main_chunk_scan_state.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_join_order.cpp +10 -0
- package/src/duckdb/ub_src_optimizer_statistics_expression.cpp +0 -2
- package/src/duckdb/ub_src_parser.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 +3 -3
- package/src/duckdb/ub_src_storage.cpp +0 -4
- package/src/duckdb/ub_src_storage_compression.cpp +2 -0
- package/src/duckdb/ub_src_storage_metadata.cpp +6 -0
- package/src/duckdb/ub_src_storage_serialization.cpp +30 -0
- package/src/duckdb_node.hpp +1 -0
- package/src/statement.cpp +10 -5
- package/test/columns.test.ts +25 -3
- package/test/extension.test.ts +1 -1
- package/test/test_all_types.test.ts +234 -0
- package/tsconfig.json +1 -0
- package/src/duckdb/src/execution/index/art/leaf_segment.cpp +0 -52
- package/src/duckdb/src/execution/index/art/prefix_segment.cpp +0 -42
- package/src/duckdb/src/execution/index/art/swizzleable_pointer.cpp +0 -22
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +0 -1487
- package/src/duckdb/src/execution/operator/persistent/csv_buffer.cpp +0 -72
- package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +0 -158
- package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +0 -193
- package/src/duckdb/src/execution/partitionable_hashtable.cpp +0 -172
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_options.hpp +0 -25
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +0 -38
- package/src/duckdb/src/include/duckdb/execution/index/art/prefix_segment.hpp +0 -40
- package/src/duckdb/src/include/duckdb/execution/index/art/swizzleable_pointer.hpp +0 -58
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/buffered_csv_reader.hpp +0 -133
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +0 -74
- package/src/duckdb/src/include/duckdb/execution/partitionable_hashtable.hpp +0 -69
- package/src/duckdb/src/include/duckdb/planner/operator/logical_asof_join.hpp +0 -27
- package/src/duckdb/src/include/duckdb/planner/operator/logical_delim_join.hpp +0 -32
- package/src/duckdb/src/include/duckdb/storage/meta_block_reader.hpp +0 -49
- package/src/duckdb/src/include/duckdb/storage/meta_block_writer.hpp +0 -50
- package/src/duckdb/src/optimizer/statistics/expression/propagate_and_compress.cpp +0 -118
- package/src/duckdb/src/parser/common_table_expression_info.cpp +0 -19
- package/src/duckdb/src/planner/operator/logical_asof_join.cpp +0 -14
- package/src/duckdb/src/planner/operator/logical_delim_join.cpp +0 -27
- package/src/duckdb/src/storage/meta_block_reader.cpp +0 -78
- package/src/duckdb/src/storage/meta_block_writer.cpp +0 -80
@@ -28,7 +28,7 @@ unique_ptr<FileHandle> VirtualFileSystem::OpenFile(const string &path, uint8_t f
|
|
28
28
|
}
|
29
29
|
}
|
30
30
|
// open the base file handle
|
31
|
-
auto file_handle = FindFileSystem(path)
|
31
|
+
auto file_handle = FindFileSystem(path).OpenFile(path, flags, lock, FileCompressionType::UNCOMPRESSED, opener);
|
32
32
|
if (file_handle->GetType() == FileType::FILE_TYPE_FIFO) {
|
33
33
|
file_handle = PipeFileSystem::OpenPipe(std::move(file_handle));
|
34
34
|
} else if (compression != FileCompressionType::UNCOMPRESSED) {
|
@@ -42,4 +42,145 @@ unique_ptr<FileHandle> VirtualFileSystem::OpenFile(const string &path, uint8_t f
|
|
42
42
|
return file_handle;
|
43
43
|
}
|
44
44
|
|
45
|
+
void VirtualFileSystem::Read(FileHandle &handle, void *buffer, int64_t nr_bytes, idx_t location) {
|
46
|
+
handle.file_system.Read(handle, buffer, nr_bytes, location);
|
47
|
+
}
|
48
|
+
|
49
|
+
void VirtualFileSystem::Write(FileHandle &handle, void *buffer, int64_t nr_bytes, idx_t location) {
|
50
|
+
handle.file_system.Write(handle, buffer, nr_bytes, location);
|
51
|
+
}
|
52
|
+
|
53
|
+
int64_t VirtualFileSystem::Read(FileHandle &handle, void *buffer, int64_t nr_bytes) {
|
54
|
+
return handle.file_system.Read(handle, buffer, nr_bytes);
|
55
|
+
}
|
56
|
+
|
57
|
+
int64_t VirtualFileSystem::Write(FileHandle &handle, void *buffer, int64_t nr_bytes) {
|
58
|
+
return handle.file_system.Write(handle, buffer, nr_bytes);
|
59
|
+
}
|
60
|
+
|
61
|
+
int64_t VirtualFileSystem::GetFileSize(FileHandle &handle) {
|
62
|
+
return handle.file_system.GetFileSize(handle);
|
63
|
+
}
|
64
|
+
time_t VirtualFileSystem::GetLastModifiedTime(FileHandle &handle) {
|
65
|
+
return handle.file_system.GetLastModifiedTime(handle);
|
66
|
+
}
|
67
|
+
FileType VirtualFileSystem::GetFileType(FileHandle &handle) {
|
68
|
+
return handle.file_system.GetFileType(handle);
|
69
|
+
}
|
70
|
+
|
71
|
+
void VirtualFileSystem::Truncate(FileHandle &handle, int64_t new_size) {
|
72
|
+
handle.file_system.Truncate(handle, new_size);
|
73
|
+
}
|
74
|
+
|
75
|
+
void VirtualFileSystem::FileSync(FileHandle &handle) {
|
76
|
+
handle.file_system.FileSync(handle);
|
77
|
+
}
|
78
|
+
|
79
|
+
// need to look up correct fs for this
|
80
|
+
bool VirtualFileSystem::DirectoryExists(const string &directory) {
|
81
|
+
return FindFileSystem(directory).DirectoryExists(directory);
|
82
|
+
}
|
83
|
+
void VirtualFileSystem::CreateDirectory(const string &directory) {
|
84
|
+
FindFileSystem(directory).CreateDirectory(directory);
|
85
|
+
}
|
86
|
+
|
87
|
+
void VirtualFileSystem::RemoveDirectory(const string &directory) {
|
88
|
+
FindFileSystem(directory).RemoveDirectory(directory);
|
89
|
+
}
|
90
|
+
|
91
|
+
bool VirtualFileSystem::ListFiles(const string &directory, const std::function<void(const string &, bool)> &callback,
|
92
|
+
FileOpener *opener) {
|
93
|
+
return FindFileSystem(directory).ListFiles(directory, callback, opener);
|
94
|
+
}
|
95
|
+
|
96
|
+
void VirtualFileSystem::MoveFile(const string &source, const string &target) {
|
97
|
+
FindFileSystem(source).MoveFile(source, target);
|
98
|
+
}
|
99
|
+
|
100
|
+
bool VirtualFileSystem::FileExists(const string &filename) {
|
101
|
+
return FindFileSystem(filename).FileExists(filename);
|
102
|
+
}
|
103
|
+
|
104
|
+
bool VirtualFileSystem::IsPipe(const string &filename) {
|
105
|
+
return FindFileSystem(filename).IsPipe(filename);
|
106
|
+
}
|
107
|
+
void VirtualFileSystem::RemoveFile(const string &filename) {
|
108
|
+
FindFileSystem(filename).RemoveFile(filename);
|
109
|
+
}
|
110
|
+
|
111
|
+
string VirtualFileSystem::PathSeparator(const string &path) {
|
112
|
+
return FindFileSystem(path).PathSeparator(path);
|
113
|
+
}
|
114
|
+
|
115
|
+
vector<string> VirtualFileSystem::Glob(const string &path, FileOpener *opener) {
|
116
|
+
return FindFileSystem(path).Glob(path, opener);
|
117
|
+
}
|
118
|
+
|
119
|
+
void VirtualFileSystem::RegisterSubSystem(unique_ptr<FileSystem> fs) {
|
120
|
+
sub_systems.push_back(std::move(fs));
|
121
|
+
}
|
122
|
+
|
123
|
+
void VirtualFileSystem::UnregisterSubSystem(const string &name) {
|
124
|
+
for (auto sub_system = sub_systems.begin(); sub_system != sub_systems.end(); sub_system++) {
|
125
|
+
if (sub_system->get()->GetName() == name) {
|
126
|
+
sub_systems.erase(sub_system);
|
127
|
+
return;
|
128
|
+
}
|
129
|
+
}
|
130
|
+
throw InvalidInputException("Could not find filesystem with name %s", name);
|
131
|
+
}
|
132
|
+
|
133
|
+
void VirtualFileSystem::RegisterSubSystem(FileCompressionType compression_type, unique_ptr<FileSystem> fs) {
|
134
|
+
compressed_fs[compression_type] = std::move(fs);
|
135
|
+
}
|
136
|
+
|
137
|
+
vector<string> VirtualFileSystem::ListSubSystems() {
|
138
|
+
vector<string> names(sub_systems.size());
|
139
|
+
for (idx_t i = 0; i < sub_systems.size(); i++) {
|
140
|
+
names[i] = sub_systems[i]->GetName();
|
141
|
+
}
|
142
|
+
return names;
|
143
|
+
}
|
144
|
+
|
145
|
+
std::string VirtualFileSystem::GetName() const {
|
146
|
+
return "VirtualFileSystem";
|
147
|
+
}
|
148
|
+
|
149
|
+
void VirtualFileSystem::SetDisabledFileSystems(const vector<string> &names) {
|
150
|
+
unordered_set<string> new_disabled_file_systems;
|
151
|
+
for (auto &name : names) {
|
152
|
+
if (name.empty()) {
|
153
|
+
continue;
|
154
|
+
}
|
155
|
+
if (new_disabled_file_systems.find(name) != new_disabled_file_systems.end()) {
|
156
|
+
throw InvalidInputException("Duplicate disabled file system \"%s\"", name);
|
157
|
+
}
|
158
|
+
new_disabled_file_systems.insert(name);
|
159
|
+
}
|
160
|
+
for (auto &disabled_fs : disabled_file_systems) {
|
161
|
+
if (new_disabled_file_systems.find(disabled_fs) == new_disabled_file_systems.end()) {
|
162
|
+
throw InvalidInputException("File system \"%s\" has been disabled previously, it cannot be re-enabled",
|
163
|
+
disabled_fs);
|
164
|
+
}
|
165
|
+
}
|
166
|
+
disabled_file_systems = std::move(new_disabled_file_systems);
|
167
|
+
}
|
168
|
+
|
169
|
+
FileSystem &VirtualFileSystem::FindFileSystem(const string &path) {
|
170
|
+
auto &fs = FindFileSystemInternal(path);
|
171
|
+
if (!disabled_file_systems.empty() && disabled_file_systems.find(fs.GetName()) != disabled_file_systems.end()) {
|
172
|
+
throw PermissionException("File system %s has been disabled by configuration", fs.GetName());
|
173
|
+
}
|
174
|
+
return fs;
|
175
|
+
}
|
176
|
+
|
177
|
+
FileSystem &VirtualFileSystem::FindFileSystemInternal(const string &path) {
|
178
|
+
for (auto &sub_system : sub_systems) {
|
179
|
+
if (sub_system->CanHandleFile(path)) {
|
180
|
+
return *sub_system;
|
181
|
+
}
|
182
|
+
}
|
183
|
+
return *default_fs;
|
184
|
+
}
|
185
|
+
|
45
186
|
} // namespace duckdb
|
@@ -4,6 +4,8 @@
|
|
4
4
|
#include "duckdb/planner/expression.hpp"
|
5
5
|
#include "duckdb/common/operator/cast_operators.hpp"
|
6
6
|
#include "duckdb/common/field_writer.hpp"
|
7
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
8
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
7
9
|
|
8
10
|
#include <algorithm>
|
9
11
|
#include <cmath>
|
@@ -17,6 +19,8 @@ struct ApproxQuantileState {
|
|
17
19
|
};
|
18
20
|
|
19
21
|
struct ApproximateQuantileBindData : public FunctionData {
|
22
|
+
ApproximateQuantileBindData() {
|
23
|
+
}
|
20
24
|
explicit ApproximateQuantileBindData(float quantile_p) : quantiles(1, quantile_p) {
|
21
25
|
}
|
22
26
|
|
@@ -48,6 +52,18 @@ struct ApproximateQuantileBindData : public FunctionData {
|
|
48
52
|
return make_uniq<ApproximateQuantileBindData>(std::move(quantiles));
|
49
53
|
}
|
50
54
|
|
55
|
+
static void FormatSerialize(FormatSerializer &serializer, const optional_ptr<FunctionData> bind_data_p,
|
56
|
+
const AggregateFunction &function) {
|
57
|
+
auto &bind_data = bind_data_p->Cast<ApproximateQuantileBindData>();
|
58
|
+
serializer.WriteProperty(100, "quantiles", bind_data.quantiles);
|
59
|
+
}
|
60
|
+
|
61
|
+
static unique_ptr<FunctionData> FormatDeserialize(FormatDeserializer &deserializer, AggregateFunction &function) {
|
62
|
+
auto result = make_uniq<ApproximateQuantileBindData>();
|
63
|
+
deserializer.ReadProperty(100, "quantiles", result->quantiles);
|
64
|
+
return std::move(result);
|
65
|
+
}
|
66
|
+
|
51
67
|
vector<float> quantiles;
|
52
68
|
};
|
53
69
|
|
@@ -192,6 +208,8 @@ unique_ptr<FunctionData> BindApproxQuantileDecimal(ClientContext &context, Aggre
|
|
192
208
|
function.name = "approx_quantile";
|
193
209
|
function.serialize = ApproximateQuantileBindData::Serialize;
|
194
210
|
function.deserialize = ApproximateQuantileBindData::Deserialize;
|
211
|
+
function.format_serialize = ApproximateQuantileBindData::FormatSerialize;
|
212
|
+
function.format_deserialize = ApproximateQuantileBindData::FormatDeserialize;
|
195
213
|
return bind_data;
|
196
214
|
}
|
197
215
|
|
@@ -200,6 +218,8 @@ AggregateFunction GetApproximateQuantileAggregate(PhysicalType type) {
|
|
200
218
|
fun.bind = BindApproxQuantile;
|
201
219
|
fun.serialize = ApproximateQuantileBindData::Serialize;
|
202
220
|
fun.deserialize = ApproximateQuantileBindData::Deserialize;
|
221
|
+
fun.format_serialize = ApproximateQuantileBindData::FormatSerialize;
|
222
|
+
fun.format_deserialize = ApproximateQuantileBindData::FormatDeserialize;
|
203
223
|
// temporarily push an argument so we can bind the actual quantile
|
204
224
|
fun.arguments.emplace_back(LogicalType::FLOAT);
|
205
225
|
return fun;
|
@@ -255,6 +275,8 @@ AggregateFunction GetTypedApproxQuantileListAggregateFunction(const LogicalType
|
|
255
275
|
auto fun = ApproxQuantileListAggregate<STATE, INPUT_TYPE, list_entry_t, OP>(type, type);
|
256
276
|
fun.serialize = ApproximateQuantileBindData::Serialize;
|
257
277
|
fun.deserialize = ApproximateQuantileBindData::Deserialize;
|
278
|
+
fun.format_serialize = ApproximateQuantileBindData::FormatSerialize;
|
279
|
+
fun.format_deserialize = ApproximateQuantileBindData::FormatDeserialize;
|
258
280
|
return fun;
|
259
281
|
}
|
260
282
|
|
@@ -300,6 +322,8 @@ unique_ptr<FunctionData> BindApproxQuantileDecimalList(ClientContext &context, A
|
|
300
322
|
function.name = "approx_quantile";
|
301
323
|
function.serialize = ApproximateQuantileBindData::Serialize;
|
302
324
|
function.deserialize = ApproximateQuantileBindData::Deserialize;
|
325
|
+
function.format_serialize = ApproximateQuantileBindData::FormatSerialize;
|
326
|
+
function.format_deserialize = ApproximateQuantileBindData::FormatDeserialize;
|
303
327
|
return bind_data;
|
304
328
|
}
|
305
329
|
|
@@ -308,6 +332,8 @@ AggregateFunction GetApproxQuantileListAggregate(const LogicalType &type) {
|
|
308
332
|
fun.bind = BindApproxQuantile;
|
309
333
|
fun.serialize = ApproximateQuantileBindData::Serialize;
|
310
334
|
fun.deserialize = ApproximateQuantileBindData::Deserialize;
|
335
|
+
fun.format_serialize = ApproximateQuantileBindData::FormatSerialize;
|
336
|
+
fun.format_deserialize = ApproximateQuantileBindData::FormatDeserialize;
|
311
337
|
// temporarily push an argument so we can bind the actual quantile
|
312
338
|
auto list_of_float = LogicalType::LIST(LogicalType::FLOAT);
|
313
339
|
fun.arguments.push_back(list_of_float);
|
@@ -31,8 +31,6 @@ struct hash<duckdb::hugeint_t> {
|
|
31
31
|
|
32
32
|
namespace duckdb {
|
33
33
|
|
34
|
-
using FrameBounds = std::pair<idx_t, idx_t>;
|
35
|
-
|
36
34
|
template <class KEY_TYPE>
|
37
35
|
struct ModeState {
|
38
36
|
struct ModeAttr {
|
@@ -225,31 +223,31 @@ struct ModeFunction {
|
|
225
223
|
if (state.nonzero <= tau * state.frequency_map->size()) {
|
226
224
|
state.Reset();
|
227
225
|
// for f ∈ F do
|
228
|
-
for (auto f = frame.
|
226
|
+
for (auto f = frame.start; f < frame.end; ++f) {
|
229
227
|
if (included(f)) {
|
230
228
|
state.ModeAdd(KEY_TYPE(data[f]), f);
|
231
229
|
}
|
232
230
|
}
|
233
231
|
} else {
|
234
232
|
// for f ∈ P \ F do
|
235
|
-
for (auto p = prev.
|
233
|
+
for (auto p = prev.start; p < frame.start; ++p) {
|
236
234
|
if (included(p)) {
|
237
235
|
state.ModeRm(KEY_TYPE(data[p]), p);
|
238
236
|
}
|
239
237
|
}
|
240
|
-
for (auto p = frame.
|
238
|
+
for (auto p = frame.end; p < prev.end; ++p) {
|
241
239
|
if (included(p)) {
|
242
240
|
state.ModeRm(KEY_TYPE(data[p]), p);
|
243
241
|
}
|
244
242
|
}
|
245
243
|
|
246
244
|
// for f ∈ F \ P do
|
247
|
-
for (auto f = frame.
|
245
|
+
for (auto f = frame.start; f < prev.start; ++f) {
|
248
246
|
if (included(f)) {
|
249
247
|
state.ModeAdd(KEY_TYPE(data[f]), f);
|
250
248
|
}
|
251
249
|
}
|
252
|
-
for (auto f = prev.
|
250
|
+
for (auto f = prev.end; f < frame.end; ++f) {
|
253
251
|
if (included(f)) {
|
254
252
|
state.ModeAdd(KEY_TYPE(data[f]), f);
|
255
253
|
}
|
@@ -8,6 +8,8 @@
|
|
8
8
|
#include "duckdb/common/types/timestamp.hpp"
|
9
9
|
#include "duckdb/common/queue.hpp"
|
10
10
|
#include "duckdb/common/field_writer.hpp"
|
11
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
12
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
11
13
|
|
12
14
|
#include <algorithm>
|
13
15
|
#include <stdlib.h>
|
@@ -35,8 +37,6 @@ inline interval_t operator-(const interval_t &lhs, const interval_t &rhs) {
|
|
35
37
|
return Interval::FromMicro(Interval::GetMicro(lhs) - Interval::GetMicro(rhs));
|
36
38
|
}
|
37
39
|
|
38
|
-
using FrameBounds = std::pair<idx_t, idx_t>;
|
39
|
-
|
40
40
|
template <typename SAVE_TYPE>
|
41
41
|
struct QuantileState {
|
42
42
|
using SaveType = SAVE_TYPE;
|
@@ -87,7 +87,7 @@ void ReuseIndexes(idx_t *index, const FrameBounds &frame, const FrameBounds &pre
|
|
87
87
|
idx_t j = 0;
|
88
88
|
|
89
89
|
// Copy overlapping indices
|
90
|
-
for (idx_t p = 0; p < (prev.
|
90
|
+
for (idx_t p = 0; p < (prev.end - prev.start); ++p) {
|
91
91
|
auto idx = index[p];
|
92
92
|
|
93
93
|
// Shift down into any hole
|
@@ -96,7 +96,7 @@ void ReuseIndexes(idx_t *index, const FrameBounds &frame, const FrameBounds &pre
|
|
96
96
|
}
|
97
97
|
|
98
98
|
// Skip overlapping values
|
99
|
-
if (frame.
|
99
|
+
if (frame.start <= idx && idx < frame.end) {
|
100
100
|
++j;
|
101
101
|
}
|
102
102
|
}
|
@@ -104,15 +104,15 @@ void ReuseIndexes(idx_t *index, const FrameBounds &frame, const FrameBounds &pre
|
|
104
104
|
// Insert new indices
|
105
105
|
if (j > 0) {
|
106
106
|
// Overlap: append the new ends
|
107
|
-
for (auto f = frame.
|
107
|
+
for (auto f = frame.start; f < prev.start; ++f, ++j) {
|
108
108
|
index[j] = f;
|
109
109
|
}
|
110
|
-
for (auto f = prev.
|
110
|
+
for (auto f = prev.end; f < frame.end; ++f, ++j) {
|
111
111
|
index[j] = f;
|
112
112
|
}
|
113
113
|
} else {
|
114
114
|
// No overlap: overwrite with new values
|
115
|
-
for (auto f = frame.
|
115
|
+
for (auto f = frame.start; f < frame.end; ++f, ++j) {
|
116
116
|
index[j] = f;
|
117
117
|
}
|
118
118
|
}
|
@@ -122,17 +122,17 @@ static idx_t ReplaceIndex(idx_t *index, const FrameBounds &frame, const FrameBou
|
|
122
122
|
D_ASSERT(index);
|
123
123
|
|
124
124
|
idx_t j = 0;
|
125
|
-
for (idx_t p = 0; p < (prev.
|
125
|
+
for (idx_t p = 0; p < (prev.end - prev.start); ++p) {
|
126
126
|
auto idx = index[p];
|
127
127
|
if (j != p) {
|
128
128
|
break;
|
129
129
|
}
|
130
130
|
|
131
|
-
if (frame.
|
131
|
+
if (frame.start <= idx && idx < frame.end) {
|
132
132
|
++j;
|
133
133
|
}
|
134
134
|
}
|
135
|
-
index[j] = frame.
|
135
|
+
index[j] = frame.end - 1;
|
136
136
|
|
137
137
|
return j;
|
138
138
|
}
|
@@ -417,6 +417,8 @@ inline Value QuantileAbs(const Value &v) {
|
|
417
417
|
}
|
418
418
|
|
419
419
|
struct QuantileBindData : public FunctionData {
|
420
|
+
QuantileBindData() {
|
421
|
+
}
|
420
422
|
|
421
423
|
explicit QuantileBindData(const Value &quantile_p)
|
422
424
|
: quantiles(1, QuantileAbs(quantile_p)), order(1, 0), desc(quantile_p < 0) {
|
@@ -456,6 +458,27 @@ struct QuantileBindData : public FunctionData {
|
|
456
458
|
return desc == other.desc && quantiles == other.quantiles && order == other.order;
|
457
459
|
}
|
458
460
|
|
461
|
+
static void FormatSerialize(FormatSerializer &serializer, const optional_ptr<FunctionData> bind_data_p,
|
462
|
+
const AggregateFunction &function) {
|
463
|
+
auto &bind_data = bind_data_p->Cast<QuantileBindData>();
|
464
|
+
serializer.WriteProperty(100, "quantiles", bind_data.quantiles);
|
465
|
+
serializer.WriteProperty(101, "order", bind_data.order);
|
466
|
+
serializer.WriteProperty(102, "desc", bind_data.desc);
|
467
|
+
}
|
468
|
+
|
469
|
+
static unique_ptr<FunctionData> FormatDeserialize(FormatDeserializer &deserializer, AggregateFunction &function) {
|
470
|
+
auto result = make_uniq<QuantileBindData>();
|
471
|
+
deserializer.ReadProperty(100, "quantiles", result->quantiles);
|
472
|
+
deserializer.ReadProperty(101, "order", result->order);
|
473
|
+
deserializer.ReadProperty(102, "desc", result->desc);
|
474
|
+
return std::move(result);
|
475
|
+
}
|
476
|
+
|
477
|
+
static void FormatSerializeDecimal(FormatSerializer &serializer, const optional_ptr<FunctionData> bind_data_p,
|
478
|
+
const AggregateFunction &function) {
|
479
|
+
throw SerializationException("FIXME: quantile serialize for decimal");
|
480
|
+
}
|
481
|
+
|
459
482
|
vector<Value> quantiles;
|
460
483
|
vector<idx_t> order;
|
461
484
|
bool desc;
|
@@ -535,7 +558,7 @@ struct QuantileScalarOperation : public QuantileOperation {
|
|
535
558
|
|
536
559
|
// Lazily initialise frame state
|
537
560
|
auto prev_pos = state.pos;
|
538
|
-
state.SetPos(frame.
|
561
|
+
state.SetPos(frame.end - frame.start);
|
539
562
|
|
540
563
|
auto index = state.w.data();
|
541
564
|
D_ASSERT(index);
|
@@ -547,11 +570,11 @@ struct QuantileScalarOperation : public QuantileOperation {
|
|
547
570
|
const auto q = bind_data.quantiles[0];
|
548
571
|
|
549
572
|
bool replace = false;
|
550
|
-
if (frame.
|
573
|
+
if (frame.start == prev.start + 1 && frame.end == prev.end + 1) {
|
551
574
|
// Fixed frame size
|
552
575
|
const auto j = ReplaceIndex(index, frame, prev);
|
553
576
|
// We can only replace if the number of NULLs has not changed
|
554
|
-
if (included.AllValid() || included(prev.
|
577
|
+
if (included.AllValid() || included(prev.start) == included(prev.end)) {
|
555
578
|
Interpolator<DISCRETE> interp(q, prev_pos, false);
|
556
579
|
replace = CanReplace(index, data, j, interp.FRN, interp.CRN, included);
|
557
580
|
if (replace) {
|
@@ -695,7 +718,7 @@ struct QuantileListOperation : public QuantileOperation {
|
|
695
718
|
|
696
719
|
// Lazily initialise frame state
|
697
720
|
auto prev_pos = state.pos;
|
698
|
-
state.SetPos(frame.
|
721
|
+
state.SetPos(frame.end - frame.start);
|
699
722
|
|
700
723
|
auto index = state.w.data();
|
701
724
|
|
@@ -706,11 +729,11 @@ struct QuantileListOperation : public QuantileOperation {
|
|
706
729
|
// then Q25 must be recomputed, but Q50 and Q75 are unaffected.
|
707
730
|
// For a single element list, this reduces to the scalar case.
|
708
731
|
std::pair<idx_t, idx_t> replaceable {state.pos, 0};
|
709
|
-
if (frame.
|
732
|
+
if (frame.start == prev.start + 1 && frame.end == prev.end + 1) {
|
710
733
|
// Fixed frame size
|
711
734
|
const auto j = ReplaceIndex(index, frame, prev);
|
712
735
|
// We can only replace if the number of NULLs has not changed
|
713
|
-
if (included.AllValid() || included(prev.
|
736
|
+
if (included.AllValid() || included(prev.start) == included(prev.end)) {
|
714
737
|
for (const auto &q : bind_data.order) {
|
715
738
|
const auto &quantile = bind_data.quantiles[q];
|
716
739
|
Interpolator<DISCRETE> interp(quantile, prev_pos, false);
|
@@ -1037,7 +1060,7 @@ struct MedianAbsoluteDeviationOperation : public QuantileOperation {
|
|
1037
1060
|
|
1038
1061
|
// Lazily initialise frame state
|
1039
1062
|
auto prev_pos = state.pos;
|
1040
|
-
state.SetPos(frame.
|
1063
|
+
state.SetPos(frame.end - frame.start);
|
1041
1064
|
|
1042
1065
|
auto index = state.w.data();
|
1043
1066
|
D_ASSERT(index);
|
@@ -1060,11 +1083,11 @@ struct MedianAbsoluteDeviationOperation : public QuantileOperation {
|
|
1060
1083
|
const float q = 0.5;
|
1061
1084
|
|
1062
1085
|
bool replace = false;
|
1063
|
-
if (frame.
|
1086
|
+
if (frame.start == prev.start + 1 && frame.end == prev.end + 1) {
|
1064
1087
|
// Fixed frame size
|
1065
1088
|
const auto j = ReplaceIndex(index, frame, prev);
|
1066
1089
|
// We can only replace if the number of NULLs has not changed
|
1067
|
-
if (included.AllValid() || included(prev.
|
1090
|
+
if (included.AllValid() || included(prev.start) == included(prev.end)) {
|
1068
1091
|
Interpolator<false> interp(q, prev_pos, false);
|
1069
1092
|
replace = CanReplace(index, data, j, interp.FRN, interp.CRN, included);
|
1070
1093
|
if (replace) {
|
@@ -1189,6 +1212,8 @@ unique_ptr<FunctionData> BindMedianDecimal(ClientContext &context, AggregateFunc
|
|
1189
1212
|
function.name = "median";
|
1190
1213
|
function.serialize = QuantileDecimalSerialize;
|
1191
1214
|
function.deserialize = QuantileDeserialize;
|
1215
|
+
function.format_serialize = QuantileBindData::FormatSerializeDecimal;
|
1216
|
+
function.format_deserialize = QuantileBindData::FormatDeserialize;
|
1192
1217
|
function.order_dependent = AggregateOrderDependent::NOT_ORDER_DEPENDENT;
|
1193
1218
|
return bind_data;
|
1194
1219
|
}
|
@@ -1245,6 +1270,8 @@ unique_ptr<FunctionData> BindDiscreteQuantileDecimal(ClientContext &context, Agg
|
|
1245
1270
|
function.name = "quantile_disc";
|
1246
1271
|
function.serialize = QuantileDecimalSerialize;
|
1247
1272
|
function.deserialize = QuantileDeserialize;
|
1273
|
+
function.format_serialize = QuantileBindData::FormatSerializeDecimal;
|
1274
|
+
function.format_deserialize = QuantileBindData::FormatDeserialize;
|
1248
1275
|
function.order_dependent = AggregateOrderDependent::NOT_ORDER_DEPENDENT;
|
1249
1276
|
return bind_data;
|
1250
1277
|
}
|
@@ -1256,6 +1283,8 @@ unique_ptr<FunctionData> BindDiscreteQuantileDecimalList(ClientContext &context,
|
|
1256
1283
|
function.name = "quantile_disc";
|
1257
1284
|
function.serialize = QuantileDecimalSerialize;
|
1258
1285
|
function.deserialize = QuantileDeserialize;
|
1286
|
+
function.format_serialize = QuantileBindData::FormatSerializeDecimal;
|
1287
|
+
function.format_deserialize = QuantileBindData::FormatDeserialize;
|
1259
1288
|
function.order_dependent = AggregateOrderDependent::NOT_ORDER_DEPENDENT;
|
1260
1289
|
return bind_data;
|
1261
1290
|
}
|
@@ -1267,6 +1296,8 @@ unique_ptr<FunctionData> BindContinuousQuantileDecimal(ClientContext &context, A
|
|
1267
1296
|
function.name = "quantile_cont";
|
1268
1297
|
function.serialize = QuantileDecimalSerialize;
|
1269
1298
|
function.deserialize = QuantileDeserialize;
|
1299
|
+
function.format_serialize = QuantileBindData::FormatSerializeDecimal;
|
1300
|
+
function.format_deserialize = QuantileBindData::FormatDeserialize;
|
1270
1301
|
function.order_dependent = AggregateOrderDependent::NOT_ORDER_DEPENDENT;
|
1271
1302
|
return bind_data;
|
1272
1303
|
}
|
@@ -1278,6 +1309,8 @@ unique_ptr<FunctionData> BindContinuousQuantileDecimalList(ClientContext &contex
|
|
1278
1309
|
function.name = "quantile_cont";
|
1279
1310
|
function.serialize = QuantileDecimalSerialize;
|
1280
1311
|
function.deserialize = QuantileDeserialize;
|
1312
|
+
function.format_serialize = QuantileBindData::FormatSerializeDecimal;
|
1313
|
+
function.format_deserialize = QuantileBindData::FormatDeserialize;
|
1281
1314
|
function.order_dependent = AggregateOrderDependent::NOT_ORDER_DEPENDENT;
|
1282
1315
|
return bind_data;
|
1283
1316
|
}
|
@@ -1298,6 +1331,8 @@ AggregateFunction GetMedianAggregate(const LogicalType &type) {
|
|
1298
1331
|
fun.bind = BindMedian;
|
1299
1332
|
fun.serialize = QuantileSerialize;
|
1300
1333
|
fun.deserialize = QuantileDeserialize;
|
1334
|
+
fun.format_serialize = QuantileBindData::FormatSerialize;
|
1335
|
+
fun.format_deserialize = QuantileBindData::FormatDeserialize;
|
1301
1336
|
return fun;
|
1302
1337
|
}
|
1303
1338
|
|
@@ -1306,6 +1341,8 @@ AggregateFunction GetDiscreteQuantileAggregate(const LogicalType &type) {
|
|
1306
1341
|
fun.bind = BindQuantile;
|
1307
1342
|
fun.serialize = QuantileSerialize;
|
1308
1343
|
fun.deserialize = QuantileDeserialize;
|
1344
|
+
fun.format_serialize = QuantileBindData::FormatSerialize;
|
1345
|
+
fun.format_deserialize = QuantileBindData::FormatDeserialize;
|
1309
1346
|
// temporarily push an argument so we can bind the actual quantile
|
1310
1347
|
fun.arguments.emplace_back(LogicalType::DOUBLE);
|
1311
1348
|
fun.order_dependent = AggregateOrderDependent::NOT_ORDER_DEPENDENT;
|
@@ -1317,6 +1354,8 @@ AggregateFunction GetDiscreteQuantileListAggregate(const LogicalType &type) {
|
|
1317
1354
|
fun.bind = BindQuantile;
|
1318
1355
|
fun.serialize = QuantileSerialize;
|
1319
1356
|
fun.deserialize = QuantileDeserialize;
|
1357
|
+
fun.format_serialize = QuantileBindData::FormatSerialize;
|
1358
|
+
fun.format_deserialize = QuantileBindData::FormatDeserialize;
|
1320
1359
|
// temporarily push an argument so we can bind the actual quantile
|
1321
1360
|
auto list_of_double = LogicalType::LIST(LogicalType::DOUBLE);
|
1322
1361
|
fun.arguments.push_back(list_of_double);
|
@@ -1329,6 +1368,8 @@ AggregateFunction GetContinuousQuantileAggregate(const LogicalType &type) {
|
|
1329
1368
|
fun.bind = BindQuantile;
|
1330
1369
|
fun.serialize = QuantileSerialize;
|
1331
1370
|
fun.deserialize = QuantileDeserialize;
|
1371
|
+
fun.format_serialize = QuantileBindData::FormatSerialize;
|
1372
|
+
fun.format_deserialize = QuantileBindData::FormatDeserialize;
|
1332
1373
|
// temporarily push an argument so we can bind the actual quantile
|
1333
1374
|
fun.arguments.emplace_back(LogicalType::DOUBLE);
|
1334
1375
|
fun.order_dependent = AggregateOrderDependent::NOT_ORDER_DEPENDENT;
|
@@ -1340,6 +1381,8 @@ AggregateFunction GetContinuousQuantileListAggregate(const LogicalType &type) {
|
|
1340
1381
|
fun.bind = BindQuantile;
|
1341
1382
|
fun.serialize = QuantileSerialize;
|
1342
1383
|
fun.deserialize = QuantileDeserialize;
|
1384
|
+
fun.format_serialize = QuantileBindData::FormatSerialize;
|
1385
|
+
fun.format_deserialize = QuantileBindData::FormatDeserialize;
|
1343
1386
|
// temporarily push an argument so we can bind the actual quantile
|
1344
1387
|
auto list_of_double = LogicalType::LIST(LogicalType::DOUBLE);
|
1345
1388
|
fun.arguments.push_back(list_of_double);
|
@@ -1353,6 +1396,8 @@ AggregateFunction GetQuantileDecimalAggregate(const vector<LogicalType> &argumen
|
|
1353
1396
|
fun.bind = bind;
|
1354
1397
|
fun.serialize = QuantileSerialize;
|
1355
1398
|
fun.deserialize = QuantileDeserialize;
|
1399
|
+
fun.format_serialize = QuantileBindData::FormatSerialize;
|
1400
|
+
fun.format_deserialize = QuantileBindData::FormatDeserialize;
|
1356
1401
|
fun.order_dependent = AggregateOrderDependent::NOT_ORDER_DEPENDENT;
|
1357
1402
|
return fun;
|
1358
1403
|
}
|
@@ -4,6 +4,8 @@
|
|
4
4
|
#include "duckdb/planner/expression.hpp"
|
5
5
|
#include "duckdb/common/queue.hpp"
|
6
6
|
#include "duckdb/common/field_writer.hpp"
|
7
|
+
#include "duckdb/common/serializer/format_serializer.hpp"
|
8
|
+
#include "duckdb/common/serializer/format_deserializer.hpp"
|
7
9
|
|
8
10
|
#include <algorithm>
|
9
11
|
#include <stdlib.h>
|
@@ -21,8 +23,10 @@ struct ReservoirQuantileState {
|
|
21
23
|
if (new_len <= len) {
|
22
24
|
return;
|
23
25
|
}
|
26
|
+
T *old_v = v;
|
24
27
|
v = (T *)realloc(v, new_len * sizeof(T));
|
25
28
|
if (!v) {
|
29
|
+
free(old_v);
|
26
30
|
throw InternalException("Memory allocation failure");
|
27
31
|
}
|
28
32
|
len = new_len;
|
@@ -47,6 +51,8 @@ struct ReservoirQuantileState {
|
|
47
51
|
};
|
48
52
|
|
49
53
|
struct ReservoirQuantileBindData : public FunctionData {
|
54
|
+
ReservoirQuantileBindData() {
|
55
|
+
}
|
50
56
|
ReservoirQuantileBindData(double quantile_p, int32_t sample_size_p)
|
51
57
|
: quantiles(1, quantile_p), sample_size(sample_size_p) {
|
52
58
|
}
|
@@ -78,6 +84,20 @@ struct ReservoirQuantileBindData : public FunctionData {
|
|
78
84
|
return make_uniq<ReservoirQuantileBindData>(std::move(quantiles), sample_size);
|
79
85
|
}
|
80
86
|
|
87
|
+
static void FormatSerialize(FormatSerializer &serializer, const optional_ptr<FunctionData> bind_data_p,
|
88
|
+
const AggregateFunction &function) {
|
89
|
+
auto &bind_data = bind_data_p->Cast<ReservoirQuantileBindData>();
|
90
|
+
serializer.WriteProperty(100, "quantiles", bind_data.quantiles);
|
91
|
+
serializer.WriteProperty(101, "sample_size", bind_data.sample_size);
|
92
|
+
}
|
93
|
+
|
94
|
+
static unique_ptr<FunctionData> FormatDeserialize(FormatDeserializer &deserializer, AggregateFunction &function) {
|
95
|
+
auto result = make_uniq<ReservoirQuantileBindData>();
|
96
|
+
deserializer.ReadProperty(100, "quantiles", result->quantiles);
|
97
|
+
deserializer.ReadProperty(101, "sample_size", result->sample_size);
|
98
|
+
return std::move(result);
|
99
|
+
}
|
100
|
+
|
81
101
|
vector<double> quantiles;
|
82
102
|
int32_t sample_size;
|
83
103
|
};
|
@@ -353,6 +373,8 @@ unique_ptr<FunctionData> BindReservoirQuantileDecimal(ClientContext &context, Ag
|
|
353
373
|
function.name = "reservoir_quantile";
|
354
374
|
function.serialize = ReservoirQuantileBindData::Serialize;
|
355
375
|
function.deserialize = ReservoirQuantileBindData::Deserialize;
|
376
|
+
function.format_serialize = ReservoirQuantileBindData::FormatSerialize;
|
377
|
+
function.format_deserialize = ReservoirQuantileBindData::FormatDeserialize;
|
356
378
|
return bind_data;
|
357
379
|
}
|
358
380
|
|
@@ -361,6 +383,8 @@ AggregateFunction GetReservoirQuantileAggregate(PhysicalType type) {
|
|
361
383
|
fun.bind = BindReservoirQuantile;
|
362
384
|
fun.serialize = ReservoirQuantileBindData::Serialize;
|
363
385
|
fun.deserialize = ReservoirQuantileBindData::Deserialize;
|
386
|
+
fun.format_serialize = ReservoirQuantileBindData::FormatSerialize;
|
387
|
+
fun.format_deserialize = ReservoirQuantileBindData::FormatDeserialize;
|
364
388
|
// temporarily push an argument so we can bind the actual quantile
|
365
389
|
fun.arguments.emplace_back(LogicalType::DOUBLE);
|
366
390
|
return fun;
|
@@ -372,6 +396,8 @@ unique_ptr<FunctionData> BindReservoirQuantileDecimalList(ClientContext &context
|
|
372
396
|
auto bind_data = BindReservoirQuantile(context, function, arguments);
|
373
397
|
function.serialize = ReservoirQuantileBindData::Serialize;
|
374
398
|
function.deserialize = ReservoirQuantileBindData::Deserialize;
|
399
|
+
function.format_serialize = ReservoirQuantileBindData::FormatSerialize;
|
400
|
+
function.format_deserialize = ReservoirQuantileBindData::FormatDeserialize;
|
375
401
|
function.name = "reservoir_quantile";
|
376
402
|
return bind_data;
|
377
403
|
}
|
@@ -381,6 +407,8 @@ AggregateFunction GetReservoirQuantileListAggregate(const LogicalType &type) {
|
|
381
407
|
fun.bind = BindReservoirQuantile;
|
382
408
|
fun.serialize = ReservoirQuantileBindData::Serialize;
|
383
409
|
fun.deserialize = ReservoirQuantileBindData::Deserialize;
|
410
|
+
fun.format_serialize = ReservoirQuantileBindData::FormatSerialize;
|
411
|
+
fun.format_deserialize = ReservoirQuantileBindData::FormatDeserialize;
|
384
412
|
// temporarily push an argument so we can bind the actual quantile
|
385
413
|
auto list_of_double = LogicalType::LIST(LogicalType::DOUBLE);
|
386
414
|
fun.arguments.push_back(list_of_double);
|
@@ -409,6 +437,8 @@ static void GetReservoirQuantileDecimalFunction(AggregateFunctionSet &set, const
|
|
409
437
|
BindReservoirQuantileDecimal);
|
410
438
|
fun.serialize = ReservoirQuantileBindData::Serialize;
|
411
439
|
fun.deserialize = ReservoirQuantileBindData::Deserialize;
|
440
|
+
fun.format_serialize = ReservoirQuantileBindData::FormatSerialize;
|
441
|
+
fun.format_deserialize = ReservoirQuantileBindData::FormatDeserialize;
|
412
442
|
set.AddFunction(fun);
|
413
443
|
|
414
444
|
fun.arguments.emplace_back(LogicalType::INTEGER);
|
@@ -142,6 +142,7 @@ static void HistogramFinalizeFunction(Vector &state_vector, AggregateInputData &
|
|
142
142
|
list_struct_data[rid].offset = old_len;
|
143
143
|
old_len += list_struct_data[rid].length;
|
144
144
|
}
|
145
|
+
result.Verify(count);
|
145
146
|
}
|
146
147
|
|
147
148
|
unique_ptr<FunctionData> HistogramBindFunction(ClientContext &context, AggregateFunction &function,
|