From e9b606bf3e0ccc9d9ff27541371cc5faf72dd813 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Mar 2007 09:32:49 +0200 Subject: [PATCH] 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 mysql-test/r/func_str.result: Add test case from bug#27073 mysql-test/t/func_str.test: Add test case from bug#27073 sql/item_strfunc.cc: Change the if statemnet to be optimized for the normal case where count > 0 --- mysql-test/r/func_str.result | 9 +++++++++ mysql-test/t/func_str.test | 4 ++++ sql/item_strfunc.cc | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result index e716a89132c..6abd3a61a4b 100644 --- a/mysql-test/r/func_str.result +++ b/mysql-test/r/func_str.result @@ -1953,5 +1953,14 @@ A B tire 0 # # 1 ## ## 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; End of 5.0 tests diff --git a/mysql-test/t/func_str.test b/mysql-test/t/func_str.test index 7cf7ef2cab6..80e4b9fe40c 100644 --- a/mysql-test/t/func_str.test +++ b/mysql-test/t/func_str.test @@ -1028,6 +1028,10 @@ INSERT INTO `t1` (`id`, `tire`) VALUES ('A', 0), ('B', 1),('C', 2); SELECT REPEAT( '#', tire ) AS A, 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; --echo End of 5.0 tests diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 627751a1106..0ffda000e60 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -2252,7 +2252,7 @@ String *Item_func_repeat::val_str(String *str) goto err; // string and/or delim are null 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; /* Assumes that the maximum length of a String is < INT_MAX32. */