blob: ae7c2762d2d93e9af9f35894d8a0314c53cd2068 [file] [log] [blame]
-- SORT_QUERY_RESULTS
set hive.auto.convert.anti.join=true;
create table web_sales (ws_order_number int, ws_warehouse_sk int) stored as orc;
insert into web_sales values
(null, null),
(1, 1),
(1, 2),
(null, null),
(null, null),
(2, 1),
(2, 2),
(null, null);
-- EXISTS, co-relation, LIMIT
explain cbo
select * from web_sales ws1
where exists (select 1 from web_sales ws2 where ws1.ws_order_number = ws2.ws_order_number limit 1);
select * from web_sales ws1
where exists (select 1 from web_sales ws2 where ws1.ws_order_number = ws2.ws_order_number limit 1);
explain cbo
select * from web_sales ws1
where exists (select 1 from web_sales ws2 where ws1.ws_order_number = ws2.ws_order_number limit 0);
select * from web_sales ws1
where exists (select 1 from web_sales ws2 where ws1.ws_order_number = ws2.ws_order_number limit 0);
-- NOT EXISTS, co-relation, LIMIT
explain cbo
select * from web_sales ws1
where not exists (select 1 from web_sales ws2 where ws1.ws_order_number = ws2.ws_order_number limit 1);
select * from web_sales ws1
where not exists (select 1 from web_sales ws2 where ws1.ws_order_number = ws2.ws_order_number limit 1);
-- EXISTS, co-relation, ORDER BY
explain cbo
select * from web_sales ws1
where exists (select 1 from web_sales ws2 where ws1.ws_order_number = ws2.ws_order_number order by ws2.ws_order_number);
select * from web_sales ws1
where exists (select 1 from web_sales ws2 where ws1.ws_order_number = ws2.ws_order_number order by ws2.ws_order_number);
-- NOT EXISTS, co-relation, ORDER BY
explain cbo
select * from web_sales ws1
where not exists (select 1 from web_sales ws2 where ws1.ws_order_number = ws2.ws_order_number order by ws2.ws_order_number);
select * from web_sales ws1
where not exists (select 1 from web_sales ws2 where ws1.ws_order_number = ws2.ws_order_number order by ws2.ws_order_number);
-- EXISTS, LIMIT
explain cbo
select * from web_sales ws1
where exists (select 1 from web_sales ws2 where ws2.ws_order_number = 2 limit 1);
select * from web_sales ws1
where exists (select 1 from web_sales ws2 where ws2.ws_order_number = 2 limit 1);
explain cbo
select * from web_sales ws1
where exists (select 1 from web_sales ws2 where ws2.ws_order_number = 2 limit 0);
select * from web_sales ws1
where exists (select 1 from web_sales ws2 where ws2.ws_order_number = 2 limit 0);
-- IN, LIMIT
explain cbo
select * from web_sales ws1
where ws1.ws_order_number in (select ws2.ws_order_number from web_sales ws2 order by ws2.ws_order_number nulls last limit 1);
select * from web_sales ws1
where ws1.ws_order_number in (select ws2.ws_order_number from web_sales ws2 order by ws2.ws_order_number nulls last limit 1);
explain cbo
select * from web_sales ws1
where ws1.ws_order_number in (select ws2.ws_order_number from web_sales ws2 order by ws2.ws_order_number nulls first limit 1);
select * from web_sales ws1
where ws1.ws_order_number in (select ws2.ws_order_number from web_sales ws2 order by ws2.ws_order_number nulls first limit 1);
-- NOT IN, LIMIT
explain cbo
select * from web_sales ws1
where ws1.ws_order_number not in (select ws2.ws_order_number from web_sales ws2 order by ws2.ws_order_number nulls last limit 1);
select * from web_sales ws1
where ws1.ws_order_number not in (select ws2.ws_order_number from web_sales ws2 order by ws2.ws_order_number nulls last limit 1);
explain cbo
select * from web_sales ws1
where ws1.ws_order_number not in (select ws2.ws_order_number from web_sales ws2 order by ws2.ws_order_number nulls first limit 1);
select * from web_sales ws1
where ws1.ws_order_number not in (select ws2.ws_order_number from web_sales ws2 order by ws2.ws_order_number nulls first limit 1);
explain cbo
select * from web_sales ws1
where ws1.ws_order_number not in (select ws2.ws_order_number from web_sales ws2 order by ws2.ws_order_number nulls last limit 1 offset 2);
select * from web_sales ws1
where ws1.ws_order_number not in (select ws2.ws_order_number from web_sales ws2 order by ws2.ws_order_number nulls last limit 1 offset 2);