Commit 3dba83b9 authored by unknown's avatar unknown
Browse files

Revert Bar's fix as this causes changes in the key tree that could cause incompatibilites

Fix instead wrong call to ha_key_cmp
This is related to bug #10741 Inserting double value into utf8 column crashes server


myisam/mi_key.c:
  Revert Bar's fix as this causes changes in the key tree that could cause incompatibilites
myisam/mi_rnext_same.c:
  Fixed wrong arguments to ha_key_cmp()
  This caused a compare to fail if we first found a key with end space and then same key without end space
mysql-test/r/ctype_utf8.result:
  Additional test
mysql-test/t/ctype_utf8.test:
  Additional test
parent 9f161063
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -84,8 +84,7 @@ uint _mi_make_key(register MI_INFO *info, uint keynr, uchar *key,
    pos= (byte*) record+keyseg->start;
    if (keyseg->flag & HA_SPACE_PACK)
    {
      FIX_LENGTH(cs, pos, length, char_length);
      end= pos + char_length;
      end= pos + length;
      if (type != HA_KEYTYPE_NUM)
      {
	while (end > pos && end[-1] == ' ')
@@ -96,7 +95,8 @@ uint _mi_make_key(register MI_INFO *info, uint keynr, uchar *key,
	while (pos < end && pos[0] == ' ')
	  pos++;
      }
      char_length= (uint) (end - pos);
      length=(uint) (end-pos);
      FIX_LENGTH(cs, pos, length, char_length);
      store_key_length_inc(key,char_length);
      memcpy((byte*) key,(byte*) pos,(size_t) char_length);
      key+=char_length;
+2 −2
Original line number Diff line number Diff line
@@ -68,7 +68,7 @@ int mi_rnext_same(MI_INFO *info, byte *buf)
			       info->lastkey_length,SEARCH_BIGGER,
			       info->s->state.key_root[inx])))
          break;
        if (ha_key_cmp(keyinfo->seg,info->lastkey2,info->lastkey,
        if (ha_key_cmp(keyinfo->seg, info->lastkey, info->lastkey2,
                       info->last_rkey_length, SEARCH_FIND, &not_used))
        {
          error=1;
+3 −0
Original line number Diff line number Diff line
@@ -901,4 +901,7 @@ insert into t1 values (2,'Durban');
select * from t1 where city = 'Durban';
id	city
2	Durban
select * from t1 where city = 'Durban ';
id	city
2	Durban
drop table t1;
+1 −0
Original line number Diff line number Diff line
@@ -744,4 +744,5 @@ create table t1 (
insert into t1 values (1,'Durban North');
insert into t1 values (2,'Durban');
select * from t1 where city = 'Durban';
select * from t1 where city = 'Durban ';
drop table t1;