mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 12:02:42 +01:00
Fix:
CREATE TABLE t1 (s1 CHAR(5) CHARACTER SET latin1 COLLATE latin1_german2_ci); INSERT INTO t1 VALUES ('Ü'); INSERT INTO t1 VALUES ('ue'); SELECT DISTINCT s1 FROM t1; The above returned two rows in error. Now it returns one row, in latin1_german2_ci: Ü == ue
This commit is contained in:
parent
691b7584fb
commit
fc8b138544
4 changed files with 34 additions and 5 deletions
|
@ -371,8 +371,9 @@ int hp_rec_key_cmp(HP_KEYDEF *keydef, const byte *rec1, const byte *rec2)
|
|||
}
|
||||
if (seg->type == HA_KEYTYPE_TEXT)
|
||||
{
|
||||
if (my_strnncoll(seg->charset,(uchar*) rec1+seg->start,seg->length,
|
||||
(uchar*) rec2+seg->start,seg->length))
|
||||
if (seg->charset->coll->strnncollsp(seg->charset,
|
||||
(uchar*) rec1+seg->start,seg->length,
|
||||
(uchar*) rec2+seg->start,seg->length))
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
|
@ -404,8 +405,9 @@ int hp_key_cmp(HP_KEYDEF *keydef, const byte *rec, const byte *key)
|
|||
}
|
||||
if (seg->type == HA_KEYTYPE_TEXT)
|
||||
{
|
||||
if (my_strnncoll(seg->charset,(uchar*) rec+seg->start, seg->length,
|
||||
(uchar*) key, seg->length))
|
||||
if (seg->charset->coll->strnncollsp(seg->charset,
|
||||
(uchar*) rec+seg->start, seg->length,
|
||||
(uchar*) key, seg->length))
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -264,3 +264,18 @@ select * from t1 where word like CAST(0xDF as CHAR);
|
|||
word word2
|
||||
ß ß
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (
|
||||
s1 CHAR(5) CHARACTER SET latin1 COLLATE latin1_german2_ci
|
||||
);
|
||||
INSERT INTO t1 VALUES ('Ü');
|
||||
INSERT INTO t1 VALUES ('ue');
|
||||
SELECT DISTINCT s1 FROM t1;
|
||||
s1
|
||||
Ü
|
||||
SELECT s1,COUNT(*) FROM t1 GROUP BY s1;
|
||||
s1 COUNT(*)
|
||||
Ü 2
|
||||
SELECT COUNT(DISTINCT s1) FROM t1;
|
||||
COUNT(DISTINCT s1)
|
||||
1
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -73,3 +73,13 @@ select * from t1 where word like 'AE';
|
|||
select * from t1 where word like binary 0xDF;
|
||||
select * from t1 where word like CAST(0xDF as CHAR);
|
||||
drop table t1;
|
||||
|
||||
CREATE TABLE t1 (
|
||||
s1 CHAR(5) CHARACTER SET latin1 COLLATE latin1_german2_ci
|
||||
);
|
||||
INSERT INTO t1 VALUES ('Ü');
|
||||
INSERT INTO t1 VALUES ('ue');
|
||||
SELECT DISTINCT s1 FROM t1;
|
||||
SELECT s1,COUNT(*) FROM t1 GROUP BY s1;
|
||||
SELECT COUNT(DISTINCT s1) FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
|
|
@ -1023,7 +1023,9 @@ int simple_str_key_cmp(void* arg, byte* key1, byte* key2)
|
|||
Item_sum_count_distinct* item = (Item_sum_count_distinct*)arg;
|
||||
CHARSET_INFO *cs=item->key_charset;
|
||||
uint len=item->key_length;
|
||||
return my_strnncoll(cs, (const uchar*) key1, len, (const uchar*) key2, len);
|
||||
return cs->coll->strnncollsp(cs,
|
||||
(const uchar*) key1, len,
|
||||
(const uchar*) key2, len);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue