summaryrefslogtreecommitdiff
path: root/storage/rocksdb/mysql-test/rocksdb/t/type_char_indexes.test
blob: 6ee2f03e74dc241ce107060a88f913733808c15e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
--source include/have_rocksdb.inc

#
# CHAR and VARCHAR columns with indexes
#

SET @ORIG_PAUSE_BACKGROUND_WORK = @@ROCKSDB_PAUSE_BACKGROUND_WORK;
SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK = 1;

--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings

CREATE TABLE t1 (
  c CHAR,
  c20 CHAR(20) PRIMARY KEY,
  v16 VARCHAR(16),
  v128 VARCHAR(128)
) ENGINE=rocksdb;

SHOW INDEX IN t1;

INSERT INTO t1 (c,c20,v16,v128) VALUES ('a','char1','varchar1a','varchar1b'),('a','char2','varchar2a','varchar2b'),('b','char3','varchar1a','varchar1b'),('c','char4','varchar3a','varchar3b');

--replace_column 9 #
EXPLAIN SELECT c20 FROM t1 ORDER BY c20;
SELECT c20 FROM t1 ORDER BY c20;

--replace_column 9 #
EXPLAIN SELECT c20 FROM t1 FORCE INDEX FOR ORDER BY (PRIMARY) ORDER BY c20;
SELECT c20 FROM t1 FORCE INDEX FOR ORDER BY (PRIMARY) ORDER BY c20;

DROP TABLE t1;

--disable_parsing
--error ER_GET_ERRMSG
CREATE TABLE t1 (
  c CHAR,
  c20 CHAR(20),
  v16 VARCHAR(16),
  v128 VARCHAR(128),
  pk CHAR(64) PRIMARY KEY,
  UNIQUE INDEX c_v (c,v128)
) ENGINE=rocksdb;


SHOW INDEX IN t1;

INSERT INTO t1 (c,c20,v16,v128) VALUES ('a','char1','varchar1a','varchar1b'),('a','char2','varchar2a','varchar2b'),('b','char3','varchar1a','varchar1b'),('c','char4','varchar3a','varchar3b');

--replace_column 9 #
EXPLAIN SELECT c, v128 FROM t1 WHERE c != 'a' AND v128 > 'varchar';
--sorted_result
SELECT c, v128 FROM t1 WHERE c != 'a' AND v128 > 'varchar';

--replace_column 9 #
EXPLAIN SELECT v128, COUNT(*) FROM t1 GROUP BY v128;
--sorted_result
SELECT v128, COUNT(*) FROM t1 GROUP BY v128;

--replace_column 9 #
EXPLAIN SELECT v128, COUNT(*) FROM t1 USE INDEX FOR GROUP BY (c_v) GROUP BY v128;
--sorted_result
SELECT v128, COUNT(*) FROM t1 USE INDEX FOR GROUP BY (c_v) GROUP BY v128;

SET SESSION optimizer_switch = 'engine_condition_pushdown=on';
--replace_column 9 #
EXPLAIN SELECT c,c20,v16,v128 FROM t1 WHERE c > 'a';
--sorted_result
SELECT c,c20,v16,v128 FROM t1 WHERE c > 'a';
SET SESSION optimizer_switch = @@global.optimizer_switch;

DROP TABLE t1;

--enable_parsing

CREATE TABLE t1 (
  c CHAR,
  c20 CHAR(20),
  v16 VARCHAR(16),
  v128 VARCHAR(128),
  pk VARCHAR(64) PRIMARY KEY,
  INDEX (v16)
) ENGINE=rocksdb;

SHOW INDEX IN t1;

INSERT INTO t1 (c,c20,v16,v128,pk) VALUES ('a','char1','varchar1a','varchar1b','1'),('a','char2','varchar2a','varchar2b','2'),('b','char3','varchar1a','varchar1b','3'),('c','char4','varchar3a','varchar3b','4');

--replace_column 9 #
EXPLAIN SELECT SUBSTRING(v16,0,3) FROM t1 WHERE v16 LIKE 'varchar%';
--sorted_result
SELECT SUBSTRING(v16,7,3) FROM t1 WHERE v16 LIKE 'varchar%';

--replace_column 9 #
EXPLAIN SELECT SUBSTRING(v16,0,3) FROM t1 IGNORE INDEX (v16) WHERE v16 LIKE 'varchar%';
--sorted_result
SELECT SUBSTRING(v16,7,3) FROM t1 IGNORE INDEX (v16) WHERE v16 LIKE 'varchar%';

--replace_column 9 #
EXPLAIN SELECT c,c20,v16,v128 FROM t1 WHERE v16 = 'varchar1a' OR v16 = 'varchar3a' ORDER BY v16;
--sorted_result
SELECT c,c20,v16,v128 FROM t1 WHERE v16 = 'varchar1a' OR v16 = 'varchar3a' ORDER BY v16;

DROP TABLE t1;

SET GLOBAL ROCKSDB_PAUSE_BACKGROUND_WORK = @ORIG_PAUSE_BACKGROUND_WORK;