mirror of
https://github.com/MariaDB/server.git
synced 2026-05-08 08:04:29 +02:00
WL #1056: Eliminate NOT operators from where condition
This commit is contained in:
parent
bc8f801bf0
commit
506631e771
10 changed files with 638 additions and 8 deletions
68
mysql-test/t/negation_elimination.test
Normal file
68
mysql-test/t/negation_elimination.test
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
#
|
||||
# Test negation elimination
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
create table t1 (a int, key (a));
|
||||
insert into t1 values (NULL), (0), (1), (2), (3), (4), (5), (6), (7), (8), (9),
|
||||
(10), (11), (12), (13), (14), (15), (16), (17), (18), (19);
|
||||
|
||||
explain select * from t1 where not(not(a));
|
||||
select * from t1 where not(not(a));
|
||||
explain select * from t1 where not(not(not(a > 10)));
|
||||
select * from t1 where not(not(not(a > 10)));
|
||||
explain select * from t1 where not(not(not(a < 5) and not(a > 10)));
|
||||
select * from t1 where not(not(not(a < 5) and not(a > 10)));
|
||||
explain select * from t1 where not(a = 10);
|
||||
select * from t1 where not(a = 10);
|
||||
explain select * from t1 where not(a != 10);
|
||||
select * from t1 where not(a != 1);
|
||||
explain select * from t1 where not(a < 10);
|
||||
select * from t1 where not(a < 10);
|
||||
explain select * from t1 where not(a >= 10);
|
||||
select * from t1 where not(a >= 10);
|
||||
explain select * from t1 where not(a > 10);
|
||||
select * from t1 where not(a > 10);
|
||||
explain select * from t1 where not(a <= 10);
|
||||
select * from t1 where not(a <= 10);
|
||||
explain select * from t1 where not(a is null);
|
||||
select * from t1 where not(a is null);
|
||||
explain select * from t1 where not(a is not null);
|
||||
select * from t1 where not(a is not null);
|
||||
explain select * from t1 where not(a < 5 or a > 15);
|
||||
select * from t1 where not(a < 5 or a > 15);
|
||||
explain select * from t1 where not(a < 15 and a > 5);
|
||||
select * from t1 where not(a < 15 and a > 5);
|
||||
|
||||
explain select * from t1 where a = 2 or not(a < 10);
|
||||
select * from t1 where a = 2 or not(a < 10);
|
||||
explain select * from t1 where a > 5 and not(a > 10);
|
||||
select * from t1 where a > 5 and not(a > 10);
|
||||
explain select * from t1 where a > 5 xor a < 10;
|
||||
select * from t1 where a > 5 xor a < 10;
|
||||
|
||||
explain select * from t1 where a = 2 or not(a < 5 or a > 15);
|
||||
select * from t1 where a = 2 or not(a < 5 or a > 15);
|
||||
explain select * from t1 where a = 7 or not(a < 15 and a > 5);
|
||||
select * from t1 where a = 7 or not(a < 15 and a > 5);
|
||||
|
||||
explain select * from t1 where NULL or not(a < 15 and a > 5);
|
||||
select * from t1 where NULL or not(a < 15 and a > 5);
|
||||
explain select * from t1 where not(NULL and a > 5);
|
||||
select * from t1 where not(NULL and a > 5);
|
||||
explain select * from t1 where not(NULL or a);
|
||||
select * from t1 where not(NULL or a);
|
||||
explain select * from t1 where not(NULL and a);
|
||||
select * from t1 where not(NULL and a);
|
||||
|
||||
explain select * from t1 where not((a < 5 or a < 10) and (not(a > 16) or a > 17));
|
||||
select * from t1 where not((a < 5 or a < 10) and (not(a > 16) or a > 17));
|
||||
explain select * from t1 where not((a < 5 and a < 10) and (not(a > 16) or a > 17));
|
||||
select * from t1 where not((a < 5 and a < 10) and (not(a > 16) or a > 17));
|
||||
explain select * from t1 where ((a between 5 and 15) and (not(a like 10)));
|
||||
select * from t1 where ((a between 5 and 15) and (not(a like 10)));
|
||||
|
||||
drop table t1;
|
||||
Loading…
Add table
Add a link
Reference in a new issue