52
create table t1 (id int primary key);
52
create table t1 (id int(10) primary key);
53
53
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9);
54
54
select * from t1 where id in (2,5,9);
58
a char(1) character set latin1 collate latin1_general_ci,
59
b char(1) character set latin1 collate latin1_swedish_ci,
60
c char(1) character set latin1 collate latin1_danish_ci
62
62
insert into t1 values ('A','B','C');
63
63
insert into t1 values ('a','c','c');
64
65
select * from t1 where a in (b);
65
67
select * from t1 where a in (b,c);
66
69
select * from t1 where 'a' in (a,b,c);
67
70
select * from t1 where 'a' in (a);
68
71
select * from t1 where a in ('a');
69
select * from t1 where 'a' collate utf8_general_ci in (a,b,c);
70
select * from t1 where 'a' collate utf8_bin in (a,b,c);
71
select * from t1 where 'a' in (a,b,c collate utf8_bin);
72
explain extended select * from t1 where 'a' in (a,b,c collate utf8_bin);
72
select * from t1 where 'a' collate latin1_general_ci in (a,b,c);
73
select * from t1 where 'a' collate latin1_bin in (a,b,c);
74
select * from t1 where 'a' in (a,b,c collate latin1_bin);
75
explain extended select * from t1 where 'a' in (a,b,c collate latin1_bin);
79
create table t1 (a char(10) character set utf8 not null);
80
insert into t1 values ('bbbb'),(_koi8r'����'),(_latin1'����');
81
select a from t1 where a in ('bbbb',_koi8r'����',_latin1'����') order by a;
75
83
# Bug#7834 Illegal mix of collations in IN operator
76
create table t1 (a char(10) not null);
84
create table t1 (a char(10) character set latin1 not null);
77
85
insert into t1 values ('a'),('b'),('c');
78
86
select a from t1 where a IN ('a','b','c') order by a;
81
90
select '1.0' in (1,2);
82
91
select 1 in ('1.0',2);
139
148
# BUG#15872: Excessive memory consumption of range analysis of NOT IN
140
# I have disabled the EXPLAIN because we must use Innodb with this test.
141
149
create table t1 (a int);
142
150
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
143
create temporary table t2 (a int, filler char(200), key(a)) engine=myisam;
151
create table t2 (a int, filler char(200), key(a));
145
insert into t2 select C.a*2, 'no' from t1 A, t1 B, t1 C where A.a < 10;
153
insert into t2 select C.a*2, 'no' from t1 A, t1 B, t1 C;
146
154
insert into t2 select C.a*2+1, 'yes' from t1 C;
149
157
select * from t2 where a NOT IN (0, 2,4,6,8,10,12,14,16,18);
150
158
select * from t2 where a NOT IN (0, 2,4,6,8,10,12,14,16,18);
153
160
explain select * from t2 force index(a) where a NOT IN (2,2,2,2,2,2);
154
161
explain select * from t2 force index(a) where a <> 2;
181
188
create table t2 (a varchar(10), filler char(200), key(a));
183
insert into t2 select 'foo', 'no' from t1 A, t1 B where A.a < 10;
184
insert into t2 select 'barbar', 'no' from t1 A, t1 B where A.a < 10;
185
insert into t2 select 'bazbazbaz', 'no' from t1 A, t1 B where A.a < 10;
190
insert into t2 select 'foo', 'no' from t1 A, t1 B;
191
insert into t2 select 'barbar', 'no' from t1 A, t1 B;
192
insert into t2 select 'bazbazbaz', 'no' from t1 A, t1 B;
187
194
insert into t2 values ('fon', '1'), ('fop','1'), ('barbaq','1'),
188
195
('barbas','1'), ('bazbazbay', '1'),('zz','1');
197
204
create table t2 (a decimal(10,5), filler char(200), key(a));
199
insert into t2 select 345.67890, 'no' from t1 A, t1 B where A.a < 10;
200
insert into t2 select 43245.34, 'no' from t1 A, t1 B where A.a < 10;
201
insert into t2 select 64224.56344, 'no' from t1 A, t1 B where A.a < 10;
206
insert into t2 select 345.67890, 'no' from t1 A, t1 B;
207
insert into t2 select 43245.34, 'no' from t1 A, t1 B;
208
insert into t2 select 64224.56344, 'no' from t1 A, t1 B;
203
210
insert into t2 values (0, '1'), (22334.123,'1'), (33333,'1'),
204
211
(55555,'1'), (77777, '1');
217
224
set @str="update t2 set b=1 where a not in (";
218
225
select count(*) from (
219
226
select @str:=concat(@str, @cnt:=@cnt+1, ",")
220
from t1 A, t1 B, t1 C, t1 D where A.a < 10) Z;
227
from t1 A, t1 B, t1 C, t1 D) Z;
222
229
set @str:=concat(@str, "10000)");
223
230
select substr(@str, 1, 50);
287
292
DROP TABLE t1,t2,t3,t4;
290
# BUG#19342: IN works incorrectly for BIGINT values
295
# BUG#19342: IN works incorrectly for BIGINT UNSIGNED values
292
CREATE TABLE t1(a BIGINT);
293
INSERT INTO t1 VALUES (0x0FFFFFFFFFFFFFFF);
297
CREATE TABLE t1(a BIGINT UNSIGNED);
298
INSERT INTO t1 VALUES (0xFFFFFFFFFFFFFFFF);
295
300
SELECT * FROM t1 WHERE a=-1 OR a=-2 ;
296
301
SELECT * FROM t1 WHERE a IN (-1, -2);
298
303
CREATE TABLE t2 (a BIGINT UNSIGNED);
299
304
insert into t2 values(13491727406643098568),
300
(0x0fffffefffffffff),
301
(0x0ffffffeffffffff),
302
(0x0fffffffefffffff),
303
(0x0ffffffffeffffff),
304
(0x0fffffffffefffff),
305
(0x0ffffffffffeffff),
306
(0x0fffffffffffefff),
307
(0x0ffffffffffffeff),
308
(0x0fffffffffffffef),
309
(0x0ffffffffffffffe),
310
(0x0fffffffffffffff),
311
(0x2000000000000000),
312
(0x2000000000000001),
313
(0x2000000000000002),
314
(0x2000000000000300),
315
(0x2000000000000400),
316
(0x2000000000000401),
317
(0x2000000000004001),
318
(0x2000000000040001),
319
(0x2000000000400001),
320
(0x2000000004000001),
321
(0x2000000040000001),
322
(0x2000000400000001),
323
(0x2000004000000001),
324
(0x2000040000000001);
305
(0x7fffffefffffffff),
306
(0x7ffffffeffffffff),
307
(0x7fffffffefffffff),
308
(0x7ffffffffeffffff),
309
(0x7fffffffffefffff),
310
(0x7ffffffffffeffff),
311
(0x7fffffffffffefff),
312
(0x7ffffffffffffeff),
313
(0x7fffffffffffffef),
314
(0x7ffffffffffffffe),
315
(0x7fffffffffffffff),
316
(0x8000000000000000),
317
(0x8000000000000001),
318
(0x8000000000000002),
319
(0x8000000000000300),
320
(0x8000000000000400),
321
(0x8000000000000401),
322
(0x8000000000004001),
323
(0x8000000000040001),
324
(0x8000000000400001),
325
(0x8000000004000001),
326
(0x8000000040000001),
327
(0x8000000400000001),
328
(0x8000004000000001),
329
(0x8000040000000001);
326
SELECT HEX(a) FROM t2 WHERE a IN (0xBB3C3E98175D33C8, 42);
331
SELECT HEX(a) FROM t2 WHERE a IN
332
(CAST(0xBB3C3E98175D33C8 AS UNSIGNED),
328
335
SELECT HEX(a) FROM t2 WHERE a IN
336
(CAST(0xBB3C3E98175D33C8 AS UNSIGNED),
337
CAST(0x7fffffffffffffff AS UNSIGNED),
338
CAST(0x8000000000000000 AS UNSIGNED),
339
CAST(0x8000000000000400 AS UNSIGNED),
340
CAST(0x8000000000000401 AS UNSIGNED),
336
343
SELECT HEX(a) FROM t2 WHERE a IN
339
SELECT HEX(a) FROM t2 WHERE a IN
342
SELECT HEX(a) FROM t2 WHERE a IN
344
(CAST(0x7fffffffffffffff AS UNSIGNED),
345
CAST(0x8000000000000001 AS UNSIGNED));
346
SELECT HEX(a) FROM t2 WHERE a IN
347
(CAST(0x7ffffffffffffffe AS UNSIGNED),
348
CAST(0x7fffffffffffffff AS UNSIGNED));
349
SELECT HEX(a) FROM t2 WHERE a IN
347
CREATE TABLE t3 (a BIGINT);
354
CREATE TABLE t3 (a BIGINT UNSIGNED);
348
355
INSERT INTO t3 VALUES (9223372036854775551);
350
357
SELECT HEX(a) FROM t3 WHERE a IN (9223372036854775807, 42);
374
380
# Bug#18360: Type aggregation for IN and CASE may lead to a wrong result
376
create TEMPORARY table t1(f1 char(1)) ENGINE=MYISAM;
382
create table t1(f1 char(1));
377
383
insert into t1 values ('a'),('b'),('1');
378
384
select f1 from t1 where f1 in ('a',1);
379
385
select f1, case f1 when 'a' then '+' when 1 then '-' end from t1;
384
390
explain select f1 from t1 where f1 in ('a','b');
385
391
select f1 from t1 where f1 in (2,1);
386
392
explain select f1 from t1 where f1 in (2,1);
387
create TEMPORARY table t2(f2 int, index t2f2(f2)) ENGINE=MYISAM;
393
create table t2(f2 int, index t2f2(f2));
388
394
insert into t2 values(0),(1),(2);
389
395
select f2 from t2 where f2 in ('a',2);
390
396
explain select f2 from t2 where f2 in ('a',2);
398
404
# Bug #31075: crash in get_func_mm_tree
401
create table t1 (a datetime, key(a));
407
create table t1 (a time, key(a));
402
408
insert into t1 values (),(),(),(),(),(),(),(),(),();
403
409
select a from t1 where a not in (a,a,a) group by a;