Commit cc98eea5 authored by unknown's avatar unknown
Browse files

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

parent c1e84276
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -282,3 +282,9 @@ NULL NULL 1 1 n
two	'two'	0	0	'two'
four	'four'	0	0	'four'
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')
+7 −0
Original line number Diff line number Diff line
@@ -172,3 +172,10 @@ create table t1(a char(4));
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;
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');
+3 −3
Original line number Diff line number Diff line
@@ -1135,7 +1135,7 @@ String *Item_func_ltrim::val_str(String *str)
  {
    const char *r_ptr=remove_str->ptr();
    end-=remove_length;
    while (ptr < end && !memcmp(ptr,r_ptr,remove_length))
    while (ptr <= end && !memcmp(ptr, r_ptr, remove_length))
      ptr+=remove_length;
    end+=remove_length;
  }
@@ -1206,7 +1206,7 @@ String *Item_func_rtrim::val_str(String *str)
    else
#endif /* USE_MB */
    {
      while (ptr + remove_length < end &&
      while (ptr + remove_length <= end &&
	     !memcmp(end-remove_length, r_ptr, remove_length))
	end-=remove_length;
    }