mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
Bug 4531: unique key prefix interacts poorly with utf8
Check HEAP+HASH, binary collation
This commit is contained in:
parent
a7510c70fc
commit
d81136e3e1
3 changed files with 56 additions and 22 deletions
|
@ -470,6 +470,42 @@ ERROR 23000: Duplicate entry 'ꪪꪪ' for key 1
|
|||
drop table t1;
|
||||
create table t1 (
|
||||
c char(10) character set utf8 collate utf8_bin,
|
||||
unique key a using hash (c(1))
|
||||
) engine=heap;
|
||||
show create table t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c` char(10) character set utf8 collate utf8_bin default NULL,
|
||||
UNIQUE KEY `a` (`c`(1))
|
||||
) ENGINE=HEAP DEFAULT CHARSET=latin1
|
||||
insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
|
||||
insert into t1 values ('aa');
|
||||
ERROR 23000: Duplicate entry 'aa' for key 1
|
||||
insert into t1 values ('aaa');
|
||||
ERROR 23000: Duplicate entry 'aaa' for key 1
|
||||
insert into t1 values ('б');
|
||||
insert into t1 values ('бб');
|
||||
ERROR 23000: Duplicate entry 'бÐ' for key 1
|
||||
insert into t1 values ('ббб');
|
||||
ERROR 23000: Duplicate entry 'бÐ' for key 1
|
||||
select c as c_all from t1 order by c;
|
||||
c_all
|
||||
a
|
||||
b
|
||||
c
|
||||
d
|
||||
e
|
||||
f
|
||||
б
|
||||
select c as c_a from t1 where c='a';
|
||||
c_a
|
||||
a
|
||||
select c as c_a from t1 where c='б';
|
||||
c_a
|
||||
б
|
||||
drop table t1;
|
||||
create table t1 (
|
||||
c char(10) character set utf8 collate utf8_bin,
|
||||
unique key a using btree (c(1))
|
||||
) engine=heap;
|
||||
show create table t1;
|
||||
|
|
|
@ -349,27 +349,25 @@ drop table t1;
|
|||
# Bug 4531: unique key prefix interacts poorly with utf8
|
||||
# Check HEAP+HASH, binary collation
|
||||
#
|
||||
# This doesn't work correctly yet.
|
||||
#
|
||||
#create table t1 (
|
||||
#c char(10) character set utf8 collate utf8_bin,
|
||||
#unique key a using hash (c(1))
|
||||
#) engine=heap;
|
||||
#show create table t1;
|
||||
#insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
|
||||
#--error 1062
|
||||
#insert into t1 values ('aa');
|
||||
#--error 1062
|
||||
#insert into t1 values ('aaa');
|
||||
#insert into t1 values ('б');
|
||||
#--error 1062
|
||||
#insert into t1 values ('бб');
|
||||
#--error 1062
|
||||
#insert into t1 values ('ббб');
|
||||
#select c as c_all from t1 order by c;
|
||||
#select c as c_a from t1 where c='a';
|
||||
#select c as c_a from t1 where c='б';
|
||||
#drop table t1;
|
||||
create table t1 (
|
||||
c char(10) character set utf8 collate utf8_bin,
|
||||
unique key a using hash (c(1))
|
||||
) engine=heap;
|
||||
show create table t1;
|
||||
insert into t1 values ('a'),('b'),('c'),('d'),('e'),('f');
|
||||
--error 1062
|
||||
insert into t1 values ('aa');
|
||||
--error 1062
|
||||
insert into t1 values ('aaa');
|
||||
insert into t1 values ('б');
|
||||
--error 1062
|
||||
insert into t1 values ('бб');
|
||||
--error 1062
|
||||
insert into t1 values ('ббб');
|
||||
select c as c_all from t1 order by c;
|
||||
select c as c_a from t1 where c='a';
|
||||
select c as c_a from t1 where c='б';
|
||||
drop table t1;
|
||||
|
||||
#
|
||||
# Bug 4531: unique key prefix interacts poorly with utf8
|
||||
|
|
|
@ -430,7 +430,7 @@ int ha_heap::create(const char *name, TABLE *table_arg,
|
|||
{
|
||||
if (!f_is_packed(flag) &&
|
||||
f_packtype(flag) == (int) FIELD_TYPE_DECIMAL &&
|
||||
!(flag & FIELDFLAG_BINARY))
|
||||
!(field->charset() == &my_charset_bin))
|
||||
seg->type= (int) HA_KEYTYPE_TEXT;
|
||||
else
|
||||
seg->type= (int) HA_KEYTYPE_BINARY;
|
||||
|
|
Loading…
Reference in a new issue