diff --git a/mysql-test/main/type_int.result b/mysql-test/main/type_int.result index a3a702609c9..1a76f438d48 100644 --- a/mysql-test/main/type_int.result +++ b/mysql-test/main/type_int.result @@ -280,5 +280,87 @@ id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables DROP TABLE t1; # +# MDEV-8554 Expect "Impossible WHERE" for never true values like a!=a, aa +# +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(2),(3); +EXPLAIN SELECT * FROM t1 WHERE a!=a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE +SELECT COUNT(*) FROM t1 WHERE a!=a; +COUNT(*) +0 +EXPLAIN SELECT * FROM t1 WHERE a>a; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE +SELECT COUNT(*) FROM t1 WHERE a>a; +COUNT(*) +0 +EXPLAIN SELECT COUNT(*) FROM t1 WHERE aa; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE +SELECT COUNT(*) FROM t1 WHERE a>a; +COUNT(*) +0 +EXPLAIN SELECT COUNT(*) FROM t1 WHERE aa-1; +id select_type table type possible_keys key key_len ref rows Extra +1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where +SELECT COUNT(*) FROM t1 WHERE a>a-1; +COUNT(*) +3 +EXPLAIN SELECT COUNT(*) FROM t1 WHERE a200; DROP TABLE t1; +--echo # +--echo # MDEV-8554 Expect "Impossible WHERE" for never true values like a!=a, aa +--echo # + +CREATE TABLE t1 (a INT); +INSERT INTO t1 VALUES (1),(2),(3); + +EXPLAIN SELECT * FROM t1 WHERE a!=a; +SELECT COUNT(*) FROM t1 WHERE a!=a; +EXPLAIN SELECT * FROM t1 WHERE a>a; +SELECT COUNT(*) FROM t1 WHERE a>a; +EXPLAIN SELECT COUNT(*) FROM t1 WHERE aa; +SELECT COUNT(*) FROM t1 WHERE a>a; +EXPLAIN SELECT COUNT(*) FROM t1 WHERE aa-1; +SELECT COUNT(*) FROM t1 WHERE a>a-1; +EXPLAIN SELECT COUNT(*) FROM t1 WHERE aeq(args[1], true)) { - if (!args[0]->maybe_null || functype() == Item_func::EQUAL_FUNC) + if (*cond_value == Item::COND_FALSE || + !args[0]->maybe_null || functype() == Item_func::EQUAL_FUNC) return (COND*) 0; // Compare of identical items } }