mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
A fix for the bug #7495
mysql-test/r/func_str.result: A result for test case for the bug #7495 involving either LTRIM() or TRIM() within QUOTE() function. mysql-test/t/func_str.test: A test case for the bug #7495 involving either LTRIM() or TRIM() within QUOTE() function. sql/item_strfunc.cc: Changes for LTRIM() and TRIM() functions that aleviate the bug entirely.
This commit is contained in:
parent
e6dfed9f4c
commit
74cc635a7c
3 changed files with 26 additions and 2 deletions
|
@ -291,3 +291,15 @@ trim(trailing 'foo' from 'foo')
|
|||
select trim(leading 'foo' from 'foo');
|
||||
trim(leading 'foo' from 'foo')
|
||||
|
||||
create table t1 (a varchar(80), b varchar(80));
|
||||
insert into t1 values(NULL,"12345");
|
||||
insert into t1 values(NULL,"chm");
|
||||
select quote(ltrim(concat(' ',t1.b))) from t1;
|
||||
quote(ltrim(concat(' ',t1.b)))
|
||||
'12345'
|
||||
'chm'
|
||||
select quote(trim(concat(' ',t1.b))) from t1;
|
||||
quote(trim(concat(' ',t1.b)))
|
||||
'12345'
|
||||
'chm'
|
||||
drop table t1;
|
||||
|
|
|
@ -185,3 +185,15 @@ drop table t1;
|
|||
|
||||
select trim(trailing 'foo' from 'foo');
|
||||
select trim(leading 'foo' from 'foo');
|
||||
|
||||
#
|
||||
# crashing bug with QUOTE() and LTRIM() or TRIM() fixed
|
||||
# Bug #7495
|
||||
#
|
||||
|
||||
create table t1 (a varchar(80), b varchar(80));
|
||||
insert into t1 values(NULL,"12345");
|
||||
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;
|
||||
|
|
|
@ -1141,7 +1141,7 @@ String *Item_func_ltrim::val_str(String *str)
|
|||
}
|
||||
if (ptr == res->ptr())
|
||||
return res;
|
||||
tmp_value.set(*res,(uint) (ptr - res->ptr()),(uint) (end-ptr));
|
||||
tmp_value.copy(res->ptr() + (ptr - res->ptr()), (uint32) (end - ptr));
|
||||
return &tmp_value;
|
||||
}
|
||||
|
||||
|
@ -1266,7 +1266,7 @@ String *Item_func_trim::val_str(String *str)
|
|||
}
|
||||
if (ptr == res->ptr() && end == ptr+res->length())
|
||||
return res;
|
||||
tmp_value.set(*res,(uint) (ptr - res->ptr()),(uint) (end-ptr));
|
||||
tmp_value.copy(res->ptr() + (ptr - res->ptr()), (uint32) (end - ptr));
|
||||
return &tmp_value;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue