# Tests disjunctive conjuncts in where clause.
# t1.int_col < 10 or t2.int_col < 10 can't prove that t2 is nonnullable,
# so we can't convert a left join to an inner join
select 1
from functional.alltypes t1
left outer join functional.alltypessmall t2
  on t1.id = t2.id
where t1.int_col < 10 or t2.int_col < 10 or t2.tinyint_col < 5
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [LEFT OUTER JOIN]
|  hash predicates: t1.id = t2.id
|  other predicates: t1.int_col < 10 OR t2.int_col < 10 OR t2.tinyint_col < 5
|  row-size=17B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypessmall t2]
|     HDFS partitions=4/4 files=4 size=6.32KB
|     row-size=9B cardinality=100
|
00:SCAN HDFS [functional.alltypes t1]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=8B cardinality=7.30K
====
# Tests where clause containing disjunctive conjuncts
# When ti.int_col < 10, t2.tinyint_col can be null value, so this where conjunct is not
# null-rejecting for t2 and we can't convert a left join to an inner join.
select 1
from functional.alltypes t1
left outer join functional.alltypessmall t2
  on t1.id = t2.id
where case when t1.int_col < 10 or t2.tinyint_col < 5 then 10 else 20 end = 10
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [LEFT OUTER JOIN]
|  hash predicates: t1.id = t2.id
|  other predicates: CASE WHEN t1.int_col < 10 OR t2.tinyint_col < 5 THEN 10 ELSE 20 END = 10
|  row-size=13B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypessmall t2]
|     HDFS partitions=4/4 files=4 size=6.32KB
|     row-size=5B cardinality=100
|
00:SCAN HDFS [functional.alltypes t1]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=8B cardinality=7.30K
====
# Tests disjunctive conjuncts in where clause.
# All disjunctive conjuncts children have t2's slot, we can simplify outer join.
# For t1.int_col + t2.int_col < 10, it maybe true only t2.int_col is not null. At least
# one of the t2's columns is not null the disjunctive conjunct is true, so this
# is null-rejecting conjunct
select 1
from functional.alltypes t1
left outer join functional.alltypessmall t2
  on t1.id = t2.id
where t1.int_col + t2.int_col < 10 or t2.tinyint_col < 5 or t2.smallint_col > 2
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [INNER JOIN]
|  hash predicates: t1.id = t2.id
|  other predicates: t1.int_col + t2.int_col < 10 OR t2.tinyint_col < 5 OR t2.smallint_col > 2
|  runtime filters: RF000 <- t2.id
|  row-size=19B cardinality=99
|
|--01:SCAN HDFS [functional.alltypessmall t2]
|     HDFS partitions=4/4 files=4 size=6.32KB
|     row-size=11B cardinality=100
|
00:SCAN HDFS [functional.alltypes t1]
   HDFS partitions=24/24 files=24 size=478.45KB
   runtime filters: RF000 -> t1.id
   row-size=8B cardinality=7.30K
====
# Simplify outer join by inner join on clause.
# Inner join on conjunct t2.id = t3.test_id proves that t2.id can't be null.
SELECT 1
FROM functional.dimtbl t1
  LEFT JOIN functional.testtbl t2 ON t1.id = t2.id
  JOIN functional.jointbl t3 ON t2.id = t3.test_id
---- PLAN
PLAN-ROOT SINK
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: t1.id = t2.id
|  runtime filters: RF000 <- t2.id
|  row-size=24B cardinality=19
|
|--01:SCAN HDFS [functional.testtbl t2]
|     HDFS partitions=1/1 files=0 size=0B
|     row-size=8B cardinality=0
|
03:HASH JOIN [INNER JOIN]
|  hash predicates: t3.test_id = t1.id
|  runtime filters: RF002 <- t1.id
|  row-size=16B cardinality=19
|
|--00:SCAN HDFS [functional.dimtbl t1]
|     HDFS partitions=1/1 files=1 size=171B
|     runtime filters: RF000 -> t1.id
|     row-size=8B cardinality=10
|
02:SCAN HDFS [functional.jointbl t3]
   HDFS partitions=1/1 files=1 size=433B
   runtime filters: RF000 -> t3.test_id, RF002 -> t3.test_id
   row-size=8B cardinality=19
====
# Simplify outer join by inner join on clause.
# Inner join on conjunct t1.id = t3.test_id proves that t1.id can't be null.
SELECT 1
FROM functional.dimtbl t1
  RIGHT JOIN functional.testtbl t2 ON t1.id = t2.id
  JOIN functional.jointbl t3 ON t1.id = t3.test_id
---- PLAN
PLAN-ROOT SINK
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: t1.id = t2.id
|  runtime filters: RF000 <- t2.id
|  row-size=24B cardinality=19
|
|--01:SCAN HDFS [functional.testtbl t2]
|     HDFS partitions=1/1 files=0 size=0B
|     row-size=8B cardinality=0
|
03:HASH JOIN [INNER JOIN]
|  hash predicates: t3.test_id = t1.id
|  runtime filters: RF002 <- t1.id
|  row-size=16B cardinality=19
|
|--00:SCAN HDFS [functional.dimtbl t1]
|     HDFS partitions=1/1 files=1 size=171B
|     runtime filters: RF000 -> t1.id
|     row-size=8B cardinality=10
|
02:SCAN HDFS [functional.jointbl t3]
   HDFS partitions=1/1 files=1 size=433B
   runtime filters: RF000 -> t3.test_id, RF002 -> t3.test_id
   row-size=8B cardinality=19
====
# Simplify outer join by inner join on clause.
# Same as above, t2.id can't be null, we can convert t1 full join t2 to t1 right join t2.
SELECT 1
FROM functional.dimtbl t1
  FULL JOIN functional.testtbl t2 ON t1.id = t2.id
  JOIN functional.jointbl t3 ON t2.id = t3.test_id
---- PLAN
PLAN-ROOT SINK
|
05:HASH JOIN [INNER JOIN]
|  hash predicates: t2.id = t3.test_id
|  runtime filters: RF000 <- t3.test_id
|  row-size=24B cardinality=10
|
|--02:SCAN HDFS [functional.jointbl t3]
|     HDFS partitions=1/1 files=1 size=433B
|     row-size=8B cardinality=19
|
04:HASH JOIN [RIGHT OUTER JOIN]
|  hash predicates: t1.id = t2.id
|  runtime filters: RF002 <- t2.id
|  row-size=16B cardinality=10
|
|--01:SCAN HDFS [functional.testtbl t2]
|     HDFS partitions=1/1 files=0 size=0B
|     runtime filters: RF000 -> t2.id
|     row-size=8B cardinality=0
|
00:SCAN HDFS [functional.dimtbl t1]
   HDFS partitions=1/1 files=1 size=171B
   runtime filters: RF000 -> t1.id, RF002 -> t1.id
   row-size=8B cardinality=10
====
# Simplify outer join by inner join on clause.
# Same as above, t1.id can't be null, we can convert t1 full join t2 to t1 left join t2.
SELECT 1
FROM functional.dimtbl t1
  FULL JOIN functional.testtbl t2 ON t1.id = t2.id
  JOIN functional.jointbl t3 ON t1.id = t3.test_id
---- PLAN
PLAN-ROOT SINK
|
05:HASH JOIN [INNER JOIN]
|  hash predicates: t1.id = t3.test_id
|  runtime filters: RF000 <- t3.test_id
|  row-size=24B cardinality=19
|
|--02:SCAN HDFS [functional.jointbl t3]
|     HDFS partitions=1/1 files=1 size=433B
|     row-size=8B cardinality=19
|
04:HASH JOIN [LEFT OUTER JOIN]
|  hash predicates: t1.id = t2.id
|  row-size=16B cardinality=10
|
|--01:SCAN HDFS [functional.testtbl t2]
|     HDFS partitions=1/1 files=0 size=0B
|     runtime filters: RF000 -> t2.id
|     row-size=8B cardinality=0
|
00:SCAN HDFS [functional.dimtbl t1]
   HDFS partitions=1/1 files=1 size=171B
   runtime filters: RF000 -> t1.id
   row-size=8B cardinality=10
====
# Simplify outer join by inner join on clause.
# t1.id + t2.id = t3.test_id is null-rejecting conjunct for t1 and t2
SELECT 1
FROM functional.dimtbl t1
  FULL JOIN functional.testtbl t2 ON t1.id = t2.id
  JOIN functional.jointbl t3 ON t1.id + t2.id = t3.test_id
---- PLAN
PLAN-ROOT SINK
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: t1.id = t2.id
|  other predicates: t3.test_id = t1.id + t2.id
|  runtime filters: RF000 <- t2.id
|  row-size=24B cardinality=0
|
|--03:NESTED LOOP JOIN [CROSS JOIN]
|  |  row-size=16B cardinality=0
|  |
|  |--01:SCAN HDFS [functional.testtbl t2]
|  |     HDFS partitions=1/1 files=0 size=0B
|  |     row-size=8B cardinality=0
|  |
|  02:SCAN HDFS [functional.jointbl t3]
|     HDFS partitions=1/1 files=1 size=433B
|     row-size=8B cardinality=19
|
00:SCAN HDFS [functional.dimtbl t1]
   HDFS partitions=1/1 files=1 size=171B
   runtime filters: RF000 -> t1.id
   row-size=8B cardinality=10
====
# 'is distinct from'/'is not distinct from' is not null-rejecting conjunct
SELECT 1
FROM functional.dimtbl t1
  LEFT JOIN functional.testtbl t2 ON t1.id = t2.id
  WHERE t2.name is distinct from 'Name1' AND t2.name is not distinct from 'Name2'
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [LEFT OUTER JOIN]
|  hash predicates: t1.id = t2.id
|  other predicates: t2.name IS DISTINCT FROM 'Name1', t2.name IS NOT DISTINCT FROM 'Name2'
|  row-size=28B cardinality=10
|
|--01:SCAN HDFS [functional.testtbl t2]
|     HDFS partitions=1/1 files=0 size=0B
|     predicates: t2.name IS NOT DISTINCT FROM 'Name2'
|     row-size=20B cardinality=0
|
00:SCAN HDFS [functional.dimtbl t1]
   HDFS partitions=1/1 files=1 size=171B
   row-size=8B cardinality=10
====
# Tests the conjunct containing nondeterministic function
SELECT 1
FROM functional.dimtbl t1
  LEFT JOIN functional.testtbl t2 ON t1.id = t2.id
  WHERE CASE WHEN t2.zip = 2 THEN 0.2 ELSE 2 END > rand()
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [LEFT OUTER JOIN]
|  hash predicates: t1.id = t2.id
|  other predicates: CASE WHEN t2.zip = 2 THEN 0.2 ELSE 2 END > rand()
|  row-size=20B cardinality=10
|
|--01:SCAN HDFS [functional.testtbl t2]
|     HDFS partitions=1/1 files=0 size=0B
|     row-size=12B cardinality=0
|
00:SCAN HDFS [functional.dimtbl t1]
   HDFS partitions=1/1 files=1 size=171B
   row-size=8B cardinality=10
====
# 1.Convert t2 left join t3 to t2 join t3 by ZEROIFNULL(t2.zip) < t3.test_zip, because
# t2.zip can be null but t3.test_zip can't be null. This is null-rejecting predicate
# for t3.
# 2.Convert t1 left join t2 to t1 join t2 by inner join on clause t2.id = t3.test_id
SELECT 1
FROM functional.dimtbl t1
  LEFT JOIN functional.testtbl t2 ON t1.id = t2.id
  LEFT JOIN functional.jointbl t3 ON t2.id = t3.test_id
  WHERE ZEROIFNULL(t2.zip) < t3.test_zip
---- PLAN
PLAN-ROOT SINK
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: t1.id = t2.id
|  other predicates: t3.test_zip > zeroifnull(t2.zip)
|  runtime filters: RF000 <- t2.id
|  row-size=32B cardinality=19
|
|--01:SCAN HDFS [functional.testtbl t2]
|     HDFS partitions=1/1 files=0 size=0B
|     row-size=12B cardinality=0
|
03:HASH JOIN [INNER JOIN]
|  hash predicates: t3.test_id = t1.id
|  runtime filters: RF002 <- t1.id
|  row-size=20B cardinality=19
|
|--00:SCAN HDFS [functional.dimtbl t1]
|     HDFS partitions=1/1 files=1 size=171B
|     runtime filters: RF000 -> t1.id
|     row-size=8B cardinality=10
|
02:SCAN HDFS [functional.jointbl t3]
   HDFS partitions=1/1 files=1 size=433B
   runtime filters: RF000 -> t3.test_id, RF002 -> t3.test_id
   row-size=12B cardinality=19
====
# 'ZEROIFNULL(t3.test_zip) < t2.zip' proves t2 is nonnullable, we can convert t1 left join
# t2 to t1 join t2
SELECT 1
FROM functional.dimtbl t1
  LEFT JOIN functional.testtbl t2 ON t1.id = t2.id
  LEFT JOIN functional.jointbl t3 ON t2.id = t3.test_id
  WHERE ZEROIFNULL(t3.test_zip) < t2.zip
---- PLAN
PLAN-ROOT SINK
|
04:HASH JOIN [RIGHT OUTER JOIN]
|  hash predicates: t3.test_id = t2.id
|  other predicates: t2.zip > zeroifnull(t3.test_zip)
|  runtime filters: RF000 <- t2.id
|  row-size=32B cardinality=10
|
|--03:HASH JOIN [INNER JOIN]
|  |  hash predicates: t1.id = t2.id
|  |  runtime filters: RF002 <- t2.id
|  |  row-size=20B cardinality=10
|  |
|  |--01:SCAN HDFS [functional.testtbl t2]
|  |     HDFS partitions=1/1 files=0 size=0B
|  |     row-size=12B cardinality=0
|  |
|  00:SCAN HDFS [functional.dimtbl t1]
|     HDFS partitions=1/1 files=1 size=171B
|     runtime filters: RF002 -> t1.id
|     row-size=8B cardinality=10
|
02:SCAN HDFS [functional.jointbl t3]
   HDFS partitions=1/1 files=1 size=433B
   runtime filters: RF000 -> t3.test_id
   row-size=12B cardinality=19
====
# We can't simplify outer join executing after inner join by inner join on clause
SELECT 1
FROM functional.dimtbl t1
  JOIN functional.testtbl t2 ON t1.id = t2.id
  LEFT JOIN functional.jointbl t3 ON t2.id = t3.test_id
---- PLAN
PLAN-ROOT SINK
|
04:HASH JOIN [LEFT OUTER JOIN]
|  hash predicates: t2.id = t3.test_id
|  row-size=24B cardinality=10
|
|--02:SCAN HDFS [functional.jointbl t3]
|     HDFS partitions=1/1 files=1 size=433B
|     row-size=8B cardinality=19
|
03:HASH JOIN [INNER JOIN]
|  hash predicates: t1.id = t2.id
|  runtime filters: RF000 <- t2.id
|  row-size=16B cardinality=10
|
|--01:SCAN HDFS [functional.testtbl t2]
|     HDFS partitions=1/1 files=0 size=0B
|     row-size=8B cardinality=0
|
00:SCAN HDFS [functional.dimtbl t1]
   HDFS partitions=1/1 files=1 size=171B
   runtime filters: RF000 -> t1.id
   row-size=8B cardinality=10
====
# Tests predicate containing condition functions.
select 1
from functional.alltypes t1
left outer join functional.alltypessmall t2
  on t1.id = t2.id
where ZEROIFNULL(t2.int_col) < 5
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [LEFT OUTER JOIN]
|  hash predicates: t1.id = t2.id
|  other predicates: zeroifnull(t2.int_col) < 5
|  row-size=12B cardinality=7.30K
|
|--01:SCAN HDFS [functional.alltypessmall t2]
|     HDFS partitions=4/4 files=4 size=6.32KB
|     row-size=8B cardinality=100
|
00:SCAN HDFS [functional.alltypes t1]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=4B cardinality=7.30K
====
# Tests is distinct from operator
SELECT 1
FROM functional.dimtbl t1
  LEFT JOIN functional.testtbl t2 ON t1.id = t2.id
  where t2.name is distinct from 'Name1'
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [LEFT OUTER JOIN]
|  hash predicates: t1.id = t2.id
|  other predicates: t2.name IS DISTINCT FROM 'Name1'
|  row-size=28B cardinality=10
|
|--01:SCAN HDFS [functional.testtbl t2]
|     HDFS partitions=1/1 files=0 size=0B
|     row-size=20B cardinality=0
|
00:SCAN HDFS [functional.dimtbl t1]
   HDFS partitions=1/1 files=1 size=171B
   row-size=8B cardinality=10
====
# Tests is not distinct from operator
SELECT 1
FROM functional.dimtbl t1
  LEFT JOIN functional.testtbl t2 ON t1.id = t2.id
  where t2.name is not distinct from 'Name1'
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [LEFT OUTER JOIN]
|  hash predicates: t1.id = t2.id
|  other predicates: t2.name IS NOT DISTINCT FROM 'Name1'
|  row-size=28B cardinality=10
|
|--01:SCAN HDFS [functional.testtbl t2]
|     HDFS partitions=1/1 files=0 size=0B
|     predicates: t2.name IS NOT DISTINCT FROM 'Name1'
|     row-size=20B cardinality=0
|
00:SCAN HDFS [functional.dimtbl t1]
   HDFS partitions=1/1 files=1 size=171B
   row-size=8B cardinality=10
====
# Convert a left outer join to an inner join
select 1
from functional.alltypes t1
left outer join functional.alltypessmall t2
  on t1.id = t2.id
where t2.int_col = 10
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [INNER JOIN]
|  hash predicates: t1.id = t2.id
|  runtime filters: RF000 <- t2.id
|  row-size=12B cardinality=10
|
|--01:SCAN HDFS [functional.alltypessmall t2]
|     HDFS partitions=4/4 files=4 size=6.32KB
|     predicates: t2.int_col = 10
|     row-size=8B cardinality=10
|
00:SCAN HDFS [functional.alltypes t1]
   HDFS partitions=24/24 files=24 size=478.45KB
   runtime filters: RF000 -> t1.id
   row-size=4B cardinality=7.30K
====
# Convert a right outer join to an inner join
select 1
from functional.alltypes t1
right outer join functional.alltypessmall t2
  on t1.id = t2.id
where t1.int_col = 10
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [INNER JOIN]
|  hash predicates: t1.id = t2.id
|  runtime filters: RF000 <- t2.id
|  row-size=12B cardinality=10
|
|--01:SCAN HDFS [functional.alltypessmall t2]
|     HDFS partitions=4/4 files=4 size=6.32KB
|     row-size=4B cardinality=100
|
00:SCAN HDFS [functional.alltypes t1]
   HDFS partitions=24/24 files=24 size=478.45KB
   predicates: t1.int_col = 10
   runtime filters: RF000 -> t1.id
   row-size=8B cardinality=730
====
# Convert a full outer join to an inner join
select 1
from functional.alltypes t1
full outer join functional.alltypessmall t2
  on t1.id = t2.id
where t1.int_col = t2.int_col
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [INNER JOIN]
|  hash predicates: t1.id = t2.id, t1.int_col = t2.int_col
|  runtime filters: RF000 <- t2.id, RF001 <- t2.int_col
|  row-size=16B cardinality=99
|
|--01:SCAN HDFS [functional.alltypessmall t2]
|     HDFS partitions=4/4 files=4 size=6.32KB
|     row-size=8B cardinality=100
|
00:SCAN HDFS [functional.alltypes t1]
   HDFS partitions=24/24 files=24 size=478.45KB
   runtime filters: RF000 -> t1.id, RF001 -> t1.int_col
   row-size=8B cardinality=7.30K
====
# Convert a full outer join to a left join
select 1
from functional.alltypes t1
full outer join functional.alltypessmall t2
  on t1.id = t2.id
where t1.int_col = 10
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [LEFT OUTER JOIN]
|  hash predicates: t1.id = t2.id
|  row-size=12B cardinality=730
|
|--01:SCAN HDFS [functional.alltypessmall t2]
|     HDFS partitions=4/4 files=4 size=6.32KB
|     row-size=4B cardinality=100
|
00:SCAN HDFS [functional.alltypes t1]
   HDFS partitions=24/24 files=24 size=478.45KB
   predicates: t1.int_col = 10
   row-size=8B cardinality=730
====
# Convert a full outer join to a right join
select 1
from functional.alltypes t1
full outer join functional.alltypessmall t2
  on t1.id = t2.id
where t2.int_col = 10
---- PLAN
PLAN-ROOT SINK
|
02:HASH JOIN [RIGHT OUTER JOIN]
|  hash predicates: t1.id = t2.id
|  runtime filters: RF000 <- t2.id
|  row-size=12B cardinality=10
|
|--01:SCAN HDFS [functional.alltypessmall t2]
|     HDFS partitions=4/4 files=4 size=6.32KB
|     predicates: t2.int_col = 10
|     row-size=8B cardinality=10
|
00:SCAN HDFS [functional.alltypes t1]
   HDFS partitions=24/24 files=24 size=478.45KB
   runtime filters: RF000 -> t1.id
   row-size=4B cardinality=7.30K
====
# QUERY: TPCDS-Q49
select
 'web' as channel
 ,web.item
 ,web.return_ratio
 ,web.return_rank
 ,web.currency_rank
 from (
  select
   item
  ,return_ratio
  ,currency_ratio
  ,rank() over (order by return_ratio) as return_rank
  ,rank() over (order by currency_ratio) as currency_rank
  from
  ( select ws.ws_item_sk as item
    ,(cast(sum(coalesce(wr.wr_return_quantity,0)) as decimal(15,4))/
    cast(sum(coalesce(ws.ws_quantity,0)) as decimal(15,4) )) as return_ratio
    ,(cast(sum(coalesce(wr.wr_return_amt,0)) as decimal(15,4))/
    cast(sum(coalesce(ws.ws_net_paid,0)) as decimal(15,4) )) as currency_ratio
    from
     tpcds.web_sales ws left outer join tpcds.web_returns wr
      on (ws.ws_order_number = wr.wr_order_number and
      ws.ws_item_sk = wr.wr_item_sk)
                 ,tpcds.date_dim
    where
      wr.wr_return_amt > 10000
      and ws.ws_net_profit > 1
                         and ws.ws_net_paid > 0
                         and ws.ws_quantity > 0
                         and ws_sold_date_sk = d_date_sk
                         and d_year = 2002
                         and d_moy = 12
    group by ws.ws_item_sk
  ) in_web
 ) web
 where
 (
 web.return_rank <= 10
 or
 web.currency_rank <= 10
 )
 union
 select
 'catalog' as channel
 ,catalog.item
 ,catalog.return_ratio
 ,catalog.return_rank
 ,catalog.currency_rank
 from (
  select
   item
  ,return_ratio
  ,currency_ratio
  ,rank() over (order by return_ratio) as return_rank
  ,rank() over (order by currency_ratio) as currency_rank
  from
  ( select
    cs.cs_item_sk as item
    ,(cast(sum(coalesce(cr.cr_return_quantity,0)) as decimal(15,4))/
    cast(sum(coalesce(cs.cs_quantity,0)) as decimal(15,4) )) as return_ratio
    ,(cast(sum(coalesce(cr.cr_return_amount,0)) as decimal(15,4))/
    cast(sum(coalesce(cs.cs_net_paid,0)) as decimal(15,4) )) as currency_ratio
    from
    tpcds.catalog_sales cs left outer join tpcds.catalog_returns cr
      on (cs.cs_order_number = cr.cr_order_number and
      cs.cs_item_sk = cr.cr_item_sk)
                ,tpcds.date_dim
    where
      cr.cr_return_amount > 10000
      and cs.cs_net_profit > 1
                         and cs.cs_net_paid > 0
                         and cs.cs_quantity > 0
                         and cs_sold_date_sk = d_date_sk
                         and d_year = 2002
                         and d_moy = 12
                 group by cs.cs_item_sk
  ) in_cat
 ) catalog
 where
 (
 catalog.return_rank <= 10
 or
 catalog.currency_rank <=10
 )
 union
 select
 'store' as channel
 ,store.item
 ,store.return_ratio
 ,store.return_rank
 ,store.currency_rank
 from (
  select
   item
  ,return_ratio
  ,currency_ratio
  ,rank() over (order by return_ratio) as return_rank
  ,rank() over (order by currency_ratio) as currency_rank
  from
  ( select sts.ss_item_sk as item
    ,(cast(sum(coalesce(sr.sr_return_quantity,0)) as decimal(15,4))/cast(sum(coalesce(sts.ss_quantity,0)) as decimal(15,4) )) as return_ratio
    ,(cast(sum(coalesce(sr.sr_return_amt,0)) as decimal(15,4))/cast(sum(coalesce(sts.ss_net_paid,0)) as decimal(15,4) )) as currency_ratio
    from
    tpcds.store_sales sts left outer join tpcds.store_returns sr
      on (sts.ss_ticket_number = sr.sr_ticket_number and sts.ss_item_sk = sr.sr_item_sk)
                ,tpcds.date_dim
    where
      sr.sr_return_amt > 10000
      and sts.ss_net_profit > 1
                         and sts.ss_net_paid > 0
                         and sts.ss_quantity > 0
                         and ss_sold_date_sk = d_date_sk
                         and d_year = 2002
                         and d_moy = 12
    group by sts.ss_item_sk
  ) in_store
 ) store
 where  (
 store.return_rank <= 10
 or
 store.currency_rank <= 10
 )
 order by 1,4,5
 limit 100;
---- PLAN
PLAN-ROOT SINK
|
35:AGGREGATE [FINALIZE]
|  group by: channel, item, return_ratio, return_rank, currency_rank
|  row-size=52B cardinality=181
|
00:UNION
|  row-size=52B cardinality=181
|
|--34:TOP-N [LIMIT=100]
|  |  order by: 'store' ASC, return_rank ASC, currency_rank ASC
|  |  row-size=40B cardinality=100
|  |
|  33:SELECT
|  |  predicates: (rank() <= 10 OR rank() <= 10)
|  |  row-size=104B cardinality=126
|  |
|  32:ANALYTIC
|  |  functions: rank()
|  |  order by: (CAST(sum(coalesce(sr.sr_return_amt, 0)) AS DECIMAL(15,4)) / CAST(sum(coalesce(sts.ss_net_paid, 0)) AS DECIMAL(15,4))) ASC
|  |  window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
|  |  row-size=104B cardinality=1.25K
|  |
|  31:SORT
|  |  order by: (CAST(sum(coalesce(sr.sr_return_amt, 0)) AS DECIMAL(15,4)) / CAST(sum(coalesce(sts.ss_net_paid, 0)) AS DECIMAL(15,4))) ASC
|  |  row-size=96B cardinality=1.25K
|  |
|  30:ANALYTIC
|  |  functions: rank()
|  |  order by: (CAST(sum(coalesce(sr.sr_return_quantity, 0)) AS DECIMAL(15,4)) / CAST(sum(coalesce(sts.ss_quantity, 0)) AS DECIMAL(15,4))) ASC
|  |  window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
|  |  row-size=80B cardinality=1.25K
|  |
|  29:SORT
|  |  order by: (CAST(sum(coalesce(sr.sr_return_quantity, 0)) AS DECIMAL(15,4)) / CAST(sum(coalesce(sts.ss_quantity, 0)) AS DECIMAL(15,4))) ASC
|  |  row-size=72B cardinality=1.25K
|  |
|  28:AGGREGATE [FINALIZE]
|  |  output: sum(coalesce(sr.sr_return_quantity, 0)), sum(coalesce(sts.ss_quantity, 0)), sum(coalesce(sr.sr_return_amt, 0)), sum(coalesce(sts.ss_net_paid, 0))
|  |  group by: sts.ss_item_sk
|  |  row-size=56B cardinality=1.25K
|  |
|  27:HASH JOIN [INNER JOIN]
|  |  hash predicates: sts.ss_item_sk = sr.sr_item_sk, sts.ss_ticket_number = sr.sr_ticket_number
|  |  runtime filters: RF012 <- sr.sr_item_sk, RF013 <- sr.sr_ticket_number
|  |  row-size=68B cardinality=1.25K
|  |
|  |--24:SCAN HDFS [tpcds.store_returns sr]
|  |     HDFS partitions=1/1 files=1 size=31.19MB
|  |     predicates: sr.sr_return_amt > 10000
|  |     row-size=24B cardinality=28.75K
|  |
|  26:HASH JOIN [INNER JOIN]
|  |  hash predicates: ss_sold_date_sk = d_date_sk
|  |  runtime filters: RF016 <- d_date_sk
|  |  row-size=44B cardinality=17.05K
|  |
|  |--25:SCAN HDFS [tpcds.date_dim]
|  |     HDFS partitions=1/1 files=1 size=9.84MB
|  |     predicates: d_year = 2002, d_moy = 12
|  |     row-size=12B cardinality=108
|  |
|  23:SCAN HDFS [tpcds.store_sales sts]
|     HDFS partitions=1824/1824 files=1824 size=346.60MB
|     predicates: sts.ss_net_paid > 0, sts.ss_net_profit > 1, sts.ss_quantity > 0
|     runtime filters: RF012 -> sts.ss_item_sk, RF013 -> sts.ss_ticket_number, RF016 -> ss_sold_date_sk
|     row-size=32B cardinality=288.04K
|
|--22:SELECT
|  |  predicates: (rank() <= 10 OR rank() <= 10)
|  |  row-size=104B cardinality=50
|  |
|  21:ANALYTIC
|  |  functions: rank()
|  |  order by: (CAST(sum(coalesce(cr.cr_return_amount, 0)) AS DECIMAL(15,4)) / CAST(sum(coalesce(cs.cs_net_paid, 0)) AS DECIMAL(15,4))) ASC
|  |  window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
|  |  row-size=104B cardinality=503
|  |
|  20:SORT
|  |  order by: (CAST(sum(coalesce(cr.cr_return_amount, 0)) AS DECIMAL(15,4)) / CAST(sum(coalesce(cs.cs_net_paid, 0)) AS DECIMAL(15,4))) ASC
|  |  row-size=96B cardinality=503
|  |
|  19:ANALYTIC
|  |  functions: rank()
|  |  order by: (CAST(sum(coalesce(cr.cr_return_quantity, 0)) AS DECIMAL(15,4)) / CAST(sum(coalesce(cs.cs_quantity, 0)) AS DECIMAL(15,4))) ASC
|  |  window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
|  |  row-size=80B cardinality=503
|  |
|  18:SORT
|  |  order by: (CAST(sum(coalesce(cr.cr_return_quantity, 0)) AS DECIMAL(15,4)) / CAST(sum(coalesce(cs.cs_quantity, 0)) AS DECIMAL(15,4))) ASC
|  |  row-size=72B cardinality=503
|  |
|  17:AGGREGATE [FINALIZE]
|  |  output: sum(coalesce(cr.cr_return_quantity, 0)), sum(coalesce(cs.cs_quantity, 0)), sum(coalesce(cr.cr_return_amount, 0)), sum(coalesce(cs.cs_net_paid, 0))
|  |  group by: cs.cs_item_sk
|  |  row-size=56B cardinality=503
|  |
|  16:HASH JOIN [INNER JOIN]
|  |  hash predicates: cs_sold_date_sk = d_date_sk
|  |  runtime filters: RF006 <- d_date_sk
|  |  row-size=68B cardinality=503
|  |
|  |--14:SCAN HDFS [tpcds.date_dim]
|  |     HDFS partitions=1/1 files=1 size=9.84MB
|  |     predicates: d_year = 2002, d_moy = 12
|  |     row-size=12B cardinality=108
|  |
|  15:HASH JOIN [INNER JOIN]
|  |  hash predicates: cs.cs_item_sk = cr.cr_item_sk, cs.cs_order_number = cr.cr_order_number
|  |  runtime filters: RF008 <- cr.cr_item_sk, RF009 <- cr.cr_order_number
|  |  row-size=56B cardinality=8.49K
|  |
|  |--13:SCAN HDFS [tpcds.catalog_returns cr]
|  |     HDFS partitions=1/1 files=1 size=20.39MB
|  |     predicates: cr.cr_return_amount > 10000
|  |     row-size=24B cardinality=14.41K
|  |
|  12:SCAN HDFS [tpcds.catalog_sales cs]
|     HDFS partitions=1/1 files=1 size=282.20MB
|     predicates: cs.cs_net_paid > 0, cs.cs_net_profit > 1, cs.cs_quantity > 0
|     runtime filters: RF006 -> cs_sold_date_sk, RF008 -> cs.cs_item_sk, RF009 -> cs.cs_order_number
|     row-size=32B cardinality=144.16K
|
11:SELECT
|  predicates: (rank() <= 10 OR rank() <= 10)
|  row-size=104B cardinality=31
|
10:ANALYTIC
|  functions: rank()
|  order by: (CAST(sum(coalesce(wr.wr_return_amt, 0)) AS DECIMAL(15,4)) / CAST(sum(coalesce(ws.ws_net_paid, 0)) AS DECIMAL(15,4))) ASC
|  window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
|  row-size=104B cardinality=312
|
09:SORT
|  order by: (CAST(sum(coalesce(wr.wr_return_amt, 0)) AS DECIMAL(15,4)) / CAST(sum(coalesce(ws.ws_net_paid, 0)) AS DECIMAL(15,4))) ASC
|  row-size=96B cardinality=312
|
08:ANALYTIC
|  functions: rank()
|  order by: (CAST(sum(coalesce(wr.wr_return_quantity, 0)) AS DECIMAL(15,4)) / CAST(sum(coalesce(ws.ws_quantity, 0)) AS DECIMAL(15,4))) ASC
|  window: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
|  row-size=80B cardinality=312
|
07:SORT
|  order by: (CAST(sum(coalesce(wr.wr_return_quantity, 0)) AS DECIMAL(15,4)) / CAST(sum(coalesce(ws.ws_quantity, 0)) AS DECIMAL(15,4))) ASC
|  row-size=72B cardinality=312
|
06:AGGREGATE [FINALIZE]
|  output: sum(coalesce(wr.wr_return_quantity, 0)), sum(coalesce(ws.ws_quantity, 0)), sum(coalesce(wr.wr_return_amt, 0)), sum(coalesce(ws.ws_net_paid, 0))
|  group by: ws.ws_item_sk
|  row-size=56B cardinality=312
|
05:HASH JOIN [INNER JOIN]
|  hash predicates: ws.ws_item_sk = wr.wr_item_sk, ws.ws_order_number = wr.wr_order_number
|  runtime filters: RF000 <- wr.wr_item_sk, RF001 <- wr.wr_order_number
|  row-size=68B cardinality=312
|
|--02:SCAN HDFS [tpcds.web_returns wr]
|     HDFS partitions=1/1 files=1 size=9.35MB
|     predicates: wr.wr_return_amt > 10000
|     row-size=24B cardinality=7.18K
|
04:HASH JOIN [INNER JOIN]
|  hash predicates: ws_sold_date_sk = d_date_sk
|  runtime filters: RF004 <- d_date_sk
|  row-size=44B cardinality=4.29K
|
|--03:SCAN HDFS [tpcds.date_dim]
|     HDFS partitions=1/1 files=1 size=9.84MB
|     predicates: d_year = 2002, d_moy = 12
|     row-size=12B cardinality=108
|
01:SCAN HDFS [tpcds.web_sales ws]
   HDFS partitions=1/1 files=1 size=140.07MB
   predicates: ws.ws_net_paid > 0, ws.ws_net_profit > 1, ws.ws_quantity > 0
   runtime filters: RF000 -> ws.ws_item_sk, RF001 -> ws.ws_order_number, RF004 -> ws_sold_date_sk
   row-size=32B cardinality=71.94K
====