[Fix](function) fix pad functions behaviour of empty pad string (#34796)

fix pad functions behaviour of empty pad string
This commit is contained in:
zclllyybb
2024-05-14 19:53:44 +08:00
committed by yiguolei
parent 7a878eb797
commit d5ab2787ba
3 changed files with 43 additions and 2 deletions

View File

@ -1710,9 +1710,9 @@ public:
res_chars, res_offsets);
continue;
}
// make compatible with mysql. return empty string if pad is empty
if (pad_char_size == 0) {
// return NULL when the string to be paded is missing
null_map_data[i] = true;
StringOP::push_empty_string(i, res_chars, res_offsets);
continue;
}

View File

@ -7,3 +7,33 @@
\N
10:00
-- !rpad1 --
-- !rpad2 --
-- !rpad3 --
\N
-- !rpad4 --
\N
-- !rpad5 --
\N
-- !lpad1 --
-- !lpad2 --
-- !lpad3 --
\N
-- !lpad4 --
\N
-- !lpad5 --
\N

View File

@ -43,4 +43,15 @@ suite("test_string_pad_function") {
qt_select_rpad """
select CASE WHEN table_pad.a = 1 THEN CONCAT(RPAD(b, 2, 0), ':00') END result from table_pad order by result;
"""
qt_rpad1 """ SELECT rpad("", 5, ""); """
qt_rpad2 """ SELECT rpad("123", 5, ""); """
qt_rpad3 """ SELECT rpad("123", -1, ""); """
qt_rpad4 """ SELECT rpad(NULL, 1, ""); """
qt_rpad5 """ SELECT rpad("123", 0, NULL); """
qt_lpad1 """ SELECT lpad("", 5, ""); """
qt_lpad2 """ SELECT lpad("123", 5, ""); """
qt_lpad3 """ SELECT lpad("123", -1, ""); """
qt_lpad4 """ SELECT lpad(NULL, 0, ""); """
qt_lpad5 """ SELECT lpad("123", 2, NULL); """
}