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 #
560
SELECT s.oxid FROM t1 v, t1 s
561
WHERE s.oxrootid = 'd8c4177d09f8b11f5.52725521' AND
562
v.oxrootid ='d8c4177d09f8b11f5.52725521' AND
563
s.oxleft > v.oxleft AND s.oxleft < v.oxright;
565
SELECT s.oxid FROM t1 v, t1 s
566
WHERE s.oxrootid = 'd8c4177d09f8b11f5.52725521' AND
567
v.oxrootid ='d8c4177d09f8b11f5.52725521' AND
568
s.oxleft > v.oxleft AND s.oxleft < v.oxright;
572
# BUG#26624 high mem usage (crash) in range optimizer (depends on order of fields in where)
574
c1 char(10), c2 char(10), c3 char(10), c4 char(10),
575
c5 char(10), c6 char(10), c7 char(10), c8 char(10),
576
c9 char(10), c10 char(10), c11 char(10), c12 char(10),
577
c13 char(10), c14 char(10), c15 char(10), c16 char(10),
578
index(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12,c13,c14,c15,c16)
580
insert into t1 (c1) values ('1'),('1'),('1'),('1');
582
# This must run without crash and fast:
583
select * from t1 where
584
c1 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
585
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
586
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
587
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
588
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
589
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
590
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
591
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
592
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
593
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
594
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
595
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
596
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
597
and c2 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
598
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
599
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
600
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
601
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
602
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
603
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
604
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
605
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
606
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
607
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
608
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
609
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
610
and c3 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
611
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
612
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
613
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
614
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
615
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
616
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
617
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
618
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
619
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
620
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
621
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
622
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
623
and c4 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
624
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
625
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
626
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
627
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
628
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
629
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
630
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
631
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
632
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
633
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
634
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
635
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
636
and c5 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
637
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
638
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
639
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
640
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
641
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
642
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
643
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
644
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
645
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
646
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
647
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
648
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
649
and c6 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
650
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
651
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
652
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
653
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
654
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
655
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
656
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
657
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
658
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
659
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
660
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
661
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
662
and c7 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
663
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
664
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
665
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
666
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
667
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
668
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
669
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
670
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
671
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
672
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
673
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
674
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
675
and c8 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
676
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
677
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
678
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
679
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
680
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
681
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
682
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
683
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
684
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
685
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
686
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
687
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
688
and c9 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
689
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
690
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
691
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
692
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
693
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
694
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
695
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
696
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
697
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
698
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
699
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
700
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC")
701
and c10 in ("abcdefgh", "123456789", "qwertyuio", "asddfgh",
702
"abcdefg1", "123456781", "qwertyui1", "asddfg1",
703
"abcdefg2", "123456782", "qwertyui2", "asddfg2",
704
"abcdefg3", "123456783", "qwertyui3", "asddfg3",
705
"abcdefg4", "123456784", "qwertyui4", "asddfg4",
706
"abcdefg5", "123456785", "qwertyui5", "asddfg5",
707
"abcdefg6", "123456786", "qwertyui6", "asddfg6",
708
"abcdefg7", "123456787", "qwertyui7", "asddfg7",
709
"abcdefg8", "123456788", "qwertyui8", "asddfg8",
710
"abcdefg9", "123456789", "qwertyui9", "asddfg9",
711
"abcdefgA", "12345678A", "qwertyuiA", "asddfgA",
712
"abcdefgB", "12345678B", "qwertyuiB", "asddfgB",
713
"abcdefgC", "12345678C", "qwertyuiC", "asddfgC");
715
--echo End of 4.1 tests
718
# Test for optimization request #10561: to use keys for
719
# NOT IN (c1,...,cn) and NOT BETWEEN c1 AND c2
723
id int NOT NULL auto_increment,
729
INSERT INTO t1 VALUES
730
(1,'B'), (2,'B'), (3,'B'), (4,'B'), (5,'B'), (6,'B'),
731
(7,'B'), (8,'B'), (9,'B'), (10,'B'), (11,'B'), (12,'B'),
732
(13,'B'), (14,'B'), (15,'B'), (16,'B'), (17,'B'), (18,'B'),
733
(19,'B'), (20,'B'), (21,'B'), (22,'B'), (23,'B'), (24,'B'),
734
(25,'A'), (26,'A'), (27,'A'), (28,'A'), (29,'A'), (30,'A'),
735
(31,'A'), (32,'A'), (33,'A'), (34,'A'), (35,'A'), (36,'A'),
736
(37,'A'), (38,'A'), (39,'A'), (40,'A'), (41,'A'), (42,'A'),
737
(43,'A'), (44,'A'), (45,'A'), (46,'A'), (47,'A'), (48,'A'),
738
(49,'A'), (50,'A'), (51,'A'), (52,'A'), (53,'C'), (54,'C'),
739
(55,'C'), (56,'C'), (57,'C'), (58,'C'), (59,'C'), (60,'C');
741
EXPLAIN SELECT * FROM t1 WHERE status <> 'A' AND status <> 'B';
742
EXPLAIN SELECT * FROM t1 WHERE status NOT IN ('A','B');
744
SELECT * FROM t1 WHERE status <> 'A' AND status <> 'B';
745
SELECT * FROM t1 WHERE status NOT IN ('A','B');
747
EXPLAIN SELECT status FROM t1 WHERE status <> 'A' AND status <> 'B';
748
EXPLAIN SELECT status FROM t1 WHERE status NOT IN ('A','B');
750
EXPLAIN SELECT * FROM t1 WHERE status NOT BETWEEN 'A' AND 'B';
751
EXPLAIN SELECT * FROM t1 WHERE status < 'A' OR status > 'B';
753
SELECT * FROM t1 WHERE status NOT BETWEEN 'A' AND 'B';
754
SELECT * FROM t1 WHERE status < 'A' OR status > 'B';
759
# Bug #11853: DELETE statement with a NOT (LIKE/<=>) where condition
760
# for an indexed attribute
763
CREATE TABLE t1 (name varchar(15) NOT NULL, KEY idx(name));
764
INSERT INTO t1 VALUES ('Betty'), ('Anna');
767
DELETE FROM t1 WHERE name NOT LIKE 'A%a';
772
CREATE TABLE t1 (a int, KEY idx(a));
773
INSERT INTO t1 VALUES (NULL), (1), (2), (3);
776
DELETE FROM t1 WHERE NOT(a <=> 2);
782
create table t3 (a int);
783
insert into t3 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
785
create table t1 (a varchar(10), filler char(200), key(a));
786
insert into t1 values ('a','');
787
insert into t1 values ('a ','');
788
insert into t1 values ('a ', '');
789
insert into t1 select concat('a', 1000 + A.a + 10 * (B.a + 10 * C.a)), ''
790
from t3 A, t3 B, t3 C;
792
create table t2 (a varchar(10), filler char(200), key(a));
793
insert into t2 select * from t1;
795
--replace_column 3 # 8 # 9 #
796
explain select * from t1 where a between 'a' and 'a ';
797
--replace_column 3 # 8 # 9 #
798
explain select * from t1 where a = 'a' or a='a ';
800
--replace_column 3 # 8 # 9 #
801
explain select * from t2 where a between 'a' and 'a ';
802
--replace_column 3 # 8 # 9 #
803
explain select * from t2 where a = 'a' or a='a ';
805
update t1 set a='b' where a<>'a';
806
--replace_column 3 # 8 # 9 #
807
explain select * from t1 where a not between 'b' and 'b';
808
select a, hex(filler) from t1 where a not between 'b' and 'b';
813
# Bug #18165: range access for BETWEEN with a constant for the first argument
817
id int NOT NULL DEFAULT '0',
818
b int NOT NULL DEFAULT '0',
819
c int NOT NULL DEFAULT '0',
820
INDEX idx1(b,c), INDEX idx2(c));
822
INSERT INTO t1(id) VALUES (1), (2), (3), (4), (5), (6), (7), (8);
824
INSERT INTO t1(b,c) VALUES (3,4), (3,4);
826
SELECT * FROM t1 WHERE b<=3 AND 3<=c;
827
SELECT * FROM t1 WHERE 3 BETWEEN b AND c;
829
EXPLAIN SELECT * FROM t1 WHERE b<=3 AND 3<=c;
830
EXPLAIN SELECT * FROM t1 WHERE 3 BETWEEN b AND c;
832
SELECT * FROM t1 WHERE 0 < b OR 0 > c;
833
SELECT * FROM t1 WHERE 0 NOT BETWEEN b AND c;
835
EXPLAIN SELECT * FROM t1 WHERE 0 < b OR 0 > c;
836
EXPLAIN SELECT * FROM t1 WHERE 0 NOT BETWEEN b AND c;
841
# Bug #16249: different results for a range with an without index
842
# when a range condition use an invalid datetime constant
845
CREATE TEMPORARY TABLE t1 (
846
item char(20) NOT NULL default '',
848
price decimal(16,3) NOT NULL default '0.000',
849
PRIMARY KEY (item,started)
852
INSERT INTO t1 VALUES
853
('A1','2005-11-01 08:00:00',1000),
854
('A1','2005-11-15 00:00:00',2000),
855
('A1','2005-12-12 08:00:00',3000),
856
('A2','2005-12-01 08:00:00',1000);
858
--replace_column 3 # 8 # 9 #
859
EXPLAIN SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 23:59:59';
860
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-02 00:00:00';
863
# Disabling for now, since it fails. Likely due to only currently
864
# checking for bad datetimes on string conversions...
866
#DROP INDEX `PRIMARY` ON t1;
868
#EXPLAIN SELECT * FROM t1 WHERE item='A1' AND started<='2005-12-01 23:59:59';
869
#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-02 00:00:00';
875
--echo BUG#32198 "Comparison of DATE with DATETIME still not using indexes correctly"
878
id int NOT NULL auto_increment,
879
dateval date default NULL,
881
KEY dateval (dateval)
882
) AUTO_INCREMENT=173;
884
INSERT INTO t1 VALUES
885
(1,'2007-01-01'),(2,'2007-01-02'),(3,'2007-01-03'),(4,'2007-01-04'),
886
(5,'2007-01-05'),(6,'2007-01-06'),(7,'2007-01-07'),(8,'2007-01-08'),
887
(9,'2007-01-09'),(10,'2007-01-10'),(11,'2007-01-11');
889
--echo This must use range access:
890
explain select * from t1 where dateval >= '2007-01-01 00:00:00' and dateval <= '2007-01-02 23:59:59';
895
# Bug #33833: different or-ed predicates were erroneously merged into one that
896
# resulted in ref access instead of range access and a wrong result set
900
a varchar(32), index (a)
901
) DEFAULT COLLATE=utf8_bin;
903
INSERT INTO t1 VALUES
904
('B'), ('A'), ('A'), ('C'), ('B'), ('A'), ('A');
906
SELECT a FROM t1 WHERE a='b' OR a='B';
907
EXPLAIN SELECT a FROM t1 WHERE a='b' OR a='B';
912
# Bug #34731: highest possible value for INT erroneously filtered by WHERE
915
# test UNSIGNED. only occurs when indexed.
916
CREATE TABLE t1 (f1 int NOT NULL, PRIMARY KEY (f1));
918
INSERT INTO t1 VALUES (127),(254),(0),(1),(255);
922
SELECT COUNT(*) FROM t1 WHERE f1 < 256;
923
SELECT COUNT(*) FROM t1 WHERE f1 < 256.0;
925
SELECT COUNT(*) FROM t1 WHERE f1 < 255;
927
# show we don't fiddle with lower bound on UNSIGNED
929
SELECT COUNT(*) FROM t1 WHERE f1 < -1;
931
SELECT COUNT(*) FROM t1 WHERE f1 > -1;
936
# test signed. only occurs when index.
937
CREATE TABLE t1 ( f1 int NOT NULL, PRIMARY KEY (f1));
939
INSERT INTO t1 VALUES (127),(126),(0),(-128),(-127);
943
SELECT COUNT(*) FROM t1 WHERE f1 < 128;
944
SELECT COUNT(*) FROM t1 WHERE f1 < 128.0;
946
SELECT COUNT(*) FROM t1 WHERE f1 < 127;
950
SELECT COUNT(*) FROM t1 WHERE f1 > -129;
951
SELECT COUNT(*) FROM t1 WHERE f1 > -129.0;
953
SELECT COUNT(*) FROM t1 WHERE f1 > -128;
959
# BUG#22393 fix: Adjust 'ref' estimate if we have 'range' estimate for
960
# a smaller scan interval
961
create table t1 (a int);
962
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
964
create table t2 (a int, b int, filler char(100));
965
insert into t2 select A.a + 10 * (B.a + 10 * C.a), 10, 'filler' from t1 A,
966
t1 B, t1 C where A.a < 5;
968
insert into t2 select 1000, b, 'filler' from t2;
969
alter table t2 add index (a,b);
971
# ( 1 , 10, 'filler')
972
# ( 2 , 10, 'filler')
973
# ( 3 , 10, 'filler')
974
# (... , 10, 'filler')
976
# (1000, 10, 'filler') - 500 times
980
select 'In following EXPLAIN the access method should be ref, #rows~=500 (and not 2)' Z;
981
create temporary table t2e like t2;
982
alter table t2e engine=myisam;
983
insert into t2e select * from t2;
985
explain select * from t2e where a=1000 and b<11;
989
--echo End of 5.1 tests
992
# BUG#32262 fix: crash with decimal column...
995
CREATE TABLE t1 (c1 DECIMAL(10,0),INDEX(c1));
996
INSERT INTO t1 VALUES (1),(2),(3);
997
SELECT c1 FROM t1 WHERE c1 >= 'A' GROUP BY 1;
1001
# BUG#32229: Range optimizer crashes for 'range checked for each record' query
1003
create table t1 (a int,b int,key (b),key (a),key (b,a));
1004
insert into t1(a,b) values (1,2),(3,4),(5,6),(7,8);
1005
create table t2 (c int);
1006
insert into t2(c) values (1),(5),(6),(7),(8);
1007
select 1 from (select c from t1,t2 where b >= 1 and a <=> c group by 1 limit 1) as d1;