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

Merge pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint-bug20166

into  pilot.blaudden:/home/msvensson/mysql/mysql-5.0-maint
This commit is contained in:
msvensson@pilot.blaudden
2007-02-28 16:40:03 +01:00
4 changed files with 49 additions and 2 deletions

View File

@ -1940,4 +1940,18 @@ abcxx
select lpad('abc', cast(5 as unsigned integer), 'x'); select lpad('abc', cast(5 as unsigned integer), 'x');
lpad('abc', cast(5 as unsigned integer), 'x') lpad('abc', cast(5 as unsigned integer), 'x')
xxabc 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 End of 5.0 tests

View File

@ -1008,4 +1008,26 @@ select repeat('a', cast(2 as unsigned int));
select rpad('abc', cast(5 as unsigned integer), 'x'); select rpad('abc', cast(5 as unsigned integer), 'x');
select lpad('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 --echo End of 5.0 tests

View File

@ -2251,8 +2251,10 @@ String *Item_func_repeat::val_str(String *str)
if (args[0]->null_value || args[1]->null_value) if (args[0]->null_value || args[1]->null_value)
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) && !args[1]->unsigned_flag) // For nicer SQL code
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. */
/* Bounds check on count: If this is triggered, we will error. */ /* Bounds check on count: If this is triggered, we will error. */
if ((ulonglong) count > INT_MAX32) if ((ulonglong) count > INT_MAX32)

View File

@ -2037,7 +2037,10 @@ static void check_data_home(const char *path)
extern "C" sig_handler handle_segfault(int sig) extern "C" sig_handler handle_segfault(int sig)
{ {
time_t curr_time;
struct tm tm;
THD *thd=current_thd; THD *thd=current_thd;
/* /*
Strictly speaking, one needs a mutex here Strictly speaking, one needs a mutex here
but since we have got SIGSEGV already, things are a mess but since we have got SIGSEGV already, things are a mess
@ -2051,11 +2054,17 @@ extern "C" sig_handler handle_segfault(int sig)
} }
segfaulted = 1; segfaulted = 1;
curr_time= time(NULL);
localtime_r(&curr_time, &tm);
fprintf(stderr,"\ 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\ 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 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", 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); sig);
fprintf(stderr, "\ fprintf(stderr, "\
We will try our best to scrape up some info that will hopefully help diagnose\n\ We will try our best to scrape up some info that will hopefully help diagnose\n\