mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
A fix (bug #5498 TRIM fails with LEADING or TRAILING if remstr = str).
This commit is contained in:
@ -282,3 +282,9 @@ NULL NULL 1 1 n
|
|||||||
two 'two' 0 0 'two'
|
two 'two' 0 0 'two'
|
||||||
four 'four' 0 0 'four'
|
four 'four' 0 0 'four'
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
select trim(trailing 'foo' from 'foo');
|
||||||
|
trim(trailing 'foo' from 'foo')
|
||||||
|
|
||||||
|
select trim(leading 'foo' from 'foo');
|
||||||
|
trim(leading 'foo' from 'foo')
|
||||||
|
|
||||||
|
@ -172,3 +172,10 @@ create table t1(a char(4));
|
|||||||
insert into t1 values ('one'),(NULL),('two'),('four');
|
insert into t1 values ('one'),(NULL),('two'),('four');
|
||||||
select a, quote(a), isnull(quote(a)), quote(a) is null, ifnull(quote(a), 'n') from t1;
|
select a, quote(a), isnull(quote(a)), quote(a) is null, ifnull(quote(a), 'n') from t1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #5498: TRIM fails with LEADING or TRAILING if remstr = str
|
||||||
|
#
|
||||||
|
|
||||||
|
select trim(trailing 'foo' from 'foo');
|
||||||
|
select trim(leading 'foo' from 'foo');
|
||||||
|
@ -1135,7 +1135,7 @@ String *Item_func_ltrim::val_str(String *str)
|
|||||||
{
|
{
|
||||||
const char *r_ptr=remove_str->ptr();
|
const char *r_ptr=remove_str->ptr();
|
||||||
end-=remove_length;
|
end-=remove_length;
|
||||||
while (ptr < end && !memcmp(ptr,r_ptr,remove_length))
|
while (ptr <= end && !memcmp(ptr, r_ptr, remove_length))
|
||||||
ptr+=remove_length;
|
ptr+=remove_length;
|
||||||
end+=remove_length;
|
end+=remove_length;
|
||||||
}
|
}
|
||||||
@ -1206,8 +1206,8 @@ String *Item_func_rtrim::val_str(String *str)
|
|||||||
else
|
else
|
||||||
#endif /* USE_MB */
|
#endif /* USE_MB */
|
||||||
{
|
{
|
||||||
while (ptr + remove_length < end &&
|
while (ptr + remove_length <= end &&
|
||||||
!memcmp(end-remove_length,r_ptr,remove_length))
|
!memcmp(end-remove_length, r_ptr, remove_length))
|
||||||
end-=remove_length;
|
end-=remove_length;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user