From ba3c96f507c0381531a43f6e5ee0500842f75025 Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.blaudden" <> Date: Fri, 23 Feb 2007 10:28:50 +0100 Subject: [PATCH 1/2] Bug#25197 repeat function returns null when using table field directly as count - Return empty string also if count is unsigned and value is 0 --- mysql-test/r/func_str.result | 14 ++++++++++++++ mysql-test/t/func_str.test | 22 ++++++++++++++++++++++ sql/item_strfunc.cc | 4 +++- 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/mysql-test/r/func_str.result b/mysql-test/r/func_str.result index 052451f8c54..e716a89132c 100644 --- a/mysql-test/r/func_str.result +++ b/mysql-test/r/func_str.result @@ -1940,4 +1940,18 @@ abcxx select lpad('abc', cast(5 as unsigned integer), 'x'); lpad('abc', cast(5 as unsigned integer), 'x') xxabc +DROP TABLE IF EXISTS t1; +CREATE TABLE `t1` ( +`id` varchar(20) NOT NULL, +`tire` tinyint(3) unsigned NOT NULL, +PRIMARY KEY (`id`) +); +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`; +A B tire + 0 +# # 1 +## ## 2 +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 64b59025d44..7cf7ef2cab6 100644 --- a/mysql-test/t/func_str.test +++ b/mysql-test/t/func_str.test @@ -1008,4 +1008,26 @@ select repeat('a', cast(2 as unsigned int)); select rpad('abc', cast(5 as unsigned integer), 'x'); select lpad('abc', cast(5 as unsigned integer), 'x'); + +# +# Bug #25197 :repeat function returns null when using table field directly as count +# + +--disable_warnings +DROP TABLE IF EXISTS t1; +--enable_warnings + +CREATE TABLE `t1` ( + `id` varchar(20) NOT NULL, + `tire` tinyint(3) unsigned NOT NULL, + PRIMARY KEY (`id`) +); + +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`; + +DROP TABLE t1; + --echo End of 5.0 tests diff --git a/sql/item_strfunc.cc b/sql/item_strfunc.cc index 95cc32b5c8e..627751a1106 100644 --- a/sql/item_strfunc.cc +++ b/sql/item_strfunc.cc @@ -2251,8 +2251,10 @@ String *Item_func_repeat::val_str(String *str) if (args[0]->null_value || args[1]->null_value) goto err; // string and/or delim are null null_value= 0; - if ((count <= 0) && !args[1]->unsigned_flag) // For nicer SQL code + + if (count == 0 || count < 0 && !args[1]->unsigned_flag) return &my_empty_string; + /* Assumes that the maximum length of a String is < INT_MAX32. */ /* Bounds check on count: If this is triggered, we will error. */ if ((ulonglong) count > INT_MAX32) From 6ca22c6672b82d2e761de796074c92c2ef749b1a Mon Sep 17 00:00:00 2001 From: "msvensson@pilot.blaudden" <> Date: Wed, 28 Feb 2007 16:37:50 +0100 Subject: [PATCH 2/2] Bug#24878 mysql server doesn't log incident time in "mysqld got signal 11" error messages - Add printout of current time when mysqld is killed by an unhandled signal --- sql/mysqld.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sql/mysqld.cc b/sql/mysqld.cc index 460bf2e7308..0efc1339467 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -1933,7 +1933,10 @@ static void check_data_home(const char *path) extern "C" sig_handler handle_segfault(int sig) { + time_t curr_time; + struct tm tm; THD *thd=current_thd; + /* Strictly speaking, one needs a mutex here but since we have got SIGSEGV already, things are a mess @@ -1947,11 +1950,17 @@ extern "C" sig_handler handle_segfault(int sig) } segfaulted = 1; + + curr_time= time(NULL); + localtime_r(&curr_time, &tm); + fprintf(stderr,"\ -mysqld got signal %d;\n\ +%02d%02d%02d %2d:%02d:%02d - mysqld got signal %d;\n\ This could be because you hit a bug. It is also possible that this binary\n\ or one of the libraries it was linked against is corrupt, improperly built,\n\ or misconfigured. This error can also be caused by malfunctioning hardware.\n", + tm.tm_year % 100, tm.tm_mon+1, tm.tm_mday, + tm.tm_hour, tm.tm_min, tm.tm_sec, sig); fprintf(stderr, "\ We will try our best to scrape up some info that will hopefully help diagnose\n\