mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 20:42:30 +01:00
7fbc796d4a
Fix for binary collations for MyISAM and HEAP BTREE. This patch also changes trailing spaces behaviour for binary collations. Binary collations now have PAD characteristic too.
196 lines
5.5 KiB
Text
196 lines
5.5 KiB
Text
drop table if exists t1;
|
|
select 'a' = 'a', 'a' = 'a ', 'a ' = 'a';
|
|
'a' = 'a' 'a' = 'a ' 'a ' = 'a'
|
|
1 1 1
|
|
select 'a\0' = 'a', 'a\0' < 'a', 'a\0' > 'a';
|
|
'a\0' = 'a' 'a\0' < 'a' 'a\0' > 'a'
|
|
0 1 0
|
|
select 'a' = 'a\0', 'a' < 'a\0', 'a' > 'a\0';
|
|
'a' = 'a\0' 'a' < 'a\0' 'a' > 'a\0'
|
|
0 0 1
|
|
select 'a\0' = 'a ', 'a\0' < 'a ', 'a\0' > 'a ';
|
|
'a\0' = 'a ' 'a\0' < 'a ' 'a\0' > 'a '
|
|
0 1 0
|
|
select 'a ' = 'a\0', 'a ' < 'a\0', 'a ' > 'a\0';
|
|
'a ' = 'a\0' 'a ' < 'a\0' 'a ' > 'a\0'
|
|
0 0 1
|
|
select 'a a' > 'a', 'a \0' < 'a';
|
|
'a a' > 'a' 'a \0' < 'a'
|
|
1 1
|
|
select binary 'a a' > 'a', binary 'a \0' > 'a', binary 'a\0' > 'a';
|
|
binary 'a a' > 'a' binary 'a \0' > 'a' binary 'a\0' > 'a'
|
|
1 0 0
|
|
create table t1 (text1 varchar(32) not NULL, KEY key1 (text1));
|
|
insert into t1 values ('teststring'), ('nothing'), ('teststring\t');
|
|
check table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
select * from t1 ignore key (key1) where text1='teststring' or text1 like 'teststring_%';
|
|
text1
|
|
teststring
|
|
teststring
|
|
select * from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
text1
|
|
teststring
|
|
teststring
|
|
select * from t1 where text1='teststring' or text1 > 'teststring\t';
|
|
text1
|
|
teststring
|
|
select * from t1 order by text1;
|
|
text1
|
|
nothing
|
|
teststring
|
|
teststring
|
|
explain select * from t1 order by text1;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t1 index NULL key1 32 NULL 3 Using index
|
|
alter table t1 modify text1 char(32) binary not null;
|
|
check table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
select * from t1 ignore key (key1) where text1='teststring' or text1 like 'teststring_%';
|
|
text1
|
|
teststring
|
|
teststring
|
|
select * from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
text1
|
|
teststring
|
|
teststring
|
|
select * from t1 where text1='teststring' or text1 > 'teststring\t';
|
|
text1
|
|
teststring
|
|
select text1, length(text1) from t1 order by text1;
|
|
text1 length(text1)
|
|
nothing 7
|
|
teststring 11
|
|
teststring 10
|
|
select text1, length(text1) from t1 order by binary text1;
|
|
text1 length(text1)
|
|
nothing 7
|
|
teststring 10
|
|
teststring 11
|
|
alter table t1 modify text1 blob not null, drop key key1, add key key1 (text1(20));
|
|
insert into t1 values ('teststring ');
|
|
select concat('|', text1, '|') from t1 order by text1;
|
|
concat('|', text1, '|')
|
|
|nothing|
|
|
|teststring|
|
|
|teststring |
|
|
|teststring |
|
|
alter table t1 modify text1 text not null, pack_keys=1;
|
|
select * from t1 where text1 like 'teststring_%';
|
|
text1
|
|
teststring
|
|
teststring
|
|
select * from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
text1
|
|
teststring
|
|
teststring
|
|
teststring
|
|
select * from t1 where text1='teststring' or text1 > 'teststring\t';
|
|
text1
|
|
teststring
|
|
teststring
|
|
select concat('|', text1, '|') from t1 order by text1;
|
|
concat('|', text1, '|')
|
|
|nothing|
|
|
|teststring |
|
|
|teststring|
|
|
|teststring |
|
|
drop table t1;
|
|
create table t1 (text1 varchar(32) not NULL, KEY key1 (text1)) pack_keys=0;
|
|
insert into t1 values ('teststring'), ('nothing'), ('teststring\t');
|
|
select * from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
text1
|
|
teststring
|
|
teststring
|
|
select * from t1 where text1='teststring' or text1 >= 'teststring\t';
|
|
text1
|
|
teststring
|
|
teststring
|
|
drop table t1;
|
|
create table t1 (text1 varchar(32) not NULL, KEY key1 using BTREE (text1)) engine=heap;
|
|
insert into t1 values ('teststring'), ('nothing'), ('teststring\t');
|
|
select * from t1 ignore key (key1) where text1='teststring' or text1 like 'teststring_%';
|
|
text1
|
|
teststring
|
|
teststring
|
|
select * from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
text1
|
|
teststring
|
|
teststring
|
|
select * from t1 where text1='teststring' or text1 >= 'teststring\t';
|
|
text1
|
|
teststring
|
|
teststring
|
|
select * from t1 order by text1;
|
|
text1
|
|
nothing
|
|
teststring
|
|
teststring
|
|
explain select * from t1 order by text1;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t1 index NULL key1 32 NULL 3
|
|
alter table t1 modify text1 char(32) binary not null;
|
|
select * from t1 order by text1;
|
|
text1
|
|
nothing
|
|
teststring
|
|
teststring
|
|
drop table t1;
|
|
create table t1 (text1 varchar(32) not NULL, KEY key1 (text1)) engine=innodb;
|
|
insert into t1 values ('teststring'), ('nothing'), ('teststring\t');
|
|
check table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
select * from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
text1
|
|
teststring
|
|
teststring
|
|
select * from t1 where text1='teststring' or text1 > 'teststring\t';
|
|
text1
|
|
teststring
|
|
select * from t1 order by text1;
|
|
text1
|
|
nothing
|
|
teststring
|
|
teststring
|
|
explain select * from t1 order by text1;
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t1 index NULL key1 32 NULL 3 Using index
|
|
alter table t1 modify text1 char(32) binary not null;
|
|
select * from t1 order by text1;
|
|
text1
|
|
nothing
|
|
teststring
|
|
teststring
|
|
alter table t1 modify text1 blob not null, drop key key1, add key key1 (text1(20));
|
|
insert into t1 values ('teststring ');
|
|
select concat('|', text1, '|') from t1 order by text1;
|
|
concat('|', text1, '|')
|
|
|nothing|
|
|
|teststring|
|
|
|teststring |
|
|
|teststring |
|
|
alter table t1 modify text1 text not null, pack_keys=1;
|
|
select * from t1 where text1 like 'teststring_%';
|
|
text1
|
|
teststring
|
|
teststring
|
|
select text1, length(text1) from t1 where text1='teststring' or text1 like 'teststring_%';
|
|
text1 length(text1)
|
|
teststring 10
|
|
teststring 11
|
|
teststring 11
|
|
select text1, length(text1) from t1 where text1='teststring' or text1 >= 'teststring\t';
|
|
text1 length(text1)
|
|
teststring 10
|
|
teststring 11
|
|
teststring 11
|
|
select concat('|', text1, '|') from t1 order by text1;
|
|
concat('|', text1, '|')
|
|
|nothing|
|
|
|teststring |
|
|
|teststring|
|
|
|teststring |
|
|
drop table t1;
|