duckdb 0.8.1-dev65.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.gyp +8 -8
- package/package.json +3 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +2 -2
- package/src/duckdb/extension/icu/icu-extension.cpp +1 -1
- package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
- package/src/duckdb/extension/icu/icu-strptime.cpp +1 -1
- package/src/duckdb/extension/icu/third_party/icu/i18n/nfsubs.cpp +0 -2
- package/src/duckdb/extension/json/buffered_json_reader.cpp +23 -14
- package/src/duckdb/extension/json/include/buffered_json_reader.hpp +6 -6
- package/src/duckdb/extension/json/include/json_common.hpp +13 -3
- package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
- package/src/duckdb/extension/json/include/json_scan.hpp +5 -2
- package/src/duckdb/extension/json/json_functions/json_contains.cpp +5 -0
- package/src/duckdb/extension/json/json_functions/json_create.cpp +16 -16
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +3 -3
- package/src/duckdb/extension/json/json_functions/json_serialize_sql.cpp +2 -2
- package/src/duckdb/extension/json/json_functions/json_structure.cpp +5 -3
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +12 -12
- package/src/duckdb/extension/json/json_functions/read_json.cpp +2 -1
- package/src/duckdb/extension/json/json_functions.cpp +6 -3
- package/src/duckdb/extension/json/json_scan.cpp +43 -27
- package/src/duckdb/extension/parquet/column_reader.cpp +57 -52
- package/src/duckdb/extension/parquet/column_writer.cpp +57 -45
- package/src/duckdb/extension/parquet/include/cast_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/column_reader.hpp +5 -4
- package/src/duckdb/extension/parquet/include/column_writer.hpp +24 -0
- package/src/duckdb/extension/parquet/include/decode_utils.hpp +6 -0
- package/src/duckdb/extension/parquet/include/list_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/parquet_dbp_decoder.hpp +4 -4
- package/src/duckdb/extension/parquet/include/parquet_rle_bp_decoder.hpp +4 -5
- package/src/duckdb/extension/parquet/include/resizable_buffer.hpp +4 -4
- package/src/duckdb/extension/parquet/include/row_number_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/include/struct_column_reader.hpp +1 -1
- package/src/duckdb/extension/parquet/parquet-extension.cpp +27 -2
- package/src/duckdb/extension/parquet/parquet_metadata.cpp +1 -1
- package/src/duckdb/extension/parquet/parquet_reader.cpp +18 -18
- package/src/duckdb/extension/parquet/parquet_statistics.cpp +23 -26
- package/src/duckdb/extension/parquet/parquet_timestamp.cpp +2 -2
- package/src/duckdb/extension/parquet/parquet_writer.cpp +3 -3
- package/src/duckdb/extension/parquet/zstd_file_system.cpp +3 -3
- package/src/duckdb/src/catalog/catalog.cpp +5 -17
- package/src/duckdb/src/catalog/catalog_entry/duck_table_entry.cpp +7 -1
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +121 -0
- package/src/duckdb/src/catalog/catalog_search_path.cpp +49 -12
- package/src/duckdb/src/catalog/catalog_set.cpp +1 -1
- package/src/duckdb/src/catalog/default/default_types.cpp +9 -84
- package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
- package/src/duckdb/src/common/adbc/adbc.cpp +118 -12
- package/src/duckdb/src/common/adbc/driver_manager.cpp +0 -20
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
- package/src/duckdb/src/common/arrow/arrow_converter.cpp +11 -12
- package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +11 -10
- package/src/duckdb/src/common/checksum.cpp +1 -1
- package/src/duckdb/src/common/compressed_file_system.cpp +6 -6
- package/src/duckdb/src/common/crypto/md5.cpp +9 -9
- package/src/duckdb/src/common/exception.cpp +4 -1
- package/src/duckdb/src/common/exception_format_value.cpp +24 -15
- package/src/duckdb/src/common/field_writer.cpp +1 -1
- package/src/duckdb/src/common/fsst.cpp +11 -6
- package/src/duckdb/src/common/gzip_file_system.cpp +8 -8
- package/src/duckdb/src/common/hive_partitioning.cpp +1 -1
- package/src/duckdb/src/common/local_file_system.cpp +11 -11
- package/src/duckdb/src/common/multi_file_reader.cpp +3 -0
- package/src/duckdb/src/common/operator/cast_operators.cpp +1 -1
- package/src/duckdb/src/common/pipe_file_system.cpp +2 -2
- package/src/duckdb/src/common/radix_partitioning.cpp +2 -2
- package/src/duckdb/src/common/random_engine.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_heap_gather.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_heap_scatter.cpp +5 -5
- package/src/duckdb/src/common/row_operations/row_match.cpp +1 -1
- package/src/duckdb/src/common/row_operations/row_radix_scatter.cpp +2 -2
- package/src/duckdb/src/common/row_operations/row_scatter.cpp +4 -4
- package/src/duckdb/src/common/serializer/binary_deserializer.cpp +1 -1
- package/src/duckdb/src/common/serializer/binary_serializer.cpp +3 -3
- package/src/duckdb/src/common/serializer.cpp +1 -1
- package/src/duckdb/src/common/sort/comparators.cpp +1 -1
- package/src/duckdb/src/common/sort/merge_sorter.cpp +7 -2
- package/src/duckdb/src/common/sort/partition_state.cpp +2 -2
- package/src/duckdb/src/common/types/bit.cpp +5 -5
- package/src/duckdb/src/common/types/blob.cpp +8 -8
- package/src/duckdb/src/common/types/column/column_data_allocator.cpp +4 -4
- package/src/duckdb/src/common/types/column/column_data_collection.cpp +3 -3
- package/src/duckdb/src/common/types/column/column_data_collection_segment.cpp +1 -1
- package/src/duckdb/src/common/types/column/partitioned_column_data.cpp +2 -2
- package/src/duckdb/src/common/types/hash.cpp +2 -2
- package/src/duckdb/src/common/types/hyperloglog.cpp +22 -21
- package/src/duckdb/src/common/types/list_segment.cpp +77 -49
- package/src/duckdb/src/common/types/row/partitioned_tuple_data.cpp +1 -1
- package/src/duckdb/src/common/types/row/row_data_collection_scanner.cpp +5 -4
- package/src/duckdb/src/common/types/row/tuple_data_allocator.cpp +5 -3
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +61 -24
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/time.cpp +2 -8
- package/src/duckdb/src/common/types/timestamp.cpp +37 -1
- package/src/duckdb/src/common/types/value.cpp +3 -2
- package/src/duckdb/src/common/types/vector.cpp +98 -101
- package/src/duckdb/src/common/types/vector_cache.cpp +6 -6
- package/src/duckdb/src/common/types/vector_constants.cpp +2 -1
- package/src/duckdb/src/common/types.cpp +48 -33
- package/src/duckdb/src/common/vector_operations/boolean_operators.cpp +2 -2
- package/src/duckdb/src/common/vector_operations/is_distinct_from.cpp +12 -12
- package/src/duckdb/src/common/vector_operations/vector_hash.cpp +13 -11
- package/src/duckdb/src/common/vector_operations/vector_storage.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/algebraic/avg.cpp +30 -33
- package/src/duckdb/src/core_functions/aggregate/algebraic/covar.cpp +0 -4
- package/src/duckdb/src/core_functions/aggregate/distributive/approx_count.cpp +33 -36
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +53 -66
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +48 -48
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +44 -44
- package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +32 -32
- package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +34 -34
- package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +30 -31
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +91 -103
- package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +17 -17
- package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +25 -27
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +37 -38
- package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +49 -85
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +116 -134
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +63 -100
- package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +24 -26
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +22 -23
- package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +16 -18
- package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +22 -25
- package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +19 -24
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +18 -23
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +14 -18
- package/src/duckdb/src/core_functions/function_list.cpp +1 -0
- package/src/duckdb/src/core_functions/scalar/blob/base64.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/date/date_part.cpp +46 -46
- package/src/duckdb/src/core_functions/scalar/date/make_date.cpp +3 -0
- package/src/duckdb/src/core_functions/scalar/date/strftime.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/generic/current_setting.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/generic/least.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/generic/stats.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/generic/system_functions.cpp +14 -0
- package/src/duckdb/src/core_functions/scalar/list/array_slice.cpp +4 -4
- package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +26 -9
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +7 -9
- package/src/duckdb/src/core_functions/scalar/list/list_sort.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/map/cardinality.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/map/map.cpp +2 -2
- package/src/duckdb/src/core_functions/scalar/map/map_concat.cpp +4 -1
- package/src/duckdb/src/core_functions/scalar/map/map_extract.cpp +5 -9
- package/src/duckdb/src/core_functions/scalar/math/numeric.cpp +6 -6
- package/src/duckdb/src/core_functions/scalar/string/starts_with.cpp +3 -2
- package/src/duckdb/src/core_functions/scalar/string/string_split.cpp +4 -4
- package/src/duckdb/src/core_functions/scalar/string/trim.cpp +1 -1
- package/src/duckdb/src/core_functions/scalar/union/union_extract.cpp +1 -1
- package/src/duckdb/src/execution/adaptive_filter.cpp +1 -1
- package/src/duckdb/src/execution/expression_executor/execute_case.cpp +10 -10
- package/src/duckdb/src/execution/expression_executor/execute_conjunction.cpp +7 -7
- package/src/duckdb/src/execution/expression_executor.cpp +28 -28
- package/src/duckdb/src/execution/index/art/art.cpp +110 -39
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +23 -5
- package/src/duckdb/src/execution/index/art/leaf.cpp +11 -11
- package/src/duckdb/src/execution/index/art/leaf_segment.cpp +10 -0
- package/src/duckdb/src/execution/index/art/node.cpp +48 -35
- package/src/duckdb/src/execution/index/art/node16.cpp +3 -0
- package/src/duckdb/src/execution/index/art/node256.cpp +1 -0
- package/src/duckdb/src/execution/index/art/node4.cpp +3 -0
- package/src/duckdb/src/execution/index/art/node48.cpp +2 -0
- package/src/duckdb/src/execution/index/art/prefix.cpp +2 -0
- package/src/duckdb/src/execution/join_hashtable.cpp +6 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_inner.cpp +4 -4
- package/src/duckdb/src/execution/nested_loop_join/nested_loop_join_mark.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/distinct_aggregate_data.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_perfecthash_aggregate.cpp +1 -1
- package/src/duckdb/src/execution/operator/aggregate/physical_streaming_window.cpp +2 -2
- package/src/duckdb/src/execution/operator/aggregate/physical_ungrouped_aggregate.cpp +4 -4
- package/src/duckdb/src/execution/operator/aggregate/physical_window.cpp +26 -9
- package/src/duckdb/src/execution/operator/filter/physical_filter.cpp +1 -1
- package/src/duckdb/src/execution/operator/helper/physical_reset.cpp +5 -2
- package/src/duckdb/src/execution/operator/helper/physical_set.cpp +5 -1
- package/src/duckdb/src/execution/operator/join/outer_join_marker.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/perfect_hash_join_executor.cpp +1 -1
- package/src/duckdb/src/execution/operator/join/physical_asof_join.cpp +2 -2
- package/src/duckdb/src/execution/operator/join/physical_blockwise_nl_join.cpp +4 -4
- package/src/duckdb/src/execution/operator/join/physical_iejoin.cpp +3 -6
- package/src/duckdb/src/execution/operator/join/physical_index_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_nested_loop_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/join/physical_piecewise_merge_join.cpp +3 -3
- package/src/duckdb/src/execution/operator/order/physical_top_n.cpp +1 -1
- package/src/duckdb/src/execution/operator/persistent/buffered_csv_reader.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/csv_file_handle.cpp +2 -2
- package/src/duckdb/src/execution/operator/persistent/physical_batch_insert.cpp +2 -3
- package/src/duckdb/src/execution/operator/persistent/physical_insert.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_pivot.cpp +2 -2
- package/src/duckdb/src/execution/operator/projection/physical_projection.cpp +1 -1
- package/src/duckdb/src/execution/operator/projection/physical_tableinout_function.cpp +1 -0
- package/src/duckdb/src/execution/operator/projection/physical_unnest.cpp +10 -5
- package/src/duckdb/src/execution/operator/scan/physical_column_data_scan.cpp +2 -1
- package/src/duckdb/src/execution/operator/scan/physical_expression_scan.cpp +1 -1
- package/src/duckdb/src/execution/operator/scan/physical_positional_scan.cpp +2 -2
- package/src/duckdb/src/execution/operator/schema/physical_attach.cpp +0 -1
- package/src/duckdb/src/execution/operator/schema/physical_create_index.cpp +29 -3
- package/src/duckdb/src/execution/operator/schema/physical_create_type.cpp +1 -1
- package/src/duckdb/src/execution/perfect_aggregate_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_comparison_join.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan/plan_create_table.cpp +1 -1
- package/src/duckdb/src/execution/physical_plan_generator.cpp +2 -2
- package/src/duckdb/src/execution/radix_partitioned_hashtable.cpp +1 -1
- package/src/duckdb/src/execution/reservoir_sample.cpp +20 -6
- package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +159 -21
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +68 -75
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +14 -14
- package/src/duckdb/src/function/cast/cast_function_set.cpp +1 -1
- package/src/duckdb/src/function/cast/decimal_cast.cpp +1 -1
- package/src/duckdb/src/function/cast/enum_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/list_casts.cpp +2 -4
- package/src/duckdb/src/function/cast/string_cast.cpp +11 -11
- package/src/duckdb/src/function/cast/union_casts.cpp +2 -2
- package/src/duckdb/src/function/cast/vector_cast_helpers.cpp +3 -2
- package/src/duckdb/src/function/pragma/pragma_queries.cpp +33 -23
- package/src/duckdb/src/function/scalar/generic/constant_or_null.cpp +1 -1
- package/src/duckdb/src/function/scalar/list/list_concat.cpp +2 -2
- package/src/duckdb/src/function/scalar/list/list_extract.cpp +4 -4
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +3 -4
- package/src/duckdb/src/function/scalar/string/concat.cpp +8 -7
- package/src/duckdb/src/function/scalar/string/contains.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/like.cpp +5 -5
- package/src/duckdb/src/function/scalar/string/regexp/regexp_extract_all.cpp +4 -4
- package/src/duckdb/src/function/scalar/string/regexp/regexp_util.cpp +6 -2
- package/src/duckdb/src/function/scalar/string/regexp.cpp +3 -3
- package/src/duckdb/src/function/scalar/string/strip_accents.cpp +1 -1
- package/src/duckdb/src/function/scalar/struct/struct_extract.cpp +1 -1
- package/src/duckdb/src/function/scalar/system/aggregate_export.cpp +27 -25
- package/src/duckdb/src/function/scalar_function.cpp +3 -3
- package/src/duckdb/src/function/table/arrow.cpp +6 -6
- package/src/duckdb/src/function/table/arrow_conversion.cpp +67 -61
- package/src/duckdb/src/function/table/checkpoint.cpp +4 -1
- package/src/duckdb/src/function/table/copy_csv.cpp +11 -7
- package/src/duckdb/src/function/table/glob.cpp +1 -1
- package/src/duckdb/src/function/table/pragma_last_profiling_output.cpp +1 -1
- package/src/duckdb/src/function/table/range.cpp +4 -4
- package/src/duckdb/src/function/table/read_csv.cpp +19 -21
- package/src/duckdb/src/function/table/repeat.cpp +5 -2
- package/src/duckdb/src/function/table/repeat_row.cpp +10 -3
- package/src/duckdb/src/function/table/system/duckdb_functions.cpp +1 -1
- package/src/duckdb/src/function/table/system/pragma_storage_info.cpp +4 -4
- package/src/duckdb/src/function/table/system/test_vector_types.cpp +82 -26
- package/src/duckdb/src/function/table/table_scan.cpp +4 -4
- package/src/duckdb/src/function/table/unnest.cpp +1 -1
- package/src/duckdb/src/function/table/version/pragma_version.cpp +3 -3
- package/src/duckdb/src/include/duckdb/catalog/catalog.hpp +2 -5
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/duck_table_entry.hpp +2 -0
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry/table_catalog_entry.hpp +11 -1
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_search_path.hpp +8 -2
- package/src/duckdb/src/include/duckdb/catalog/default/builtin_types/types.hpp +97 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_appender.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_converter.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_options.hpp +8 -1
- package/src/duckdb/src/include/duckdb/common/arrow/result_arrow_wrapper.hpp +0 -1
- package/src/duckdb/src/include/duckdb/common/bit_utils.hpp +16 -22
- package/src/duckdb/src/include/duckdb/common/crypto/md5.hpp +2 -2
- package/src/duckdb/src/include/duckdb/common/exception.hpp +5 -2
- package/src/duckdb/src/include/duckdb/common/field_writer.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/file_system.hpp +11 -0
- package/src/duckdb/src/include/duckdb/common/fsst.hpp +2 -3
- package/src/duckdb/src/include/duckdb/common/radix.hpp +3 -3
- package/src/duckdb/src/include/duckdb/common/serializer/binary_deserializer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/serializer/binary_serializer.hpp +4 -1
- package/src/duckdb/src/include/duckdb/common/serializer.hpp +4 -4
- package/src/duckdb/src/include/duckdb/common/typedefs.hpp +30 -0
- package/src/duckdb/src/include/duckdb/common/types/column/partitioned_column_data.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/hyperloglog.hpp +6 -2
- package/src/duckdb/src/include/duckdb/common/types/null_value.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/row/partitioned_tuple_data.hpp +12 -0
- package/src/duckdb/src/include/duckdb/common/types/string_type.hpp +10 -10
- package/src/duckdb/src/include/duckdb/common/types/time.hpp +2 -0
- package/src/duckdb/src/include/duckdb/common/types/timestamp.hpp +4 -14
- package/src/duckdb/src/include/duckdb/common/types/value.hpp +1 -1
- package/src/duckdb/src/include/duckdb/common/types/vector.hpp +9 -0
- package/src/duckdb/src/include/duckdb/common/types/vector_buffer.hpp +18 -6
- package/src/duckdb/src/include/duckdb/common/vector_operations/aggregate_executor.hpp +112 -76
- package/src/duckdb/src/include/duckdb/common/vector_operations/binary_executor.hpp +16 -15
- package/src/duckdb/src/include/duckdb/common/vector_operations/generic_executor.hpp +11 -11
- package/src/duckdb/src/include/duckdb/common/vector_operations/ternary_executor.hpp +23 -19
- package/src/duckdb/src/include/duckdb/common/vector_operations/unary_executor.hpp +3 -3
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/corr.hpp +20 -24
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +36 -39
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +57 -53
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +8 -9
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +16 -18
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +7 -8
- package/src/duckdb/src/include/duckdb/core_functions/scalar/generic_functions.hpp +9 -0
- package/src/duckdb/src/include/duckdb/core_functions/scalar/map_functions.hpp +2 -6
- package/src/duckdb/src/include/duckdb/core_functions/scalar/string_functions.hpp +16 -36
- package/src/duckdb/src/include/duckdb/execution/expression_executor_state.hpp +14 -2
- package/src/duckdb/src/include/duckdb/execution/index/art/art.hpp +13 -7
- package/src/duckdb/src/include/duckdb/execution/index/art/fixed_size_allocator.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/index/art/leaf_segment.hpp +2 -0
- package/src/duckdb/src/include/duckdb/execution/index/art/node.hpp +13 -3
- package/src/duckdb/src/include/duckdb/execution/index/art/node48.hpp +1 -0
- package/src/duckdb/src/include/duckdb/execution/operator/helper/physical_result_collector.hpp +3 -0
- package/src/duckdb/src/include/duckdb/execution/operator/persistent/csv_buffer.hpp +1 -1
- package/src/duckdb/src/include/duckdb/execution/physical_operator.hpp +5 -2
- package/src/duckdb/src/include/duckdb/execution/physical_operator_states.hpp +12 -12
- package/src/duckdb/src/include/duckdb/function/aggregate_function.hpp +9 -30
- package/src/duckdb/src/include/duckdb/function/aggregate_state.hpp +95 -0
- package/src/duckdb/src/include/duckdb/function/cast/default_casts.hpp +13 -2
- package/src/duckdb/src/include/duckdb/function/cast/vector_cast_helpers.hpp +4 -4
- package/src/duckdb/src/include/duckdb/function/compression_function.hpp +44 -0
- package/src/duckdb/src/include/duckdb/function/copy_function.hpp +6 -6
- package/src/duckdb/src/include/duckdb/function/function.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/function_serialization.hpp +4 -2
- package/src/duckdb/src/include/duckdb/function/macro_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/scalar/list/contains_or_position.hpp +3 -3
- package/src/duckdb/src/include/duckdb/function/scalar/nested_functions.hpp +1 -1
- package/src/duckdb/src/include/duckdb/function/scalar_function.hpp +4 -3
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +9 -8
- package/src/duckdb/src/include/duckdb/main/attached_database.hpp +4 -1
- package/src/duckdb/src/include/duckdb/main/capi/capi_internal.hpp +3 -1
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/config.hpp +5 -0
- package/src/duckdb/src/include/duckdb/main/database_manager.hpp +1 -0
- package/src/duckdb/src/include/duckdb/main/extension_entries.hpp +142 -136
- package/src/duckdb/src/include/duckdb/main/materialized_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/pending_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/main/query_result.hpp +23 -0
- package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +19 -0
- package/src/duckdb/src/include/duckdb/main/stream_query_result.hpp +3 -0
- package/src/duckdb/src/include/duckdb/optimizer/join_order/cardinality_estimator.hpp +2 -2
- package/src/duckdb/src/include/duckdb/optimizer/unnest_rewriter.hpp +4 -0
- package/src/duckdb/src/include/duckdb/parallel/meta_pipeline.hpp +12 -3
- package/src/duckdb/src/include/duckdb/parser/base_expression.hpp +6 -12
- package/src/duckdb/src/include/duckdb/parser/constraint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/expression/between_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/bound_expression.hpp +1 -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 +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/collate_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/columnref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/comparison_expression.hpp +1 -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 +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/function_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/lambda_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/operator_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/parameter_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression/positional_reference_expression.hpp +1 -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 +1 -1
- package/src/duckdb/src/include/duckdb/parser/expression_map.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/parsed_data/parse_info.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/parsed_expression.hpp +5 -1
- package/src/duckdb/src/include/duckdb/parser/parser.hpp +2 -0
- package/src/duckdb/src/include/duckdb/parser/query_node.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/result_modifier.hpp +36 -5
- package/src/duckdb/src/include/duckdb/parser/sql_statement.hpp +7 -4
- package/src/duckdb/src/include/duckdb/parser/statement/select_statement.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/basetableref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/emptytableref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/parser/tableref/expressionlistref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/joinref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/pivotref.hpp +3 -3
- package/src/duckdb/src/include/duckdb/parser/tableref/subqueryref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref/table_function_ref.hpp +1 -1
- package/src/duckdb/src/include/duckdb/parser/tableref.hpp +4 -3
- package/src/duckdb/src/include/duckdb/parser/transformer.hpp +106 -92
- package/src/duckdb/src/include/duckdb/planner/bind_context.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_constraint.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_query_node.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/bound_result_modifier.hpp +37 -1
- package/src/duckdb/src/include/duckdb/planner/bound_tableref.hpp +2 -2
- package/src/duckdb/src/include/duckdb/planner/expression/bound_aggregate_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_between_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_case_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_cast_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_columnref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_comparison_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_conjunction_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_constant_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_function_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambda_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_lambdaref_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_operator_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_parameter_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_reference_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_subquery_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_unnest_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression/bound_window_expression.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/expression.hpp +5 -7
- package/src/duckdb/src/include/duckdb/planner/expression_binder.hpp +1 -1
- package/src/duckdb/src/include/duckdb/planner/filter/conjunction_filter.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/filter/constant_filter.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/filter/null_filter.hpp +6 -0
- package/src/duckdb/src/include/duckdb/planner/logical_operator.hpp +7 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_copy_to_file.hpp +6 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_execute.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_explain.hpp +5 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_get.hpp +5 -1
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -0
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pragma.hpp +6 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_prepare.hpp +4 -0
- package/src/duckdb/src/include/duckdb/planner/table_binding.hpp +26 -0
- package/src/duckdb/src/include/duckdb/planner/table_filter.hpp +17 -0
- package/src/duckdb/src/include/duckdb/planner/tableref/bound_pivotref.hpp +3 -0
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/algorithm/byte_reader.hpp +4 -0
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_analyze.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/compression/chimp/chimp_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_analyze.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/compression/patas/patas_compress.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/data_table.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/in_memory_block_manager.hpp +13 -13
- package/src/duckdb/src/include/duckdb/storage/index.hpp +6 -4
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/storage_extension.hpp +0 -6
- package/src/duckdb/src/include/duckdb/storage/storage_manager.hpp +12 -0
- package/src/duckdb/src/include/duckdb/storage/string_uncompressed.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/chunk_info.hpp +25 -2
- package/src/duckdb/src/include/duckdb/storage/table/column_checkpoint_state.hpp +12 -0
- package/src/duckdb/src/include/duckdb/storage/table/column_data.hpp +1 -1
- package/src/duckdb/src/include/duckdb/storage/table/list_column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/row_group.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/table/row_group_collection.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/scan_state.hpp +22 -0
- package/src/duckdb/src/include/duckdb/storage/table/standard_column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table/struct_column_data.hpp +2 -1
- package/src/duckdb/src/include/duckdb/storage/table_storage_info.hpp +0 -2
- package/src/duckdb/src/include/duckdb/transaction/duck_transaction_manager.hpp +2 -2
- package/src/duckdb/src/include/duckdb/transaction/transaction.hpp +2 -2
- package/src/duckdb/src/main/attached_database.cpp +8 -0
- package/src/duckdb/src/main/capi/appender-c.cpp +5 -5
- package/src/duckdb/src/main/capi/arrow-c.cpp +13 -13
- package/src/duckdb/src/main/capi/cast/from_decimal-c.cpp +1 -1
- package/src/duckdb/src/main/capi/cast/utils-c.cpp +1 -1
- package/src/duckdb/src/main/capi/config-c.cpp +3 -6
- package/src/duckdb/src/main/capi/data_chunk-c.cpp +17 -17
- package/src/duckdb/src/main/capi/duckdb-c.cpp +4 -4
- package/src/duckdb/src/main/capi/duckdb_value-c.cpp +4 -4
- package/src/duckdb/src/main/capi/logical_types-c.cpp +22 -21
- package/src/duckdb/src/main/capi/pending-c.cpp +6 -6
- package/src/duckdb/src/main/capi/prepared-c.cpp +10 -10
- package/src/duckdb/src/main/capi/replacement_scan-c.cpp +6 -6
- package/src/duckdb/src/main/capi/result-c.cpp +23 -23
- package/src/duckdb/src/main/capi/table_function-c.cpp +1 -1
- package/src/duckdb/src/main/client_context.cpp +7 -6
- package/src/duckdb/src/main/config.cpp +2 -0
- package/src/duckdb/src/main/database.cpp +1 -0
- package/src/duckdb/src/main/database_manager.cpp +22 -1
- package/src/duckdb/src/main/error_manager.cpp +1 -1
- package/src/duckdb/src/main/extension/extension_load.cpp +1 -1
- package/src/duckdb/src/main/query_result.cpp +6 -2
- package/src/duckdb/src/main/relation/create_table_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/create_view_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/delete_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/explain_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/insert_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/update_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/write_csv_relation.cpp +1 -1
- package/src/duckdb/src/main/relation/write_parquet_relation.cpp +1 -1
- package/src/duckdb/src/main/relation.cpp +1 -1
- package/src/duckdb/src/main/settings/settings.cpp +41 -6
- package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
- package/src/duckdb/src/optimizer/filter_combiner.cpp +3 -3
- package/src/duckdb/src/optimizer/join_order/cardinality_estimator.cpp +10 -10
- package/src/duckdb/src/optimizer/matcher/expression_matcher.cpp +1 -1
- package/src/duckdb/src/optimizer/pullup/pullup_projection.cpp +2 -2
- package/src/duckdb/src/optimizer/regex_range_filter.cpp +2 -4
- package/src/duckdb/src/optimizer/rule/distributivity.cpp +2 -2
- package/src/duckdb/src/optimizer/statistics/operator/propagate_filter.cpp +6 -6
- package/src/duckdb/src/optimizer/statistics/operator/propagate_get.cpp +2 -2
- package/src/duckdb/src/optimizer/unnest_rewriter.cpp +27 -16
- package/src/duckdb/src/parallel/executor.cpp +39 -15
- package/src/duckdb/src/parallel/meta_pipeline.cpp +17 -3
- package/src/duckdb/src/parser/base_expression.cpp +2 -5
- package/src/duckdb/src/parser/column_definition.cpp +5 -8
- package/src/duckdb/src/parser/expression/between_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/case_expression.cpp +6 -6
- package/src/duckdb/src/parser/expression/cast_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/collate_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/columnref_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/comparison_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/conjunction_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/constant_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/function_expression.cpp +10 -14
- package/src/duckdb/src/parser/expression/lambda_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/operator_expression.cpp +4 -4
- package/src/duckdb/src/parser/expression/parameter_expression.cpp +2 -2
- package/src/duckdb/src/parser/expression/positional_reference_expression.cpp +3 -3
- package/src/duckdb/src/parser/expression/star_expression.cpp +9 -9
- package/src/duckdb/src/parser/expression/subquery_expression.cpp +5 -5
- package/src/duckdb/src/parser/expression/window_expression.cpp +13 -24
- package/src/duckdb/src/parser/parsed_data/create_info.cpp +0 -3
- package/src/duckdb/src/parser/parsed_expression.cpp +34 -18
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
- package/src/duckdb/src/parser/parser.cpp +98 -38
- package/src/duckdb/src/parser/query_node/select_node.cpp +6 -13
- package/src/duckdb/src/parser/query_node.cpp +7 -6
- package/src/duckdb/src/parser/result_modifier.cpp +25 -18
- package/src/duckdb/src/parser/statement/select_statement.cpp +3 -3
- package/src/duckdb/src/parser/tableref/basetableref.cpp +4 -4
- package/src/duckdb/src/parser/tableref/emptytableref.cpp +1 -1
- package/src/duckdb/src/parser/tableref/expressionlistref.cpp +5 -5
- package/src/duckdb/src/parser/tableref/joinref.cpp +6 -6
- package/src/duckdb/src/parser/tableref/pivotref.cpp +10 -15
- package/src/duckdb/src/parser/tableref/subqueryref.cpp +3 -3
- package/src/duckdb/src/parser/tableref/table_function.cpp +3 -3
- package/src/duckdb/src/parser/tableref.cpp +12 -3
- package/src/duckdb/src/parser/transform/expression/transform_array_access.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_bool_expr.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_boolean_test.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_case.cpp +8 -10
- package/src/duckdb/src/parser/transform/expression/transform_cast.cpp +7 -9
- package/src/duckdb/src/parser/transform/expression/transform_coalesce.cpp +3 -5
- package/src/duckdb/src/parser/transform/expression/transform_columnref.cpp +22 -22
- package/src/duckdb/src/parser/transform/expression/transform_constant.cpp +2 -2
- package/src/duckdb/src/parser/transform/expression/transform_expression.cpp +42 -44
- package/src/duckdb/src/parser/transform/expression/transform_function.cpp +70 -75
- package/src/duckdb/src/parser/transform/expression/transform_grouping_function.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_interval.cpp +7 -7
- package/src/duckdb/src/parser/transform/expression/transform_is_null.cpp +4 -5
- package/src/duckdb/src/parser/transform/expression/transform_lambda.cpp +5 -6
- package/src/duckdb/src/parser/transform/expression/transform_operator.cpp +31 -29
- package/src/duckdb/src/parser/transform/expression/transform_param_ref.cpp +13 -14
- package/src/duckdb/src/parser/transform/expression/transform_positional_reference.cpp +4 -4
- package/src/duckdb/src/parser/transform/expression/transform_subquery.cpp +9 -10
- package/src/duckdb/src/parser/transform/helpers/nodetype_to_string.cpp +0 -2
- package/src/duckdb/src/parser/transform/helpers/transform_cte.cpp +28 -32
- package/src/duckdb/src/parser/transform/helpers/transform_groupby.cpp +18 -18
- package/src/duckdb/src/parser/transform/helpers/transform_sample.cpp +3 -3
- package/src/duckdb/src/parser/transform/helpers/transform_typename.cpp +27 -26
- package/src/duckdb/src/parser/transform/statement/transform_alter_sequence.cpp +11 -14
- package/src/duckdb/src/parser/transform/statement/transform_alter_table.cpp +14 -16
- package/src/duckdb/src/parser/transform/statement/transform_attach.cpp +8 -9
- package/src/duckdb/src/parser/transform/statement/transform_call.cpp +2 -5
- package/src/duckdb/src/parser/transform/statement/transform_checkpoint.cpp +4 -6
- package/src/duckdb/src/parser/transform/statement/transform_copy.cpp +22 -23
- package/src/duckdb/src/parser/transform/statement/transform_create_function.cpp +14 -18
- package/src/duckdb/src/parser/transform/statement/transform_create_index.cpp +13 -15
- package/src/duckdb/src/parser/transform/statement/transform_create_schema.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_sequence.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_table.cpp +26 -28
- package/src/duckdb/src/parser/transform/statement/transform_create_table_as.cpp +8 -10
- package/src/duckdb/src/parser/transform/statement/transform_create_type.cpp +12 -15
- package/src/duckdb/src/parser/transform/statement/transform_create_view.cpp +13 -18
- package/src/duckdb/src/parser/transform/statement/transform_delete.cpp +11 -13
- package/src/duckdb/src/parser/transform/statement/transform_detach.cpp +3 -4
- package/src/duckdb/src/parser/transform/statement/transform_drop.cpp +20 -25
- package/src/duckdb/src/parser/transform/statement/transform_explain.cpp +5 -7
- package/src/duckdb/src/parser/transform/statement/transform_export.cpp +5 -6
- package/src/duckdb/src/parser/transform/statement/transform_import.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/transform_insert.cpp +21 -24
- package/src/duckdb/src/parser/transform/statement/transform_load.cpp +4 -5
- package/src/duckdb/src/parser/transform/statement/transform_pivot_stmt.cpp +7 -7
- package/src/duckdb/src/parser/transform/statement/transform_pragma.cpp +7 -9
- package/src/duckdb/src/parser/transform/statement/transform_prepare.cpp +11 -19
- package/src/duckdb/src/parser/transform/statement/transform_rename.cpp +12 -14
- package/src/duckdb/src/parser/transform/statement/transform_select.cpp +12 -9
- package/src/duckdb/src/parser/transform/statement/transform_select_node.cpp +34 -34
- package/src/duckdb/src/parser/transform/statement/transform_set.cpp +18 -19
- package/src/duckdb/src/parser/transform/statement/transform_show.cpp +5 -7
- package/src/duckdb/src/parser/transform/statement/transform_show_select.cpp +4 -5
- package/src/duckdb/src/parser/transform/statement/transform_transaction.cpp +3 -5
- package/src/duckdb/src/parser/transform/statement/transform_update.cpp +10 -13
- package/src/duckdb/src/parser/transform/statement/transform_upsert.cpp +4 -4
- package/src/duckdb/src/parser/transform/statement/transform_use.cpp +2 -3
- package/src/duckdb/src/parser/transform/statement/transform_vacuum.cpp +6 -10
- package/src/duckdb/src/parser/transform/tableref/transform_base_tableref.cpp +18 -18
- package/src/duckdb/src/parser/transform/tableref/transform_from.cpp +5 -5
- package/src/duckdb/src/parser/transform/tableref/transform_join.cpp +11 -11
- package/src/duckdb/src/parser/transform/tableref/transform_pivot.cpp +30 -27
- package/src/duckdb/src/parser/transform/tableref/transform_subquery.cpp +5 -5
- package/src/duckdb/src/parser/transform/tableref/transform_table_function.cpp +13 -12
- package/src/duckdb/src/parser/transform/tableref/transform_tableref.cpp +8 -8
- package/src/duckdb/src/parser/transformer.cpp +45 -47
- package/src/duckdb/src/planner/bind_context.cpp +9 -10
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -3
- package/src/duckdb/src/planner/binder/expression/bind_lambda.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_positional_reference_expression.cpp +8 -3
- package/src/duckdb/src/planner/binder/expression/bind_star_expression.cpp +1 -1
- package/src/duckdb/src/planner/binder/expression/bind_subquery_expression.cpp +6 -3
- package/src/duckdb/src/planner/binder/query_node/bind_select_node.cpp +39 -23
- package/src/duckdb/src/planner/binder/query_node/plan_query_node.cpp +4 -4
- package/src/duckdb/src/planner/binder/statement/bind_create.cpp +1 -28
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
- package/src/duckdb/src/planner/binder/statement/bind_drop.cpp +0 -25
- package/src/duckdb/src/planner/binder/statement/bind_insert.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +2 -114
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +7 -2
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +7 -2
- package/src/duckdb/src/planner/binder.cpp +1 -1
- package/src/duckdb/src/planner/bound_result_modifier.cpp +30 -11
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +11 -10
- package/src/duckdb/src/planner/expression/bound_between_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_case_expression.cpp +5 -5
- package/src/duckdb/src/planner/expression/bound_cast_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_columnref_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_comparison_expression.cpp +4 -4
- package/src/duckdb/src/planner/expression/bound_conjunction_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_constant_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_default_expression.cpp +7 -1
- package/src/duckdb/src/planner/expression/bound_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_function_expression.cpp +3 -4
- package/src/duckdb/src/planner/expression/bound_lambda_expression.cpp +4 -5
- package/src/duckdb/src/planner/expression/bound_lambdaref_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_operator_expression.cpp +3 -4
- package/src/duckdb/src/planner/expression/bound_parameter_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_reference_expression.cpp +2 -2
- package/src/duckdb/src/planner/expression/bound_subquery_expression.cpp +1 -1
- package/src/duckdb/src/planner/expression/bound_unnest_expression.cpp +3 -3
- package/src/duckdb/src/planner/expression/bound_window_expression.cpp +8 -21
- package/src/duckdb/src/planner/expression.cpp +18 -0
- package/src/duckdb/src/planner/expression_binder/base_select_binder.cpp +2 -2
- package/src/duckdb/src/planner/expression_binder.cpp +3 -2
- package/src/duckdb/src/planner/expression_iterator.cpp +2 -2
- package/src/duckdb/src/planner/filter/conjunction_filter.cpp +2 -2
- package/src/duckdb/src/planner/filter/constant_filter.cpp +1 -1
- package/src/duckdb/src/planner/logical_operator.cpp +3 -4
- package/src/duckdb/src/planner/logical_operator_visitor.cpp +1 -1
- package/src/duckdb/src/planner/operator/logical_distinct.cpp +5 -4
- package/src/duckdb/src/planner/operator/logical_pivot.cpp +14 -2
- package/src/duckdb/src/planner/planner.cpp +5 -15
- package/src/duckdb/src/planner/table_filter.cpp +1 -1
- package/src/duckdb/src/storage/arena_allocator.cpp +2 -2
- package/src/duckdb/src/storage/buffer/block_handle.cpp +1 -1
- package/src/duckdb/src/storage/checkpoint/write_overflow_strings_to_disk.cpp +2 -2
- package/src/duckdb/src/storage/checkpoint_manager.cpp +3 -3
- package/src/duckdb/src/storage/compression/bitpacking.cpp +8 -8
- package/src/duckdb/src/storage/compression/dictionary_compression.cpp +36 -36
- package/src/duckdb/src/storage/compression/fixed_size_uncompressed.cpp +11 -11
- package/src/duckdb/src/storage/compression/fsst.cpp +34 -34
- package/src/duckdb/src/storage/compression/rle.cpp +8 -8
- package/src/duckdb/src/storage/compression/string_uncompressed.cpp +13 -13
- package/src/duckdb/src/storage/compression/validity_uncompressed.cpp +11 -11
- package/src/duckdb/src/storage/data_table.cpp +12 -10
- package/src/duckdb/src/storage/index.cpp +13 -0
- package/src/duckdb/src/storage/single_file_block_manager.cpp +3 -3
- package/src/duckdb/src/storage/standard_buffer_manager.cpp +3 -3
- package/src/duckdb/src/storage/statistics/list_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/numeric_stats.cpp +1 -1
- package/src/duckdb/src/storage/statistics/string_stats.cpp +15 -14
- package/src/duckdb/src/storage/storage_manager.cpp +6 -0
- package/src/duckdb/src/storage/table/chunk_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_data.cpp +7 -3
- package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
- package/src/duckdb/src/storage/table/list_column_data.cpp +8 -7
- package/src/duckdb/src/storage/table/row_group.cpp +8 -7
- package/src/duckdb/src/storage/table/row_group_collection.cpp +6 -3
- package/src/duckdb/src/storage/table/standard_column_data.cpp +5 -4
- package/src/duckdb/src/storage/table/struct_column_data.cpp +4 -3
- package/src/duckdb/src/storage/table/update_segment.cpp +12 -12
- package/src/duckdb/src/storage/wal_replay.cpp +5 -6
- package/src/duckdb/src/transaction/cleanup_state.cpp +3 -3
- package/src/duckdb/src/transaction/commit_state.cpp +8 -8
- package/src/duckdb/src/transaction/duck_transaction.cpp +9 -7
- package/src/duckdb/src/transaction/duck_transaction_manager.cpp +16 -16
- package/src/duckdb/src/transaction/rollback_state.cpp +3 -3
- package/src/duckdb/src/verification/prepared_statement_verifier.cpp +1 -1
- package/src/duckdb/src/verification/statement_verifier.cpp +3 -4
- package/src/duckdb/third_party/hyperloglog/hyperloglog.hpp +2 -2
- package/src/duckdb/third_party/libpg_query/include/nodes/nodes.hpp +0 -1
- package/src/duckdb/third_party/libpg_query/include/nodes/parsenodes.hpp +0 -14
- package/src/duckdb/third_party/libpg_query/src_backend_parser_gram.cpp +12828 -12956
- package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
- package/src/duckdb/third_party/zstd/compress/zstd_compress.cpp +3 -0
- package/src/duckdb/third_party/zstd/include/zstd/compress/zstd_cwksp.h +4 -0
- package/src/duckdb/ub_extension_icu_third_party_icu_i18n.cpp +5 -5
- package/src/duckdb/ub_src_parser_transform_statement.cpp +0 -2
- package/test/extension.test.ts +11 -0
- package/src/duckdb/src/include/duckdb/parser/parsed_data/create_database_info.hpp +0 -46
- package/src/duckdb/src/parser/transform/statement/transform_create_database.cpp +0 -28
@@ -427,6 +427,7 @@ void Prefix::Vacuum(ART &art) {
|
|
427
427
|
auto &allocator = Node::GetAllocator(art, NType::PREFIX_SEGMENT);
|
428
428
|
if (allocator.NeedsVacuum(data.ptr)) {
|
429
429
|
data.ptr.SetPtr(allocator.VacuumPointer(data.ptr));
|
430
|
+
data.ptr.type = (uint8_t)NType::PREFIX_SEGMENT;
|
430
431
|
}
|
431
432
|
|
432
433
|
auto ptr = data.ptr;
|
@@ -435,6 +436,7 @@ void Prefix::Vacuum(ART &art) {
|
|
435
436
|
ptr = segment.next;
|
436
437
|
if (ptr.IsSet() && allocator.NeedsVacuum(ptr)) {
|
437
438
|
segment.next.SetPtr(allocator.VacuumPointer(ptr));
|
439
|
+
segment.next.type = (uint8_t)NType::PREFIX_SEGMENT;
|
438
440
|
ptr = segment.next;
|
439
441
|
}
|
440
442
|
}
|
@@ -102,9 +102,9 @@ void JoinHashTable::ApplyBitmask(Vector &hashes, const SelectionVector &sel, idx
|
|
102
102
|
UnifiedVectorFormat hdata;
|
103
103
|
hashes.ToUnifiedFormat(count, hdata);
|
104
104
|
|
105
|
-
auto hash_data = (
|
105
|
+
auto hash_data = UnifiedVectorFormat::GetData<hash_t>(hdata);
|
106
106
|
auto result_data = FlatVector::GetData<data_ptr_t *>(pointers);
|
107
|
-
auto main_ht =
|
107
|
+
auto main_ht = reinterpret_cast<data_ptr_t *>(hash_map.get());
|
108
108
|
for (idx_t i = 0; i < count; i++) {
|
109
109
|
auto rindex = sel.get_index(i);
|
110
110
|
auto hindex = hdata.sel->get_index(rindex);
|
@@ -269,7 +269,7 @@ void JoinHashTable::InsertHashes(Vector &hashes, idx_t count, data_ptr_t key_loc
|
|
269
269
|
hashes.Flatten(count);
|
270
270
|
D_ASSERT(hashes.GetVectorType() == VectorType::FLAT_VECTOR);
|
271
271
|
|
272
|
-
auto pointers =
|
272
|
+
auto pointers = reinterpret_cast<atomic<data_ptr_t> *>(hash_map.get());
|
273
273
|
auto indices = FlatVector::GetData<hash_t>(hashes);
|
274
274
|
|
275
275
|
if (parallel) {
|
@@ -300,7 +300,7 @@ void JoinHashTable::InitializePointerTable() {
|
|
300
300
|
D_ASSERT(hash_map.GetSize() == capacity * sizeof(data_ptr_t));
|
301
301
|
|
302
302
|
// initialize HT with all-zero entries
|
303
|
-
std::fill_n(
|
303
|
+
std::fill_n(reinterpret_cast<data_ptr_t *>(hash_map.get()), capacity, nullptr);
|
304
304
|
|
305
305
|
bitmask = capacity - 1;
|
306
306
|
}
|
@@ -627,6 +627,8 @@ void ScanStructure::NextMarkJoin(DataChunk &keys, DataChunk &input, DataChunk &r
|
|
627
627
|
ConstructMarkJoinResult(keys, input, result);
|
628
628
|
} else {
|
629
629
|
auto &info = ht.correlated_mark_join_info;
|
630
|
+
lock_guard<mutex> mj_lock(info.mj_lock);
|
631
|
+
|
630
632
|
// there are correlated columns
|
631
633
|
// first we fetch the counts from the aggregate hashtable corresponding to these entries
|
632
634
|
D_ASSERT(keys.ColumnCount() == info.group_chunk.ColumnCount() + 1);
|
@@ -24,8 +24,8 @@ struct InitialNestedLoopJoin {
|
|
24
24
|
left.ToUnifiedFormat(left_size, left_data);
|
25
25
|
right.ToUnifiedFormat(right_size, right_data);
|
26
26
|
|
27
|
-
auto ldata = (
|
28
|
-
auto rdata = (
|
27
|
+
auto ldata = UnifiedVectorFormat::GetData<T>(left_data);
|
28
|
+
auto rdata = UnifiedVectorFormat::GetData<T>(right_data);
|
29
29
|
idx_t result_count = 0;
|
30
30
|
for (; rpos < right_size; rpos++) {
|
31
31
|
idx_t right_position = right_data.sel->get_index(rpos);
|
@@ -62,8 +62,8 @@ struct RefineNestedLoopJoin {
|
|
62
62
|
// refine lvector and rvector based on matches of subsequent conditions (in case there are multiple conditions
|
63
63
|
// in the join)
|
64
64
|
D_ASSERT(current_match_count > 0);
|
65
|
-
auto ldata = (
|
66
|
-
auto rdata = (
|
65
|
+
auto ldata = UnifiedVectorFormat::GetData<T>(left_data);
|
66
|
+
auto rdata = UnifiedVectorFormat::GetData<T>(right_data);
|
67
67
|
idx_t result_count = 0;
|
68
68
|
for (idx_t i = 0; i < current_match_count; i++) {
|
69
69
|
auto lidx = lvector.get_index(i);
|
@@ -10,8 +10,8 @@ static void TemplatedMarkJoin(Vector &left, Vector &right, idx_t lcount, idx_t r
|
|
10
10
|
left.ToUnifiedFormat(lcount, left_data);
|
11
11
|
right.ToUnifiedFormat(rcount, right_data);
|
12
12
|
|
13
|
-
auto ldata = (
|
14
|
-
auto rdata = (
|
13
|
+
auto ldata = UnifiedVectorFormat::GetData<T>(left_data);
|
14
|
+
auto rdata = UnifiedVectorFormat::GetData<T>(right_data);
|
15
15
|
for (idx_t i = 0; i < lcount; i++) {
|
16
16
|
if (found_match[i]) {
|
17
17
|
continue;
|
@@ -124,7 +124,7 @@ struct FindMatchingAggregate {
|
|
124
124
|
if (other.children.size() != aggr.children.size()) {
|
125
125
|
return false;
|
126
126
|
}
|
127
|
-
if (!Expression::Equals(aggr.filter
|
127
|
+
if (!Expression::Equals(aggr.filter, other.filter)) {
|
128
128
|
return false;
|
129
129
|
}
|
130
130
|
for (idx_t i = 0; i < aggr.children.size(); i++) {
|
@@ -186,7 +186,7 @@ unique_ptr<GlobalSourceState> PhysicalPerfectHashAggregate::GetGlobalSourceState
|
|
186
186
|
|
187
187
|
SourceResultType PhysicalPerfectHashAggregate::GetData(ExecutionContext &context, DataChunk &chunk,
|
188
188
|
OperatorSourceInput &input) const {
|
189
|
-
auto &state =
|
189
|
+
auto &state = input.global_state.Cast<PerfectHashAggregateState>();
|
190
190
|
auto &gstate = sink_state->Cast<PerfectHashAggregateGlobalState>();
|
191
191
|
|
192
192
|
gstate.ht->Scan(state.ht_scan_position, chunk);
|
@@ -26,7 +26,7 @@ class StreamingWindowState : public OperatorState {
|
|
26
26
|
public:
|
27
27
|
using StateBuffer = vector<data_t>;
|
28
28
|
|
29
|
-
StreamingWindowState() : initialized(false), statev(LogicalType::POINTER, (
|
29
|
+
StreamingWindowState() : initialized(false), statev(LogicalType::POINTER, data_ptr_cast(&state_ptr)) {
|
30
30
|
}
|
31
31
|
|
32
32
|
~StreamingWindowState() override {
|
@@ -109,7 +109,7 @@ unique_ptr<OperatorState> PhysicalStreamingWindow::GetOperatorState(ExecutionCon
|
|
109
109
|
OperatorResultType PhysicalStreamingWindow::Execute(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
|
110
110
|
GlobalOperatorState &gstate_p, OperatorState &state_p) const {
|
111
111
|
auto &gstate = gstate_p.Cast<StreamingWindowGlobalState>();
|
112
|
-
auto &state = (
|
112
|
+
auto &state = state_p.Cast<StreamingWindowState>();
|
113
113
|
if (!state.initialized) {
|
114
114
|
state.Initialize(context.client, input, select_list);
|
115
115
|
}
|
@@ -55,7 +55,7 @@ struct AggregateState {
|
|
55
55
|
if (!destructors[i]) {
|
56
56
|
continue;
|
57
57
|
}
|
58
|
-
Vector state_vector(Value::POINTER((
|
58
|
+
Vector state_vector(Value::POINTER(CastPointerToValue(aggregates[i].get())));
|
59
59
|
state_vector.SetVectorType(VectorType::FLAT_VECTOR);
|
60
60
|
|
61
61
|
AggregateInputData aggr_input_data(bind_data[i], Allocator::DefaultAllocator());
|
@@ -332,8 +332,8 @@ void PhysicalUngroupedAggregate::Combine(ExecutionContext &context, GlobalSinkSt
|
|
332
332
|
continue;
|
333
333
|
}
|
334
334
|
|
335
|
-
Vector source_state(Value::POINTER((
|
336
|
-
Vector dest_state(Value::POINTER((
|
335
|
+
Vector source_state(Value::POINTER(CastPointerToValue(source.state.aggregates[aggr_idx].get())));
|
336
|
+
Vector dest_state(Value::POINTER(CastPointerToValue(gstate.state.aggregates[aggr_idx].get())));
|
337
337
|
|
338
338
|
AggregateInputData aggr_input_data(aggregate.bind_info.get(), Allocator::DefaultAllocator());
|
339
339
|
aggregate.function.combine(source_state, dest_state, aggr_input_data, 1);
|
@@ -565,7 +565,7 @@ SourceResultType PhysicalUngroupedAggregate::GetData(ExecutionContext &context,
|
|
565
565
|
for (idx_t aggr_idx = 0; aggr_idx < aggregates.size(); aggr_idx++) {
|
566
566
|
auto &aggregate = aggregates[aggr_idx]->Cast<BoundAggregateExpression>();
|
567
567
|
|
568
|
-
Vector state_vector(Value::POINTER((
|
568
|
+
Vector state_vector(Value::POINTER(CastPointerToValue(gstate.state.aggregates[aggr_idx].get())));
|
569
569
|
AggregateInputData aggr_input_data(aggregate.bind_info.get(), Allocator::DefaultAllocator());
|
570
570
|
aggregate.function.finalize(state_vector, aggr_input_data, chunk.data[aggr_idx], 1, 0);
|
571
571
|
}
|
@@ -1,7 +1,9 @@
|
|
1
1
|
#include "duckdb/execution/operator/aggregate/physical_window.hpp"
|
2
2
|
|
3
|
+
#include "duckdb/common/operator/add.hpp"
|
3
4
|
#include "duckdb/common/operator/cast_operators.hpp"
|
4
5
|
#include "duckdb/common/operator/comparison_operators.hpp"
|
6
|
+
#include "duckdb/common/operator/subtract.hpp"
|
5
7
|
#include "duckdb/common/optional_ptr.hpp"
|
6
8
|
#include "duckdb/common/radix_partitioning.hpp"
|
7
9
|
#include "duckdb/common/row_operations/row_operations.hpp"
|
@@ -224,12 +226,14 @@ struct WindowInputColumn {
|
|
224
226
|
}
|
225
227
|
|
226
228
|
void Append(DataChunk &input_chunk) {
|
227
|
-
if (input_expr.expr
|
228
|
-
|
229
|
-
auto &source = input_expr.chunk.data[0];
|
230
|
-
const auto source_count = input_expr.chunk.size();
|
229
|
+
if (input_expr.expr) {
|
230
|
+
const auto source_count = input_chunk.size();
|
231
231
|
D_ASSERT(count + source_count <= capacity);
|
232
|
-
|
232
|
+
if (!input_expr.scalar || !count) {
|
233
|
+
input_expr.Execute(input_chunk);
|
234
|
+
auto &source = input_expr.chunk.data[0];
|
235
|
+
VectorOperations::Copy(source, *target, source_count, 0, count);
|
236
|
+
}
|
233
237
|
count += source_count;
|
234
238
|
}
|
235
239
|
}
|
@@ -527,11 +531,17 @@ void WindowBoundariesState::Update(const idx_t row_idx, WindowInputColumn &range
|
|
527
531
|
bounds.window_start = bounds.peer_start;
|
528
532
|
break;
|
529
533
|
case WindowBoundary::EXPR_PRECEDING_ROWS: {
|
530
|
-
|
534
|
+
if (!TrySubtractOperator::Operation(int64_t(row_idx), boundary_start.GetCell<int64_t>(expr_idx),
|
535
|
+
bounds.window_start)) {
|
536
|
+
throw OutOfRangeException("Overflow computing ROWS PRECEDING start");
|
537
|
+
}
|
531
538
|
break;
|
532
539
|
}
|
533
540
|
case WindowBoundary::EXPR_FOLLOWING_ROWS: {
|
534
|
-
|
541
|
+
if (!TryAddOperator::Operation(int64_t(row_idx), boundary_start.GetCell<int64_t>(expr_idx),
|
542
|
+
bounds.window_start)) {
|
543
|
+
throw OutOfRangeException("Overflow computing ROWS FOLLOWING start");
|
544
|
+
}
|
535
545
|
break;
|
536
546
|
}
|
537
547
|
case WindowBoundary::EXPR_PRECEDING_RANGE: {
|
@@ -567,10 +577,16 @@ void WindowBoundariesState::Update(const idx_t row_idx, WindowInputColumn &range
|
|
567
577
|
bounds.window_end = bounds.partition_end;
|
568
578
|
break;
|
569
579
|
case WindowBoundary::EXPR_PRECEDING_ROWS:
|
570
|
-
|
580
|
+
if (!TrySubtractOperator::Operation(int64_t(row_idx + 1), boundary_end.GetCell<int64_t>(expr_idx),
|
581
|
+
bounds.window_end)) {
|
582
|
+
throw OutOfRangeException("Overflow computing ROWS PRECEDING end");
|
583
|
+
}
|
571
584
|
break;
|
572
585
|
case WindowBoundary::EXPR_FOLLOWING_ROWS:
|
573
|
-
|
586
|
+
if (!TryAddOperator::Operation(int64_t(row_idx + 1), boundary_end.GetCell<int64_t>(expr_idx),
|
587
|
+
bounds.window_end)) {
|
588
|
+
throw OutOfRangeException("Overflow computing ROWS FOLLOWING end");
|
589
|
+
}
|
574
590
|
break;
|
575
591
|
case WindowBoundary::EXPR_PRECEDING_RANGE: {
|
576
592
|
if (boundary_end.CellIsNull(expr_idx)) {
|
@@ -1254,6 +1270,7 @@ void WindowLocalSourceState::GeneratePartition(WindowGlobalSinkState &gstate, co
|
|
1254
1270
|
// Overwrite the collections with the sorted data
|
1255
1271
|
hash_group = std::move(gsink.hash_groups[hash_bin]);
|
1256
1272
|
hash_group->ComputeMasks(partition_mask, order_mask);
|
1273
|
+
external = hash_group->global_sort->external;
|
1257
1274
|
MaterializeSortedData();
|
1258
1275
|
} else {
|
1259
1276
|
return;
|
@@ -41,7 +41,7 @@ unique_ptr<OperatorState> PhysicalFilter::GetOperatorState(ExecutionContext &con
|
|
41
41
|
|
42
42
|
OperatorResultType PhysicalFilter::ExecuteInternal(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
|
43
43
|
GlobalOperatorState &gstate, OperatorState &state_p) const {
|
44
|
-
auto &state = (
|
44
|
+
auto &state = state_p.Cast<FilterState>();
|
45
45
|
idx_t result_count = state.executor.SelectExpression(input, state.sel);
|
46
46
|
if (result_count == input.size()) {
|
47
47
|
// nothing was filtered: skip adding any selection vectors
|
@@ -20,10 +20,14 @@ void PhysicalReset::ResetExtensionVariable(ExecutionContext &context, DBConfig &
|
|
20
20
|
}
|
21
21
|
|
22
22
|
SourceResultType PhysicalReset::GetData(ExecutionContext &context, DataChunk &chunk, OperatorSourceInput &input) const {
|
23
|
+
auto &config = DBConfig::GetConfig(context.client);
|
24
|
+
if (config.options.lock_configuration) {
|
25
|
+
throw InvalidInputException("Cannot reset configuration option \"%s\" - the configuration has been locked",
|
26
|
+
name);
|
27
|
+
}
|
23
28
|
auto option = DBConfig::GetOptionByName(name);
|
24
29
|
if (!option) {
|
25
30
|
// check if this is an extra extension variable
|
26
|
-
auto &config = DBConfig::GetConfig(context.client);
|
27
31
|
auto entry = config.extension_parameters.find(name);
|
28
32
|
if (entry == config.extension_parameters.end()) {
|
29
33
|
throw Catalog::UnrecognizedConfigurationError(context.client, name);
|
@@ -49,7 +53,6 @@ SourceResultType PhysicalReset::GetData(ExecutionContext &context, DataChunk &ch
|
|
49
53
|
throw CatalogException("option \"%s\" cannot be reset globally", name);
|
50
54
|
}
|
51
55
|
auto &db = DatabaseInstance::GetDatabase(context.client);
|
52
|
-
auto &config = DBConfig::GetConfig(context.client);
|
53
56
|
config.ResetOption(&db, *option);
|
54
57
|
break;
|
55
58
|
}
|
@@ -23,10 +23,14 @@ void PhysicalSet::SetExtensionVariable(ClientContext &context, ExtensionOption &
|
|
23
23
|
}
|
24
24
|
|
25
25
|
SourceResultType PhysicalSet::GetData(ExecutionContext &context, DataChunk &chunk, OperatorSourceInput &input) const {
|
26
|
+
auto &config = DBConfig::GetConfig(context.client);
|
27
|
+
if (config.options.lock_configuration) {
|
28
|
+
throw InvalidInputException("Cannot change configuration option \"%s\" - the configuration has been locked",
|
29
|
+
name);
|
30
|
+
}
|
26
31
|
auto option = DBConfig::GetOptionByName(name);
|
27
32
|
if (!option) {
|
28
33
|
// check if this is an extra extension variable
|
29
|
-
auto &config = DBConfig::GetConfig(context.client);
|
30
34
|
auto entry = config.extension_parameters.find(name);
|
31
35
|
if (entry == config.extension_parameters.end()) {
|
32
36
|
throw Catalog::UnrecognizedConfigurationError(context.client, name);
|
@@ -63,7 +63,7 @@ void OuterJoinMarker::ConstructLeftJoinResult(DataChunk &left, DataChunk &result
|
|
63
63
|
}
|
64
64
|
|
65
65
|
idx_t OuterJoinMarker::MaxThreads() const {
|
66
|
-
return count / (STANDARD_VECTOR_SIZE *
|
66
|
+
return count / (STANDARD_VECTOR_SIZE * 10ULL);
|
67
67
|
}
|
68
68
|
|
69
69
|
void OuterJoinMarker::InitializeScan(ColumnDataCollection &data, OuterJoinGlobalScanState &gstate) {
|
@@ -168,7 +168,7 @@ unique_ptr<OperatorState> PerfectHashJoinExecutor::GetOperatorState(ExecutionCon
|
|
168
168
|
|
169
169
|
OperatorResultType PerfectHashJoinExecutor::ProbePerfectHashTable(ExecutionContext &context, DataChunk &input,
|
170
170
|
DataChunk &result, OperatorState &state_p) {
|
171
|
-
auto &state = (
|
171
|
+
auto &state = state_p.Cast<PerfectHashJoinState>();
|
172
172
|
// keeps track of how many probe keys have a match
|
173
173
|
idx_t probe_sel_count = 0;
|
174
174
|
|
@@ -305,7 +305,7 @@ void AsOfLocalState::ResolveJoinKeys(DataChunk &input) {
|
|
305
305
|
|
306
306
|
DataChunk payload_chunk;
|
307
307
|
payload_chunk.InitializeEmpty({LogicalType::UINTEGER});
|
308
|
-
FlatVector::SetData(payload_chunk.data[0], (
|
308
|
+
FlatVector::SetData(payload_chunk.data[0], data_ptr_cast(lhs_sel.data()));
|
309
309
|
payload_chunk.SetCardinality(lhs_valid);
|
310
310
|
local_sort.SinkChunk(lhs_keys, payload_chunk);
|
311
311
|
|
@@ -338,7 +338,7 @@ void AsOfLocalState::ResolveJoin(DataChunk &input, bool *found_match, std::pair<
|
|
338
338
|
// But they may be constant, so unify.
|
339
339
|
UnifiedVectorFormat bin_unified;
|
340
340
|
bin_vector.ToUnifiedFormat(lhs_valid, bin_unified);
|
341
|
-
const auto bins = (
|
341
|
+
const auto bins = UnifiedVectorFormat::GetData<hash_t>(bin_unified);
|
342
342
|
|
343
343
|
hash_t prev_bin = global_partition.bin_groups.size();
|
344
344
|
optional_ptr<PartitionGlobalHashGroup> hash_group;
|
@@ -111,7 +111,7 @@ OperatorResultType PhysicalBlockwiseNLJoin::ExecuteInternal(ExecutionContext &co
|
|
111
111
|
DataChunk &chunk, GlobalOperatorState &gstate_p,
|
112
112
|
OperatorState &state_p) const {
|
113
113
|
D_ASSERT(input.size() > 0);
|
114
|
-
auto &state = (
|
114
|
+
auto &state = state_p.Cast<BlockwiseNLJoinState>();
|
115
115
|
auto &gstate = sink_state->Cast<BlockwiseNLJoinGlobalState>();
|
116
116
|
|
117
117
|
if (gstate.right_chunks.Count() == 0) {
|
@@ -244,7 +244,7 @@ unique_ptr<GlobalSourceState> PhysicalBlockwiseNLJoin::GetGlobalSourceState(Clie
|
|
244
244
|
|
245
245
|
unique_ptr<LocalSourceState> PhysicalBlockwiseNLJoin::GetLocalSourceState(ExecutionContext &context,
|
246
246
|
GlobalSourceState &gstate) const {
|
247
|
-
return make_uniq<BlockwiseNLJoinLocalScanState>(*this, (
|
247
|
+
return make_uniq<BlockwiseNLJoinLocalScanState>(*this, gstate.Cast<BlockwiseNLJoinGlobalScanState>());
|
248
248
|
}
|
249
249
|
|
250
250
|
SourceResultType PhysicalBlockwiseNLJoin::GetData(ExecutionContext &context, DataChunk &chunk,
|
@@ -252,8 +252,8 @@ SourceResultType PhysicalBlockwiseNLJoin::GetData(ExecutionContext &context, Dat
|
|
252
252
|
D_ASSERT(IsRightOuterJoin(join_type));
|
253
253
|
// check if we need to scan any unmatched tuples from the RHS for the full/right outer join
|
254
254
|
auto &sink = sink_state->Cast<BlockwiseNLJoinGlobalState>();
|
255
|
-
auto &gstate =
|
256
|
-
auto &lstate =
|
255
|
+
auto &gstate = input.global_state.Cast<BlockwiseNLJoinGlobalScanState>();
|
256
|
+
auto &lstate = input.local_state.Cast<BlockwiseNLJoinLocalScanState>();
|
257
257
|
|
258
258
|
// if the LHS is exhausted in a FULL/RIGHT OUTER JOIN, we scan chunks we still need to output
|
259
259
|
sink.right_outer.Scan(gstate.scan_state, lstate.scan_state, chunk);
|
@@ -1016,19 +1016,16 @@ void PhysicalIEJoin::BuildPipelines(Pipeline ¤t, MetaPipeline &meta_pipeli
|
|
1016
1016
|
|
1017
1017
|
// Create one child meta pipeline that will hold the LHS and RHS pipelines
|
1018
1018
|
auto &child_meta_pipeline = meta_pipeline.CreateChildMetaPipeline(current, *this);
|
1019
|
-
auto lhs_pipeline = child_meta_pipeline.GetBasePipeline();
|
1020
|
-
auto rhs_pipeline = child_meta_pipeline.CreatePipeline();
|
1021
1019
|
|
1022
1020
|
// Build out LHS
|
1021
|
+
auto lhs_pipeline = child_meta_pipeline.GetBasePipeline();
|
1023
1022
|
children[0]->BuildPipelines(*lhs_pipeline, child_meta_pipeline);
|
1024
1023
|
|
1025
|
-
// RHS depends on everything in LHS
|
1026
|
-
child_meta_pipeline.AddDependenciesFrom(rhs_pipeline, lhs_pipeline.get(), true);
|
1027
|
-
|
1028
1024
|
// Build out RHS
|
1025
|
+
auto rhs_pipeline = child_meta_pipeline.CreatePipeline();
|
1029
1026
|
children[1]->BuildPipelines(*rhs_pipeline, child_meta_pipeline);
|
1030
1027
|
|
1031
|
-
// Despite having the same sink, RHS
|
1028
|
+
// Despite having the same sink, RHS and everything created after it need their own (same) PipelineFinishEvent
|
1032
1029
|
child_meta_pipeline.AddFinishEvent(rhs_pipeline);
|
1033
1030
|
}
|
1034
1031
|
|
@@ -67,7 +67,7 @@ PhysicalIndexJoin::PhysicalIndexJoin(LogicalOperator &op, unique_ptr<PhysicalOpe
|
|
67
67
|
left_projection_map(left_projection_map_p), right_projection_map(std::move(right_projection_map_p)),
|
68
68
|
index(index_p), conditions(std::move(cond)), join_type(join_type), lhs_first(lhs_first) {
|
69
69
|
D_ASSERT(right->type == PhysicalOperatorType::TABLE_SCAN);
|
70
|
-
auto &tbl_scan = (
|
70
|
+
auto &tbl_scan = right->Cast<PhysicalTableScan>();
|
71
71
|
column_ids = std::move(column_ids_p);
|
72
72
|
children.push_back(std::move(left));
|
73
73
|
children.push_back(std::move(right));
|
@@ -109,7 +109,7 @@ unique_ptr<OperatorState> PhysicalIndexJoin::GetOperatorState(ExecutionContext &
|
|
109
109
|
|
110
110
|
void PhysicalIndexJoin::Output(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
|
111
111
|
OperatorState &state_p) const {
|
112
|
-
auto &phy_tbl_scan =
|
112
|
+
auto &phy_tbl_scan = children[1]->Cast<PhysicalTableScan>();
|
113
113
|
auto &bind_tbl = phy_tbl_scan.bind_data->Cast<TableScanBindData>();
|
114
114
|
auto &transaction = DuckTransaction::Get(context.client, bind_tbl.table.catalog);
|
115
115
|
auto &state = state_p.Cast<IndexJoinOperatorState>();
|
@@ -139,7 +139,7 @@ void PhysicalIndexJoin::Output(ExecutionContext &context, DataChunk &input, Data
|
|
139
139
|
}
|
140
140
|
state.rhs_chunk.Reset();
|
141
141
|
state.fetch_state = make_uniq<ColumnFetchState>();
|
142
|
-
Vector row_ids(LogicalType::ROW_TYPE, (
|
142
|
+
Vector row_ids(LogicalType::ROW_TYPE, data_ptr_cast(&fetch_rows[0]));
|
143
143
|
tbl.Fetch(transaction, state.rhs_chunk, fetch_ids, row_ids, output_sel_idx, *state.fetch_state);
|
144
144
|
}
|
145
145
|
|
@@ -443,7 +443,7 @@ unique_ptr<GlobalSourceState> PhysicalNestedLoopJoin::GetGlobalSourceState(Clien
|
|
443
443
|
|
444
444
|
unique_ptr<LocalSourceState> PhysicalNestedLoopJoin::GetLocalSourceState(ExecutionContext &context,
|
445
445
|
GlobalSourceState &gstate) const {
|
446
|
-
return make_uniq<NestedLoopJoinLocalScanState>(*this, (
|
446
|
+
return make_uniq<NestedLoopJoinLocalScanState>(*this, gstate.Cast<NestedLoopJoinGlobalScanState>());
|
447
447
|
}
|
448
448
|
|
449
449
|
SourceResultType PhysicalNestedLoopJoin::GetData(ExecutionContext &context, DataChunk &chunk,
|
@@ -451,8 +451,8 @@ SourceResultType PhysicalNestedLoopJoin::GetData(ExecutionContext &context, Data
|
|
451
451
|
D_ASSERT(IsRightOuterJoin(join_type));
|
452
452
|
// check if we need to scan any unmatched tuples from the RHS for the full/right outer join
|
453
453
|
auto &sink = sink_state->Cast<NestedLoopJoinGlobalState>();
|
454
|
-
auto &gstate =
|
455
|
-
auto &lstate =
|
454
|
+
auto &gstate = input.global_state.Cast<NestedLoopJoinGlobalScanState>();
|
455
|
+
auto &lstate = input.local_state.Cast<NestedLoopJoinLocalScanState>();
|
456
456
|
|
457
457
|
// if the LHS is exhausted in a FULL/RIGHT OUTER JOIN, we scan chunks we still need to output
|
458
458
|
sink.right_outer.Scan(gstate.scan_state, lstate.scan_state, chunk);
|
@@ -385,7 +385,7 @@ static idx_t MergeJoinSimpleBlocks(PiecewiseMergeJoinState &lstate, MergeJoinGlo
|
|
385
385
|
|
386
386
|
void PhysicalPiecewiseMergeJoin::ResolveSimpleJoin(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
|
387
387
|
OperatorState &state_p) const {
|
388
|
-
auto &state = (
|
388
|
+
auto &state = state_p.Cast<PiecewiseMergeJoinState>();
|
389
389
|
auto &gstate = sink_state->Cast<MergeJoinGlobalState>();
|
390
390
|
|
391
391
|
state.ResolveJoinKeys(input);
|
@@ -507,7 +507,7 @@ static idx_t MergeJoinComplexBlocks(BlockMergeInfo &l, BlockMergeInfo &r, const
|
|
507
507
|
|
508
508
|
OperatorResultType PhysicalPiecewiseMergeJoin::ResolveComplexJoin(ExecutionContext &context, DataChunk &input,
|
509
509
|
DataChunk &chunk, OperatorState &state_p) const {
|
510
|
-
auto &state = (
|
510
|
+
auto &state = state_p.Cast<PiecewiseMergeJoinState>();
|
511
511
|
auto &gstate = sink_state->Cast<MergeJoinGlobalState>();
|
512
512
|
auto &rsorted = *gstate.table->global_sort_state.sorted_blocks[0];
|
513
513
|
const auto left_cols = input.ColumnCount();
|
@@ -682,7 +682,7 @@ SourceResultType PhysicalPiecewiseMergeJoin::GetData(ExecutionContext &context,
|
|
682
682
|
D_ASSERT(IsRightOuterJoin(join_type));
|
683
683
|
// check if we need to scan any unmatched tuples from the RHS for the full/right outer join
|
684
684
|
auto &sink = sink_state->Cast<MergeJoinGlobalState>();
|
685
|
-
auto &state =
|
685
|
+
auto &state = input.global_state.Cast<PiecewiseJoinScanState>();
|
686
686
|
|
687
687
|
lock_guard<mutex> l(state.lock);
|
688
688
|
if (!state.scanner) {
|
@@ -276,7 +276,7 @@ void TopNHeap::Finalize() {
|
|
276
276
|
}
|
277
277
|
|
278
278
|
void TopNHeap::Reduce() {
|
279
|
-
idx_t min_sort_threshold = MaxValue<idx_t>(STANDARD_VECTOR_SIZE *
|
279
|
+
idx_t min_sort_threshold = MaxValue<idx_t>(STANDARD_VECTOR_SIZE * 5ULL, 2ULL * (limit + offset));
|
280
280
|
if (sort_state.count < min_sort_threshold) {
|
281
281
|
// only reduce when we pass two times the limit + offset, or 5 vectors (whichever comes first)
|
282
282
|
return;
|
@@ -186,8 +186,8 @@ static string TrimWhitespace(const string &col_name) {
|
|
186
186
|
|
187
187
|
static string NormalizeColumnName(const string &col_name) {
|
188
188
|
// normalize UTF8 characters to NFKD
|
189
|
-
auto nfkd = utf8proc_NFKD(
|
190
|
-
const string col_name_nfkd = string((
|
189
|
+
auto nfkd = utf8proc_NFKD(reinterpret_cast<const utf8proc_uint8_t *>(col_name.c_str()), col_name.size());
|
190
|
+
const string col_name_nfkd = string(const_char_ptr_cast(nfkd), strlen(const_char_ptr_cast(nfkd)));
|
191
191
|
free(nfkd);
|
192
192
|
|
193
193
|
// only keep ASCII characters 0-9 a-z A-Z and replace spaces with regular whitespace
|
@@ -99,7 +99,7 @@ idx_t CSVFileHandle::Read(void *buffer, idx_t nr_bytes) {
|
|
99
99
|
}
|
100
100
|
// we have data left to read from the file
|
101
101
|
// read directly into the buffer
|
102
|
-
auto bytes_read = file_handle->Read((
|
102
|
+
auto bytes_read = file_handle->Read(char_ptr_cast(buffer) + result_offset, nr_bytes - result_offset);
|
103
103
|
file_size = file_handle->GetFileSize();
|
104
104
|
read_position += bytes_read;
|
105
105
|
if (reset_enabled) {
|
@@ -114,7 +114,7 @@ idx_t CSVFileHandle::Read(void *buffer, idx_t nr_bytes) {
|
|
114
114
|
}
|
115
115
|
cached_buffer = std::move(new_buffer);
|
116
116
|
}
|
117
|
-
memcpy(cached_buffer.get() + buffer_size, (
|
117
|
+
memcpy(cached_buffer.get() + buffer_size, char_ptr_cast(buffer) + result_offset, bytes_read);
|
118
118
|
buffer_size += bytes_read;
|
119
119
|
}
|
120
120
|
|
@@ -279,9 +279,8 @@ unique_ptr<GlobalSinkState> PhysicalBatchInsert::GetGlobalSinkState(ClientContex
|
|
279
279
|
// CREATE TABLE AS
|
280
280
|
D_ASSERT(!insert_table);
|
281
281
|
auto &catalog = schema->catalog;
|
282
|
-
|
283
|
-
|
284
|
-
.get();
|
282
|
+
auto created_table = catalog.CreateTable(catalog.GetCatalogTransaction(context), *schema.get_mutable(), *info);
|
283
|
+
table = &created_table->Cast<TableCatalogEntry>();
|
285
284
|
} else {
|
286
285
|
D_ASSERT(insert_table);
|
287
286
|
D_ASSERT(insert_table->IsDuckTable());
|
@@ -63,7 +63,7 @@ PhysicalInsert::PhysicalInsert(LogicalOperator &op, SchemaCatalogEntry &schema,
|
|
63
63
|
|
64
64
|
void PhysicalInsert::GetInsertInfo(const BoundCreateTableInfo &info, vector<LogicalType> &insert_types,
|
65
65
|
vector<unique_ptr<Expression>> &bound_defaults) {
|
66
|
-
auto &create_info =
|
66
|
+
auto &create_info = info.base->Cast<CreateTableInfo>();
|
67
67
|
for (auto &col : create_info.columns.Physical()) {
|
68
68
|
insert_types.push_back(col.GetType());
|
69
69
|
bound_defaults.push_back(make_uniq<BoundConstantExpression>(Value(col.GetType())));
|
@@ -17,11 +17,11 @@ PhysicalPivot::PhysicalPivot(vector<LogicalType> types_p, unique_ptr<PhysicalOpe
|
|
17
17
|
}
|
18
18
|
// extract the empty aggregate expressions
|
19
19
|
for (auto &aggr_expr : bound_pivot.aggregates) {
|
20
|
-
auto &aggr = (
|
20
|
+
auto &aggr = aggr_expr->Cast<BoundAggregateExpression>();
|
21
21
|
// for each aggregate, initialize an empty aggregate state and finalize it immediately
|
22
22
|
auto state = make_unsafe_uniq_array<data_t>(aggr.function.state_size());
|
23
23
|
aggr.function.initialize(state.get());
|
24
|
-
Vector state_vector(Value::POINTER((
|
24
|
+
Vector state_vector(Value::POINTER(CastPointerToValue(state.get())));
|
25
25
|
Vector result_vector(aggr_expr->return_type);
|
26
26
|
AggregateInputData aggr_input_data(aggr.bind_info.get(), Allocator::DefaultAllocator());
|
27
27
|
aggr.function.finalize(state_vector, aggr_input_data, result_vector, 1, 0);
|
@@ -27,7 +27,7 @@ PhysicalProjection::PhysicalProjection(vector<LogicalType> types, vector<unique_
|
|
27
27
|
|
28
28
|
OperatorResultType PhysicalProjection::Execute(ExecutionContext &context, DataChunk &input, DataChunk &chunk,
|
29
29
|
GlobalOperatorState &gstate, OperatorState &state_p) const {
|
30
|
-
auto &state = (
|
30
|
+
auto &state = state_p.Cast<ProjectionState>();
|
31
31
|
state.executor.Execute(input, chunk);
|
32
32
|
return OperatorResultType::NEED_MORE_INPUT;
|
33
33
|
}
|
@@ -70,6 +70,7 @@ OperatorResultType PhysicalTableInOutFunction::Execute(ExecutionContext &context
|
|
70
70
|
return OperatorResultType::NEED_MORE_INPUT;
|
71
71
|
}
|
72
72
|
// we are processing a new row: fetch the data for the current row
|
73
|
+
state.input_chunk.Reset();
|
73
74
|
D_ASSERT(input.ColumnCount() == state.input_chunk.ColumnCount());
|
74
75
|
// set up the input data to the table in-out function
|
75
76
|
for (idx_t col_idx = 0; col_idx < input.ColumnCount(); col_idx++) {
|
@@ -65,8 +65,8 @@ void UnnestOperatorState::SetLongestListLength() {
|
|
65
65
|
if (vector_data.validity.RowIsValid(current_idx)) {
|
66
66
|
|
67
67
|
// check if this list is longer
|
68
|
-
auto
|
69
|
-
auto list_entry =
|
68
|
+
auto list_data_entries = UnifiedVectorFormat::GetData<list_entry_t>(vector_data);
|
69
|
+
auto list_entry = list_data_entries[current_idx];
|
70
70
|
if (list_entry.length > longest_list_length) {
|
71
71
|
longest_list_length = list_entry.length;
|
72
72
|
}
|
@@ -98,7 +98,7 @@ static void UnnestNull(idx_t start, idx_t end, Vector &result) {
|
|
98
98
|
template <class T>
|
99
99
|
static void TemplatedUnnest(UnifiedVectorFormat &vector_data, idx_t start, idx_t end, Vector &result) {
|
100
100
|
|
101
|
-
auto source_data = (
|
101
|
+
auto source_data = UnifiedVectorFormat::GetData<T>(vector_data);
|
102
102
|
auto &source_mask = vector_data.validity;
|
103
103
|
|
104
104
|
D_ASSERT(result.GetVectorType() == VectorType::FLAT_VECTOR);
|
@@ -259,6 +259,11 @@ OperatorResultType PhysicalUnnest::ExecuteInternal(ExecutionContext &context, Da
|
|
259
259
|
auto &state = state_p.Cast<UnnestOperatorState>();
|
260
260
|
|
261
261
|
do {
|
262
|
+
// reset validities, if previous loop iteration contained UNNEST(NULL)
|
263
|
+
if (include_input) {
|
264
|
+
chunk.Reset();
|
265
|
+
}
|
266
|
+
|
262
267
|
// prepare the input data by executing any expressions and getting the
|
263
268
|
// UnifiedVectorFormat of each LIST vector (list_vector_data) and its child vector (list_child_data)
|
264
269
|
if (state.first_fetch) {
|
@@ -271,7 +276,7 @@ OperatorResultType PhysicalUnnest::ExecuteInternal(ExecutionContext &context, Da
|
|
271
276
|
return OperatorResultType::NEED_MORE_INPUT;
|
272
277
|
}
|
273
278
|
|
274
|
-
// each UNNEST in the select_list contains a list (or NULL) for this row, find longest list
|
279
|
+
// each UNNEST in the select_list contains a list (or NULL) for this row, find the longest list
|
275
280
|
// because this length determines how many times we need to repeat for the current row
|
276
281
|
if (state.longest_list_length == DConstants::INVALID_INDEX) {
|
277
282
|
state.SetLongestListLength();
|
@@ -314,7 +319,7 @@ OperatorResultType PhysicalUnnest::ExecuteInternal(ExecutionContext &context, Da
|
|
314
319
|
|
315
320
|
} else {
|
316
321
|
|
317
|
-
auto list_data = (
|
322
|
+
auto list_data = UnifiedVectorFormat::GetData<list_entry_t>(vector_data);
|
318
323
|
auto list_entry = list_data[current_idx];
|
319
324
|
|
320
325
|
idx_t list_count = 0;
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#include "duckdb/execution/operator/scan/physical_column_data_scan.hpp"
|
2
2
|
|
3
3
|
#include "duckdb/execution/operator/join/physical_delim_join.hpp"
|
4
|
+
#include "duckdb/execution/operator/aggregate/physical_hash_aggregate.hpp"
|
4
5
|
#include "duckdb/parallel/meta_pipeline.hpp"
|
5
6
|
#include "duckdb/parallel/pipeline.hpp"
|
6
7
|
|
@@ -60,7 +61,7 @@ void PhysicalColumnDataScan::BuildPipelines(Pipeline ¤t, MetaPipeline &met
|
|
60
61
|
D_ASSERT(delim_sink->type == PhysicalOperatorType::DELIM_JOIN);
|
61
62
|
auto &delim_join = delim_sink->Cast<PhysicalDelimJoin>();
|
62
63
|
current.AddDependency(delim_dependency);
|
63
|
-
state.SetPipelineSource(current,
|
64
|
+
state.SetPipelineSource(current, delim_join.distinct->Cast<PhysicalOperator>());
|
64
65
|
return;
|
65
66
|
}
|
66
67
|
case PhysicalOperatorType::RECURSIVE_CTE_SCAN:
|