[Bug][Function] Fix pad function wrong result when len.val==str_char_size (#6564)

like #6563 and #6562
This commit is contained in:
Pxl
2021-09-07 11:55:49 +08:00
committed by GitHub
parent bf6d043a7e
commit 577ff01094
2 changed files with 6 additions and 2 deletions

View File

@ -217,7 +217,7 @@ StringVal StringFunctions::lpad(FunctionContext* context, const StringVal& str,
return StringVal::null();
}
if (len.val == str_index.size()) {
return StringVal(str.ptr, len.val);
return StringVal(str.ptr, str.len);
}
return StringVal(str.ptr, str_index[len.val]);
}
@ -268,7 +268,7 @@ StringVal StringFunctions::rpad(FunctionContext* context, const StringVal& str,
return StringVal::null();
}
if (len.val == str_index.size()) {
return StringVal(str.ptr, len.val);
return StringVal(str.ptr, str.len);
}
return StringVal(str.ptr, str_index[len.val]);
}

View File

@ -470,6 +470,8 @@ TEST_F(StringFunctionsTest, lpad) {
StringFunctions::lpad(ctx, StringVal("hi"), IntVal(1), StringVal("?")));
ASSERT_EQ(StringVal(""),
StringFunctions::lpad(ctx, StringVal("你好"), IntVal(1), StringVal("?")));
ASSERT_EQ(StringVal(""),
StringFunctions::lpad(ctx, StringVal(""), IntVal(1), StringVal("?")));
ASSERT_EQ(StringVal(""),
StringFunctions::lpad(ctx, StringVal("hi"), IntVal(0), StringVal("?")));
ASSERT_EQ(StringVal::null(),
@ -498,6 +500,8 @@ TEST_F(StringFunctionsTest, rpad) {
StringFunctions::rpad(ctx, StringVal("hi"), IntVal(1), StringVal("?")));
ASSERT_EQ(StringVal(""),
StringFunctions::rpad(ctx, StringVal("你好"), IntVal(1), StringVal("?")));
ASSERT_EQ(StringVal(""),
StringFunctions::rpad(ctx, StringVal(""), IntVal(1), StringVal("?")));
ASSERT_EQ(StringVal(""),
StringFunctions::rpad(ctx, StringVal("hi"), IntVal(0), StringVal("?")));
ASSERT_EQ(StringVal::null(),