1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

Fix for a bug #7495

mysql-test/r/func_str.result:
  result for test case for a bug in QUOTE() (Bug #7495)
mysql-test/t/func_str.test:
  test case for a bug in QUOTE() (Bug #7495)
sql/item_strfunc.cc:
  a better fix for a QUOTE() bug (Bug #7495)
This commit is contained in:
unknown
2004-12-23 21:08:54 +02:00
parent 74cc635a7c
commit 8ccfad7636
3 changed files with 15 additions and 25 deletions

View File

@@ -291,15 +291,9 @@ trim(trailing 'foo' from 'foo')
select trim(leading 'foo' from 'foo'); select trim(leading 'foo' from 'foo');
trim(leading 'foo' from 'foo') trim(leading 'foo' from 'foo')
create table t1 (a varchar(80), b varchar(80)); select quote(ltrim(concat(' ', 'a')));
insert into t1 values(NULL,"12345"); quote(ltrim(concat(' ', 'a')))
insert into t1 values(NULL,"chm"); 'a'
select quote(ltrim(concat(' ',t1.b))) from t1; select quote(trim(concat(' ', 'a')));
quote(ltrim(concat(' ',t1.b))) quote(trim(concat(' ', 'a')))
'12345' 'a'
'chm'
select quote(trim(concat(' ',t1.b))) from t1;
quote(trim(concat(' ',t1.b)))
'12345'
'chm'
drop table t1;

View File

@@ -191,9 +191,5 @@ select trim(leading 'foo' from 'foo');
# Bug #7495 # Bug #7495
# #
create table t1 (a varchar(80), b varchar(80)); select quote(ltrim(concat(' ', 'a')));
insert into t1 values(NULL,"12345"); select quote(trim(concat(' ', 'a')));
insert into t1 values(NULL,"chm");
select quote(ltrim(concat(' ',t1.b))) from t1;
select quote(trim(concat(' ',t1.b))) from t1;
drop table t1;

View File

@@ -1141,7 +1141,7 @@ String *Item_func_ltrim::val_str(String *str)
} }
if (ptr == res->ptr()) if (ptr == res->ptr())
return res; return res;
tmp_value.copy(res->ptr() + (ptr - res->ptr()), (uint32) (end - ptr)); tmp_value.set(*res,(uint) (ptr - res->ptr()),(uint) (end-ptr));
return &tmp_value; return &tmp_value;
} }
@@ -1266,7 +1266,7 @@ String *Item_func_trim::val_str(String *str)
} }
if (ptr == res->ptr() && end == ptr+res->length()) if (ptr == res->ptr() && end == ptr+res->length())
return res; return res;
tmp_value.copy(res->ptr() + (ptr - res->ptr()), (uint32) (end - ptr)); tmp_value.set(*res,(uint) (ptr - res->ptr()),(uint) (end-ptr));
return &tmp_value; return &tmp_value;
} }
@@ -2185,16 +2185,16 @@ String *Item_func_quote::val_str(String *str)
/* /*
We have to use realloc() instead of alloc() as we want to keep the 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; goto null;
/* /*
As 'arg' and 'str' may be the same string, we must replace characters As 'arg' and 'str' may be the same string, we must replace characters
from the end to the beginning from the end to the beginning
*/ */
to= (char*) str->ptr() + new_length - 1; to= (char*) arg->ptr() + new_length - 1;
*to--= '\''; *to--= '\'';
for (start= (char*) arg->ptr(),end= start + arg_length; end-- != start; to--) for (start= (char*) arg->ptr(),end= start + arg_length; end-- != start; to--)
{ {
@@ -2222,9 +2222,9 @@ String *Item_func_quote::val_str(String *str)
} }
} }
*to= '\''; *to= '\'';
str->length(new_length); arg->length(new_length);
null_value= 0; null_value= 0;
return str; return arg;
null: null:
null_value= 1; null_value= 1;