diff --git a/be/src/exprs/vectorized/string_functions.cpp b/be/src/exprs/vectorized/string_functions.cpp index ffb03ced87ef4..d9f2749c9cd54 100644 --- a/be/src/exprs/vectorized/string_functions.cpp +++ b/be/src/exprs/vectorized/string_functions.cpp @@ -1532,12 +1532,7 @@ ColumnPtr StringFunctions::append_trailing_char_if_absent(FunctionContext* conte auto str = src_viewer.value(row); auto tailing_char = tailing_viewer.value(row); - if (str.size == 0) { - dst_builder.append(tailing_char); - continue; - } - - if (str.data[str.size - 1] == tailing_char.data[0]) { + if (str.size == 0 || str.data[str.size - 1] == tailing_char.data[0]) { dst_builder.append(str); continue; } diff --git a/be/test/exprs/vectorized/string_fn_test.cpp b/be/test/exprs/vectorized/string_fn_test.cpp index 1e40f5c6fd5d7..0a3d0b919343e 100644 --- a/be/test/exprs/vectorized/string_fn_test.cpp +++ b/be/test/exprs/vectorized/string_fn_test.cpp @@ -928,7 +928,7 @@ PARALLEL_TEST(VecStringFunctionsTest, appendTrailingCharIfAbsentTest) { ASSERT_EQ("qwer", v->get_data()[0].to_string()); ASSERT_EQ("qwer", v->get_data()[1].to_string()); - ASSERT_EQ("r", v->get_data()[2].to_string()); + ASSERT_EQ("", v->get_data()[2].to_string()); } PARALLEL_TEST(VecStringFunctionsTest, appendTrailingCharIfAbsentNullTest) {