# Check that impossible conditions are detected
select *
from functional.alltypes a
where a.string_col = "looooooooooooooooong string" and
      a.string_col = "mediumstring" and
      a.string_col = "a"
---- PLAN
PLAN-ROOT SINK
|
00:EMPTYSET
====
# Test multiple forward propagation
select * from functional.widetable_250_cols a
where a.int_col1 = 10 and a.int_col2 = a.int_col1 + 1 and a.int_col3 = a.int_col2 * 5
      and a.int_col4 = a.int_col3 * 2;
---- PLAN
PLAN-ROOT SINK
|
00:SCAN HDFS [functional.widetable_250_cols a]
   partitions=1/1 files=1 size=28.69KB
   predicates: a.int_col1 = 10, a.int_col2 = 11, a.int_col3 = 55, a.int_col4 = 110
   row-size=1.21KB cardinality=unavailable
====
# Test multiple forward propagation
select * from functional.widetable_250_cols a
where a.int_col1 = 10 and a.int_col2 = a.int_col1 + 1 and a.int_col3 = a.int_col2 * 5
      and a.int_col3 * -7 = a.int_col4
---- PLAN
PLAN-ROOT SINK
|
00:SCAN HDFS [functional.widetable_250_cols a]
   partitions=1/1 files=1 size=28.69KB
   predicates: a.int_col1 = 10, a.int_col2 = 11, a.int_col3 = 55, a.int_col4 = -385
   row-size=1.21KB cardinality=unavailable
====
# Test multiple forward propagation
select * from functional.widetable_250_cols a
where a.int_col1 = 10 and a.int_col2 = a.int_col1 + 1 and a.int_col2 * 5 = a.int_col3
      and a.int_col3 * -9 = a.int_col4
---- PLAN
PLAN-ROOT SINK
|
00:SCAN HDFS [functional.widetable_250_cols a]
   partitions=1/1 files=1 size=28.69KB
   predicates: a.int_col1 = 10, a.int_col2 = 11, a.int_col3 = 55, a.int_col4 = -495
   row-size=1.21KB cardinality=unavailable
====
# Test multiple forward propagation, and a reversed propagation
# (which fails as we can't rewrite 55 = a.int_col4 / 10)
select * from functional.widetable_250_cols a
where a.int_col1 = 10 and a.int_col2 = a.int_col1 + 1 and a.int_col3 = a.int_col2 * 5
      and a.int_col4 / 10 = a.int_col3
---- PLAN
PLAN-ROOT SINK
|
00:SCAN HDFS [functional.widetable_250_cols a]
   partitions=1/1 files=1 size=28.69KB
   predicates: a.int_col1 = 10, a.int_col2 = 11, a.int_col3 = 55, a.int_col4 / 10 = 55
   row-size=1.21KB cardinality=unavailable
====
# Another impossibility (a.int_col3 = a.int_col2 * 5 = a.int_col2 * -7)
select * from functional.widetable_250_cols a
where a.int_col1 = 10 and a.int_col2 = a.int_col1 + 1 and a.int_col3 = a.int_col2 * 5
      and a.int_col3 * -7 = a.int_col2;
---- PLAN
PLAN-ROOT SINK
|
00:EMPTYSET
====
# An inline view which takes false conjuncts
select count(*) from
  (select id, int_col from functional.alltypes) T
  where T.int_col = 10 and T.int_col = 12
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=0
|
00:EMPTYSET
====
# An inline view which becomes false at the scan node
select count(*) from
  (select id, int_col from functional.alltypes where int_col = 10) T
  where T.int_col = 12
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=0
|
00:EMPTYSET
====
# Explicit casts are not considered for propagation
select * from functional.alltypes a
where cast(a.int_col as string) = 'abc' and cast(int_col as string) > 'xyz'
---- PLAN
PLAN-ROOT SINK
|
00:SCAN HDFS [functional.alltypes a]
   partitions=24/24 files=24 size=478.45KB
   predicates: CAST(a.int_col AS STRING) = 'abc', CAST(int_col AS STRING) > 'xyz'
   row-size=89B cardinality=231
====
# Implicit casts are considered for propagation
select * from functional.alltypes a
where a.tinyint_col = 10000 and a.tinyint_col < 10000
---- PLAN
PLAN-ROOT SINK
|
00:EMPTYSET
====
# Constant predicates always get removed
select count(*) from
  (select sum(int_col) over(partition by int_col), int_col
   from functional.alltypes where int_col = 10 group by int_col limit 10)  T
where T.int_col = 12 and T.int_col > 1
---- PLAN
PLAN-ROOT SINK
|
03:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=0
|
02:SELECT
|  predicates: int_col = 12, int_col > 1
|  row-size=4B cardinality=0
|
01:AGGREGATE [FINALIZE]
|  group by: int_col
|  limit: 10
|  row-size=4B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   predicates: int_col = 10
   row-size=4B cardinality=730
====
# Many constant predicates removed
select count(*) from
  (select * from functional.alltypes where int_col = 10) T
where T.int_col = 10 and T.int_col > 1 and T.int_col = 10 and T.int_col = T.int_col
  and 2 * T.int_col = 20
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   predicates: int_col = 10
   row-size=4B cardinality=730
====
# All true predicates elided
select count(*) from
  (select * from functional.alltypes) T
where 2 * 5 = 10 and 3 - 11 = -8 and 7 * 5 = 35
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   row-size=0B cardinality=7.30K
====
# Many redundant / duplicate predicates
 select count(*) from
  (select * from functional.alltypes where int_col = 10) T
where T.int_col = 10 and T.int_col > 1 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 1 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 2 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 3 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 4 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 5 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 6 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 7 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 8 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 9 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 1 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 2 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 3 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 4 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 5 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 6 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 7 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 8 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 9 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 1 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 2 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 3 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 4 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 5 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 6 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 7 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 8 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 9 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col and
 T.int_col = 10 and T.int_col > 0 and T.int_col = 10 and T.int_col = T.int_col
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   predicates: int_col = 10
   row-size=4B cardinality=730
====
# Non-trivial expr substitution (const false)
select count(*) from
  (select * from functional.alltypes where int_col = 10) T
where T.int_col = 10 and T.int_col > 1 and T.int_col = 10 and T.int_col = T.int_col and
coalesce(NULL, T.int_col) + T.int_col * T.int_col = 100
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=0
|
00:EMPTYSET
====
# Non-trivial expr substitution (const true)
select count(*) from
  (select * from functional.alltypes where int_col = 10) T
where T.int_col = 10 and T.int_col > 1 and T.int_col = 10 and T.int_col = T.int_col and
  (coalesce(NULL, T.int_col) + T.int_col * T.int_col = 100 OR
   coalesce(NULL, T.int_col) + T.int_col = 20)
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   predicates: int_col = 10
   row-size=4B cardinality=730
====
# Non-trivial expr substitution (non-constant)
select count(*) from
  (select * from functional.alltypes where int_col = 10) T
where T.int_col = 10 and T.int_col > 1 and T.int_col = 10 and T.int_col = T.int_col and
(coalesce(NULL, T.int_col) + random() * T.tinyint_col = 100 OR
 coalesce(NULL, T.int_col) + T.int_col = 20)
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   predicates: int_col = 10, TRUE OR 10 + random() * functional.alltypes.tinyint_col = 100
   row-size=5B cardinality=231
====
# Collection predicates within HDFS scan nodes get optimized
select 1
from tpch_nested_parquet.customer c, c.c_orders o, o.o_lineitems
where l_partkey < l_suppkey and c.c_nationkey = 10 and o_orderkey = 4 and l_suppkey = 10
---- PLAN
PLAN-ROOT SINK
|
01:SUBPLAN
|  row-size=50B cardinality=600.00K
|
|--08:NESTED LOOP JOIN [CROSS JOIN]
|  |  row-size=50B cardinality=100
|  |
|  |--02:SINGULAR ROW SRC
|  |     row-size=14B cardinality=1
|  |
|  04:SUBPLAN
|  |  row-size=36B cardinality=100
|  |
|  |--07:NESTED LOOP JOIN [CROSS JOIN]
|  |  |  row-size=36B cardinality=10
|  |  |
|  |  |--05:SINGULAR ROW SRC
|  |  |     row-size=20B cardinality=1
|  |  |
|  |  06:UNNEST [o.o_lineitems]
|  |     row-size=0B cardinality=10
|  |
|  03:UNNEST [c.c_orders o]
|     row-size=0B cardinality=10
|
00:SCAN HDFS [tpch_nested_parquet.customer c]
   partitions=1/1 files=4 size=288.99MB
   predicates: c.c_nationkey = 10, !empty(c.c_orders)
   predicates on o: !empty(o.o_lineitems), o_orderkey = 4
   predicates on o_lineitems: l_partkey < 10, l_suppkey = 10
   row-size=14B cardinality=6.00K
====
# Nested predicates also get propagated
select 1
from tpch_nested_parquet.customer c, c.c_orders o, o.o_lineitems
where l_partkey < l_suppkey and c.c_nationkey = 10 and o_orderkey = o_shippriority
  and l_suppkey = 10 and o_shippriority = c_nationkey
---- PLAN
PLAN-ROOT SINK
|
01:SUBPLAN
|  row-size=54B cardinality=600.00K
|
|--08:NESTED LOOP JOIN [INNER JOIN]
|  |  join predicates: o_shippriority = c_nationkey
|  |  row-size=54B cardinality=100
|  |
|  |--02:SINGULAR ROW SRC
|  |     row-size=14B cardinality=1
|  |
|  04:SUBPLAN
|  |  row-size=40B cardinality=100
|  |
|  |--07:NESTED LOOP JOIN [CROSS JOIN]
|  |  |  row-size=40B cardinality=10
|  |  |
|  |  |--05:SINGULAR ROW SRC
|  |  |     row-size=24B cardinality=1
|  |  |
|  |  06:UNNEST [o.o_lineitems]
|  |     row-size=0B cardinality=10
|  |
|  03:UNNEST [c.c_orders o]
|     row-size=0B cardinality=10
|
00:SCAN HDFS [tpch_nested_parquet.customer c]
   partitions=1/1 files=4 size=288.99MB
   predicates: c.c_nationkey = 10, !empty(c.c_orders)
   predicates on o: !empty(o.o_lineitems), o.o_orderkey = 10, o.o_shippriority = 10
   predicates on o_lineitems: l_partkey < 10, l_suppkey = 10
   row-size=14B cardinality=6.00K
====
# Using IS NULL
select count(*) from functional.alltypes where id = 10 and bool_col is null
   and id = bool_col;
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=0
|
00:EMPTYSET
====
# Using = null
select count(*) from functional.alltypes where id = 10 and bool_col = null and id = bool_col
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=0
|
00:EMPTYSET
====
# IS NULL and >
select count(*) from functional.alltypes where id > 0 and bool_col is null
   and id = bool_col;
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   predicates: bool_col IS NULL, functional.alltypes.id IS NULL, id > 0, functional.alltypes.bool_col > 0, id = bool_col
   row-size=5B cardinality=730
====
# = NULL and >
select count(*) from functional.alltypes where id > 0 and bool_col = null
   and id = bool_col
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=0
|
00:EMPTYSET
====
