This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 3b7a04ee8b [fix](inpredicate)always use PredicateColumn<TYPE_STRING> for CHAR, VARCHAR and STRING type (#12637) 3b7a04ee8b is described below commit 3b7a04ee8b61033618aaafd6262f5d70e2029187 Author: starocean999 <40539150+starocean...@users.noreply.github.com> AuthorDate: Mon Sep 19 08:37:06 2022 +0800 [fix](inpredicate)always use PredicateColumn<TYPE_STRING> for CHAR, VARCHAR and STRING type (#12637) The predicate column type for char, varchar and string is PredicateColumnType<TYPE_STRING>, so _base_evaluate method should convert the input column to PredicateColumnType<TYPE_STRING> always. --- be/src/olap/comparison_predicate.h | 7 ++++++- be/src/olap/in_list_predicate.h | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/be/src/olap/comparison_predicate.h b/be/src/olap/comparison_predicate.h index d05c847e2c..6fcb45bd3c 100644 --- a/be/src/olap/comparison_predicate.h +++ b/be/src/olap/comparison_predicate.h @@ -552,7 +552,8 @@ private: } } else { auto* data_array = - vectorized::check_and_get_column<vectorized::PredicateColumnType<Type>>(column) + vectorized::check_and_get_column<vectorized::PredicateColumnType<EvalType>>( + column) ->get_data() .data(); @@ -561,6 +562,10 @@ private: } T _value; + static constexpr PrimitiveType EvalType = (Type == TYPE_CHAR ? TYPE_STRING : Type); }; +template <PrimitiveType Type, PredicateType PT> +constexpr PrimitiveType ComparisonPredicateBase<Type, PT>::EvalType; + } //namespace doris diff --git a/be/src/olap/in_list_predicate.h b/be/src/olap/in_list_predicate.h index 87acd34683..b0b9fc5330 100644 --- a/be/src/olap/in_list_predicate.h +++ b/be/src/olap/in_list_predicate.h @@ -375,7 +375,8 @@ private: } } else { auto* nested_col_ptr = - vectorized::check_and_get_column<vectorized::PredicateColumnType<Type>>(column); + vectorized::check_and_get_column<vectorized::PredicateColumnType<EvalType>>( + column); auto& data_array = nested_col_ptr->get_data(); for (uint16_t i = 0; i < size; i++) { @@ -410,6 +411,10 @@ private: mutable std::vector<vectorized::UInt8> _value_in_dict_flags; T _min_value; T _max_value; + static constexpr PrimitiveType EvalType = (Type == TYPE_CHAR ? TYPE_STRING : Type); }; +template <PrimitiveType Type, PredicateType PT> +constexpr PrimitiveType InListPredicateBase<Type, PT>::EvalType; + } //namespace doris --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org