2
# Problem with range optimizer
6
drop table if exists t1, t2, t3;
10
event_date date DEFAULT '0000-00-00' NOT NULL,
11
type int(11) DEFAULT '0' NOT NULL,
12
event_id int(11) 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 smallint(6) DEFAULT '0' NOT NULL,
42
YEAR smallint(6) DEFAULT '0' NOT NULL,
43
ISSUE smallint(6) DEFAULT '0' NOT NULL,
44
CLOSED tinyint(4) DEFAULT '0' NOT NULL,
45
ISS_DATE date DEFAULT '0000-00-00' 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;
69
id int(11) NOT NULL auto_increment,
70
parent_id int(11) DEFAULT '0' NOT NULL,
71
level tinyint(4) DEFAULT '0' NOT NULL,
73
KEY parent_id (parent_id),
76
INSERT INTO t1 VALUES (1,0,0), (3,1,1), (4,1,1), (8,2,2), (9,2,2), (17,3,2),
77
(22,4,2), (24,4,2), (28,5,2), (29,5,2), (30,5,2), (31,6,2), (32,6,2), (33,6,2),
78
(203,7,2), (202,7,2), (20,3,2), (157,0,0), (193,5,2), (40,7,2), (2,1,1),
79
(15,2,2), (6,1,1), (34,6,2), (35,6,2), (16,3,2), (7,1,1), (36,7,2), (18,3,2),
80
(26,5,2), (27,5,2), (183,4,2), (38,7,2), (25,5,2), (37,7,2), (21,4,2),
81
(19,3,2), (5,1,1), (179,5,2);
82
SELECT * FROM t1 WHERE level = 1 AND parent_id = 1;
83
# The following select returned 0 rows in 3.23.8
84
SELECT * FROM t1 WHERE level = 1 AND parent_id = 1 order by id;
88
# Testing of bug in range optimizer with many key parts and > and <
92
Satellite varchar(25) not null,
93
SensorMode varchar(25) not null,
94
FullImageCornersUpperLeftLongitude double not null,
95
FullImageCornersUpperRightLongitude double not null,
96
FullImageCornersUpperRightLatitude double not null,
97
FullImageCornersLowerRightLatitude double not null,
98
index two (Satellite, SensorMode, FullImageCornersUpperLeftLongitude, FullImageCornersUpperRightLongitude, FullImageCornersUpperRightLatitude, FullImageCornersLowerRightLatitude));
100
insert into t1 values("OV-3","PAN1",91,-92,40,50);
101
insert into t1 values("OV-4","PAN1",91,-92,40,50);
103
select * from t1 where t1.Satellite = "OV-3" and t1.SensorMode = "PAN1" and t1.FullImageCornersUpperLeftLongitude > -90.000000 and t1.FullImageCornersUpperRightLongitude < -82.000000;
106
create table t1 ( aString char(100) not null default "", key aString (aString(10)) );
107
insert t1 (aString) values ( "believe in myself" ), ( "believe" ), ("baaa" ), ( "believe in love");
108
select * from t1 where aString < "believe in myself" order by aString;
109
select * from t1 where aString > "believe in love" order by aString;
110
alter table t1 drop key aString;
111
select * from t1 where aString < "believe in myself" order by aString;
112
select * from t1 where aString > "believe in love" order by aString;
116
# Problem with binary strings
120
t1ID int(10) unsigned NOT NULL auto_increment,
121
art binary(1) NOT NULL default '',
122
KNR char(5) NOT NULL default '',
123
RECHNR char(6) NOT NULL default '',
124
POSNR char(2) NOT NULL default '',
125
ARTNR char(10) NOT NULL default '',
126
TEX char(70) NOT NULL default '',
133
INSERT INTO t1 (art) VALUES ('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
('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j'),('j');
171
select count(*) from t1 where upper(art) = 'J';
172
select count(*) from t1 where art = 'J' or art = 'j';
173
select count(*) from t1 where art = 'j' or art = 'J';
174
select count(*) from t1 where art = 'j';
175
select count(*) from t1 where art = 'J';
180
create table t1 (x int, y int, index(x), index(y));
181
insert into t1 (x) values (1),(2),(3),(4),(5),(6),(7),(8),(9);
183
# between with only one end fixed
184
explain select * from t1, t1 t2 where t1.y = 8 and t2.x between 7 and t1.y+0;
185
explain select * from t1, t1 t2 where t1.y = 8 and t2.x >= 7 and t2.x <= t1.y+0;
186
# between with both expressions on both ends
187
explain select * from t1, t1 t2 where t1.y = 2 and t2.x between t1.y-1 and t1.y+1;
188
explain select * from t1, t1 t2 where t1.y = 2 and t2.x >= t1.y-1 and t2.x <= t1.y+1;
189
# equation propagation
190
explain select * from t1, t1 t2 where t1.y = 2 and t2.x between 0 and t1.y;
191
explain select * from t1, t1 t2 where t1.y = 2 and t2.x >= 0 and t2.x <= t1.y;
193
explain select count(*) from t1 where x in (1);
194
explain select count(*) from t1 where x in (1,2);
198
# bug #1172: "Force index" option caused server crash
200
CREATE TABLE t1 (key1 int(11) NOT NULL default '0', KEY i1 (key1));
201
INSERT INTO t1 VALUES (0),(0),(0),(0),(0),(1),(1);
202
CREATE TABLE t2 (keya int(11) NOT NULL default '0', KEY j1 (keya));
203
INSERT INTO t2 VALUES (0),(0),(1),(1),(2),(2);
204
explain select * from t1, t2 where (t1.key1 <t2.keya + 1) and t2.keya=3;
205
explain select * from t1 force index(i1), t2 force index(j1) where
206
(t1.key1 <t2.keya + 1) and t2.keya=3;
210
# bug #1724: use RANGE on more selective column instead of REF on less
214
a int(11) default NULL,
215
b int(11) default NULL,
221
INSERT INTO t1 VALUES
222
(1,1),(2,1),(3,1),(4,1),(5,1),(6,1),(7,1),(8,1),(9,1),(10,2),(10,2),
223
(13,2),(14,2),(15,2),(16,2),(17,3),(17,3),(16,3),(17,3),(19,3),(20,3),
224
(21,4),(22,5),(23,5),(24,5),(25,5),(26,5),(30,5),(31,5),(32,5),(33,5),
225
(33,5),(33,5),(33,5),(33,5),(34,5),(35,5);
227
# we expect that optimizer will choose index on A
228
EXPLAIN SELECT * FROM t1 WHERE a IN(1,2) AND b=5;
229
SELECT * FROM t1 WHERE a IN(1,2) AND b=5;
233
# Test problem with range optimzer and sub ranges
236
CREATE TABLE t1 (a int, b int, c int, INDEX (c,a,b));
237
INSERT INTO t1 VALUES (1,0,0),(1,0,0),(1,0,0);
238
INSERT INTO t1 VALUES (0,1,0),(0,1,0),(0,1,0);
239
# -- First reports 3; second reports 6
240
SELECT COUNT(*) FROM t1 WHERE (c=0 and a=1) or (c=0 and b=1);
241
SELECT COUNT(*) FROM t1 WHERE (c=0 and b=1) or (c=0 and a=1);
245
# Test problem with range optimization over overlapping ranges (#2448)
248
CREATE TABLE t1 ( a int not null, b int not null, INDEX ab(a,b) );
249
INSERT INTO t1 VALUES (47,1), (70,1), (15,1), (15, 4);
253
( b =1 AND a BETWEEN 14 AND 21 ) OR
254
( b =2 AND a BETWEEN 16 AND 18 ) OR
255
( b =3 AND a BETWEEN 15 AND 19 ) OR
256
(a BETWEEN 19 AND 47)
261
# Test of problem with IN on many different keyparts. (Bug #4157)
265
id int( 11 ) unsigned NOT NULL AUTO_INCREMENT ,
266
line int( 5 ) unsigned NOT NULL default '0',
267
columnid int( 3 ) unsigned NOT NULL default '0',
268
owner int( 3 ) unsigned NOT NULL default '0',
269
ordinal int( 3 ) unsigned NOT NULL default '0',
270
showid smallint( 6 ) unsigned NOT NULL default '1',
271
tableid int( 1 ) unsigned NOT NULL default '1',
272
content int( 5 ) unsigned NOT NULL default '188',
273
PRIMARY KEY ( owner, id ) ,
274
KEY menu( owner, showid, columnid ) ,
275
KEY `COLUMN` ( owner, columnid, line ) ,
276
KEY `LINES` ( owner, tableid, content, id ) ,
277
KEY recount( owner, line )
280
INSERT into t1 (owner,id,columnid,line) values (11,15,15,1),(11,13,13,5);
282
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;
286
# test for a bug with in() and unique key
289
create table t1 (id int(10) primary key);
290
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9);
292
select id from t1 where id in (2,5,9) ;
293
select id from t1 where id=2 or id=5 or id=9 ;
295
create table t1 ( id1 int not null, id2 int not null, idnull int null, c char(20), primary key (id1,id2));
296
insert into t1 values (0,1,NULL,"aaa"), (1,1,NULL,"aaa"), (2,1,NULL,"aaa"),
297
(3,1,NULL,"aaa"), (4,1,NULL,"aaa"), (5,1,NULL,"aaa"),
298
(6,1,NULL,"aaa"), (7,1,NULL,"aaa"), (8,1,NULL,"aaa"),
299
(9,1,NULL,"aaa"), (10,1,NULL,"aaa"), (11,1,NULL,"aaa"),
300
(12,1,NULL,"aaa"), (13,1,NULL,"aaa"), (14,1,NULL,"aaa"),
301
(15,1,NULL,"aaa"), (16,1,NULL,"aaa"), (17,1,NULL,"aaa"),
302
(18,1,NULL,"aaa"), (19,1,NULL,"aaa"), (20,1,NULL,"aaa");
303
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;
308
# Problem with optimizing !=
312
id int not null auto_increment,
313
name char(1) not null,
316
index uid_index (uid));
319
id int not null auto_increment,
320
name char(1) not null,
323
index uid_index (uid));
325
insert into t1(id, uid, name) values(1, 0, ' ');
326
insert into t1(uid, name) values(0, ' ');
328
insert into t2(uid, name) select uid, name from t1;
329
insert into t1(uid, name) select uid, name from t2;
330
insert into t2(uid, name) select uid, name from t1;
331
insert into t1(uid, name) select uid, name from t2;
332
insert into t2(uid, name) select uid, name from t1;
333
insert into t1(uid, name) select uid, name from t2;
334
insert into t2(uid, name) select uid, name from t1;
335
insert into t1(uid, name) select uid, name from t2;
336
insert into t2(uid, name) select uid, name from t1;
337
insert into t1(uid, name) select uid, name from t2;
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 t2(uid, name) select uid, name from t1;
342
insert into t1(uid, name) select uid, name from t2;
345
insert into t2(uid, name) values
373
insert into t1(uid, name) select uid, name from t2 order by uid;
376
insert into t2(id, uid, name) select id, uid, name from t1;
378
select count(*) from t1;
379
select count(*) from t2;
383
explain select * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0;
384
explain select * from t1, t2 where t1.uid=t2.uid AND t2.uid > 0;
385
explain select * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0;
386
explain select * from t1, t2 where t1.uid=t2.uid AND t2.uid != 0;
388
select * from t1, t2 where t1.uid=t2.uid AND t1.uid > 0;
389
select * from t1, t2 where t1.uid=t2.uid AND t1.uid != 0;
395
create table t1 (x bigint unsigned not null);
396
insert into t1(x) values (0xfffffffffffffff0);
397
insert into t1(x) values (0xfffffffffffffff1);
399
select count(*) from t1 where x>0;
400
select count(*) from t1 where x=0;
401
select count(*) from t1 where x<0;
402
select count(*) from t1 where x < -16;
403
select count(*) from t1 where x = -16;
404
select count(*) from t1 where x > -16;
405
select count(*) from t1 where x = 18446744073709551601;
408
create table t2 (x bigint not null);
409
insert into t2(x) values (-16);
410
insert into t2(x) values (-15);
412
select count(*) from t2 where x>0;
413
select count(*) from t2 where x=0;
414
select count(*) from t2 where x<0;
415
select count(*) from t2 where x < -16;
416
select count(*) from t2 where x = -16;
417
select count(*) from t2 where x > -16;
418
select count(*) from t2 where x = 18446744073709551601;
422
create table t1 (x bigint unsigned not null primary key) engine=innodb;
424
insert into t1(x) values (0xfffffffffffffff0);
425
insert into t1(x) values (0xfffffffffffffff1);
427
select count(*) from t1 where x>0;
428
select count(*) from t1 where x=0;
429
select count(*) from t1 where x<0;
430
select count(*) from t1 where x < -16;
431
select count(*) from t1 where x = -16;
432
select count(*) from t1 where x > -16;
433
select count(*) from t1 where x = 18446744073709551601;
438
# Bug #11185 incorrect comparison of unsigned int to signed constant
440
create table t1 (a bigint unsigned);
441
create index t1i on t1(a);
442
insert into t1 select 18446744073709551615;
443
insert into t1 select 18446744073709551614;
445
explain select * from t1 where a <> -1;
446
select * from t1 where a <> -1;
447
explain select * from t1 where a > -1 or a < -1;
448
select * from t1 where a > -1 or a < -1;
449
explain select * from t1 where a > -1;
450
select * from t1 where a > -1;
451
explain select * from t1 where a < -1;
452
select * from t1 where a < -1;
457
# Bug #6045: Binary Comparison regression in MySQL 4.1
458
# Binary searches didn't use a case insensitive index.
461
create table t1 (a char(10), b text, key (a)) character set latin1;
462
INSERT INTO t1 (a) VALUES
463
('111'),('222'),('222'),('222'),('222'),('444'),('aaa'),('AAA'),('bbb');
464
# all these three can be optimized
465
explain select * from t1 where a='aaa';
466
explain select * from t1 where a=binary 'aaa';
467
explain select * from t1 where a='aaa' collate latin1_bin;
469
explain select * from t1 where a='aaa' collate latin1_german1_ci;
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) character set latin1 collate latin1_bin NOT NULL default '000',
476
`ARG1` char(3) character set latin1 collate latin1_bin NOT NULL default '',
477
`ARG2` char(3) character set latin1 collate latin1_bin NOT NULL default '',
478
`FUNCTION` varchar(10) character set latin1 collate latin1_bin NOT NULL default '',
479
`FUNCTINT` int(11) NOT NULL default '0',
480
KEY `VERI_CLNT~2` (`ARG1`)
481
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
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);
499
pk1 int(11) NOT NULL,
500
pk2 int(11) NOT NULL,
501
pk3 int(11) NOT NULL,
502
pk4 int(11) NOT NULL,
504
PRIMARY KEY (pk1,pk2,pk3,pk4)
505
) DEFAULT CHARSET=latin1;
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) COLLATE latin1_german2_ci NOT NULL DEFAULT '',
534
OXPARENTID varchar(32) COLLATE latin1_german2_ci NOT NULL DEFAULT 'oxrootid',
535
OXLEFT int NOT NULL DEFAULT '0',
536
OXRIGHT int NOT NULL DEFAULT '0',
537
OXROOTID varchar(32) COLLATE latin1_german2_ci NOT NULL DEFAULT '',
541
KEY OXRIGHT (OXRIGHT),
542
KEY OXROOTID (OXROOTID)
543
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci;
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');
559
SELECT s.oxid FROM t1 v, t1 s
560
WHERE s.oxrootid = 'd8c4177d09f8b11f5.52725521' AND
561
v.oxrootid ='d8c4177d09f8b11f5.52725521' AND
562
s.oxleft > v.oxleft AND s.oxleft < v.oxright;
564
SELECT s.oxid FROM t1 v, t1 s
565
WHERE s.oxrootid = 'd8c4177d09f8b11f5.52725521' AND
566
v.oxrootid ='d8c4177d09f8b11f5.52725521' AND
567
s.oxleft > v.oxleft AND s.oxleft < v.oxright;
571
# BUG#26624 high mem usage (crash) in range optimizer (depends on order of fields in where)
573
c1 char(10), c2 char(10), c3 char(10), c4 char(10),
574
c5 char(10), c6 char(10), c7 char(10), c8 char(10),
575
c9 char(10), c10 char(10), c11 char(10), c12 char(10),
576
c13 char(10), c14 char(10), c15 char(10), c16 char(10),
577
index(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,c13,c14,c15,c16)
579
insert into t1 (c1) values ('1'),('1'),('1'),('1');
581
# This must run without crash and fast:
582
select * from t1 where
583
c1 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
584
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
585
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
586
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
587
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
588
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
589
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
590
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
591
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
592
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
593
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
594
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
595
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
596
and c2 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
597
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
598
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
599
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
600
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
601
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
602
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
603
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
604
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
605
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
606
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
607
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
608
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
609
and c3 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
610
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
611
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
612
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
613
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
614
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
615
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
616
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
617
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
618
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
619
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
620
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
621
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
622
and c4 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
623
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
624
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
625
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
626
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
627
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
628
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
629
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
630
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
631
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
632
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
633
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
634
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
635
and c5 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
636
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
637
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
638
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
639
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
640
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
641
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
642
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
643
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
644
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
645
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
646
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
647
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
648
and c6 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
649
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
650
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
651
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
652
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
653
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
654
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
655
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
656
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
657
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
658
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
659
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
660
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
661
and c7 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
662
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
663
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
664
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
665
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
666
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
667
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
668
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
669
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
670
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
671
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
672
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
673
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
674
and c8 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
675
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
676
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
677
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
678
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
679
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
680
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
681
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
682
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
683
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
684
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
685
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
686
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
687
and c9 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
688
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
689
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
690
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
691
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
692
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
693
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
694
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
695
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
696
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
697
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
698
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
699
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
700
and c10 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
701
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
702
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
703
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
704
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
705
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
706
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
707
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
708
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
709
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
710
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
711
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
712
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC");
714
--echo End of 4.1 tests
717
# Test for optimization request #10561: to use keys for
718
# NOT IN (c1,...,cn) and NOT BETWEEN c1 AND c2
722
id int(11) NOT NULL auto_increment,
728
INSERT INTO t1 VALUES
729
(1,'B'), (2,'B'), (3,'B'), (4,'B'), (5,'B'), (6,'B'),
730
(7,'B'), (8,'B'), (9,'B'), (10,'B'), (11,'B'), (12,'B'),
731
(13,'B'), (14,'B'), (15,'B'), (16,'B'), (17,'B'), (18,'B'),
732
(19,'B'), (20,'B'), (21,'B'), (22,'B'), (23,'B'), (24,'B'),
733
(25,'A'), (26,'A'), (27,'A'), (28,'A'), (29,'A'), (30,'A'),
734
(31,'A'), (32,'A'), (33,'A'), (34,'A'), (35,'A'), (36,'A'),
735
(37,'A'), (38,'A'), (39,'A'), (40,'A'), (41,'A'), (42,'A'),
736
(43,'A'), (44,'A'), (45,'A'), (46,'A'), (47,'A'), (48,'A'),
737
(49,'A'), (50,'A'), (51,'A'), (52,'A'), (53,'C'), (54,'C'),
738
(55,'C'), (56,'C'), (57,'C'), (58,'C'), (59,'C'), (60,'C');
740
EXPLAIN SELECT * FROM t1 WHERE status <> 'A' AND status <> 'B';
741
EXPLAIN SELECT * FROM t1 WHERE status NOT IN ('A','B');
743
SELECT * FROM t1 WHERE status <> 'A' AND status <> 'B';
744
SELECT * FROM t1 WHERE status NOT IN ('A','B');
746
EXPLAIN SELECT status FROM t1 WHERE status <> 'A' AND status <> 'B';
747
EXPLAIN SELECT status FROM t1 WHERE status NOT IN ('A','B');
749
EXPLAIN SELECT * FROM t1 WHERE status NOT BETWEEN 'A' AND 'B';
750
EXPLAIN SELECT * FROM t1 WHERE status < 'A' OR status > 'B';
752
SELECT * FROM t1 WHERE status NOT BETWEEN 'A' AND 'B';
753
SELECT * FROM t1 WHERE status < 'A' OR status > 'B';
758
# Test for bug #10031: range to be used over a view
761
CREATE TABLE t1 (a int, b int, primary key(a,b));
763
INSERT INTO t1 VALUES
764
(1,1),(1,2),(1,3),(2,1),(2,2),(2,3),(3,1),(3,2),(3,3),(4,1),(4,2),(4,3);
766
CREATE VIEW v1 as SELECT a,b FROM t1 WHERE b=3;
768
EXPLAIN SELECT a,b FROM t1 WHERE a < 2 and b=3;
769
EXPLAIN SELECT a,b FROM v1 WHERE a < 2 and b=3;
771
EXPLAIN SELECT a,b FROM t1 WHERE a < 2;
772
EXPLAIN SELECT a,b FROM v1 WHERE a < 2;
774
SELECT a,b FROM t1 WHERE a < 2 and b=3;
775
SELECT a,b FROM v1 WHERE a < 2 and b=3;
781
# Bug #11853: DELETE statement with a NOT (LIKE/<=>) where condition
782
# for an indexed attribute
785
CREATE TABLE t1 (name varchar(15) NOT NULL, KEY idx(name));
786
INSERT INTO t1 VALUES ('Betty'), ('Anna');
789
DELETE FROM t1 WHERE name NOT LIKE 'A%a';
794
CREATE TABLE t1 (a int, KEY idx(a));
795
INSERT INTO t1 VALUES (NULL), (1), (2), (3);
798
DELETE FROM t1 WHERE NOT(a <=> 2);
804
# BUG#13317: range optimization doesn't work for IN over VIEW.
806
create table t1 (a int, b int, primary key(a,b));
807
create view v1 as select a, b from t1;
809
INSERT INTO `t1` VALUES
810
(0,0),(1,0),(2,0),(3,0),(4,0),(5,1),(6,1),(7,1),(8,1),(9,1),(10,2),(11,2),(12,2)
811
,(13,2),(14,2),(15,3),(16,3),(17,3),(18,3),(19,3);
814
explain select * from t1 where a in (3,4) and b in (1,2,3);
816
explain select * from v1 where a in (3,4) and b in (1,2,3);
818
explain select * from t1 where a between 3 and 4 and b between 1 and 2;
820
explain select * from v1 where a between 3 and 4 and b between 1 and 2;
826
create table t3 (a int);
827
insert into t3 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
829
create table t1 (a varchar(10), filler char(200), key(a)) charset=binary;
830
insert into t1 values ('a','');
831
insert into t1 values ('a ','');
832
insert into t1 values ('a ', '');
833
insert into t1 select concat('a', 1000 + A.a + 10 * (B.a + 10 * C.a)), ''
834
from t3 A, t3 B, t3 C;
836
create table t2 (a varchar(10), filler char(200), key(a));
837
insert into t2 select * from t1;
840
explain select * from t1 where a between 'a' and 'a ';
842
explain select * from t1 where a = 'a' or a='a ';
845
explain select * from t2 where a between 'a' and 'a ';
847
explain select * from t2 where a = 'a' or a='a ';
849
update t1 set a='b' where a<>'a';
851
explain select * from t1 where a not between 'b' and 'b';
852
select a, hex(filler) from t1 where a not between 'b' and 'b';
859
create table t1 (a int);
860
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
861
create table t2 (a int, key(a));
862
insert into t2 select 2*(A.a + 10*(B.a + 10*C.a)) from t1 A, t1 B, t1 C;
864
set @a="select * from t2 force index (a) where a NOT IN(0";
865
select count(*) from (select @a:=concat(@a, ',', a) from t2 ) Z;
866
set @a=concat(@a, ')');
868
insert into t2 values (11),(13),(15);
870
set @b= concat("explain ", @a);
872
prepare stmt1 from @b;
875
prepare stmt1 from @a;
881
# Bug #18165: range access for BETWEEN with a constant for the first argument
885
id int NOT NULL DEFAULT '0',
886
b int NOT NULL DEFAULT '0',
887
c int NOT NULL DEFAULT '0',
888
INDEX idx1(b,c), INDEX idx2(c));
890
INSERT INTO t1(id) VALUES (1), (2), (3), (4), (5), (6), (7), (8);
892
INSERT INTO t1(b,c) VALUES (3,4), (3,4);
894
SELECT * FROM t1 WHERE b<=3 AND 3<=c;
895
SELECT * FROM t1 WHERE 3 BETWEEN b AND c;
897
EXPLAIN SELECT * FROM t1 WHERE b<=3 AND 3<=c;
898
EXPLAIN SELECT * FROM t1 WHERE 3 BETWEEN b AND c;
900
SELECT * FROM t1 WHERE 0 < b OR 0 > c;
901
SELECT * FROM t1 WHERE 0 NOT BETWEEN b AND c;
903
EXPLAIN SELECT * FROM t1 WHERE 0 < b OR 0 > c;
904
EXPLAIN SELECT * FROM t1 WHERE 0 NOT BETWEEN b AND c;
909
# Bug #16249: different results for a range with an without index
910
# when a range condition use an invalid datetime constant
914
item char(20) NOT NULL default '',
915
started datetime NOT NULL default '0000-00-00 00:00:00',
916
price decimal(16,3) NOT NULL default '0.000',
917
PRIMARY KEY (item,started)
920
INSERT INTO t1 VALUES
921
('A1','2005-11-01 08:00:00',1000),
922
('A1','2005-11-15 00:00:00',2000),
923
('A1','2005-12-12 08:00:00',3000),
924
('A2','2005-12-01 08:00:00',1000);
926
EXPLAIN SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 24:00:00';
927
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 24:00:00';
928
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-02 00:00:00';
930
DROP INDEX `PRIMARY` ON t1;
932
EXPLAIN SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 24:00:00';
933
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 24:00:00';
934
SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-02 00:00:00';
939
--echo BUG#32198 "Comparison of DATE with DATETIME still not using indexes correctly"
942
id int(11) NOT NULL auto_increment,
943
dateval date default NULL,
945
KEY dateval (dateval)
946
) AUTO_INCREMENT=173;
948
INSERT INTO t1 VALUES
949
(1,'2007-01-01'),(2,'2007-01-02'),(3,'2007-01-03'),(4,'2007-01-04'),
950
(5,'2007-01-05'),(6,'2007-01-06'),(7,'2007-01-07'),(8,'2007-01-08'),
951
(9,'2007-01-09'),(10,'2007-01-10'),(11,'2007-01-11');
953
--echo This must use range access:
954
explain select * from t1 where dateval >= '2007-01-01 00:00:00' and dateval <= '2007-01-02 23:59:59';
959
# Bug #33833: different or-ed predicates were erroneously merged into one that
960
# resulted in ref access instead of range access and a wrong result set
964
a varchar(32), index (a)
965
) DEFAULT CHARSET=latin1 COLLATE=latin1_bin;
967
INSERT INTO t1 VALUES
968
('B'), ('A'), ('A'), ('C'), ('B'), ('A'), ('A');
970
SELECT a FROM t1 WHERE a='b' OR a='B';
971
EXPLAIN SELECT a FROM t1 WHERE a='b' OR a='B';
976
# Bug #34731: highest possible value for INT erroneously filtered by WHERE
979
# test UNSIGNED. only occurs when indexed.
980
CREATE TABLE t1 (f1 TINYINT(11) UNSIGNED NOT NULL, PRIMARY KEY (f1));
982
INSERT INTO t1 VALUES (127),(254),(0),(1),(255);
986
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 256;
987
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 256.0;
989
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 255;
991
# show we don't fiddle with lower bound on UNSIGNED
993
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < -1;
995
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -1;
1000
# test signed. only occurs when index.
1001
CREATE TABLE t1 ( f1 TINYINT(11) NOT NULL, PRIMARY KEY (f1));
1003
INSERT INTO t1 VALUES (127),(126),(0),(-128),(-127);
1007
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 128;
1008
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 128.0;
1010
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 < 127;
1014
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -129;
1015
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -129.0;
1017
SELECT SQL_NO_CACHE COUNT(*) FROM t1 WHERE f1 > -128;
1023
# BUG#22393 fix: Adjust 'ref' estimate if we have 'range' estimate for
1024
# a smaller scan interval
1025
create table t1 (a int);
1026
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
1028
create table t2 (a int, b int, filler char(100));
1029
insert into t2 select A.a + 10 * (B.a + 10 * C.a), 10, 'filler' from t1 A,
1030
t1 B, t1 C where A.a < 5;
1032
insert into t2 select 1000, b, 'filler' from t2;
1033
alter table t2 add index (a,b);
1035
# ( 1 , 10, 'filler')
1036
# ( 2 , 10, 'filler')
1037
# ( 3 , 10, 'filler')
1038
# (... , 10, 'filler')
1040
# (1000, 10, 'filler') - 500 times
1044
select 'In following EXPLAIN the access method should be ref, #rows~=500 (and not 2)' Z;
1045
explain select * from t2 where a=1000 and b<11;
1049
--echo End of 5.1 tests
1052
# BUG#32262 fix: crash with decimal column...
1055
CREATE TABLE t1 (c1 DECIMAL(10,0),INDEX(c1));
1056
INSERT INTO t1 VALUES (1),(2),(3);
1057
SELECT c1 FROM t1 WHERE c1 >= 'A' GROUP BY 1;
1061
# BUG#32229: Range optimizer crashes for 'range checked for each record' query
1063
create table t1 (a int,b int,key (b),key (a),key (b,a));
1064
insert into t1(a,b) values (1,2),(3,4),(5,6),(7,8);
1065
create table t2 (c int);
1066
insert into t2(c) values (1),(5),(6),(7),(8);
1067
select 1 from (select c from t1,t2 where b >= 1 and a <=> c group by 1 limit 1) as d1;