[Bug][Function] Fix pad function wrong result when len.val==str_char_size (#6564)
like #6563 and #6562
This commit is contained in:
@ -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]);
|
||||
}
|
||||
|
||||
@ -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(),
|
||||
|
||||
Reference in New Issue
Block a user