[BUGFIX]repeat return error when input length is larger than max_allow_packet

This commit is contained in:
obdev
2022-11-02 19:43:19 +00:00
committed by wangzelin.wzl
parent 88ec965bc2
commit 477f4cd149
3 changed files with 4 additions and 7 deletions

View File

@ -147,8 +147,8 @@ int ObExprRepeat::repeat(ObString &output,
if ((length > max_result_size / count) || (length > INT_MAX / count)) {
LOG_WARN("Result of repeat was larger than max_allow_packet_size",
K(ret), K(length), K(count), K(max_result_size));
LOG_USER_WARN(OB_ERR_FUNC_RESULT_TOO_LARGE, "repeat", static_cast<int>(max_result_size));
is_null = true;
ret = OB_ERR_FUNC_RESULT_TOO_LARGE;
LOG_USER_ERROR(OB_ERR_FUNC_RESULT_TOO_LARGE, "repeat", static_cast<int>(max_result_size));
} else {
//avoid realloc
if (1 == count) {

View File

@ -80,9 +80,5 @@ select repeat(1.414, 2);
+------------------+
select repeat("abc", 200000000);
+--------------------------+
| repeat("abc", 200000000) |
+--------------------------+
| NULL |
+--------------------------+
ERROR HY000: Result of repeat() was larger than max_allowed_packet (4194304) - truncated

View File

@ -30,6 +30,7 @@ select repeat("abc", NULL);
select repeat(1.414, 1);
select repeat(1.414, 2);
--error 1301
select repeat("abc", 200000000);
--enable_warnings