duckdb 0.8.1-dev23.0 → 0.8.1-dev253.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/package.json +1 -1
- package/src/duckdb/extension/icu/icu-datepart.cpp +1 -1
- package/src/duckdb/extension/icu/icu-makedate.cpp +5 -4
- package/src/duckdb/extension/json/include/json_common.hpp +1 -1
- package/src/duckdb/extension/json/include/json_executors.hpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_create.cpp +6 -6
- package/src/duckdb/extension/json/json_functions/json_merge_patch.cpp +1 -1
- package/src/duckdb/extension/json/json_functions/json_transform.cpp +1 -1
- package/src/duckdb/extension/json/json_functions.cpp +3 -0
- 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 +1 -1
- 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 +113 -0
- package/src/duckdb/src/catalog/catalog_entry/table_catalog_entry.cpp +7 -0
- package/src/duckdb/src/catalog/catalog_entry.cpp +4 -4
- 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/catalog/duck_catalog.cpp +1 -0
- package/src/duckdb/src/common/adbc/adbc.cpp +301 -106
- package/src/duckdb/src/common/adbc/driver_manager.cpp +10 -22
- package/src/duckdb/src/common/arrow/arrow_appender.cpp +12 -12
- package/src/duckdb/src/common/arrow/arrow_wrapper.cpp +7 -7
- 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 +19 -14
- package/src/duckdb/src/common/field_writer.cpp +1 -1
- package/src/duckdb/src/common/file_system.cpp +15 -2
- 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/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/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 +44 -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 +32 -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 +36 -37
- package/src/duckdb/src/core_functions/aggregate/distributive/sum.cpp +22 -22
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +48 -84
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +49 -51
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +97 -121
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +62 -99
- 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 +45 -45
- 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 +3 -3
- package/src/duckdb/src/core_functions/scalar/list/flatten.cpp +2 -4
- package/src/duckdb/src/core_functions/scalar/list/list_aggregates.cpp +3 -3
- package/src/duckdb/src/core_functions/scalar/list/list_lambdas.cpp +6 -7
- 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 +3 -3
- 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 +30 -32
- package/src/duckdb/src/execution/index/art/fixed_size_allocator.cpp +3 -4
- package/src/duckdb/src/execution/join_hashtable.cpp +4 -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 +7 -5
- 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_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_unnest.cpp +3 -3
- 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_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 +2 -2
- package/src/duckdb/src/execution/window_segment_tree.cpp +8 -6
- package/src/duckdb/src/function/aggregate/distributive/count.cpp +158 -20
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +66 -74
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +13 -13
- 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 +3 -3
- package/src/duckdb/src/function/scalar/operators/arithmetic.cpp +2 -3
- 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 +25 -23
- 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 +1 -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 +15 -20
- package/src/duckdb/src/function/table/repeat.cpp +2 -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/test_vector_types.cpp +1 -1
- package/src/duckdb/src/function/table/table_scan.cpp +2 -2
- 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 +6 -0
- 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/adbc/adbc.hpp +5 -0
- package/src/duckdb/src/include/duckdb/common/allocator.hpp +15 -4
- package/src/duckdb/src/include/duckdb/common/arrow/arrow_buffer.hpp +7 -2
- 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/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 +3 -3
- 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 +8 -29
- 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 +3 -1
- 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_function.hpp +2 -2
- package/src/duckdb/src/include/duckdb/function/table_function.hpp +8 -7
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- package/src/duckdb/src/include/duckdb/main/config.hpp +2 -0
- 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 +17 -0
- package/src/duckdb/src/include/duckdb/main/relation.hpp +12 -0
- package/src/duckdb/src/include/duckdb/main/settings.hpp +9 -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/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 +1 -1
- 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 +107 -91
- 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 +34 -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/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/index.hpp +2 -2
- package/src/duckdb/src/include/duckdb/storage/partial_block_manager.hpp +1 -1
- 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/scan_state.hpp +22 -0
- 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/capi/appender-c.cpp +5 -5
- package/src/duckdb/src/main/capi/arrow-c.cpp +10 -10
- 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 +1 -1
- 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 +3 -3
- package/src/duckdb/src/main/config.cpp +1 -0
- package/src/duckdb/src/main/database_manager.cpp +1 -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/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 +22 -6
- package/src/duckdb/src/optimizer/deliminator.cpp +12 -12
- package/src/duckdb/src/optimizer/expression_heuristics.cpp +1 -0
- 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/parallel/executor.cpp +1 -1
- 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_expression.cpp +34 -18
- package/src/duckdb/src/parser/parsed_expression_iterator.cpp +4 -4
- package/src/duckdb/src/parser/parser.cpp +4 -4
- 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 +28 -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/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_database.cpp +3 -4
- 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 -22
- 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 +46 -46
- package/src/duckdb/src/planner/bind_context.cpp +9 -10
- package/src/duckdb/src/planner/binder/expression/bind_function_expression.cpp +1 -1
- 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 +8 -8
- 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 -1
- package/src/duckdb/src/planner/binder/statement/bind_create_table.cpp +18 -1
- 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 +4 -2
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +17 -7
- package/src/duckdb/src/planner/binder.cpp +1 -1
- package/src/duckdb/src/planner/bound_result_modifier.cpp +16 -11
- package/src/duckdb/src/planner/expression/bound_aggregate_expression.cpp +5 -5
- 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_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 +15 -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/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 +8 -7
- package/src/duckdb/src/storage/index.cpp +1 -3
- package/src/duckdb/src/storage/local_storage.cpp +2 -1
- package/src/duckdb/src/storage/magic_bytes.cpp +1 -1
- 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/table/chunk_info.cpp +2 -2
- package/src/duckdb/src/storage/table/column_segment.cpp +3 -3
- package/src/duckdb/src/storage/table/list_column_data.cpp +3 -3
- package/src/duckdb/src/storage/table/row_group.cpp +4 -4
- package/src/duckdb/src/storage/table/standard_column_data.cpp +1 -1
- 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/src_backend_parser_gram.cpp +11391 -11442
- package/src/duckdb/third_party/pcg/pcg_extras.hpp +1 -1
@@ -135,6 +135,18 @@ protected:
|
|
135
135
|
mutex lock;
|
136
136
|
shared_ptr<PartitionTupleDataAllocators> allocators;
|
137
137
|
vector<unique_ptr<TupleDataCollection>> partitions;
|
138
|
+
|
139
|
+
public:
|
140
|
+
template <class TARGET>
|
141
|
+
TARGET &Cast() {
|
142
|
+
D_ASSERT(dynamic_cast<TARGET *>(this));
|
143
|
+
return reinterpret_cast<TARGET &>(*this);
|
144
|
+
}
|
145
|
+
template <class TARGET>
|
146
|
+
const TARGET &Cast() const {
|
147
|
+
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
148
|
+
return reinterpret_cast<const TARGET &>(*this);
|
149
|
+
}
|
138
150
|
};
|
139
151
|
|
140
152
|
} // namespace duckdb
|
@@ -55,7 +55,7 @@ public:
|
|
55
55
|
#else
|
56
56
|
memset(value.pointer.prefix, 0, PREFIX_BYTES);
|
57
57
|
#endif
|
58
|
-
value.pointer.ptr = (char *)data;
|
58
|
+
value.pointer.ptr = (char *)data; // NOLINT
|
59
59
|
}
|
60
60
|
}
|
61
61
|
string_t(const char *data) : string_t(data, strlen(data)) { // NOLINT: Allow implicit conversion from `const char*`
|
@@ -69,14 +69,14 @@ public:
|
|
69
69
|
}
|
70
70
|
|
71
71
|
const char *GetData() const {
|
72
|
-
return IsInlined() ? (
|
72
|
+
return IsInlined() ? const_char_ptr_cast(value.inlined.inlined) : value.pointer.ptr;
|
73
73
|
}
|
74
74
|
const char *GetDataUnsafe() const {
|
75
75
|
return GetData();
|
76
76
|
}
|
77
77
|
|
78
78
|
char *GetDataWriteable() const {
|
79
|
-
return IsInlined() ? (char *)value.inlined.inlined : value.pointer.ptr;
|
79
|
+
return IsInlined() ? (char *)value.inlined.inlined : value.pointer.ptr; // NOLINT
|
80
80
|
}
|
81
81
|
|
82
82
|
const char *GetPrefix() const {
|
@@ -110,7 +110,7 @@ public:
|
|
110
110
|
} else {
|
111
111
|
// copy the data into the prefix
|
112
112
|
#ifndef DUCKDB_DEBUG_NO_INLINE
|
113
|
-
auto dataptr =
|
113
|
+
auto dataptr = GetData();
|
114
114
|
memcpy(value.pointer.prefix, dataptr, PREFIX_LENGTH);
|
115
115
|
#else
|
116
116
|
memset(value.pointer.prefix, 0, PREFIX_BYTES);
|
@@ -128,15 +128,15 @@ public:
|
|
128
128
|
return false;
|
129
129
|
return (memcmp(a.GetData(), b.GetData(), a.GetSize()) == 0);
|
130
130
|
#endif
|
131
|
-
uint64_t A = Load<uint64_t>((
|
132
|
-
uint64_t B = Load<uint64_t>((
|
131
|
+
uint64_t A = Load<uint64_t>(const_data_ptr_cast(&a));
|
132
|
+
uint64_t B = Load<uint64_t>(const_data_ptr_cast(&b));
|
133
133
|
if (A != B) {
|
134
134
|
// Either length or prefix are different -> not equal
|
135
135
|
return false;
|
136
136
|
}
|
137
137
|
// they have the same length and same prefix!
|
138
|
-
A = Load<uint64_t>((
|
139
|
-
B = Load<uint64_t>((
|
138
|
+
A = Load<uint64_t>(const_data_ptr_cast(&a) + 8u);
|
139
|
+
B = Load<uint64_t>(const_data_ptr_cast(&b) + 8u);
|
140
140
|
if (A == B) {
|
141
141
|
// either they are both inlined (so compare equal) or point to the same string (so compare equal)
|
142
142
|
return true;
|
@@ -159,8 +159,8 @@ public:
|
|
159
159
|
const uint32_t min_length = std::min<uint32_t>(left_length, right_length);
|
160
160
|
|
161
161
|
#ifndef DUCKDB_DEBUG_NO_INLINE
|
162
|
-
uint32_t A = Load<uint32_t>((
|
163
|
-
uint32_t B = Load<uint32_t>((
|
162
|
+
uint32_t A = Load<uint32_t>(const_data_ptr_cast(left.GetPrefix()));
|
163
|
+
uint32_t B = Load<uint32_t>(const_data_ptr_cast(right.GetPrefix()));
|
164
164
|
|
165
165
|
// Utility to move 0xa1b2c3d4 into 0xd4c3b2a1, basically inverting the order byte-a-byte
|
166
166
|
auto bswap = [](uint32_t v) -> uint32_t {
|
@@ -166,7 +166,7 @@ public:
|
|
166
166
|
//! Create a blob Value from a data pointer and a length: no bytes are interpreted
|
167
167
|
DUCKDB_API static Value BLOB(const_data_ptr_t data, idx_t len);
|
168
168
|
static Value BLOB_RAW(const string &data) { // NOLINT
|
169
|
-
return Value::BLOB((
|
169
|
+
return Value::BLOB(const_data_ptr_cast(data.c_str()), data.size());
|
170
170
|
}
|
171
171
|
//! Creates a blob by casting a specified string to a blob (i.e. interpreting \x characters)
|
172
172
|
DUCKDB_API static Value BLOB(const string &data);
|
@@ -24,6 +24,15 @@ struct UnifiedVectorFormat {
|
|
24
24
|
data_ptr_t data;
|
25
25
|
ValidityMask validity;
|
26
26
|
SelectionVector owned_sel;
|
27
|
+
|
28
|
+
template <class T>
|
29
|
+
static inline const T *GetData(const UnifiedVectorFormat &format) {
|
30
|
+
return reinterpret_cast<const T *>(format.data);
|
31
|
+
}
|
32
|
+
template <class T>
|
33
|
+
static inline T *GetDataNoConst(UnifiedVectorFormat &format) {
|
34
|
+
return reinterpret_cast<T *>(format.data);
|
35
|
+
}
|
27
36
|
};
|
28
37
|
|
29
38
|
class VectorCache;
|
@@ -52,7 +52,7 @@ public:
|
|
52
52
|
if (type != TARGET::TYPE) {
|
53
53
|
throw InternalException("Failed to cast vector auxiliary data to type - type mismatch");
|
54
54
|
}
|
55
|
-
return
|
55
|
+
return reinterpret_cast<TARGET &>(*this);
|
56
56
|
}
|
57
57
|
|
58
58
|
template <class TARGET>
|
@@ -60,7 +60,7 @@ public:
|
|
60
60
|
if (type != TARGET::TYPE) {
|
61
61
|
throw InternalException("Failed to cast vector auxiliary data to type - type mismatch");
|
62
62
|
}
|
63
|
-
return
|
63
|
+
return reinterpret_cast<const TARGET &>(*this);
|
64
64
|
}
|
65
65
|
};
|
66
66
|
|
@@ -121,6 +121,18 @@ protected:
|
|
121
121
|
VectorBufferType buffer_type;
|
122
122
|
unique_ptr<VectorAuxiliaryData> aux_data;
|
123
123
|
unsafe_unique_array<data_t> data;
|
124
|
+
|
125
|
+
public:
|
126
|
+
template <class TARGET>
|
127
|
+
TARGET &Cast() {
|
128
|
+
D_ASSERT(dynamic_cast<TARGET *>(this));
|
129
|
+
return reinterpret_cast<TARGET &>(*this);
|
130
|
+
}
|
131
|
+
template <class TARGET>
|
132
|
+
const TARGET &Cast() const {
|
133
|
+
D_ASSERT(dynamic_cast<const TARGET *>(this));
|
134
|
+
return reinterpret_cast<const TARGET &>(*this);
|
135
|
+
}
|
124
136
|
};
|
125
137
|
|
126
138
|
//! The DictionaryBuffer holds a selection vector
|
@@ -154,7 +166,7 @@ private:
|
|
154
166
|
class VectorStringBuffer : public VectorBuffer {
|
155
167
|
public:
|
156
168
|
VectorStringBuffer();
|
157
|
-
VectorStringBuffer(VectorBufferType type);
|
169
|
+
explicit VectorStringBuffer(VectorBufferType type);
|
158
170
|
|
159
171
|
public:
|
160
172
|
string_t AddString(const char *data, idx_t len) {
|
@@ -207,7 +219,7 @@ private:
|
|
207
219
|
class VectorStructBuffer : public VectorBuffer {
|
208
220
|
public:
|
209
221
|
VectorStructBuffer();
|
210
|
-
VectorStructBuffer(const LogicalType &struct_type, idx_t capacity = STANDARD_VECTOR_SIZE);
|
222
|
+
explicit VectorStructBuffer(const LogicalType &struct_type, idx_t capacity = STANDARD_VECTOR_SIZE);
|
211
223
|
VectorStructBuffer(Vector &other, const SelectionVector &sel, idx_t count);
|
212
224
|
~VectorStructBuffer() override;
|
213
225
|
|
@@ -226,8 +238,8 @@ private:
|
|
226
238
|
|
227
239
|
class VectorListBuffer : public VectorBuffer {
|
228
240
|
public:
|
229
|
-
VectorListBuffer(unique_ptr<Vector> vector, idx_t initial_capacity = STANDARD_VECTOR_SIZE);
|
230
|
-
VectorListBuffer(const LogicalType &list_type, idx_t initial_capacity = STANDARD_VECTOR_SIZE);
|
241
|
+
explicit VectorListBuffer(unique_ptr<Vector> vector, idx_t initial_capacity = STANDARD_VECTOR_SIZE);
|
242
|
+
explicit VectorListBuffer(const LogicalType &list_type, idx_t initial_capacity = STANDARD_VECTOR_SIZE);
|
231
243
|
~VectorListBuffer() override;
|
232
244
|
|
233
245
|
public:
|
@@ -11,6 +11,7 @@
|
|
11
11
|
#include "duckdb/common/exception.hpp"
|
12
12
|
#include "duckdb/common/types/vector.hpp"
|
13
13
|
#include "duckdb/common/vector_operations/vector_operations.hpp"
|
14
|
+
#include "duckdb/function/aggregate_state.hpp"
|
14
15
|
|
15
16
|
namespace duckdb {
|
16
17
|
|
@@ -24,7 +25,7 @@ private:
|
|
24
25
|
static inline void NullaryFlatLoop(STATE_TYPE **__restrict states, AggregateInputData &aggr_input_data,
|
25
26
|
idx_t count) {
|
26
27
|
for (idx_t i = 0; i < count; i++) {
|
27
|
-
OP::template Operation<STATE_TYPE, OP>(states[i], aggr_input_data, i);
|
28
|
+
OP::template Operation<STATE_TYPE, OP>(*states[i], aggr_input_data, i);
|
28
29
|
}
|
29
30
|
}
|
30
31
|
|
@@ -34,24 +35,25 @@ private:
|
|
34
35
|
|
35
36
|
for (idx_t i = 0; i < count; i++) {
|
36
37
|
auto sidx = ssel.get_index(i);
|
37
|
-
OP::template Operation<STATE_TYPE, OP>(states[sidx], aggr_input_data, sidx);
|
38
|
+
OP::template Operation<STATE_TYPE, OP>(*states[sidx], aggr_input_data, sidx);
|
38
39
|
}
|
39
40
|
}
|
40
41
|
|
41
42
|
template <class STATE_TYPE, class INPUT_TYPE, class OP>
|
42
|
-
static inline void UnaryFlatLoop(INPUT_TYPE *__restrict idata, AggregateInputData &aggr_input_data,
|
43
|
+
static inline void UnaryFlatLoop(const INPUT_TYPE *__restrict idata, AggregateInputData &aggr_input_data,
|
43
44
|
STATE_TYPE **__restrict states, ValidityMask &mask, idx_t count) {
|
44
|
-
if (!mask.AllValid()) {
|
45
|
-
|
45
|
+
if (OP::IgnoreNull() && !mask.AllValid()) {
|
46
|
+
AggregateUnaryInput input(aggr_input_data, mask);
|
47
|
+
auto &base_idx = input.input_idx;
|
48
|
+
base_idx = 0;
|
46
49
|
auto entry_count = ValidityMask::EntryCount(count);
|
47
50
|
for (idx_t entry_idx = 0; entry_idx < entry_count; entry_idx++) {
|
48
51
|
auto validity_entry = mask.GetValidityEntry(entry_idx);
|
49
52
|
idx_t next = MinValue<idx_t>(base_idx + ValidityMask::BITS_PER_VALUE, count);
|
50
|
-
if (
|
53
|
+
if (ValidityMask::AllValid(validity_entry)) {
|
51
54
|
// all valid: perform operation
|
52
55
|
for (; base_idx < next; base_idx++) {
|
53
|
-
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(states[base_idx],
|
54
|
-
mask, base_idx);
|
56
|
+
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(*states[base_idx], idata[base_idx], input);
|
55
57
|
}
|
56
58
|
} else if (ValidityMask::NoneValid(validity_entry)) {
|
57
59
|
// nothing valid: skip all
|
@@ -62,46 +64,52 @@ private:
|
|
62
64
|
idx_t start = base_idx;
|
63
65
|
for (; base_idx < next; base_idx++) {
|
64
66
|
if (ValidityMask::RowIsValid(validity_entry, base_idx - start)) {
|
65
|
-
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(states[base_idx],
|
66
|
-
|
67
|
+
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(*states[base_idx], idata[base_idx],
|
68
|
+
input);
|
67
69
|
}
|
68
70
|
}
|
69
71
|
}
|
70
72
|
}
|
71
73
|
} else {
|
72
|
-
|
73
|
-
|
74
|
+
AggregateUnaryInput input(aggr_input_data, mask);
|
75
|
+
auto &i = input.input_idx;
|
76
|
+
for (i = 0; i < count; i++) {
|
77
|
+
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(*states[i], idata[i], input);
|
74
78
|
}
|
75
79
|
}
|
76
80
|
}
|
77
81
|
|
78
82
|
template <class STATE_TYPE, class INPUT_TYPE, class OP>
|
79
|
-
static inline void UnaryScatterLoop(INPUT_TYPE *__restrict idata, AggregateInputData &aggr_input_data,
|
83
|
+
static inline void UnaryScatterLoop(const INPUT_TYPE *__restrict idata, AggregateInputData &aggr_input_data,
|
80
84
|
STATE_TYPE **__restrict states, const SelectionVector &isel,
|
81
85
|
const SelectionVector &ssel, ValidityMask &mask, idx_t count) {
|
82
86
|
if (OP::IgnoreNull() && !mask.AllValid()) {
|
83
87
|
// potential NULL values and NULL values are ignored
|
88
|
+
AggregateUnaryInput input(aggr_input_data, mask);
|
84
89
|
for (idx_t i = 0; i < count; i++) {
|
85
|
-
|
90
|
+
input.input_idx = isel.get_index(i);
|
86
91
|
auto sidx = ssel.get_index(i);
|
87
|
-
if (mask.RowIsValid(
|
88
|
-
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(states[sidx],
|
92
|
+
if (mask.RowIsValid(input.input_idx)) {
|
93
|
+
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(*states[sidx], idata[input.input_idx], input);
|
89
94
|
}
|
90
95
|
}
|
91
96
|
} else {
|
92
97
|
// quick path: no NULL values or NULL values are not ignored
|
98
|
+
AggregateUnaryInput input(aggr_input_data, mask);
|
93
99
|
for (idx_t i = 0; i < count; i++) {
|
94
|
-
|
100
|
+
input.input_idx = isel.get_index(i);
|
95
101
|
auto sidx = ssel.get_index(i);
|
96
|
-
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(states[sidx],
|
102
|
+
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(*states[sidx], idata[input.input_idx], input);
|
97
103
|
}
|
98
104
|
}
|
99
105
|
}
|
100
106
|
|
101
107
|
template <class STATE_TYPE, class INPUT_TYPE, class OP>
|
102
|
-
static inline void UnaryFlatUpdateLoop(INPUT_TYPE *__restrict idata, AggregateInputData &aggr_input_data,
|
108
|
+
static inline void UnaryFlatUpdateLoop(const INPUT_TYPE *__restrict idata, AggregateInputData &aggr_input_data,
|
103
109
|
STATE_TYPE *__restrict state, idx_t count, ValidityMask &mask) {
|
104
|
-
|
110
|
+
AggregateUnaryInput input(aggr_input_data, mask);
|
111
|
+
auto &base_idx = input.input_idx;
|
112
|
+
base_idx = 0;
|
105
113
|
auto entry_count = ValidityMask::EntryCount(count);
|
106
114
|
for (idx_t entry_idx = 0; entry_idx < entry_count; entry_idx++) {
|
107
115
|
auto validity_entry = mask.GetValidityEntry(entry_idx);
|
@@ -109,7 +117,7 @@ private:
|
|
109
117
|
if (!OP::IgnoreNull() || ValidityMask::AllValid(validity_entry)) {
|
110
118
|
// all valid: perform operation
|
111
119
|
for (; base_idx < next; base_idx++) {
|
112
|
-
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(state,
|
120
|
+
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(*state, idata[base_idx], input);
|
113
121
|
}
|
114
122
|
} else if (ValidityMask::NoneValid(validity_entry)) {
|
115
123
|
// nothing valid: skip all
|
@@ -120,8 +128,7 @@ private:
|
|
120
128
|
idx_t start = base_idx;
|
121
129
|
for (; base_idx < next; base_idx++) {
|
122
130
|
if (ValidityMask::RowIsValid(validity_entry, base_idx - start)) {
|
123
|
-
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(state,
|
124
|
-
base_idx);
|
131
|
+
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(*state, idata[base_idx], input);
|
125
132
|
}
|
126
133
|
}
|
127
134
|
}
|
@@ -129,77 +136,80 @@ private:
|
|
129
136
|
}
|
130
137
|
|
131
138
|
template <class STATE_TYPE, class INPUT_TYPE, class OP>
|
132
|
-
static inline void UnaryUpdateLoop(INPUT_TYPE *__restrict idata, AggregateInputData &aggr_input_data,
|
139
|
+
static inline void UnaryUpdateLoop(const INPUT_TYPE *__restrict idata, AggregateInputData &aggr_input_data,
|
133
140
|
STATE_TYPE *__restrict state, idx_t count, ValidityMask &mask,
|
134
141
|
const SelectionVector &__restrict sel_vector) {
|
142
|
+
AggregateUnaryInput input(aggr_input_data, mask);
|
135
143
|
if (OP::IgnoreNull() && !mask.AllValid()) {
|
136
144
|
// potential NULL values and NULL values are ignored
|
137
145
|
for (idx_t i = 0; i < count; i++) {
|
138
|
-
|
139
|
-
if (mask.RowIsValid(
|
140
|
-
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(state,
|
146
|
+
input.input_idx = sel_vector.get_index(i);
|
147
|
+
if (mask.RowIsValid(input.input_idx)) {
|
148
|
+
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(*state, idata[input.input_idx], input);
|
141
149
|
}
|
142
150
|
}
|
143
151
|
} else {
|
144
152
|
// quick path: no NULL values or NULL values are not ignored
|
145
153
|
for (idx_t i = 0; i < count; i++) {
|
146
|
-
|
147
|
-
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(state,
|
154
|
+
input.input_idx = sel_vector.get_index(i);
|
155
|
+
OP::template Operation<INPUT_TYPE, STATE_TYPE, OP>(*state, idata[input.input_idx], input);
|
148
156
|
}
|
149
157
|
}
|
150
158
|
}
|
151
159
|
|
152
160
|
template <class STATE_TYPE, class A_TYPE, class B_TYPE, class OP>
|
153
|
-
static inline void BinaryScatterLoop(A_TYPE *__restrict adata, AggregateInputData &aggr_input_data,
|
154
|
-
B_TYPE *__restrict bdata, STATE_TYPE **__restrict states, idx_t count,
|
161
|
+
static inline void BinaryScatterLoop(const A_TYPE *__restrict adata, AggregateInputData &aggr_input_data,
|
162
|
+
const B_TYPE *__restrict bdata, STATE_TYPE **__restrict states, idx_t count,
|
155
163
|
const SelectionVector &asel, const SelectionVector &bsel,
|
156
164
|
const SelectionVector &ssel, ValidityMask &avalidity,
|
157
165
|
ValidityMask &bvalidity) {
|
166
|
+
AggregateBinaryInput input(aggr_input_data, avalidity, bvalidity);
|
158
167
|
if (OP::IgnoreNull() && (!avalidity.AllValid() || !bvalidity.AllValid())) {
|
159
168
|
// potential NULL values and NULL values are ignored
|
160
169
|
for (idx_t i = 0; i < count; i++) {
|
161
|
-
|
162
|
-
|
170
|
+
input.lidx = asel.get_index(i);
|
171
|
+
input.ridx = bsel.get_index(i);
|
163
172
|
auto sidx = ssel.get_index(i);
|
164
|
-
if (avalidity.RowIsValid(
|
165
|
-
OP::template Operation<A_TYPE, B_TYPE, STATE_TYPE, OP>(states[sidx],
|
166
|
-
|
173
|
+
if (avalidity.RowIsValid(input.lidx) && bvalidity.RowIsValid(input.ridx)) {
|
174
|
+
OP::template Operation<A_TYPE, B_TYPE, STATE_TYPE, OP>(*states[sidx], adata[input.lidx],
|
175
|
+
bdata[input.ridx], input);
|
167
176
|
}
|
168
177
|
}
|
169
178
|
} else {
|
170
179
|
// quick path: no NULL values or NULL values are not ignored
|
171
180
|
for (idx_t i = 0; i < count; i++) {
|
172
|
-
|
173
|
-
|
181
|
+
input.lidx = asel.get_index(i);
|
182
|
+
input.ridx = bsel.get_index(i);
|
174
183
|
auto sidx = ssel.get_index(i);
|
175
|
-
OP::template Operation<A_TYPE, B_TYPE, STATE_TYPE, OP>(states[sidx],
|
176
|
-
|
184
|
+
OP::template Operation<A_TYPE, B_TYPE, STATE_TYPE, OP>(*states[sidx], adata[input.lidx],
|
185
|
+
bdata[input.ridx], input);
|
177
186
|
}
|
178
187
|
}
|
179
188
|
}
|
180
189
|
|
181
190
|
template <class STATE_TYPE, class A_TYPE, class B_TYPE, class OP>
|
182
|
-
static inline void BinaryUpdateLoop(A_TYPE *__restrict adata, AggregateInputData &aggr_input_data,
|
183
|
-
B_TYPE *__restrict bdata, STATE_TYPE *__restrict state, idx_t count,
|
191
|
+
static inline void BinaryUpdateLoop(const A_TYPE *__restrict adata, AggregateInputData &aggr_input_data,
|
192
|
+
const B_TYPE *__restrict bdata, STATE_TYPE *__restrict state, idx_t count,
|
184
193
|
const SelectionVector &asel, const SelectionVector &bsel,
|
185
194
|
ValidityMask &avalidity, ValidityMask &bvalidity) {
|
195
|
+
AggregateBinaryInput input(aggr_input_data, avalidity, bvalidity);
|
186
196
|
if (OP::IgnoreNull() && (!avalidity.AllValid() || !bvalidity.AllValid())) {
|
187
197
|
// potential NULL values and NULL values are ignored
|
188
198
|
for (idx_t i = 0; i < count; i++) {
|
189
|
-
|
190
|
-
|
191
|
-
if (avalidity.RowIsValid(
|
192
|
-
OP::template Operation<A_TYPE, B_TYPE, STATE_TYPE, OP>(state,
|
193
|
-
|
199
|
+
input.lidx = asel.get_index(i);
|
200
|
+
input.ridx = bsel.get_index(i);
|
201
|
+
if (avalidity.RowIsValid(input.lidx) && bvalidity.RowIsValid(input.ridx)) {
|
202
|
+
OP::template Operation<A_TYPE, B_TYPE, STATE_TYPE, OP>(*state, adata[input.lidx], bdata[input.ridx],
|
203
|
+
input);
|
194
204
|
}
|
195
205
|
}
|
196
206
|
} else {
|
197
207
|
// quick path: no NULL values or NULL values are not ignored
|
198
208
|
for (idx_t i = 0; i < count; i++) {
|
199
|
-
|
200
|
-
|
201
|
-
OP::template Operation<A_TYPE, B_TYPE, STATE_TYPE, OP>(state,
|
202
|
-
|
209
|
+
input.lidx = asel.get_index(i);
|
210
|
+
input.ridx = bsel.get_index(i);
|
211
|
+
OP::template Operation<A_TYPE, B_TYPE, STATE_TYPE, OP>(*state, adata[input.lidx], bdata[input.ridx],
|
212
|
+
input);
|
203
213
|
}
|
204
214
|
}
|
205
215
|
}
|
@@ -209,7 +219,7 @@ public:
|
|
209
219
|
static void NullaryScatter(Vector &states, AggregateInputData &aggr_input_data, idx_t count) {
|
210
220
|
if (states.GetVectorType() == VectorType::CONSTANT_VECTOR) {
|
211
221
|
auto sdata = ConstantVector::GetData<STATE_TYPE *>(states);
|
212
|
-
OP::template ConstantOperation<STATE_TYPE, OP>(
|
222
|
+
OP::template ConstantOperation<STATE_TYPE, OP>(**sdata, aggr_input_data, count);
|
213
223
|
} else if (states.GetVectorType() == VectorType::FLAT_VECTOR) {
|
214
224
|
auto sdata = FlatVector::GetData<STATE_TYPE *>(states);
|
215
225
|
NullaryFlatLoop<STATE_TYPE, OP>(sdata, aggr_input_data, count);
|
@@ -222,7 +232,7 @@ public:
|
|
222
232
|
|
223
233
|
template <class STATE_TYPE, class OP>
|
224
234
|
static void NullaryUpdate(data_ptr_t state, AggregateInputData &aggr_input_data, idx_t count) {
|
225
|
-
OP::template ConstantOperation<STATE_TYPE, OP>(
|
235
|
+
OP::template ConstantOperation<STATE_TYPE, OP>(*reinterpret_cast<STATE_TYPE *>(state), aggr_input_data, count);
|
226
236
|
}
|
227
237
|
|
228
238
|
template <class STATE_TYPE, class INPUT_TYPE, class OP>
|
@@ -236,8 +246,8 @@ public:
|
|
236
246
|
// regular constant: get first state
|
237
247
|
auto idata = ConstantVector::GetData<INPUT_TYPE>(input);
|
238
248
|
auto sdata = ConstantVector::GetData<STATE_TYPE *>(states);
|
239
|
-
|
240
|
-
|
249
|
+
AggregateUnaryInput input_data(aggr_input_data, ConstantVector::Validity(input));
|
250
|
+
OP::template ConstantOperation<INPUT_TYPE, STATE_TYPE, OP>(**sdata, *idata, input_data, count);
|
241
251
|
} else if (input.GetVectorType() == VectorType::FLAT_VECTOR &&
|
242
252
|
states.GetVectorType() == VectorType::FLAT_VECTOR) {
|
243
253
|
auto idata = FlatVector::GetData<INPUT_TYPE>(input);
|
@@ -248,9 +258,9 @@ public:
|
|
248
258
|
UnifiedVectorFormat idata, sdata;
|
249
259
|
input.ToUnifiedFormat(count, idata);
|
250
260
|
states.ToUnifiedFormat(count, sdata);
|
251
|
-
UnaryScatterLoop<STATE_TYPE, INPUT_TYPE, OP>((
|
252
|
-
(STATE_TYPE **)sdata.data, *idata.sel,
|
253
|
-
idata.validity, count);
|
261
|
+
UnaryScatterLoop<STATE_TYPE, INPUT_TYPE, OP>(UnifiedVectorFormat::GetData<INPUT_TYPE>(idata),
|
262
|
+
aggr_input_data, (STATE_TYPE **)sdata.data, *idata.sel,
|
263
|
+
*sdata.sel, idata.validity, count);
|
254
264
|
}
|
255
265
|
}
|
256
266
|
|
@@ -262,8 +272,9 @@ public:
|
|
262
272
|
return;
|
263
273
|
}
|
264
274
|
auto idata = ConstantVector::GetData<INPUT_TYPE>(input);
|
265
|
-
|
266
|
-
|
275
|
+
AggregateUnaryInput input_data(aggr_input_data, ConstantVector::Validity(input));
|
276
|
+
OP::template ConstantOperation<INPUT_TYPE, STATE_TYPE, OP>(*reinterpret_cast<STATE_TYPE *>(state), *idata,
|
277
|
+
input_data, count);
|
267
278
|
break;
|
268
279
|
}
|
269
280
|
case VectorType::FLAT_VECTOR: {
|
@@ -275,8 +286,9 @@ public:
|
|
275
286
|
default: {
|
276
287
|
UnifiedVectorFormat idata;
|
277
288
|
input.ToUnifiedFormat(count, idata);
|
278
|
-
UnaryUpdateLoop<STATE_TYPE, INPUT_TYPE, OP>((
|
279
|
-
count, idata.validity,
|
289
|
+
UnaryUpdateLoop<STATE_TYPE, INPUT_TYPE, OP>(UnifiedVectorFormat::GetData<INPUT_TYPE>(idata),
|
290
|
+
aggr_input_data, (STATE_TYPE *)state, count, idata.validity,
|
291
|
+
*idata.sel);
|
280
292
|
break;
|
281
293
|
}
|
282
294
|
}
|
@@ -290,9 +302,9 @@ public:
|
|
290
302
|
b.ToUnifiedFormat(count, bdata);
|
291
303
|
states.ToUnifiedFormat(count, sdata);
|
292
304
|
|
293
|
-
BinaryScatterLoop<STATE_TYPE, A_TYPE, B_TYPE, OP>(
|
294
|
-
|
295
|
-
|
305
|
+
BinaryScatterLoop<STATE_TYPE, A_TYPE, B_TYPE, OP>(
|
306
|
+
UnifiedVectorFormat::GetData<A_TYPE>(adata), aggr_input_data, UnifiedVectorFormat::GetData<B_TYPE>(bdata),
|
307
|
+
(STATE_TYPE **)sdata.data, count, *adata.sel, *bdata.sel, *sdata.sel, adata.validity, bdata.validity);
|
296
308
|
}
|
297
309
|
|
298
310
|
template <class STATE_TYPE, class A_TYPE, class B_TYPE, class OP>
|
@@ -302,9 +314,9 @@ public:
|
|
302
314
|
a.ToUnifiedFormat(count, adata);
|
303
315
|
b.ToUnifiedFormat(count, bdata);
|
304
316
|
|
305
|
-
BinaryUpdateLoop<STATE_TYPE, A_TYPE, B_TYPE, OP>(
|
306
|
-
|
307
|
-
|
317
|
+
BinaryUpdateLoop<STATE_TYPE, A_TYPE, B_TYPE, OP>(
|
318
|
+
UnifiedVectorFormat::GetData<A_TYPE>(adata), aggr_input_data, UnifiedVectorFormat::GetData<B_TYPE>(bdata),
|
319
|
+
(STATE_TYPE *)state, count, *adata.sel, *bdata.sel, adata.validity, bdata.validity);
|
308
320
|
}
|
309
321
|
|
310
322
|
template <class STATE_TYPE, class OP>
|
@@ -314,7 +326,7 @@ public:
|
|
314
326
|
auto tdata = FlatVector::GetData<STATE_TYPE *>(target);
|
315
327
|
|
316
328
|
for (idx_t i = 0; i < count; i++) {
|
317
|
-
OP::template Combine<STATE_TYPE, OP>(*sdata[i], tdata[i], aggr_input_data);
|
329
|
+
OP::template Combine<STATE_TYPE, OP>(*sdata[i], *tdata[i], aggr_input_data);
|
318
330
|
}
|
319
331
|
}
|
320
332
|
|
@@ -326,17 +338,41 @@ public:
|
|
326
338
|
|
327
339
|
auto sdata = ConstantVector::GetData<STATE_TYPE *>(states);
|
328
340
|
auto rdata = ConstantVector::GetData<RESULT_TYPE>(result);
|
329
|
-
|
330
|
-
|
341
|
+
AggregateFinalizeData finalize_data(result, aggr_input_data);
|
342
|
+
OP::template Finalize<RESULT_TYPE, STATE_TYPE>(**sdata, *rdata, finalize_data);
|
331
343
|
} else {
|
332
344
|
D_ASSERT(states.GetVectorType() == VectorType::FLAT_VECTOR);
|
333
345
|
result.SetVectorType(VectorType::FLAT_VECTOR);
|
334
346
|
|
335
347
|
auto sdata = FlatVector::GetData<STATE_TYPE *>(states);
|
336
348
|
auto rdata = FlatVector::GetData<RESULT_TYPE>(result);
|
349
|
+
AggregateFinalizeData finalize_data(result, aggr_input_data);
|
350
|
+
for (idx_t i = 0; i < count; i++) {
|
351
|
+
finalize_data.result_idx = i + offset;
|
352
|
+
OP::template Finalize<RESULT_TYPE, STATE_TYPE>(*sdata[i], rdata[finalize_data.result_idx],
|
353
|
+
finalize_data);
|
354
|
+
}
|
355
|
+
}
|
356
|
+
}
|
357
|
+
|
358
|
+
template <class STATE_TYPE, class OP>
|
359
|
+
static void VoidFinalize(Vector &states, AggregateInputData &aggr_input_data, Vector &result, idx_t count,
|
360
|
+
idx_t offset) {
|
361
|
+
if (states.GetVectorType() == VectorType::CONSTANT_VECTOR) {
|
362
|
+
result.SetVectorType(VectorType::CONSTANT_VECTOR);
|
363
|
+
|
364
|
+
auto sdata = ConstantVector::GetData<STATE_TYPE *>(states);
|
365
|
+
AggregateFinalizeData finalize_data(result, aggr_input_data);
|
366
|
+
OP::template Finalize<STATE_TYPE>(**sdata, finalize_data);
|
367
|
+
} else {
|
368
|
+
D_ASSERT(states.GetVectorType() == VectorType::FLAT_VECTOR);
|
369
|
+
result.SetVectorType(VectorType::FLAT_VECTOR);
|
370
|
+
|
371
|
+
auto sdata = FlatVector::GetData<STATE_TYPE *>(states);
|
372
|
+
AggregateFinalizeData finalize_data(result, aggr_input_data);
|
337
373
|
for (idx_t i = 0; i < count; i++) {
|
338
|
-
|
339
|
-
|
374
|
+
finalize_data.result_idx = i + offset;
|
375
|
+
OP::template Finalize<STATE_TYPE>(*sdata[i], finalize_data);
|
340
376
|
}
|
341
377
|
}
|
342
378
|
}
|
@@ -348,15 +384,15 @@ public:
|
|
348
384
|
|
349
385
|
auto idata = FlatVector::GetData<const INPUT_TYPE>(input) - bias;
|
350
386
|
const auto &ivalid = FlatVector::Validity(input);
|
351
|
-
OP::template Window<STATE, INPUT_TYPE, RESULT_TYPE>(
|
352
|
-
|
387
|
+
OP::template Window<STATE, INPUT_TYPE, RESULT_TYPE>(
|
388
|
+
idata, ifilter, ivalid, aggr_input_data, *reinterpret_cast<STATE *>(state), frame, prev, result, rid, bias);
|
353
389
|
}
|
354
390
|
|
355
391
|
template <class STATE_TYPE, class OP>
|
356
392
|
static void Destroy(Vector &states, AggregateInputData &aggr_input_data, idx_t count) {
|
357
393
|
auto sdata = FlatVector::GetData<STATE_TYPE *>(states);
|
358
394
|
for (idx_t i = 0; i < count; i++) {
|
359
|
-
OP::template Destroy<STATE_TYPE>(
|
395
|
+
OP::template Destroy<STATE_TYPE>(*sdata[i], aggr_input_data);
|
360
396
|
}
|
361
397
|
}
|
362
398
|
};
|