This is an automated email from the ASF dual-hosted git repository. morningman pushed a commit to branch branch-0.15 in repository https://gitbox.apache.org/repos/asf/incubator-doris.git
commit d26d7f22620b6f1cf3fc7fdc7cf6cbee31b54232 Author: tianhui5 <[email protected]> AuthorDate: Fri Oct 15 10:17:21 2021 +0800 [Bug] Left() string function behaves not identically to the mysql implementation (#6811) See Fix #6810 --- be/src/exprs/string_functions.cpp | 1 + be/test/exprs/string_functions_test.cpp | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/be/src/exprs/string_functions.cpp b/be/src/exprs/string_functions.cpp index 233be37..1c95f2f 100644 --- a/be/src/exprs/string_functions.cpp +++ b/be/src/exprs/string_functions.cpp @@ -120,6 +120,7 @@ StringVal StringFunctions::substring(FunctionContext* context, const StringVal& // string left(string input, int len) // This behaves identically to the mysql implementation. StringVal StringFunctions::left(FunctionContext* context, const StringVal& str, const IntVal& len) { + if (len.val >= str.len) return str; return substring(context, str, 1, len); } diff --git a/be/test/exprs/string_functions_test.cpp b/be/test/exprs/string_functions_test.cpp index fe894cd..010c1e3 100644 --- a/be/test/exprs/string_functions_test.cpp +++ b/be/test/exprs/string_functions_test.cpp @@ -287,6 +287,13 @@ TEST_F(StringFunctionsTest, null_or_empty) { delete context; } +TEST_F(StringFunctionsTest, left) { + doris_udf::FunctionContext* context = new doris_udf::FunctionContext(); + + ASSERT_EQ(AnyValUtil::from_string(ctx, std::string("")), + StringFunctions::left(context, StringVal(""), 10)); +} + TEST_F(StringFunctionsTest, substring) { doris_udf::FunctionContext* context = new doris_udf::FunctionContext(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
