Commit 50ae5b79 authored by ramil/ram@mysql.com/myoffice.izhnet.ru's avatar ramil/ram@mysql.com/myoffice.izhnet.ru
Browse files

Fix for bug #20709: Collation not used in group by on 4.1.

myisam/mi_uniue.c:mi_check_unique() should skip trailing spaces comparing 
TEXT and VARTTEXT key segments.
parent 8e446034
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -185,7 +185,7 @@ int mi_unique_comp(MI_UNIQUEDEF *def, const byte *a, const byte *b,
    if (type == HA_KEYTYPE_TEXT || type == HA_KEYTYPE_VARTEXT)
    {
      if (mi_compare_text(keyseg->charset, (uchar *) pos_a, length,
                                           (uchar *) pos_b, length, 0, 0))
                                           (uchar *) pos_b, length, 0, 1))
	  return 1;
    }
    else
+16 −0
Original line number Diff line number Diff line
@@ -1293,3 +1293,19 @@ id tid val
42749	72	VOLN ADSL
44205	72	VOLN ADSL
DROP TABLE t1;
create table t1(a char(200) collate utf8_unicode_ci NOT NULL default '')
default charset=utf8 collate=utf8_unicode_ci;
insert into t1 values (unhex('65')), (unhex('C3A9')), (unhex('65'));
explain select distinct a from t1;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using temporary
select distinct a from t1;
a
e
explain select a from t1 group by a;
id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra
1	SIMPLE	t1	ALL	NULL	NULL	NULL	NULL	3	Using temporary; Using filesort
select a from t1 group by a;
a
e
drop table t1;
+14 −0
Original line number Diff line number Diff line
@@ -1040,4 +1040,18 @@ ALTER TABLE t1 ADD KEY idx (tid,val(11));
SELECT * FROM t1 WHERE tid=72 and val LIKE 'VOLN ADSL'; 

DROP TABLE t1;

#
# Bug 20709: problem with utf8 fields in temporary tables
#

create table t1(a char(200) collate utf8_unicode_ci NOT NULL default '')
  default charset=utf8 collate=utf8_unicode_ci;
insert into t1 values (unhex('65')), (unhex('C3A9')), (unhex('65'));
explain select distinct a from t1;
select distinct a from t1;
explain select a from t1 group by a;
select a from t1 group by a;
drop table t1;

# End of 4.1 tests