Loading mysql-test/r/func_str.result +7 −0 Original line number Diff line number Diff line Loading @@ -691,3 +691,10 @@ select count(*) as total, left(c,10) as reg from t1 group by reg order by reg de total reg 10 2004-12-10 drop table t1; select quote(ltrim(concat(' ', 'a'))); quote(ltrim(concat(' ', 'a'))) 'a' select quote(trim(concat(' ', 'a'))); quote(trim(concat(' ', 'a'))) 'a' mysql-test/t/func_str.test +6 −0 Original line number Diff line number Diff line Loading @@ -429,3 +429,9 @@ create table t1 (a int not null primary key, b varchar(40), c datetime); insert into t1 (a,b,c) values (1,'Tom','2004-12-10 12:13:14'),(2,'ball games','2004-12-10 12:13:14'), (3,'Basil','2004-12-10 12:13:14'), (4,'Dean','2004-12-10 12:13:14'),(5,'Ellis','2004-12-10 12:13:14'), (6,'Serg','2004-12-10 12:13:14'), (7,'Sergei','2004-12-10 12:13:14'),(8,'Georg','2004-12-10 12:13:14'),(9,'Salle','2004-12-10 12:13:14'),(10,'Sinisa','2004-12-10 12:13:14'); select count(*) as total, left(c,10) as reg from t1 group by reg order by reg desc limit 0,12; drop table t1; # crashing bug with QUOTE() and LTRIM() or TRIM() fixed # Bug #7495 # select quote(ltrim(concat(' ', 'a'))); select quote(trim(concat(' ', 'a'))); sql/item_strfunc.cc +5 −5 Original line number Diff line number Diff line Loading @@ -2596,16 +2596,16 @@ String *Item_func_quote::val_str(String *str) /* We have to use realloc() instead of alloc() as we want to keep the old result in str old result in arg */ if (str->realloc(new_length)) if (arg->realloc(new_length)) goto null; /* As 'arg' and 'str' may be the same string, we must replace characters from the end to the beginning */ to= (char*) str->ptr() + new_length - 1; to= (char*) arg->ptr() + new_length - 1; *to--= '\''; for (start= (char*) arg->ptr(),end= start + arg_length; end-- != start; to--) { Loading Loading @@ -2633,10 +2633,10 @@ String *Item_func_quote::val_str(String *str) } } *to= '\''; str->length(new_length); arg->length(new_length); str->set_charset(collation.collation); null_value= 0; return str; return arg; null: null_value= 1; Loading Loading
mysql-test/r/func_str.result +7 −0 Original line number Diff line number Diff line Loading @@ -691,3 +691,10 @@ select count(*) as total, left(c,10) as reg from t1 group by reg order by reg de total reg 10 2004-12-10 drop table t1; select quote(ltrim(concat(' ', 'a'))); quote(ltrim(concat(' ', 'a'))) 'a' select quote(trim(concat(' ', 'a'))); quote(trim(concat(' ', 'a'))) 'a'
mysql-test/t/func_str.test +6 −0 Original line number Diff line number Diff line Loading @@ -429,3 +429,9 @@ create table t1 (a int not null primary key, b varchar(40), c datetime); insert into t1 (a,b,c) values (1,'Tom','2004-12-10 12:13:14'),(2,'ball games','2004-12-10 12:13:14'), (3,'Basil','2004-12-10 12:13:14'), (4,'Dean','2004-12-10 12:13:14'),(5,'Ellis','2004-12-10 12:13:14'), (6,'Serg','2004-12-10 12:13:14'), (7,'Sergei','2004-12-10 12:13:14'),(8,'Georg','2004-12-10 12:13:14'),(9,'Salle','2004-12-10 12:13:14'),(10,'Sinisa','2004-12-10 12:13:14'); select count(*) as total, left(c,10) as reg from t1 group by reg order by reg desc limit 0,12; drop table t1; # crashing bug with QUOTE() and LTRIM() or TRIM() fixed # Bug #7495 # select quote(ltrim(concat(' ', 'a'))); select quote(trim(concat(' ', 'a')));
sql/item_strfunc.cc +5 −5 Original line number Diff line number Diff line Loading @@ -2596,16 +2596,16 @@ String *Item_func_quote::val_str(String *str) /* We have to use realloc() instead of alloc() as we want to keep the old result in str old result in arg */ if (str->realloc(new_length)) if (arg->realloc(new_length)) goto null; /* As 'arg' and 'str' may be the same string, we must replace characters from the end to the beginning */ to= (char*) str->ptr() + new_length - 1; to= (char*) arg->ptr() + new_length - 1; *to--= '\''; for (start= (char*) arg->ptr(),end= start + arg_length; end-- != start; to--) { Loading Loading @@ -2633,10 +2633,10 @@ String *Item_func_quote::val_str(String *str) } } *to= '\''; str->length(new_length); arg->length(new_length); str->set_charset(collation.collation); null_value= 0; return str; return arg; null: null_value= 1; Loading