Commit cc98eea5 authored by unknown's avatar unknown

A fix (bug #5498 TRIM fails with LEADING or TRAILING if remstr = str).

parent c1e84276
...@@ -282,3 +282,9 @@ NULL NULL 1 1 n ...@@ -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)); ...@@ -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) ...@@ -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) ...@@ -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;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment