You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: mysql-test/r/case.result
+135Lines changed: 135 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -231,3 +231,138 @@ case t1.f1 when '00:00:00' then 1 end
231
231
1
232
232
NULL
233
233
drop table t1;
234
+
#
235
+
# Start of 10.1 test
236
+
#
237
+
#
238
+
# MDEV-8752 Wrong result for SELECT..WHERE CASE enum_field WHEN 1 THEN 1 ELSE 0 END AND a='5'
239
+
#
240
+
CREATE TABLE t1 (a ENUM('5','6') CHARACTER SET BINARY);
241
+
INSERT INTO t1 VALUES ('5'),('6');
242
+
SELECT * FROM t1 WHERE a='5';
243
+
a
244
+
5
245
+
SELECT * FROM t1 WHERE a=1;
246
+
a
247
+
5
248
+
SELECT * FROM t1 WHERE CASE a WHEN 1 THEN 1 ELSE 0 END;
249
+
a
250
+
5
251
+
SELECT * FROM t1 WHERE CASE a WHEN 1 THEN 1 ELSE 0 END AND a='5';
252
+
a
253
+
5
254
+
# Multiple comparison types in CASE, not Ok to propagate
255
+
EXPLAIN EXTENDED
256
+
SELECT * FROM t1 WHERE CASE a WHEN 1 THEN 1 ELSE 0 END AND a='5';
257
+
id select_type table type possible_keys key key_len ref rows filtered Extra
258
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
259
+
Warnings:
260
+
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where ((`test`.`t1`.`a` = '5') and (case `test`.`t1`.`a` when 1 then 1 else 0 end))
261
+
DROP TABLE t1;
262
+
CREATE TABLE t1 (a ENUM('a','b','100'));
263
+
INSERT INTO t1 VALUES ('a'),('b'),('100');
264
+
SELECT * FROM t1 WHERE a='a';
265
+
a
266
+
a
267
+
SELECT * FROM t1 WHERE CASE a WHEN 'a' THEN 1 ELSE 0 END;
268
+
a
269
+
a
270
+
SELECT * FROM t1 WHERE CASE a WHEN 'a' THEN 1 ELSE 0 END AND a='a';
271
+
a
272
+
a
273
+
# String comparison in CASE and in the equality, ok to propagate
274
+
EXPLAIN EXTENDED
275
+
SELECT * FROM t1 WHERE CASE a WHEN 'a' THEN 1 ELSE 0 END AND a='a';
276
+
id select_type table type possible_keys key key_len ref rows filtered Extra
277
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
278
+
Warnings:
279
+
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` = 'a')
280
+
SELECT * FROM t1 WHERE a=3;
281
+
a
282
+
100
283
+
SELECT * FROM t1 WHERE CASE a WHEN 3 THEN 1 ELSE 0 END;
284
+
a
285
+
100
286
+
SELECT * FROM t1 WHERE CASE a WHEN 3 THEN 1 ELSE 0 END AND a=3;
287
+
a
288
+
100
289
+
# Integer comparison in CASE and in the equality, not ok to propagate
290
+
# ENUM does not support this type of propagation yet.
291
+
# This can change in the future. See MDEV-8748.
292
+
EXPLAIN EXTENDED
293
+
SELECT * FROM t1 WHERE CASE a WHEN 3 THEN 1 ELSE 0 END AND a=3;
294
+
id select_type table type possible_keys key key_len ref rows filtered Extra
295
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
296
+
Warnings:
297
+
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where ((case `test`.`t1`.`a` when 3 then 1 else 0 end) and (`test`.`t1`.`a` = 3))
298
+
SELECT * FROM t1 WHERE a=3;
299
+
a
300
+
100
301
+
SELECT * FROM t1 WHERE CASE a WHEN '100' THEN 1 ELSE 0 END;
302
+
a
303
+
100
304
+
SELECT * FROM t1 WHERE CASE a WHEN '100' THEN 1 ELSE 0 END AND a=3;
305
+
a
306
+
100
307
+
# String comparison in CASE, integer comparison in the equality, not Ok to propagate
308
+
EXPLAIN EXTENDED
309
+
SELECT * FROM t1 WHERE CASE a WHEN '100' THEN 1 ELSE 0 END AND a=3;
310
+
id select_type table type possible_keys key key_len ref rows filtered Extra
311
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
312
+
Warnings:
313
+
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where ((case `test`.`t1`.`a` when '100' then 1 else 0 end) and (`test`.`t1`.`a` = 3))
314
+
SELECT * FROM t1 WHERE a='100';
315
+
a
316
+
100
317
+
SELECT * FROM t1 WHERE CASE a WHEN 3 THEN 1 ELSE 0 END;
318
+
a
319
+
100
320
+
SELECT * FROM t1 WHERE CASE a WHEN 3 THEN 1 ELSE 0 END AND a='100';
321
+
a
322
+
100
323
+
# Integer comparison in CASE, string comparison in the equality, not Ok to propagate
324
+
EXPLAIN EXTENDED
325
+
SELECT * FROM t1 WHERE CASE a WHEN 3 THEN 1 ELSE 0 END AND a='100';
326
+
id select_type table type possible_keys key key_len ref rows filtered Extra
327
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
328
+
Warnings:
329
+
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where ((`test`.`t1`.`a` = '100') and (case `test`.`t1`.`a` when 3 then 1 else 0 end))
330
+
SELECT * FROM t1 WHERE a='100';
331
+
a
332
+
100
333
+
SELECT * FROM t1 WHERE CASE a WHEN 3 THEN 1 WHEN '100' THEN 1 ELSE 0 END;
334
+
a
335
+
100
336
+
SELECT * FROM t1 WHERE CASE a WHEN 3 THEN 1 WHEN '100' THEN 1 ELSE 0 END AND a='100';
337
+
a
338
+
100
339
+
# Multiple type comparison in CASE, string comparison in the equality, not Ok to propagate
340
+
EXPLAIN EXTENDED
341
+
SELECT * FROM t1 WHERE CASE a WHEN 3 THEN 1 WHEN '100' THEN 1 ELSE 0 END AND a='100';
342
+
id select_type table type possible_keys key key_len ref rows filtered Extra
343
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
344
+
Warnings:
345
+
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where ((`test`.`t1`.`a` = '100') and (case `test`.`t1`.`a` when 3 then 1 when '100' then 1 else 0 end))
346
+
SELECT * FROM t1 WHERE a=3;
347
+
a
348
+
100
349
+
SELECT * FROM t1 WHERE CASE a WHEN 3 THEN 1 WHEN '100' THEN 1 ELSE 0 END;
350
+
a
351
+
100
352
+
SELECT * FROM t1 WHERE CASE a WHEN 3 THEN 1 WHEN '100' THEN 1 ELSE 0 END AND a=3;
353
+
a
354
+
100
355
+
# Multiple type comparison in CASE, integer comparison in the equality, not Ok to propagate
356
+
EXPLAIN EXTENDED
357
+
SELECT * FROM t1 WHERE CASE a WHEN 3 THEN 1 WHEN '100' THEN 1 ELSE 0 END AND a=3;
358
+
id select_type table type possible_keys key key_len ref rows filtered Extra
359
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 3 100.00 Using where
360
+
Warnings:
361
+
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where ((case `test`.`t1`.`a` when 3 then 1 when '100' then 1 else 0 end) and (`test`.`t1`.`a` = 3))
SELECT alias2.f3 AS field1 , alias2.f1 AS field2 FROM t1 AS alias1 JOIN t1 AS alias2 ON alias2.f1 = alias1.f2 AND alias2.f1 != alias1.f4 GROUP BY field1 , field2 ;
Warning 1292 Truncated incorrect date value: '2001-01-01x'
542
+
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where 0
543
+
EXPLAIN EXTENDED
544
+
SELECT * FROM t1 WHERE HEX(a)!=CONCAT('xx',RAND()) AND a='2001-01-01x';
545
+
id select_type table type possible_keys key key_len ref rows filtered Extra
546
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
547
+
Warnings:
548
+
Warning 1292 Truncated incorrect date value: '2001-01-01x'
549
+
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where ((`test`.`t1`.`a` = '2001-01-01x') and (<cache>(hex(DATE'2001-01-01')) <> concat('xx',rand())))
550
+
DROP TABLE t1;
551
+
CREATE TABLE t1 (a DATE);
552
+
INSERT INTO t1 VALUES ('2001-01-01'),('2001-01-02');
553
+
SELECT * FROM t1 WHERE LENGTH(a)=11;
554
+
a
555
+
SELECT * FROM t1 WHERE LENGTH(a)=11 AND a=' 2001-01-01';
556
+
a
557
+
EXPLAIN EXTENDED
558
+
SELECT * FROM t1 WHERE LENGTH(a)=11 AND a=' 2001-01-01';
559
+
id select_type table type possible_keys key key_len ref rows filtered Extra
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where 0
563
+
EXPLAIN EXTENDED
564
+
SELECT * FROM t1 WHERE LENGTH(a)=11+RAND() AND a=' 2001-01-01';
565
+
id select_type table type possible_keys key key_len ref rows filtered Extra
566
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
567
+
Warnings:
568
+
Note 1003 select `test`.`t1`.`a` AS `a` from `test`.`t1` where ((`test`.`t1`.`a` = ' 2001-01-01') and (<cache>(length(DATE'2001-01-01')) = (11 + rand())))
569
+
EXPLAIN EXTENDED
570
+
SELECT * FROM t1 WHERE LENGTH(a)=11+RAND() AND a=' garbage ';
571
+
id select_type table type possible_keys key key_len ref rows filtered Extra
572
+
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
0 commit comments