Commit 6569fc7d authored by unknown's avatar unknown
Browse files

4.0 -> 4.1 merge


sql/item_strfunc.cc:
  Auto merged
mysql-test/r/func_str.result:
  merged test results for QUOTE() buf fix
mysql-test/t/func_str.test:
  merged test for QUOTE() buf fix
parents 19ffa6a4 8feedada
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -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'
+6 −0
Original line number Diff line number Diff line
@@ -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')));
+5 −5
Original line number Diff line number Diff line
@@ -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--)
  {
@@ -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;