set hive.mapred.mode=nonstrict;
-- SORT_QUERY_RESULTS

create table tx1_n1 (a integer,b integer);
insert into tx1_n1	values (1, 105), (2, 203), (3, 300), (4, 400), (null, 400), (null, null);

create table tx2_n0 (a int, b int);
insert into tx2_n0 values (1, 105), (1, 1900), (2, 1995), (2, 1996), (4, 400), (4, null);

explain
select * from tx1_n1 u left semi join tx2_n0 v on u.a=v.a;

select * from tx1_n1 u left semi join tx2_n0 v on u.a=v.a;

explain cbo
select * from tx1_n1 u left semi join tx2_n0 v on u.b <=> v.b;

explain
select * from tx1_n1 u left semi join tx2_n0 v on u.b <=> v.b;

select * from tx1_n1 u left semi join tx2_n0 v on u.b <=> v.b;

explain
select * from tx1_n1 u left semi join tx2_n0 v on u.b <> v.b;

select * from tx1_n1 u left semi join tx2_n0 v on u.b <> v.b;

explain
select * from tx1_n1 u left semi join tx2_n0 v on u.a=v.a and u.b <> v.b;

select * from tx1_n1 u left semi join tx2_n0 v on u.a=v.a and u.b <> v.b;

explain
select * from tx1_n1 u left semi join tx2_n0 v on u.a=v.a or u.b <> v.b;

select * from tx1_n1 u left semi join tx2_n0 v on u.a=v.a or u.b <> v.b;

explain
select * from tx1_n1 u left semi join tx1_n1 v on u.a=v.a;

select * from tx1_n1 u left semi join tx1_n1 v on u.a=v.a;

explain
select * from tx1_n1 u left semi join tx2_n0 v
on (u.a + v.b > 400)
  and ((case when u.a > 3 then true when v.b > 1900 then true else false end)
      or (coalesce(u.a) + coalesce(v.b) > 1900))
  and u.a = v.a;

select * from tx1_n1 u left semi join tx2_n0 v
on (u.a + v.b > 400)
  and ((case when u.a > 3 then true when v.b > 1900 then true else false end)
      or (coalesce(u.a) + coalesce(v.b) > 1900))
  and u.a = v.a;
