1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

Bug#25197 repeat function returns null when using table field directly as count

- Add extra test case from bug#27073
 - Change "if" to be optimized for count > 0
This commit is contained in:
msvensson@pilot.blaudden
2007-03-28 09:32:49 +02:00
parent ba3c96f507
commit 171e91f17d
3 changed files with 14 additions and 1 deletions

View File

@ -1953,5 +1953,14 @@ A B tire
0 0
# # 1 # # 1
## ## 2 ## ## 2
SELECT REPEAT('0', CAST(0 AS UNSIGNED));
REPEAT('0', CAST(0 AS UNSIGNED))
SELECT REPEAT('0', -2);
REPEAT('0', -2)
SELECT REPEAT('0', 2);
REPEAT('0', 2)
00
DROP TABLE t1; DROP TABLE t1;
End of 5.0 tests End of 5.0 tests

View File

@ -1028,6 +1028,10 @@ INSERT INTO `t1` (`id`, `tire`) VALUES ('A', 0), ('B', 1),('C', 2);
SELECT REPEAT( '#', tire ) AS A, SELECT REPEAT( '#', tire ) AS A,
REPEAT( '#', tire % 999 ) AS B, tire FROM `t1`; REPEAT( '#', tire % 999 ) AS B, tire FROM `t1`;
SELECT REPEAT('0', CAST(0 AS UNSIGNED));
SELECT REPEAT('0', -2);
SELECT REPEAT('0', 2);
DROP TABLE t1; DROP TABLE t1;
--echo End of 5.0 tests --echo End of 5.0 tests

View File

@ -2252,7 +2252,7 @@ String *Item_func_repeat::val_str(String *str)
goto err; // string and/or delim are null goto err; // string and/or delim are null
null_value= 0; null_value= 0;
if (count == 0 || count < 0 && !args[1]->unsigned_flag) if (count <= 0 && (count == 0 || !args[1]->unsigned_flag))
return &my_empty_string; return &my_empty_string;
/* Assumes that the maximum length of a String is < INT_MAX32. */ /* Assumes that the maximum length of a String is < INT_MAX32. */