duckdb 0.8.1-dev51.0 → 0.8.1-dev96.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/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/parquet/column_reader.cpp +52 -51
- 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/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_set.cpp +1 -1
- package/src/duckdb/src/catalog/dependency_manager.cpp +2 -2
- 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/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/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/tuple_data_allocator.cpp +5 -3
- package/src/duckdb/src/common/types/row/tuple_data_scatter_gather.cpp +17 -17
- package/src/duckdb/src/common/types/string_heap.cpp +1 -1
- package/src/duckdb/src/common/types/value.cpp +2 -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/distributive/approx_count.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/arg_min_max.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/bitagg.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/distributive/bitstring_agg.cpp +12 -11
- package/src/duckdb/src/core_functions/aggregate/distributive/bool.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/entropy.cpp +3 -3
- package/src/duckdb/src/core_functions/aggregate/distributive/kurtosis.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/minmax.cpp +7 -7
- package/src/duckdb/src/core_functions/aggregate/distributive/product.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/skew.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/distributive/string_agg.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/holistic/approximate_quantile.cpp +14 -14
- package/src/duckdb/src/core_functions/aggregate/holistic/mode.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/holistic/quantile.cpp +21 -21
- package/src/duckdb/src/core_functions/aggregate/holistic/reservoir_quantile.cpp +18 -19
- package/src/duckdb/src/core_functions/aggregate/nested/histogram.cpp +3 -4
- package/src/duckdb/src/core_functions/aggregate/nested/list.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_avg.cpp +4 -4
- package/src/duckdb/src/core_functions/aggregate/regression/regr_intercept.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/regression/regr_r2.cpp +1 -1
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxx_syy.cpp +2 -2
- package/src/duckdb/src/core_functions/aggregate/regression/regr_sxy.cpp +1 -1
- 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/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 +1 -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/filter/physical_filter.cpp +1 -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 +2 -2
- package/src/duckdb/src/function/aggregate/distributive/first.cpp +5 -5
- package/src/duckdb/src/function/aggregate/sorted_aggregate_function.cpp +8 -8
- 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/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/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.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 +4 -4
- 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 +4 -4
- package/src/duckdb/src/function/table/repeat.cpp +2 -2
- package/src/duckdb/src/function/table/repeat_row.cpp +2 -2
- 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 -2
- package/src/duckdb/src/include/duckdb/catalog/catalog_entry.hpp +2 -2
- 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 +2 -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 +20 -19
- 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 +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/covar.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/algebraic/stddev.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_count.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/regression/regr_slope.hpp +1 -1
- package/src/duckdb/src/include/duckdb/core_functions/aggregate/sum_helpers.hpp +2 -2
- 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/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/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 +6 -6
- package/src/duckdb/src/include/duckdb/main/capi/cast/utils.hpp +1 -1
- 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/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/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 +1 -1
- 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 +1 -1
- 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/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 +2 -2
- package/src/duckdb/src/include/duckdb/planner/operator/logical_pivot.hpp +3 -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/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/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/parallel/executor.cpp +1 -1
- package/src/duckdb/src/parser/base_expression.cpp +2 -5
- 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 +3 -3
- 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 +69 -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 +27 -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 +6 -6
- 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_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_insert.cpp +2 -2
- package/src/duckdb/src/planner/binder/statement/bind_update.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_pivot.cpp +1 -1
- package/src/duckdb/src/planner/binder/tableref/bind_table_function.cpp +2 -2
- 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_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/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 +2 -2
- 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 +1 -1
- 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/pcg/pcg_extras.hpp +1 -1
@@ -27,20 +27,20 @@ unique_ptr<ExpressionState> ExpressionExecutor::InitializeState(const BoundCaseE
|
|
27
27
|
|
28
28
|
void ExpressionExecutor::Execute(const BoundCaseExpression &expr, ExpressionState *state_p, const SelectionVector *sel,
|
29
29
|
idx_t count, Vector &result) {
|
30
|
-
auto state = (
|
30
|
+
auto &state = state_p->Cast<CaseExpressionState>();
|
31
31
|
|
32
|
-
state
|
32
|
+
state.intermediate_chunk.Reset();
|
33
33
|
|
34
34
|
// first execute the check expression
|
35
|
-
auto current_true_sel = &state
|
36
|
-
auto current_false_sel = &state
|
35
|
+
auto current_true_sel = &state.true_sel;
|
36
|
+
auto current_false_sel = &state.false_sel;
|
37
37
|
auto current_sel = sel;
|
38
38
|
idx_t current_count = count;
|
39
39
|
for (idx_t i = 0; i < expr.case_checks.size(); i++) {
|
40
40
|
auto &case_check = expr.case_checks[i];
|
41
|
-
auto &intermediate_result = state
|
42
|
-
auto check_state = state
|
43
|
-
auto then_state = state
|
41
|
+
auto &intermediate_result = state.intermediate_chunk.data[i * 2 + 1];
|
42
|
+
auto check_state = state.child_states[i * 2].get();
|
43
|
+
auto then_state = state.child_states[i * 2 + 1].get();
|
44
44
|
|
45
45
|
idx_t tcount =
|
46
46
|
Select(*case_check.when_expr, check_state, current_sel, current_count, current_true_sel, current_false_sel);
|
@@ -68,13 +68,13 @@ void ExpressionExecutor::Execute(const BoundCaseExpression &expr, ExpressionStat
|
|
68
68
|
}
|
69
69
|
}
|
70
70
|
if (current_count > 0) {
|
71
|
-
auto else_state = state
|
71
|
+
auto else_state = state.child_states.back().get();
|
72
72
|
if (current_count == count) {
|
73
73
|
// everything was false, we can just evaluate the else expression directly
|
74
74
|
Execute(*expr.else_expr, else_state, sel, count, result);
|
75
75
|
return;
|
76
76
|
} else {
|
77
|
-
auto &intermediate_result = state
|
77
|
+
auto &intermediate_result = state.intermediate_chunk.data[expr.case_checks.size() * 2];
|
78
78
|
|
79
79
|
D_ASSERT(current_sel);
|
80
80
|
Execute(*expr.else_expr, else_state, current_sel, current_count, intermediate_result);
|
@@ -105,7 +105,7 @@ void TemplatedFillLoop(Vector &vector, Vector &result, const SelectionVector &se
|
|
105
105
|
} else {
|
106
106
|
UnifiedVectorFormat vdata;
|
107
107
|
vector.ToUnifiedFormat(count, vdata);
|
108
|
-
auto data = (
|
108
|
+
auto data = UnifiedVectorFormat::GetData<T>(vdata);
|
109
109
|
for (idx_t i = 0; i < count; i++) {
|
110
110
|
auto source_idx = vdata.sel->get_index(i);
|
111
111
|
auto res_idx = sel.get_index(i);
|
@@ -56,7 +56,7 @@ void ExpressionExecutor::Execute(const BoundConjunctionExpression &expr, Express
|
|
56
56
|
idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, ExpressionState *state_p,
|
57
57
|
const SelectionVector *sel, idx_t count, SelectionVector *true_sel,
|
58
58
|
SelectionVector *false_sel) {
|
59
|
-
auto state = (
|
59
|
+
auto &state = state_p->Cast<ConjunctionState>();
|
60
60
|
|
61
61
|
if (expr.type == ExpressionType::CONJUNCTION_AND) {
|
62
62
|
// get runtime statistics
|
@@ -75,8 +75,8 @@ idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, Express
|
|
75
75
|
true_sel = temp_true.get();
|
76
76
|
}
|
77
77
|
for (idx_t i = 0; i < expr.children.size(); i++) {
|
78
|
-
idx_t tcount = Select(*expr.children[state
|
79
|
-
state
|
78
|
+
idx_t tcount = Select(*expr.children[state.adaptive_filter->permutation[i]],
|
79
|
+
state.child_states[state.adaptive_filter->permutation[i]].get(), current_sel,
|
80
80
|
current_count, true_sel, temp_false.get());
|
81
81
|
idx_t fcount = current_count - tcount;
|
82
82
|
if (fcount > 0 && false_sel) {
|
@@ -99,7 +99,7 @@ idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, Express
|
|
99
99
|
|
100
100
|
// adapt runtime statistics
|
101
101
|
auto end_time = high_resolution_clock::now();
|
102
|
-
state
|
102
|
+
state.adaptive_filter->AdaptRuntimeStatistics(duration_cast<duration<double>>(end_time - start_time).count());
|
103
103
|
return current_count;
|
104
104
|
} else {
|
105
105
|
// get runtime statistics
|
@@ -118,8 +118,8 @@ idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, Express
|
|
118
118
|
false_sel = temp_false.get();
|
119
119
|
}
|
120
120
|
for (idx_t i = 0; i < expr.children.size(); i++) {
|
121
|
-
idx_t tcount = Select(*expr.children[state
|
122
|
-
state
|
121
|
+
idx_t tcount = Select(*expr.children[state.adaptive_filter->permutation[i]],
|
122
|
+
state.child_states[state.adaptive_filter->permutation[i]].get(), current_sel,
|
123
123
|
current_count, temp_true.get(), false_sel);
|
124
124
|
if (tcount > 0) {
|
125
125
|
if (true_sel) {
|
@@ -136,7 +136,7 @@ idx_t ExpressionExecutor::Select(const BoundConjunctionExpression &expr, Express
|
|
136
136
|
|
137
137
|
// adapt runtime statistics
|
138
138
|
auto end_time = high_resolution_clock::now();
|
139
|
-
state
|
139
|
+
state.adaptive_filter->AdaptRuntimeStatistics(duration_cast<duration<double>>(end_time - start_time).count());
|
140
140
|
return result_count;
|
141
141
|
}
|
142
142
|
}
|
@@ -144,25 +144,25 @@ unique_ptr<ExpressionState> ExpressionExecutor::InitializeState(const Expression
|
|
144
144
|
ExpressionExecutorState &state) {
|
145
145
|
switch (expr.expression_class) {
|
146
146
|
case ExpressionClass::BOUND_REF:
|
147
|
-
return InitializeState((
|
147
|
+
return InitializeState(expr.Cast<BoundReferenceExpression>(), state);
|
148
148
|
case ExpressionClass::BOUND_BETWEEN:
|
149
|
-
return InitializeState((
|
149
|
+
return InitializeState(expr.Cast<BoundBetweenExpression>(), state);
|
150
150
|
case ExpressionClass::BOUND_CASE:
|
151
|
-
return InitializeState((
|
151
|
+
return InitializeState(expr.Cast<BoundCaseExpression>(), state);
|
152
152
|
case ExpressionClass::BOUND_CAST:
|
153
|
-
return InitializeState((
|
153
|
+
return InitializeState(expr.Cast<BoundCastExpression>(), state);
|
154
154
|
case ExpressionClass::BOUND_COMPARISON:
|
155
|
-
return InitializeState((
|
155
|
+
return InitializeState(expr.Cast<BoundComparisonExpression>(), state);
|
156
156
|
case ExpressionClass::BOUND_CONJUNCTION:
|
157
|
-
return InitializeState((
|
157
|
+
return InitializeState(expr.Cast<BoundConjunctionExpression>(), state);
|
158
158
|
case ExpressionClass::BOUND_CONSTANT:
|
159
|
-
return InitializeState((
|
159
|
+
return InitializeState(expr.Cast<BoundConstantExpression>(), state);
|
160
160
|
case ExpressionClass::BOUND_FUNCTION:
|
161
|
-
return InitializeState((
|
161
|
+
return InitializeState(expr.Cast<BoundFunctionExpression>(), state);
|
162
162
|
case ExpressionClass::BOUND_OPERATOR:
|
163
|
-
return InitializeState((
|
163
|
+
return InitializeState(expr.Cast<BoundOperatorExpression>(), state);
|
164
164
|
case ExpressionClass::BOUND_PARAMETER:
|
165
|
-
return InitializeState((
|
165
|
+
return InitializeState(expr.Cast<BoundParameterExpression>(), state);
|
166
166
|
default:
|
167
167
|
throw InternalException("Attempting to initialize state of expression of unknown type!");
|
168
168
|
}
|
@@ -187,34 +187,34 @@ void ExpressionExecutor::Execute(const Expression &expr, ExpressionState *state,
|
|
187
187
|
}
|
188
188
|
switch (expr.expression_class) {
|
189
189
|
case ExpressionClass::BOUND_BETWEEN:
|
190
|
-
Execute((
|
190
|
+
Execute(expr.Cast<BoundBetweenExpression>(), state, sel, count, result);
|
191
191
|
break;
|
192
192
|
case ExpressionClass::BOUND_REF:
|
193
|
-
Execute((
|
193
|
+
Execute(expr.Cast<BoundReferenceExpression>(), state, sel, count, result);
|
194
194
|
break;
|
195
195
|
case ExpressionClass::BOUND_CASE:
|
196
|
-
Execute((
|
196
|
+
Execute(expr.Cast<BoundCaseExpression>(), state, sel, count, result);
|
197
197
|
break;
|
198
198
|
case ExpressionClass::BOUND_CAST:
|
199
|
-
Execute((
|
199
|
+
Execute(expr.Cast<BoundCastExpression>(), state, sel, count, result);
|
200
200
|
break;
|
201
201
|
case ExpressionClass::BOUND_COMPARISON:
|
202
|
-
Execute((
|
202
|
+
Execute(expr.Cast<BoundComparisonExpression>(), state, sel, count, result);
|
203
203
|
break;
|
204
204
|
case ExpressionClass::BOUND_CONJUNCTION:
|
205
|
-
Execute((
|
205
|
+
Execute(expr.Cast<BoundConjunctionExpression>(), state, sel, count, result);
|
206
206
|
break;
|
207
207
|
case ExpressionClass::BOUND_CONSTANT:
|
208
|
-
Execute((
|
208
|
+
Execute(expr.Cast<BoundConstantExpression>(), state, sel, count, result);
|
209
209
|
break;
|
210
210
|
case ExpressionClass::BOUND_FUNCTION:
|
211
|
-
Execute((
|
211
|
+
Execute(expr.Cast<BoundFunctionExpression>(), state, sel, count, result);
|
212
212
|
break;
|
213
213
|
case ExpressionClass::BOUND_OPERATOR:
|
214
|
-
Execute((
|
214
|
+
Execute(expr.Cast<BoundOperatorExpression>(), state, sel, count, result);
|
215
215
|
break;
|
216
216
|
case ExpressionClass::BOUND_PARAMETER:
|
217
|
-
Execute((
|
217
|
+
Execute(expr.Cast<BoundParameterExpression>(), state, sel, count, result);
|
218
218
|
break;
|
219
219
|
default:
|
220
220
|
throw InternalException("Attempting to execute expression of unknown type!");
|
@@ -242,7 +242,7 @@ idx_t ExpressionExecutor::Select(const Expression &expr, ExpressionState *state,
|
|
242
242
|
}
|
243
243
|
|
244
244
|
template <bool NO_NULL, bool HAS_TRUE_SEL, bool HAS_FALSE_SEL>
|
245
|
-
static inline idx_t DefaultSelectLoop(const SelectionVector *bsel, uint8_t *__restrict bdata, ValidityMask &mask,
|
245
|
+
static inline idx_t DefaultSelectLoop(const SelectionVector *bsel, const uint8_t *__restrict bdata, ValidityMask &mask,
|
246
246
|
const SelectionVector *sel, idx_t count, SelectionVector *true_sel,
|
247
247
|
SelectionVector *false_sel) {
|
248
248
|
idx_t true_count = 0, false_count = 0;
|
@@ -270,15 +270,15 @@ template <bool NO_NULL>
|
|
270
270
|
static inline idx_t DefaultSelectSwitch(UnifiedVectorFormat &idata, const SelectionVector *sel, idx_t count,
|
271
271
|
SelectionVector *true_sel, SelectionVector *false_sel) {
|
272
272
|
if (true_sel && false_sel) {
|
273
|
-
return DefaultSelectLoop<NO_NULL, true, true>(idata.sel, (
|
274
|
-
true_sel, false_sel);
|
273
|
+
return DefaultSelectLoop<NO_NULL, true, true>(idata.sel, UnifiedVectorFormat::GetData<uint8_t>(idata),
|
274
|
+
idata.validity, sel, count, true_sel, false_sel);
|
275
275
|
} else if (true_sel) {
|
276
|
-
return DefaultSelectLoop<NO_NULL, true, false>(idata.sel, (
|
277
|
-
true_sel, false_sel);
|
276
|
+
return DefaultSelectLoop<NO_NULL, true, false>(idata.sel, UnifiedVectorFormat::GetData<uint8_t>(idata),
|
277
|
+
idata.validity, sel, count, true_sel, false_sel);
|
278
278
|
} else {
|
279
279
|
D_ASSERT(false_sel);
|
280
|
-
return DefaultSelectLoop<NO_NULL, false, true>(idata.sel, (
|
281
|
-
true_sel, false_sel);
|
280
|
+
return DefaultSelectLoop<NO_NULL, false, true>(idata.sel, UnifiedVectorFormat::GetData<uint8_t>(idata),
|
281
|
+
idata.validity, sel, count, true_sel, false_sel);
|
282
282
|
}
|
283
283
|
}
|
284
284
|
|
@@ -288,7 +288,7 @@ idx_t ExpressionExecutor::DefaultSelect(const Expression &expr, ExpressionState
|
|
288
288
|
// resolve the true/false expression first
|
289
289
|
// then use that to generate the selection vector
|
290
290
|
bool intermediate_bools[STANDARD_VECTOR_SIZE];
|
291
|
-
Vector intermediate(LogicalType::BOOLEAN, (
|
291
|
+
Vector intermediate(LogicalType::BOOLEAN, data_ptr_cast(intermediate_bools));
|
292
292
|
Execute(expr, state, sel, count, intermediate);
|
293
293
|
|
294
294
|
UnifiedVectorFormat idata;
|
@@ -125,7 +125,7 @@ static void TemplatedGenerateKeys(ArenaAllocator &allocator, Vector &input, idx_
|
|
125
125
|
input.ToUnifiedFormat(count, idata);
|
126
126
|
|
127
127
|
D_ASSERT(keys.size() >= count);
|
128
|
-
auto input_data = (
|
128
|
+
auto input_data = UnifiedVectorFormat::GetData<T>(idata);
|
129
129
|
for (idx_t i = 0; i < count; i++) {
|
130
130
|
auto idx = idata.sel->get_index(i);
|
131
131
|
if (idata.validity.RowIsValid(idx)) {
|
@@ -142,7 +142,7 @@ static void ConcatenateKeys(ArenaAllocator &allocator, Vector &input, idx_t coun
|
|
142
142
|
UnifiedVectorFormat idata;
|
143
143
|
input.ToUnifiedFormat(count, idata);
|
144
144
|
|
145
|
-
auto input_data = (
|
145
|
+
auto input_data = UnifiedVectorFormat::GetData<T>(idata);
|
146
146
|
for (idx_t i = 0; i < count; i++) {
|
147
147
|
auto idx = idata.sel->get_index(i);
|
148
148
|
|
@@ -715,16 +715,16 @@ Node ART::Lookup(Node node, const ARTKey &key, idx_t depth) {
|
|
715
715
|
// False (Otherwise)
|
716
716
|
//===--------------------------------------------------------------------===//
|
717
717
|
|
718
|
-
bool ART::SearchGreater(ARTIndexScanState
|
718
|
+
bool ART::SearchGreater(ARTIndexScanState &state, ARTKey &key, bool inclusive, idx_t max_count,
|
719
719
|
vector<row_t> &result_ids) {
|
720
720
|
|
721
|
-
|
721
|
+
auto &it = state.iterator;
|
722
722
|
|
723
723
|
// greater than scan: first set the iterator to the node at which we will start our scan by finding the lowest node
|
724
724
|
// that satisfies our requirement
|
725
|
-
if (!it
|
726
|
-
it
|
727
|
-
if (!it
|
725
|
+
if (!it.art) {
|
726
|
+
it.art = this;
|
727
|
+
if (!it.LowerBound(*tree, key, inclusive)) {
|
728
728
|
return true;
|
729
729
|
}
|
730
730
|
}
|
@@ -732,74 +732,72 @@ bool ART::SearchGreater(ARTIndexScanState *state, ARTKey &key, bool inclusive, i
|
|
732
732
|
// after that we continue the scan; we don't need to check the bounds as any value following this value is
|
733
733
|
// automatically bigger and hence satisfies our predicate
|
734
734
|
ARTKey empty_key = ARTKey();
|
735
|
-
return it
|
735
|
+
return it.Scan(empty_key, max_count, result_ids, false);
|
736
736
|
}
|
737
737
|
|
738
738
|
//===--------------------------------------------------------------------===//
|
739
739
|
// Less Than
|
740
740
|
//===--------------------------------------------------------------------===//
|
741
741
|
|
742
|
-
bool ART::SearchLess(ARTIndexScanState
|
742
|
+
bool ART::SearchLess(ARTIndexScanState &state, ARTKey &upper_bound, bool inclusive, idx_t max_count,
|
743
743
|
vector<row_t> &result_ids) {
|
744
744
|
|
745
745
|
if (!tree->IsSet()) {
|
746
746
|
return true;
|
747
747
|
}
|
748
748
|
|
749
|
-
|
749
|
+
auto &it = state.iterator;
|
750
750
|
|
751
|
-
if (!it
|
752
|
-
it
|
751
|
+
if (!it.art) {
|
752
|
+
it.art = this;
|
753
753
|
// first find the minimum value in the ART: we start scanning from this value
|
754
|
-
it
|
754
|
+
it.FindMinimum(*tree);
|
755
755
|
// early out min value higher than upper bound query
|
756
|
-
if (it
|
756
|
+
if (it.cur_key > upper_bound) {
|
757
757
|
return true;
|
758
758
|
}
|
759
759
|
}
|
760
760
|
|
761
761
|
// now continue the scan until we reach the upper bound
|
762
|
-
return it
|
762
|
+
return it.Scan(upper_bound, max_count, result_ids, inclusive);
|
763
763
|
}
|
764
764
|
|
765
765
|
//===--------------------------------------------------------------------===//
|
766
766
|
// Closed Range Query
|
767
767
|
//===--------------------------------------------------------------------===//
|
768
768
|
|
769
|
-
bool ART::SearchCloseRange(ARTIndexScanState
|
769
|
+
bool ART::SearchCloseRange(ARTIndexScanState &state, ARTKey &lower_bound, ARTKey &upper_bound, bool left_inclusive,
|
770
770
|
bool right_inclusive, idx_t max_count, vector<row_t> &result_ids) {
|
771
|
-
|
772
|
-
Iterator *it = &state->iterator;
|
771
|
+
auto &it = state.iterator;
|
773
772
|
|
774
773
|
// first find the first node that satisfies the left predicate
|
775
|
-
if (!it
|
776
|
-
it
|
777
|
-
if (!it
|
774
|
+
if (!it.art) {
|
775
|
+
it.art = this;
|
776
|
+
if (!it.LowerBound(*tree, lower_bound, left_inclusive)) {
|
778
777
|
return true;
|
779
778
|
}
|
780
779
|
}
|
781
780
|
|
782
781
|
// now continue the scan until we reach the upper bound
|
783
|
-
return it
|
782
|
+
return it.Scan(upper_bound, max_count, result_ids, right_inclusive);
|
784
783
|
}
|
785
784
|
|
786
785
|
bool ART::Scan(const Transaction &transaction, const DataTable &table, IndexScanState &table_state,
|
787
786
|
const idx_t max_count, vector<row_t> &result_ids) {
|
788
|
-
|
789
|
-
auto state = (ARTIndexScanState *)&table_state;
|
787
|
+
auto &state = table_state.Cast<ARTIndexScanState>();
|
790
788
|
vector<row_t> row_ids;
|
791
789
|
bool success;
|
792
790
|
|
793
791
|
// FIXME: the key directly owning the data for a single key might be more efficient
|
794
|
-
D_ASSERT(state
|
792
|
+
D_ASSERT(state.values[0].type().InternalType() == types[0]);
|
795
793
|
ArenaAllocator arena_allocator(Allocator::Get(db));
|
796
|
-
auto key = CreateKey(arena_allocator, types[0], state
|
794
|
+
auto key = CreateKey(arena_allocator, types[0], state.values[0]);
|
797
795
|
|
798
|
-
if (state
|
796
|
+
if (state.values[1].IsNull()) {
|
799
797
|
|
800
798
|
// single predicate
|
801
799
|
lock_guard<mutex> l(lock);
|
802
|
-
switch (state
|
800
|
+
switch (state.expressions[0]) {
|
803
801
|
case ExpressionType::COMPARE_EQUAL:
|
804
802
|
success = SearchEqual(key, max_count, row_ids);
|
805
803
|
break;
|
@@ -824,11 +822,11 @@ bool ART::Scan(const Transaction &transaction, const DataTable &table, IndexScan
|
|
824
822
|
// two predicates
|
825
823
|
lock_guard<mutex> l(lock);
|
826
824
|
|
827
|
-
D_ASSERT(state
|
828
|
-
auto upper_bound = CreateKey(arena_allocator, types[0], state
|
825
|
+
D_ASSERT(state.values[1].type().InternalType() == types[0]);
|
826
|
+
auto upper_bound = CreateKey(arena_allocator, types[0], state.values[1]);
|
829
827
|
|
830
|
-
bool left_inclusive = state
|
831
|
-
bool right_inclusive = state
|
828
|
+
bool left_inclusive = state.expressions[0] == ExpressionType ::COMPARE_GREATERTHANOREQUALTO;
|
829
|
+
bool right_inclusive = state.expressions[1] == ExpressionType ::COMPARE_LESSTHANOREQUALTO;
|
832
830
|
success = SearchCloseRange(state, key, upper_bound, left_inclusive, right_inclusive, max_count, row_ids);
|
833
831
|
}
|
834
832
|
|
@@ -59,7 +59,7 @@ SwizzleablePointer FixedSizeAllocator::New() {
|
|
59
59
|
buffers_with_free_space.insert(buffer_id);
|
60
60
|
|
61
61
|
// set the bitmask
|
62
|
-
ValidityMask mask(
|
62
|
+
ValidityMask mask(reinterpret_cast<validity_t *>(buffer));
|
63
63
|
mask.SetAllValid(allocations_per_buffer);
|
64
64
|
}
|
65
65
|
|
@@ -67,7 +67,7 @@ SwizzleablePointer FixedSizeAllocator::New() {
|
|
67
67
|
D_ASSERT(!buffers_with_free_space.empty());
|
68
68
|
auto buffer_id = (uint32_t)*buffers_with_free_space.begin();
|
69
69
|
|
70
|
-
auto bitmask_ptr =
|
70
|
+
auto bitmask_ptr = reinterpret_cast<validity_t *>(buffers[buffer_id].ptr);
|
71
71
|
ValidityMask mask(bitmask_ptr);
|
72
72
|
auto offset = GetOffset(mask, buffers[buffer_id].allocation_count);
|
73
73
|
|
@@ -81,8 +81,7 @@ SwizzleablePointer FixedSizeAllocator::New() {
|
|
81
81
|
}
|
82
82
|
|
83
83
|
void FixedSizeAllocator::Free(const SwizzleablePointer ptr) {
|
84
|
-
|
85
|
-
auto bitmask_ptr = (validity_t *)buffers[ptr.buffer_id].ptr;
|
84
|
+
auto bitmask_ptr = reinterpret_cast<validity_t *>(buffers[ptr.buffer_id].ptr);
|
86
85
|
ValidityMask mask(bitmask_ptr);
|
87
86
|
D_ASSERT(!mask.RowIsValid(ptr.offset));
|
88
87
|
mask.SetValid(ptr.offset);
|
@@ -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
|
}
|
@@ -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
|
}
|
@@ -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
|
@@ -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);
|
@@ -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
|
|