From 071be928f9f207bc5b543d558d3c00ac31b085fd Mon Sep 17 00:00:00 2001 From: zhangstar333 <87313068+zhangstar333@users.noreply.github.com> Date: Fri, 28 Jan 2022 22:31:41 +0800 Subject: [PATCH] [fix](vectorized) fix bug multi distinct function get wrong type (#7900) --- be/src/vec/exec/vaggregation_node.cpp | 4 ++-- be/src/vec/exprs/vectorized_agg_fn.cpp | 2 +- be/src/vec/functions/function_conv.cpp | 2 +- .../src/main/java/org/apache/doris/catalog/FunctionSet.java | 2 +- gensrc/script/doris_builtins_functions.py | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/be/src/vec/exec/vaggregation_node.cpp b/be/src/vec/exec/vaggregation_node.cpp index 1108a09735..4a337fb3ea 100644 --- a/be/src/vec/exec/vaggregation_node.cpp +++ b/be/src/vec/exec/vaggregation_node.cpp @@ -516,7 +516,7 @@ Status AggregationNode::_execute_without_key(Block* block) { SCOPED_TIMER(_build_timer); for (int i = 0; i < _aggregate_evaluators.size(); ++i) { _aggregate_evaluators[i]->execute_single_add( - block, _agg_data.without_key + _offsets_of_aggregate_states[i]); + block, _agg_data.without_key + _offsets_of_aggregate_states[i], &_agg_arena_pool); } return Status::OK(); } @@ -550,7 +550,7 @@ Status AggregationNode::_merge_without_key(Block* block) { } } else { _aggregate_evaluators[i]->execute_single_add( - block, _agg_data.without_key + _offsets_of_aggregate_states[i]); + block, _agg_data.without_key + _offsets_of_aggregate_states[i], &_agg_arena_pool); } } return Status::OK(); diff --git a/be/src/vec/exprs/vectorized_agg_fn.cpp b/be/src/vec/exprs/vectorized_agg_fn.cpp index 0bf87254d5..f39c44ffff 100644 --- a/be/src/vec/exprs/vectorized_agg_fn.cpp +++ b/be/src/vec/exprs/vectorized_agg_fn.cpp @@ -114,7 +114,7 @@ void AggFnEvaluator::destroy(AggregateDataPtr place) { void AggFnEvaluator::execute_single_add(Block* block, AggregateDataPtr place, Arena* arena) { _calc_argment_columns(block); SCOPED_TIMER(_exec_timer); - _function->add_batch_single_place(block->rows(), place, _agg_columns.data(), nullptr); + _function->add_batch_single_place(block->rows(), place, _agg_columns.data(), arena); } void AggFnEvaluator::execute_batch_add(Block* block, size_t offset, AggregateDataPtr* places, diff --git a/be/src/vec/functions/function_conv.cpp b/be/src/vec/functions/function_conv.cpp index 6f755ff561..ae88f68a04 100644 --- a/be/src/vec/functions/function_conv.cpp +++ b/be/src/vec/functions/function_conv.cpp @@ -52,7 +52,7 @@ public: ColumnPtr argument_columns[3]; for (int i = 0; i < 3; ++i) { - argument_columns[i] = block.get_by_position(arguments[i]).column; + argument_columns[i] = block.get_by_position(arguments[i]).column->convert_to_full_column_if_const(); if (auto* nullable = check_and_get_column(*argument_columns[i])) { argument_columns[i] = nullable->get_nested_column_ptr(); VectorizedUtils::update_null_map(result_null_map_column->get_data(), diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionSet.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionSet.java index 0c8079cc6e..3a731d4bda 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionSet.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionSet.java @@ -1445,7 +1445,7 @@ public class FunctionSet