2
# Problem with range optimizer
6
drop table if exists t1, t2, t3;
11
type int DEFAULT '0' NOT NULL,
12
event_id int DEFAULT '0' NOT NULL,
13
PRIMARY KEY (event_date,type,event_id)
16
INSERT INTO t1 VALUES ('1999-07-10',100100,24), ('1999-07-11',100100,25),
17
('1999-07-13',100600,0), ('1999-07-13',100600,4), ('1999-07-13',100600,26),
18
('1999-07-14',100600,10), ('1999-07-15',100600,16), ('1999-07-15',100800,45),
19
('1999-07-15',101000,47), ('1999-07-16',100800,46), ('1999-07-20',100600,5),
20
('1999-07-20',100600,27), ('1999-07-21',100600,11), ('1999-07-22',100600,17),
21
('1999-07-23',100100,39), ('1999-07-24',100100,39), ('1999-07-24',100500,40),
22
('1999-07-25',100100,39), ('1999-07-27',100600,1), ('1999-07-27',100600,6),
23
('1999-07-27',100600,28), ('1999-07-28',100600,12), ('1999-07-29',100500,41),
24
('1999-07-29',100600,18), ('1999-07-30',100500,41), ('1999-07-31',100500,41),
25
('1999-08-01',100700,34), ('1999-08-03',100600,7), ('1999-08-03',100600,29),
26
('1999-08-04',100600,13), ('1999-08-05',100500,42), ('1999-08-05',100600,19),
27
('1999-08-06',100500,42), ('1999-08-07',100500,42), ('1999-08-08',100500,42),
28
('1999-08-10',100600,2), ('1999-08-10',100600,9), ('1999-08-10',100600,30),
29
('1999-08-11',100600,14), ('1999-08-12',100600,20), ('1999-08-17',100500,8),
30
('1999-08-17',100600,31), ('1999-08-18',100600,15), ('1999-08-19',100600,22),
31
('1999-08-24',100600,3), ('1999-08-24',100600,32), ('1999-08-27',100500,43),
32
('1999-08-31',100600,33), ('1999-09-17',100100,37), ('1999-09-18',100100,37),
33
('1999-09-19',100100,37), ('2000-12-18',100700,38);
35
select event_date,type,event_id from t1 WHERE event_date >= "1999-07-01" AND event_date < "1999-07-15" AND (type=100600 OR type=100100) ORDER BY event_date;
36
explain select event_date,type,event_id from t1 WHERE type = 100601 and event_date >= "1999-07-01" AND event_date < "1999-07-15" AND (type=100600 OR type=100100) ORDER BY event_date;
37
select event_date,type,event_id from t1 WHERE event_date >= "1999-07-01" AND event_date <= "1999-07-15" AND (type=100600 OR type=100100) or event_date >= "1999-07-01" AND event_date <= "1999-07-15" AND type=100099;
41
PAPER_ID int DEFAULT '0' NOT NULL,
42
YEAR int DEFAULT '0' NOT NULL,
43
ISSUE int DEFAULT '0' NOT NULL,
44
CLOSED int DEFAULT '0' NOT NULL,
46
PRIMARY KEY (PAPER_ID,YEAR,ISSUE)
48
INSERT INTO t1 VALUES (3,1999,34,0,'1999-07-12'), (1,1999,111,0,'1999-03-23'),
49
(1,1999,222,0,'1999-03-23'), (3,1999,33,0,'1999-07-12'),
50
(3,1999,32,0,'1999-07-12'), (3,1999,31,0,'1999-07-12'),
51
(3,1999,30,0,'1999-07-12'), (3,1999,29,0,'1999-07-12'),
52
(3,1999,28,0,'1999-07-12'), (1,1999,40,1,'1999-05-01'),
53
(1,1999,41,1,'1999-05-01'), (1,1999,42,1,'1999-05-01'),
54
(1,1999,46,1,'1999-05-01'), (1,1999,47,1,'1999-05-01'),
55
(1,1999,48,1,'1999-05-01'), (1,1999,49,1,'1999-05-01'),
56
(1,1999,50,0,'1999-05-01'), (1,1999,51,0,'1999-05-01'),
57
(1,1999,200,0,'1999-06-28'), (1,1999,52,0,'1999-06-28'),
58
(1,1999,53,0,'1999-06-28'), (1,1999,54,0,'1999-06-28'),
59
(1,1999,55,0,'1999-06-28'), (1,1999,56,0,'1999-07-01'),
60
(1,1999,57,0,'1999-07-01'), (1,1999,58,0,'1999-07-01'),
61
(1,1999,59,0,'1999-07-01'), (1,1999,60,0,'1999-07-01'),
62
(3,1999,35,0,'1999-07-12');
63
select YEAR,ISSUE from t1 where PAPER_ID=3 and (YEAR>1999 or (YEAR=1999 and ISSUE>28)) order by YEAR,ISSUE;
68
id int NOT NULL auto_increment,
69
parent_id int DEFAULT '0' NOT NULL,
70
level int DEFAULT '0' NOT NULL,
72
KEY parent_id (parent_id),
75
INSERT INTO t1 VALUES (1,0,0), (3,1,1), (4,1,1), (8,2,2), (9,2,2), (17,3,2),
76
(22,4,2), (24,4,2), (28,5,2), (29,5,2), (30,5,2), (31,6,2), (32,6,2), (33,6,2),
77
(203,7,2), (202,7,2), (20,3,2), (157,0,0), (193,5,2), (40,7,2), (2,1,1),
78
(15,2,2), (6,1,1), (34,6,2), (35,6,2), (16,3,2), (7,1,1), (36,7,2), (18,3,2),
79
(26,5,2), (27,5,2), (183,4,2), (38,7,2), (25,5,2), (37,7,2), (21,4,2),
80
(19,3,2), (5,1,1), (179,5,2);
81
SELECT * FROM t1 WHERE level = 1 AND parent_id = 1;
82
# The following select returned 0 rows in 3.23.8
83
SELECT * FROM t1 WHERE level = 1 AND parent_id = 1 order by id;
87
# Testing of bug in range optimizer with many key parts and > and <
91
Satellite varchar(25) not null,
92
SensorMode varchar(25) not null,
93
FullImageCornersUpperLeftLongitude double not null,
94
FullImageCornersUpperRightLongitude double not null,
95
FullImageCornersUpperRightLatitude double not null,
96
FullImageCornersLowerRightLatitude double not null,
97
index two (Satellite, SensorMode, FullImageCornersUpperLeftLongitude, FullImageCornersUpperRightLongitude, FullImageCornersUpperRightLatitude, FullImageCornersLowerRightLatitude));
99
insert into t1 values("OV-3","PAN1",91,-92,40,50);
100
insert into t1 values("OV-4","PAN1",91,-92,40,50);
102
select * from t1 where t1.Satellite = "OV-3" and t1.SensorMode = "PAN1" and t1.FullImageCornersUpperLeftLongitude > -90.000000 and t1.FullImageCornersUpperRightLongitude < -82.000000;
105
create table t1 ( aString char(100) not null default "", key aString (aString(10)) );
106
insert t1 (aString) values ( "believe in myself" ), ( "believe" ), ("baaa" ), ( "believe in love");
107
select * from t1 where aString < "believe in myself" order by aString;
108
select * from t1 where aString > "believe in love" order by aString;
109
alter table t1 drop key aString;
110
select * from t1 where aString < "believe in myself" order by aString;
111
select * from t1 where aString > "believe in love" order by aString;
115
# Problem with binary strings
118
CREATE TEMPORARY TABLE t1 (
119
t1ID int NOT NULL auto_increment,
120
art varbinary(1) NOT NULL default '',
121
KNR char(5) NOT NULL default '',
122
RECHNR char(6) NOT NULL default '',
123
POSNR char(2) NOT NULL default '',
124
ARTNR char(10) NOT NULL default '',
125
TEX char(70) NOT NULL default '',
132
INSERT INTO t1 (art) VALUES ('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
133
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
134
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
135
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
136
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
137
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
138
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
139
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
140
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
141
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
142
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
143
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
144
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
145
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
146
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
147
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
148
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
149
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
150
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
151
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
152
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
153
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
154
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
155
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
156
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
157
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
158
('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),('j'),('J'),
159
('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),
160
('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),
161
('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),
162
('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),
163
('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),
164
('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),
165
('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),
166
('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),
167
('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),
168
('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),
169
('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j');
170
select count(*) from t1 where upper(art) = 'J';
171
select count(*) from t1 where art = 'J' or art = 'j';
172
select count(*) from t1 where art = 'j' or art = 'J';
173
select count(*) from t1 where art = 'j';
174
select count(*) from t1 where art = 'J';
179
create table t1 (x int, y int, index(x), index(y));
180
insert into t1 (x) values (1),(2),(3),(4),(5),(6),(7),(8),(9);
182
# between with only one end fixed
183
explain select * from t1, t1 t2 where t1.y = 8 and t2.x between 7 and t1.y+0;
184
explain select * from t1, t1 t2 where t1.y = 8 and t2.x >= 7 and t2.x <= t1.y+0;
185
# between with both expressions on both ends
186
explain select * from t1, t1 t2 where t1.y = 2 and t2.x between t1.y-1 and t1.y+1;
187
explain select * from t1, t1 t2 where t1.y = 2 and t2.x >= t1.y-1 and t2.x <= t1.y+1;
188
# equation propagation
189
explain select * from t1, t1 t2 where t1.y = 2 and t2.x between 0 and t1.y;
190
explain select * from t1, t1 t2 where t1.y = 2 and t2.x >= 0 and t2.x <= t1.y;
192
explain select count(*) from t1 where x in (1);
193
explain select count(*) from t1 where x in (1,2);
197
# bug #1172: "Force index" option caused server crash
199
CREATE TABLE t1 (key1 int NOT NULL default '0', KEY i1 (key1));
200
INSERT INTO t1 VALUES (0),(0),(0),(0),(0),(1),(1);
201
CREATE TABLE t2 (keya int NOT NULL default '0', KEY j1 (keya));
202
INSERT INTO t2 VALUES (0),(0),(1),(1),(2),(2);
203
explain select * from t1, t2 where (t1.key1 <t2.keya + 1) and t2.keya=3;
204
explain select * from t1 force index(i1), t2 force index(j1) where
205
(t1.key1 <t2.keya + 1) and t2.keya=3;
209
# bug #1724: use RANGE on more selective column instead of REF on less
212
CREATE TEMPORARY TABLE t1 (
220
INSERT INTO t1 VALUES
221
(1,1),(2,1),(3,1),(4,1),(5,1),(6,1),(7,1),(8,1),(9,1),(10,2),(10,2),
222
(13,2),(14,2),(15,2),(16,2),(17,3),(17,3),(16,3),(17,3),(19,3),(20,3),
223
(21,4),(22,5),(23,5),(24,5),(25,5),(26,5),(30,5),(31,5),(32,5),(33,5),
224
(33,5),(33,5),(33,5),(33,5),(34,5),(35,5);
226
# we expect that optimizer will choose index on A
227
EXPLAIN SELECT * FROM t1 WHERE a IN(1,2) AND b=5;
228
SELECT * FROM t1 WHERE a IN(1,2) AND b=5;
232
# Test problem with range optimzer and sub ranges
235
CREATE TABLE t1 (a int, b int, c int, INDEX (c,a,b));
236
INSERT INTO t1 VALUES (1,0,0),(1,0,0),(1,0,0);
237
INSERT INTO t1 VALUES (0,1,0),(0,1,0),(0,1,0);
238
# -- First reports 3; second reports 6
239
SELECT COUNT(*) FROM t1 WHERE (c=0 and a=1) or (c=0 and b=1);
240
SELECT COUNT(*) FROM t1 WHERE (c=0 and b=1) or (c=0 and a=1);
244
# Test problem with range optimization over overlapping ranges (#2448)
247
CREATE TABLE t1 ( a int not null, b int not null, INDEX ab(a,b) );
248
INSERT INTO t1 VALUES (47,1), (70,1), (15,1), (15, 4);
252
( b =1 AND a BETWEEN 14 AND 21 ) OR
253
( b =2 AND a BETWEEN 16 AND 18 ) OR
254
( b =3 AND a BETWEEN 15 AND 19 ) OR
255
(a BETWEEN 19 AND 47)
260
# Test of problem with IN on many different keyparts. (Bug #4157)
263
CREATE TEMPORARY TABLE t1 (
264
id int NOT NULL AUTO_INCREMENT ,
265
line int NOT NULL default '0',
266
columnid int NOT NULL default '0',
267
owner int NOT NULL default '0',
268
ordinal int NOT NULL default '0',
269
showid int NOT NULL default '1',
270
tableid int NOT NULL default '1',
271
content int NOT NULL default '188',
272
PRIMARY KEY ( owner, id ) ,
273
KEY menu( owner, showid, columnid ) ,
274
KEY `COLUMN` ( owner, columnid, line ) ,
275
KEY `LINES` ( owner, tableid, content, id ) ,
276
KEY recount( owner, line )
279
INSERT into t1 (owner,id,columnid,line) values (11,15,15,1),(11,13,13,5);
281
SELECT id, columnid, tableid, content, showid, line, ordinal FROM t1 WHERE owner=11 AND ((columnid IN ( 15, 13, 14 ) AND line IN ( 1, 2, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 31 )) OR (columnid IN ( 13, 14 ) AND line IN ( 15 ))) LIMIT 0 , 30;
285
# test for a bug with in() and unique key
288
create table t1 (id int primary key);
289
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9);
291
select id from t1 where id in (2,5,9) ;
292
select id from t1 where id=2 or id=5 or id=9 ;
294
create table t1 ( id1 int not null, id2 int not null, idnull int null, c char(20), primary key (id1,id2));
295
insert into t1 values (0,1,NULL,"aaa"), (1,1,NULL,"aaa"), (2,1,NULL,"aaa"),
296
(3,1,NULL,"aaa"), (4,1,NULL,"aaa"), (5,1,NULL,"aaa"),
297
(6,1,NULL,"aaa"), (7,1,NULL,"aaa"), (8,1,NULL,"aaa"),
298
(9,1,NULL,"aaa"), (10,1,NULL,"aaa"), (11,1,NULL,"aaa"),
299
(12,1,NULL,"aaa"), (13,1,NULL,"aaa"), (14,1,NULL,"aaa"),
300
(15,1,NULL,"aaa"), (16,1,NULL,"aaa"), (17,1,NULL,"aaa"),
301
(18,1,NULL,"aaa"), (19,1,NULL,"aaa"), (20,1,NULL,"aaa");
302
select a.id1, b.idnull from t1 as a, t1 as b where a.id2=1 and a.id1=1 and b.id1=a.idnull order by b.id2 desc limit 1;
307
# Problem with optimizing !=
311
id int not null auto_increment,
312
name char(1) not null,
315
index uid_index (uid));
318
id int not null auto_increment,
319
name char(1) not null,
322
index uid_index (uid));
324
insert into t1(id, uid, name) values(1, 0, ' ');
325
insert into t1(uid, name) values(0, ' ');
327
insert into t2(uid, name) select uid, name from t1;
328
insert into t1(uid, name) select uid, name from t2;
329
insert into t2(uid, name) select uid, name from t1;
330
insert into t1(uid, name) select uid, name from t2;
331
insert into t2(uid, name) select uid, name from t1;
332
insert into t1(uid, name) select uid, name from t2;
333
insert into t2(uid, name) select uid, name from t1;
334
insert into t1(uid, name) select uid, name from t2;
335
insert into t2(uid, name) select uid, name from t1;
336
insert into t1(uid, name) select uid, name from t2;
337
insert into t2(uid, name) select uid, name from t1;
338
insert into t2(uid, name) select uid, name from t1;
339
insert into t2(uid, name) select uid, name from t1;
340
insert into t2(uid, name) select uid, name from t1;
341
insert into t1(uid, name) select uid, name from t2;
344
insert into t2(uid, name) values
372
insert into t1(uid, name) select uid, name from t2 order by uid;
375
insert into t2(id, uid, name) select id, uid, name from t1;
377
select count(*) from t1;
378
select count(*) from t2;
382
--replace_column 3 # 8 # 9 #
383
explain select * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0;
384
--replace_column 3 # 8 # 9 #
385
explain select * from t1, t2 where t1.uid=t2.uid AND t2.uid > 0;
386
--replace_column 3 # 8 # 9 #
387
explain select * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0;
388
--replace_column 3 # 8 # 9 #
389
explain select * from t1, t2 where t1.uid=t2.uid AND t2.uid != 0;
391
select * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0;
392
select * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0;
398
create table t1 (x bigint not null);
399
insert into t1(x) values (0x0ffffffffffffff0);
400
insert into t1(x) values (0x0ffffffffffffff1);
402
select count(*) from t1 where x>0;
403
select count(*) from t1 where x=0;
404
select count(*) from t1 where x<0;
405
select count(*) from t1 where x < -16;
406
select count(*) from t1 where x = -16;
407
select count(*) from t1 where x > -16;
408
select count(*) from t1 where x = 18446744073709551601;
411
create table t2 (x bigint not null);
412
insert into t2(x) values (-16);
413
insert into t2(x) values (-15);
415
select count(*) from t2 where x>0;
416
select count(*) from t2 where x=0;
417
select count(*) from t2 where x<0;
418
select count(*) from t2 where x < -16;
419
select count(*) from t2 where x = -16;
420
select count(*) from t2 where x > -16;
421
select count(*) from t2 where x = 18446744073709551601;
425
create table t1 (x bigint not null primary key) engine=innodb;
427
insert into t1(x) values (0x0ffffffffffffff0);
428
insert into t1(x) values (0x0ffffffffffffff1);
430
select count(*) from t1 where x>0;
431
select count(*) from t1 where x=0;
432
select count(*) from t1 where x<0;
433
select count(*) from t1 where x < -16;
434
select count(*) from t1 where x = -16;
435
select count(*) from t1 where x > -16;
436
select count(*) from t1 where x = 18446744073709551601;
441
# Bug #11185 incorrect comparison of int to signed constant
443
create table t1 (a bigint);
444
create index t1i on t1(a);
445
insert into t1 select 18446744073709551615;
446
insert into t1 select 18446744073709551614;
448
explain select * from t1 where a <> -1;
449
select * from t1 where a <> -1;
450
explain select * from t1 where a > -1 or a < -1;
451
select * from t1 where a > -1 or a < -1;
452
explain select * from t1 where a > -1;
453
select * from t1 where a > -1;
454
explain select * from t1 where a < -1;
455
select * from t1 where a < -1;
460
# Bug #6045: Binary Comparison regression in MySQL 4.1
461
# Binary searches didn't use a case insensitive index.
463
create table t1 (a char(10), b text, key (a));
464
INSERT INTO t1 (a) VALUES
465
('111'),('222'),('222'),('222'),('222'),('444'),('aaa'),('AAA'),('bbb');
466
# all these three can be optimized
467
explain select * from t1 where a='aaa';
468
explain select * from t1 where a=binary 'aaa';
469
explain select * from t1 where a='aaa' collate utf8_bin;
472
# Test for BUG#9348 "result for WHERE A AND (B OR C) differs from WHERE a AND (C OR B)"
475
`CLIENT` char(3) collate utf8_bin NOT NULL default '000',
476
`ARG1` char(3) collate utf8_bin NOT NULL default '',
477
`ARG2` char(3) collate utf8_bin NOT NULL default '',
478
`FUNCTION` varchar(10) collate utf8_bin NOT NULL default '',
479
`FUNCTINT` int NOT NULL default '0',
480
KEY `VERI_CLNT~2` (`ARG1`)
484
INSERT INTO t1 VALUES ('000',' 0',' 0','Text 001',0), ('000',' 0',' 1','Text 002',0),
485
('000',' 1',' 2','Text 003',0), ('000',' 2',' 3','Text 004',0),
486
('001',' 3',' 0','Text 017',0);
488
SELECT count(*) FROM t1 WHERE CLIENT='000' AND (ARG1 != ' 1' OR ARG1 != ' 2');
490
SELECT count(*) FROM t1 WHERE CLIENT='000' AND (ARG1 != ' 2' OR ARG1 != ' 1');
493
# BUG#16168: Wrong range optimizer results, "Use_count: Wrong count ..."
494
# warnings in server stderr.
495
create table t1 (a int);
496
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
504
PRIMARY KEY (pk1,pk2,pk3,pk4)
507
insert into t2 select 1, A.a+10*B.a, 432, 44, 'fillerZ' from t1 A, t1 B;
508
INSERT INTO t2 VALUES (2621, 2635, 0, 0,'filler'), (2621, 2635, 1, 0,'filler'),
509
(2621, 2635, 10, 0,'filler'), (2621, 2635, 11, 0,'filler'),
510
(2621, 2635, 14, 0,'filler'), (2621, 2635, 1000015, 0,'filler');
513
WHERE ((((pk4 =0) AND (pk1 =2621) AND (pk2 =2635)))
514
OR ((pk4 =1) AND (((pk1 IN ( 7, 2, 1 ))) OR (pk1 =522)) AND ((pk2 IN ( 0, 2635))))
515
) AND (pk3 >=1000000);
519
# Bug #20732: Partial index and long sjis search with '>' fails sometimes
522
create table t1(a char(2), key(a(1)));
523
insert into t1 values ('x'), ('xx');
524
explain select a from t1 where a > 'x';
525
select a from t1 where a > 'x';
529
# Bug #24776: assertion abort for 'range checked for each record'
533
OXID varchar(32) NOT NULL DEFAULT '',
534
OXPARENTID varchar(32) NOT NULL DEFAULT 'oxrootid',
535
OXLEFT int NOT NULL DEFAULT '0',
536
OXRIGHT int NOT NULL DEFAULT '0',
537
OXROOTID varchar(32) NOT NULL DEFAULT '',
541
KEY OXRIGHT (OXRIGHT),
542
KEY OXROOTID (OXROOTID)
545
INSERT INTO t1 VALUES
546
('d8c4177d09f8b11f5.52725521','oxrootid',1,40,'d8c4177d09f8b11f5.52725521'),
547
('d8c4177d151affab2.81582770','d8c4177d09f8b11f5.52725521',2,3,
548
'd8c4177d09f8b11f5.52725521'),
549
('d8c4177d206a333d2.74422679','d8c4177d09f8b11f5.52725521',4,5,
550
'd8c4177d09f8b11f5.52725521'),
551
('d8c4177d225791924.30714720','d8c4177d09f8b11f5.52725521',6,7,
552
'd8c4177d09f8b11f5.52725521'),
553
('d8c4177d2380fc201.39666693','d8c4177d09f8b11f5.52725521',8,9,
554
'd8c4177d09f8b11f5.52725521'),
555
('d8c4177d24ccef970.14957924','d8c4177d09f8b11f5.52725521',10,11,
556
'd8c4177d09f8b11f5.52725521');
558
--replace_column 3 # 8 # 9 #
561
SELECT s.oxid FROM t1 v, t1 s
562
WHERE s.oxrootid = 'd8c4177d09f8b11f5.52725521' AND
563
v.oxrootid ='d8c4177d09f8b11f5.52725521' AND
564
s.oxleft > v.oxleft AND s.oxleft < v.oxright;
566
SELECT s.oxid FROM t1 v, t1 s
567
WHERE s.oxrootid = 'd8c4177d09f8b11f5.52725521' AND
568
v.oxrootid ='d8c4177d09f8b11f5.52725521' AND
569
s.oxleft > v.oxleft AND s.oxleft < v.oxright;
573
# BUG#26624 high mem usage (crash) in range optimizer (depends on order of fields in where)
575
c1 char(10), c2 char(10), c3 char(10), c4 char(10),
576
c5 char(10), c6 char(10), c7 char(10), c8 char(10),
577
c9 char(10), c10 char(10), c11 char(10), c12 char(10),
578
c13 char(10), c14 char(10), c15 char(10), c16 char(10),
579
index(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,c13,c14,c15,c16)
581
insert into t1 (c1) values ('1'),('1'),('1'),('1');
583
# This must run without crash and fast:
584
select * from t1 where
585
c1 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
586
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
587
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
588
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
589
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
590
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
591
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
592
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
593
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
594
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
595
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
596
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
597
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
598
and c2 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
599
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
600
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
601
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
602
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
603
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
604
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
605
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
606
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
607
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
608
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
609
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
610
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
611
and c3 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
612
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
613
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
614
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
615
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
616
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
617
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
618
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
619
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
620
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
621
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
622
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
623
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
624
and c4 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
625
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
626
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
627
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
628
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
629
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
630
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
631
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
632
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
633
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
634
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
635
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
636
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
637
and c5 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
638
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
639
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
640
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
641
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
642
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
643
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
644
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
645
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
646
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
647
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
648
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
649
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
650
and c6 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
651
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
652
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
653
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
654
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
655
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
656
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
657
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
658
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
659
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
660
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
661
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
662
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
663
and c7 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
664
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
665
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
666
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
667
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
668
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
669
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
670
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
671
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
672
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
673
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
674
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
675
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
676
and c8 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
677
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
678
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
679
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
680
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
681
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
682
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
683
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
684
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
685
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
686
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
687
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
688
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
689
and c9 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
690
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
691
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
692
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
693
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
694
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
695
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
696
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
697
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
698
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
699
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
700
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
701
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
702
and c10 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
703
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
704
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
705
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
706
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
707
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
708
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
709
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
710
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
711
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
712
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
713
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
714
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC");
716
--echo End of 4.1 tests
719
# Test for optimization request #10561: to use keys for
720
# NOT IN (c1,...,cn) and NOT BETWEEN c1 AND c2
724
id int NOT NULL auto_increment,
730
INSERT INTO t1 VALUES
731
(1,'B'), (2,'B'), (3,'B'), (4,'B'), (5,'B'), (6,'B'),
732
(7,'B'), (8,'B'), (9,'B'), (10,'B'), (11,'B'), (12,'B'),
733
(13,'B'), (14,'B'), (15,'B'), (16,'B'), (17,'B'), (18,'B'),
734
(19,'B'), (20,'B'), (21,'B'), (22,'B'), (23,'B'), (24,'B'),
735
(25,'A'), (26,'A'), (27,'A'), (28,'A'), (29,'A'), (30,'A'),
736
(31,'A'), (32,'A'), (33,'A'), (34,'A'), (35,'A'), (36,'A'),
737
(37,'A'), (38,'A'), (39,'A'), (40,'A'), (41,'A'), (42,'A'),
738
(43,'A'), (44,'A'), (45,'A'), (46,'A'), (47,'A'), (48,'A'),
739
(49,'A'), (50,'A'), (51,'A'), (52,'A'), (53,'C'), (54,'C'),
740
(55,'C'), (56,'C'), (57,'C'), (58,'C'), (59,'C'), (60,'C');
742
EXPLAIN SELECT * FROM t1 WHERE status <> 'A' AND status <> 'B';
743
EXPLAIN SELECT * FROM t1 WHERE status NOT IN ('A','B');
745
SELECT * FROM t1 WHERE status <> 'A' AND status <> 'B';
746
SELECT * FROM t1 WHERE status NOT IN ('A','B');
748
EXPLAIN SELECT status FROM t1 WHERE status <> 'A' AND status <> 'B';
749
EXPLAIN SELECT status FROM t1 WHERE status NOT IN ('A','B');
751
EXPLAIN SELECT * FROM t1 WHERE status NOT BETWEEN 'A' AND 'B';
752
EXPLAIN SELECT * FROM t1 WHERE status < 'A' OR status > 'B';
754
SELECT * FROM t1 WHERE status NOT BETWEEN 'A' AND 'B';
755
SELECT * FROM t1 WHERE status < 'A' OR status > 'B';
760
# Bug #11853: DELETE statement with a NOT (LIKE/<=>) where condition
761
# for an indexed attribute
764
CREATE TABLE t1 (name varchar(15) NOT NULL, KEY idx(name));
765
INSERT INTO t1 VALUES ('Betty'), ('Anna');
768
DELETE FROM t1 WHERE name NOT LIKE 'A%a';
773
CREATE TABLE t1 (a int, KEY idx(a));
774
INSERT INTO t1 VALUES (NULL), (1), (2), (3);
777
DELETE FROM t1 WHERE NOT(a <=> 2);
783
create table t3 (a int);
784
insert into t3 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
786
create table t1 (a varchar(10), filler char(200), key(a));
787
insert into t1 values ('a','');
788
insert into t1 values ('a ','');
789
insert into t1 values ('a ', '');
790
insert into t1 select concat('a', 1000 + A.a + 10 * (B.a + 10 * C.a)), ''
791
from t3 A, t3 B, t3 C;
793
create table t2 (a varchar(10), filler char(200), key(a));
794
insert into t2 select * from t1;
796
--replace_column 3 # 8 # 9 #
797
explain select * from t1 where a between 'a' and 'a ';
798
--replace_column 3 # 8 # 9 #
799
explain select * from t1 where a = 'a' or a='a ';
801
--replace_column 3 # 8 # 9 #
802
explain select * from t2 where a between 'a' and 'a ';
803
--replace_column 3 # 8 # 9 #
804
explain select * from t2 where a = 'a' or a='a ';
806
update t1 set a='b' where a<>'a';
807
--replace_column 3 # 4 # 5 # 6 # 7 # 8 # 9 #
808
explain select * from t1 where a not between 'b' and 'b';
809
select a, hex(filler) from t1 where a not between 'b' and 'b';
814
# Bug #18165: range access for BETWEEN with a constant for the first argument
818
id int NOT NULL DEFAULT '0',
819
b int NOT NULL DEFAULT '0',
820
c int NOT NULL DEFAULT '0',
821
INDEX idx1(b,c), INDEX idx2(c));
823
INSERT INTO t1(id) VALUES (1), (2), (3), (4), (5), (6), (7), (8);
825
INSERT INTO t1(b,c) VALUES (3,4), (3,4);
827
SELECT * FROM t1 WHERE b<=3 AND 3<=c;
828
SELECT * FROM t1 WHERE 3 BETWEEN b AND c;
830
EXPLAIN SELECT * FROM t1 WHERE b<=3 AND 3<=c;
831
EXPLAIN SELECT * FROM t1 WHERE 3 BETWEEN b AND c;
833
SELECT * FROM t1 WHERE 0 < b OR 0 > c;
834
SELECT * FROM t1 WHERE 0 NOT BETWEEN b AND c;
836
EXPLAIN SELECT * FROM t1 WHERE 0 < b OR 0 > c;
837
EXPLAIN SELECT * FROM t1 WHERE 0 NOT BETWEEN b AND c;
842
# Bug #16249: different results for a range with an without index
843
# when a range condition use an invalid datetime constant
846
CREATE TEMPORARY TABLE t1 (
847
item char(20) NOT NULL default '',
849
price decimal(16,3) NOT NULL default '0.000',
850
PRIMARY KEY (item,started)
853
INSERT INTO t1 VALUES
854
('A1','2005-11-01 08:00:00',1000),
855
('A1','2005-11-15 00:00:00',2000),
856
('A1','2005-12-12 08:00:00',3000),
857
('A2','2005-12-01 08:00:00',1000);
859
--replace_column 3 # 8 # 9 #
860
EXPLAIN SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 23:59:59';
861
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 23:59:59';
862
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-02 00:00:00';
864
# Disabling for now, since it fails. Likely due to only currently
865
# checking for bad datetimes on string conversions...
867
#DROP INDEX `PRIMARY` ON t1;
869
#EXPLAIN SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 23:59:59';
870
#SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 23:59:59';
871
#SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-02 00:00:00';
876
--echo BUG#32198 "Comparison of DATE with DATETIME still not using indexes correctly"
879
id int NOT NULL auto_increment,
880
dateval date default NULL,
882
KEY dateval (dateval)
883
) AUTO_INCREMENT=173;
885
INSERT INTO t1 VALUES
886
(1,'2007-01-01'),(2,'2007-01-02'),(3,'2007-01-03'),(4,'2007-01-04'),
887
(5,'2007-01-05'),(6,'2007-01-06'),(7,'2007-01-07'),(8,'2007-01-08'),
888
(9,'2007-01-09'),(10,'2007-01-10'),(11,'2007-01-11');
890
--echo This must use range access:
891
explain select * from t1 where dateval >= '2007-01-01 00:00:00' and dateval <= '2007-01-02 23:59:59';
896
# Bug #33833: different or-ed predicates were erroneously merged into one that
897
# resulted in ref access instead of range access and a wrong result set
901
a varchar(32), index (a)
902
) DEFAULT COLLATE=utf8_bin;
904
INSERT INTO t1 VALUES
905
('B'), ('A'), ('A'), ('C'), ('B'), ('A'), ('A');
907
SELECT a FROM t1 WHERE a='b' OR a='B';
908
EXPLAIN SELECT a FROM t1 WHERE a='b' OR a='B';
913
# Bug #34731: highest possible value for INT erroneously filtered by WHERE
916
# test UNSIGNED. only occurs when indexed.
917
CREATE TABLE t1 (f1 int NOT NULL, PRIMARY KEY (f1));
919
INSERT INTO t1 VALUES (127),(254),(0),(1),(255);
923
SELECT COUNT(*) FROM t1 WHERE f1 < 256;
924
SELECT COUNT(*) FROM t1 WHERE f1 < 256.0;
926
SELECT COUNT(*) FROM t1 WHERE f1 < 255;
928
# show we don't fiddle with lower bound on UNSIGNED
930
SELECT COUNT(*) FROM t1 WHERE f1 < -1;
932
SELECT COUNT(*) FROM t1 WHERE f1 > -1;
937
# test signed. only occurs when index.
938
CREATE TABLE t1 ( f1 int NOT NULL, PRIMARY KEY (f1));
940
INSERT INTO t1 VALUES (127),(126),(0),(-128),(-127);
944
SELECT COUNT(*) FROM t1 WHERE f1 < 128;
945
SELECT COUNT(*) FROM t1 WHERE f1 < 128.0;
947
SELECT COUNT(*) FROM t1 WHERE f1 < 127;
951
SELECT COUNT(*) FROM t1 WHERE f1 > -129;
952
SELECT COUNT(*) FROM t1 WHERE f1 > -129.0;
954
SELECT COUNT(*) FROM t1 WHERE f1 > -128;
960
# BUG#22393 fix: Adjust 'ref' estimate if we have 'range' estimate for
961
# a smaller scan interval
962
create table t1 (a int);
963
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
965
create table t2 (a int, b int, filler char(100));
966
insert into t2 select A.a + 10 * (B.a + 10 * C.a), 10, 'filler' from t1 A,
967
t1 B, t1 C where A.a < 5;
969
insert into t2 select 1000, b, 'filler' from t2;
970
alter table t2 add index (a,b);
972
# ( 1 , 10, 'filler')
973
# ( 2 , 10, 'filler')
974
# ( 3 , 10, 'filler')
975
# (... , 10, 'filler')
977
# (1000, 10, 'filler') - 500 times
981
select 'In following EXPLAIN the access method should be ref, #rows~=500 (and not 2)' Z;
982
create temporary table t2e like t2;
983
alter table t2e engine=myisam;
984
insert into t2e select * from t2;
986
explain select * from t2e where a=1000 and b<11;
990
--echo End of 5.1 tests
993
# BUG#32262 fix: crash with decimal column...
996
CREATE TABLE t1 (c1 DECIMAL(10,0),INDEX(c1));
997
INSERT INTO t1 VALUES (1),(2),(3);
998
SELECT c1 FROM t1 WHERE c1 >= 'A' GROUP BY 1;
1002
# BUG#32229: Range optimizer crashes for 'range checked for each record' query
1004
create table t1 (a int,b int,key (b),key (a),key (b,a));
1005
insert into t1(a,b) values (1,2),(3,4),(5,6),(7,8);
1006
create table t2 (c int);
1007
insert into t2(c) values (1),(5),(6),(7),(8);
1008
select 1 from (select c from t1,t2 where b >= 1 and a <=> c group by 1 limit 1) as d1;