summaryrefslogtreecommitdiff
path: root/mysql-test/r/null_key.result
blob: a28830a696d144b5bfd20172d7001fabcc59b88a (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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
drop table if exists t1;
create table t1 (a int, b int not null,unique key (a,b),index(b)) type=myisam;
insert ignore into t1 values (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(null,7),(9,9),(8,8),(7,7),(null,9),(null,9),(6,6);
explain select * from t1 where a is null;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ref	a	a	5	const	3	where used; Using index
explain select * from t1 where a is null and b = 2;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ref	a,b	a	9	const,const	1	where used; Using index
explain select * from t1 where a is null and b = 7;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ref	a,b	a	9	const,const	1	where used; Using index
explain select * from t1 where a=2 and b = 2;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	const	a,b	a	9	const,const	1	
explain select * from t1 where a<=>b limit 2;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	index	NULL	a	9	NULL	12	where used; Using index
explain select * from t1 where (a is null or a > 0 and a < 3) and b < 5 limit 3;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	range	a,b	a	9	NULL	3	where used; Using index
explain select * from t1 where (a is null or a = 7) and b=7;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ref	a,b	b	4	const	2	where used
explain select * from t1 where (a is null and b>a) or a is null and b=7 limit 2;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ref	a,b	a	5	const	3	where used; Using index
explain select * from t1 where a is null and b=9 or a is null and b=7 limit 3;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	range	a,b	a	9	NULL	2	where used; Using index
explain select * from t1 where a > 1 and a < 3 limit 1;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	range	a	a	5	NULL	1	where used; Using index
explain select * from t1 where a > 8 and a < 9;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	range	a	a	5	NULL	1	where used; Using index
select * from t1 where a is null;
a	b
NULL	7
NULL	9
NULL	9
select * from t1 where a is null and b = 7;
a	b
NULL	7
select * from t1 where a<=>b limit 2;
a	b
1	1
2	2
select * from t1 where (a is null or a > 0 and a < 3) and b < 5 limit 3;
a	b
1	1
2	2
select * from t1 where (a is null or a > 0 and a < 3) and b > 7 limit 3;
a	b
NULL	9
NULL	9
select * from t1 where (a is null or a = 7) and b=7;
a	b
NULL	7
7	7
select * from t1 where a is null and b=9 or a is null and b=7 limit 3;
a	b
NULL	7
NULL	9
NULL	9
alter table t1 modify b blob not null, add c int not null, drop key a, add unique key (a,b(20),c), drop key b, add key (b(10));
explain select * from t1 where a is null and b = 2;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ref	a,b	a	5	const	3	where used
explain select * from t1 where a is null and b = 2 and c=0;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ref	a,b	a	5	const	3	where used
explain select * from t1 where a is null and b = 7 and c=0;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ref	a,b	a	5	const	3	where used
explain select * from t1 where a=2 and b = 2;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ref	a,b	a	5	const	1	where used
explain select * from t1 where a<=>b limit 2;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ALL	NULL	NULL	NULL	NULL	12	where used
explain select * from t1 where (a is null or a > 0 and a < 3) and b < 5 and c=0 limit 3;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	range	a,b	a	5	NULL	5	where used
explain select * from t1 where (a is null or a = 7) and b=7 and c=0;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	range	a,b	a	5	NULL	4	where used
explain select * from t1 where (a is null and b>a) or a is null and b=7 limit 2;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ref	a,b	a	5	const	3	where used
explain select * from t1 where a is null and b=9 or a is null and b=7 limit 3;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ref	a,b	a	5	const	3	where used
explain select * from t1 where a > 1 and a < 3 limit 1;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	range	a	a	5	NULL	1	where used
explain select * from t1 where a is null and b=7 or a > 1 and a < 3 limit 1;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	range	a,b	a	5	NULL	4	where used
explain select * from t1 where a > 8 and a < 9;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	range	a	a	5	NULL	1	where used
explain select * from t1 where b like "6%";
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	range	b	b	12	NULL	1	where used
select * from t1 where a is null;
a	b	c
NULL	7	0
NULL	9	0
NULL	9	0
select * from t1 where a is null and b = 7 and c=0;
a	b	c
NULL	7	0
select * from t1 where a<=>b limit 2;
a	b	c
1	1	0
2	2	0
select * from t1 where (a is null or a > 0 and a < 3) and b < 5 limit 3;
a	b	c
1	1	0
2	2	0
select * from t1 where (a is null or a > 0 and a < 3) and b > 7 limit 3;
a	b	c
NULL	9	0
NULL	9	0
select * from t1 where (a is null or a = 7) and b=7 and c=0;
a	b	c
NULL	7	0
7	7	0
select * from t1 where a is null and b=9 or a is null and b=7 limit 3;
a	b	c
NULL	7	0
NULL	9	0
NULL	9	0
select * from t1 where b like "6%";
a	b	c
6	6	0
drop table t1;
DROP TABLE IF EXISTS t1,t2;
CREATE TABLE t1 (
id int(10) unsigned NOT NULL auto_increment,
uniq_id int(10) unsigned default NULL,
PRIMARY KEY  (id),
UNIQUE KEY idx1 (uniq_id)
) TYPE=MyISAM;
CREATE TABLE t2 (
id int(10) unsigned NOT NULL auto_increment,
uniq_id int(10) unsigned default NULL,
PRIMARY KEY  (id)
) TYPE=MyISAM;
INSERT INTO t1 VALUES (1,NULL),(2,NULL),(3,1),(4,2),(5,NULL),(6,NULL),(7,3),(8,4),(9,NULL),(10,NULL);
INSERT INTO t2 VALUES (1,NULL),(2,NULL),(3,1),(4,2),(5,NULL),(6,NULL),(7,3),(8,4),(9,NULL),(10,NULL);
explain select id from t1 where uniq_id is null;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	ref	idx1	idx1	5	const	1	where used
explain select id from t1 where uniq_id =1;
table	type	possible_keys	key	key_len	ref	rows	Extra
t1	const	idx1	idx1	5	const	1	
UPDATE t1 SET id=id+100 where uniq_id is null;
UPDATE t2 SET id=id+100 where uniq_id is null;
select id from t1 where uniq_id is null;
id
101
102
105
106
109
110
select id from t2 where uniq_id is null;
id
101
102
105
106
109
110
DELETE FROM t1 WHERE uniq_id IS NULL;
DELETE FROM t2 WHERE uniq_id IS NULL;
SELECT * FROM t1 ORDER BY uniq_id, id;
id	uniq_id
3	1
4	2
7	3
8	4
SELECT * FROM t2 ORDER BY uniq_id, id;
id	uniq_id
3	1
4	2
7	3
8	4
DROP table t1,t2;