# name: test/optimizer/pushdown_set_op.test # description: Pushdown set operations # group: [optimizer] statement ok PRAGMA explain_output = 'OPTIMIZED_ONLY' query II explain select 42 intersect select 42; ---- logical_opt :.*INTERSECT.* # intersect is empty if either side is empty query II explain select 42 intersect select 42 where 1=0; ---- logical_opt :.*INTERSECT.* query II explain select 42 where 1=0 intersect select 42; ---- logical_opt :.*INTERSECT.* # except is empty if LHS is empty query II explain select 42 where 1=0 except select 42; ---- logical_opt :.*EXCEPT.* # if RHS is empty we can optimize away the except query II explain select 42 except all select 42 where 1=0; ---- logical_opt :.*EXCEPT.* # now pushdown subquery with set ops query II explain select * from (select 42 intersect select 42) tbl(i) where i=42; ---- logical_opt :.*INTERSECT.* query II explain select * from (select 42 intersect all select 43) tbl(i) where i=42; ---- logical_opt :.*INTERSECT.* query II explain select * from (select 43 intersect all select 42) tbl(i) where i=42; ---- logical_opt :.*INTERSECT.* query II explain select * from (select 42 except select 42) tbl(i) where i=42; ---- logical_opt :.*EXCEPT.* query II explain select * from (select 42 except all select 43) tbl(i) where i=42; ---- logical_opt :.*EXCEPT.* query II explain select * from (select 43 except all select 42) tbl(i) where i=42; ---- logical_opt :.*EXCEPT.* query I select 42 intersect select 42; ---- 42 query I select 42 intersect select 42 where 1=0; ---- query I select 42 where 1=0 intersect select 42; ---- query I select 42 where 1=0 except select 42; ---- query I select 42 except select 42 where 1=0; ---- 42 query I select * from (select 42 intersect select 42) tbl(i) where i=42; ---- 42 query I select * from (select 42 intersect select 43) tbl(i) where i=42; ---- query I select * from (select 43 intersect select 42) tbl(i) where i=42; ---- query I select * from (select 42 except select 42) tbl(i) where i=42; ---- query I select * from (select 42 except select 43) tbl(i) where i=42; ---- 42 query I select * from (select 43 except select 42) tbl(i) where i=42; ----