UCS tests
This commit is contained in:
parent
83c6946232
commit
1932b40c13
111
mysql-test/r/ctype_ucs.result
Normal file
111
mysql-test/r/ctype_ucs.result
Normal file
@ -0,0 +1,111 @@
|
||||
DROP TABLE IF EXISTS t1;
|
||||
SET CHARACTER SET koi8r;
|
||||
CREATE TABLE t1 (word VARCHAR(64) CHARACTER SET ucs2);
|
||||
INSERT INTO t1 VALUES (_koi8r'ò'), (X'2004');
|
||||
SELECT hex(word) FROM t1 ORDER BY word;
|
||||
hex(word)
|
||||
0420
|
||||
2004
|
||||
DELETE FROM t1;
|
||||
INSERT INTO t1 VALUES (X'042000200020'), (X'200400200020');
|
||||
SELECT hex(word) FROM t1 ORDER BY word;
|
||||
hex(word)
|
||||
0420
|
||||
2004
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
word VARCHAR(64),
|
||||
bar INT(11) default 0,
|
||||
PRIMARY KEY (word))
|
||||
TYPE=MyISAM
|
||||
CHARSET ucs2
|
||||
COLLATE ucs2_general_ci ;
|
||||
INSERT INTO t1 (word) VALUES ("aar");
|
||||
INSERT INTO t1 (word) VALUES ("a");
|
||||
INSERT INTO t1 (word) VALUES ("aardvar");
|
||||
INSERT INTO t1 (word) VALUES ("aardvark");
|
||||
INSERT INTO t1 (word) VALUES ("aardvara");
|
||||
INSERT INTO t1 (word) VALUES ("aardvarz");
|
||||
EXPLAIN SELECT * FROM t1 ORDER BY word;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort
|
||||
SELECT * FROM t1 ORDER BY word;
|
||||
word bar
|
||||
a 0
|
||||
aar 0
|
||||
aardvar 0
|
||||
aardvara 0
|
||||
aardvark 0
|
||||
aardvarz 0
|
||||
EXPLAIN SELECT word FROM t1 ORDER BY word;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL PRIMARY 128 NULL 6 Using index
|
||||
SELECT word FROM t1 ORDER by word;
|
||||
word
|
||||
a
|
||||
aar
|
||||
aardvar
|
||||
aardvara
|
||||
aardvark
|
||||
aardvarz
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
word VARCHAR(64) ,
|
||||
PRIMARY KEY (word))
|
||||
TYPE=MyISAM
|
||||
CHARSET ucs2
|
||||
COLLATE ucs2_general_ci;
|
||||
INSERT INTO t1 (word) VALUES ("aar");
|
||||
INSERT INTO t1 (word) VALUES ("a");
|
||||
INSERT INTO t1 (word) VALUES ("aardvar");
|
||||
INSERT INTO t1 (word) VALUES ("aardvark");
|
||||
INSERT INTO t1 (word) VALUES ("aardvara");
|
||||
INSERT INTO t1 (word) VALUES ("aardvarz");
|
||||
EXPLAIN SELECT * FROM t1 ORDER BY WORD;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL PRIMARY 128 NULL 6 Using index
|
||||
SELECT * FROM t1 ORDER BY word;
|
||||
word
|
||||
a
|
||||
aar
|
||||
aardvar
|
||||
aardvara
|
||||
aardvark
|
||||
aardvarz
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (
|
||||
word TEXT,
|
||||
bar INT(11) AUTO_INCREMENT,
|
||||
PRIMARY KEY (bar))
|
||||
TYPE=MyISAM
|
||||
CHARSET ucs2
|
||||
COLLATE ucs2_general_ci ;
|
||||
INSERT INTO t1 (word) VALUES ("aar");
|
||||
INSERT INTO t1 (word) VALUES ("a" );
|
||||
INSERT INTO t1 (word) VALUES ("aardvar");
|
||||
INSERT INTO t1 (word) VALUES ("aardvark");
|
||||
INSERT INTO t1 (word) VALUES ("aardvara");
|
||||
INSERT INTO t1 (word) VALUES ("aardvarz");
|
||||
EXPLAIN SELECT * FROM t1 ORDER BY word;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort
|
||||
SELECT * FROM t1 ORDER BY word;
|
||||
word bar
|
||||
a 2
|
||||
aar 1
|
||||
aardvar 3
|
||||
aardvara 5
|
||||
aardvark 4
|
||||
aardvarz 6
|
||||
EXPLAIN SELECT word FROM t1 ORDER BY word;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 6 Using filesort
|
||||
SELECT word FROM t1 ORDER BY word;
|
||||
word
|
||||
a
|
||||
aar
|
||||
aardvar
|
||||
aardvara
|
||||
aardvark
|
||||
aardvarz
|
||||
DROP TABLE t1;
|
130
mysql-test/t/ctype_ucs.test
Normal file
130
mysql-test/t/ctype_ucs.test
Normal file
@ -0,0 +1,130 @@
|
||||
-- source include/have_ucs2.inc
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
SET CHARACTER SET koi8r;
|
||||
|
||||
#
|
||||
# Check that 0x20 is only trimmed when it is
|
||||
# a part of real SPACE character, not just a part
|
||||
# of a multibyte sequence.
|
||||
# Note, CYRILLIC LETTER ER is used as an example, which
|
||||
# is stored as 0x0420 in UCS2, thus contains 0x20 in the
|
||||
# low byte. The second character is THREE-PER-M, U+2004,
|
||||
# which contains 0x20 in the high byte.
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (word VARCHAR(64) CHARACTER SET ucs2);
|
||||
INSERT INTO t1 VALUES (_koi8r'ò'), (X'2004');
|
||||
SELECT hex(word) FROM t1 ORDER BY word;
|
||||
DELETE FROM t1;
|
||||
|
||||
#
|
||||
# Check that real spaces are correctly trimmed.
|
||||
#
|
||||
|
||||
INSERT INTO t1 VALUES (X'042000200020'), (X'200400200020');
|
||||
SELECT hex(word) FROM t1 ORDER BY word;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
######################################################
|
||||
|
||||
#
|
||||
# Bug 1264
|
||||
#
|
||||
# Description:
|
||||
#
|
||||
# When using a ucs2 table in MySQL,
|
||||
# either with ucs2_general_ci or ucs2_bin collation,
|
||||
# words are returned in an incorrect order when using ORDER BY
|
||||
# on an _indexed_ CHAR or VARCHAR column. They are sorted with
|
||||
# the longest word *first* instead of last. I.E. The word "aardvark"
|
||||
# is in the results before the word "a".
|
||||
#
|
||||
# If there is no index for the column, the problem does not occur.
|
||||
#
|
||||
# Interestingly, if there is no second column, the words are returned
|
||||
# in the correct order.
|
||||
#
|
||||
# According to EXPLAIN, it looks like when the output includes columns that
|
||||
# are not part of the index sorted on, it does a filesort, which fails.
|
||||
# Using a straight index yields correct results.
|
||||
|
||||
|
||||
#
|
||||
# Two fields, index
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
word VARCHAR(64),
|
||||
bar INT(11) default 0,
|
||||
PRIMARY KEY (word))
|
||||
TYPE=MyISAM
|
||||
CHARSET ucs2
|
||||
COLLATE ucs2_general_ci ;
|
||||
|
||||
INSERT INTO t1 (word) VALUES ("aar");
|
||||
INSERT INTO t1 (word) VALUES ("a");
|
||||
INSERT INTO t1 (word) VALUES ("aardvar");
|
||||
INSERT INTO t1 (word) VALUES ("aardvark");
|
||||
INSERT INTO t1 (word) VALUES ("aardvara");
|
||||
INSERT INTO t1 (word) VALUES ("aardvarz");
|
||||
EXPLAIN SELECT * FROM t1 ORDER BY word;
|
||||
SELECT * FROM t1 ORDER BY word;
|
||||
EXPLAIN SELECT word FROM t1 ORDER BY word;
|
||||
SELECT word FROM t1 ORDER by word;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# One field, index
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
word VARCHAR(64) ,
|
||||
PRIMARY KEY (word))
|
||||
TYPE=MyISAM
|
||||
CHARSET ucs2
|
||||
COLLATE ucs2_general_ci;
|
||||
|
||||
INSERT INTO t1 (word) VALUES ("aar");
|
||||
INSERT INTO t1 (word) VALUES ("a");
|
||||
INSERT INTO t1 (word) VALUES ("aardvar");
|
||||
INSERT INTO t1 (word) VALUES ("aardvark");
|
||||
INSERT INTO t1 (word) VALUES ("aardvara");
|
||||
INSERT INTO t1 (word) VALUES ("aardvarz");
|
||||
EXPLAIN SELECT * FROM t1 ORDER BY WORD;
|
||||
SELECT * FROM t1 ORDER BY word;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
#
|
||||
# Two fields, no index
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (
|
||||
word TEXT,
|
||||
bar INT(11) AUTO_INCREMENT,
|
||||
PRIMARY KEY (bar))
|
||||
TYPE=MyISAM
|
||||
CHARSET ucs2
|
||||
COLLATE ucs2_general_ci ;
|
||||
INSERT INTO t1 (word) VALUES ("aar");
|
||||
INSERT INTO t1 (word) VALUES ("a" );
|
||||
INSERT INTO t1 (word) VALUES ("aardvar");
|
||||
INSERT INTO t1 (word) VALUES ("aardvark");
|
||||
INSERT INTO t1 (word) VALUES ("aardvara");
|
||||
INSERT INTO t1 (word) VALUES ("aardvarz");
|
||||
EXPLAIN SELECT * FROM t1 ORDER BY word;
|
||||
SELECT * FROM t1 ORDER BY word;
|
||||
EXPLAIN SELECT word FROM t1 ORDER BY word;
|
||||
SELECT word FROM t1 ORDER BY word;
|
||||
DROP TABLE t1;
|
||||
|
||||
#
|
||||
# END OF Bug 1264 test
|
||||
#
|
||||
########################################################
|
||||
|
Loading…
x
Reference in New Issue
Block a user