select * from functional_kudu.testtbl
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.testtbl]
   row-size=28B cardinality=0
---- SCANRANGELOCATIONS
NODE 0:
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [(int64 id=1004), (int64 id=1008))}
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [(int64 id=1008), <end>)}
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [<start>, (int64 id=1004))}
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN KUDU [functional_kudu.testtbl]
   row-size=28B cardinality=0
====
select * from functional_kudu.testtbl where name = '10'
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.testtbl]
   kudu predicates: name = '10'
   row-size=28B cardinality=0
---- SCANRANGELOCATIONS
NODE 0:
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [(int64 id=1004), (int64 id=1008))}
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [(int64 id=1008), <end>)}
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [<start>, (int64 id=1004))}
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN KUDU [functional_kudu.testtbl]
   kudu predicates: name = '10'
   row-size=28B cardinality=0
====
select * from functional_kudu.testtbl where name = NULL
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.testtbl]
   predicates: name = NULL
   row-size=28B cardinality=0
====
insert into functional_kudu.testtbl(id) values (10)
---- PLAN
INSERT INTO KUDU [functional_kudu.testtbl]
|
00:UNION
   constant-operands=1
   row-size=1B cardinality=1
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [functional_kudu.testtbl]
|
02:PARTIAL SORT
|  order by: KuduPartition(10) ASC NULLS LAST, 10 ASC NULLS LAST
|  row-size=5B cardinality=1
|
01:EXCHANGE [KUDU(KuduPartition(10))]
|
00:UNION
   constant-operands=1
   row-size=1B cardinality=1
====
insert into functional_kudu.testtbl(id) select int_col from functional_kudu.tinyinttable
---- PLAN
INSERT INTO KUDU [functional_kudu.testtbl]
|
00:SCAN KUDU [functional_kudu.tinyinttable]
   row-size=4B cardinality=10
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [functional_kudu.testtbl]
|
02:PARTIAL SORT
|  order by: KuduPartition(int_col) ASC NULLS LAST, int_col ASC NULLS LAST
|  row-size=8B cardinality=10
|
01:EXCHANGE [KUDU(KuduPartition(int_col))]
|
00:SCAN KUDU [functional_kudu.tinyinttable]
   row-size=4B cardinality=10
====
insert into functional_kudu.testtbl(id, name)
select count(distinct id), name from functional_kudu.dimtbl
group by name
---- PLAN
INSERT INTO KUDU [functional_kudu.testtbl]
|
02:AGGREGATE [FINALIZE]
|  output: count(id)
|  group by: name
|  row-size=25B cardinality=10
|
01:AGGREGATE
|  group by: name, id
|  row-size=25B cardinality=10
|
00:SCAN KUDU [functional_kudu.dimtbl]
   row-size=29B cardinality=10
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [functional_kudu.testtbl]
|
08:PARTIAL SORT
|  order by: KuduPartition(count(id)) ASC NULLS LAST, count(id) ASC NULLS LAST
|  row-size=29B cardinality=10
|
07:EXCHANGE [KUDU(KuduPartition(count(id)))]
|
06:AGGREGATE [FINALIZE]
|  output: count:merge(id)
|  group by: name
|  row-size=25B cardinality=10
|
05:EXCHANGE [HASH(name)]
|
02:AGGREGATE [STREAMING]
|  output: count(id)
|  group by: name
|  row-size=25B cardinality=10
|
04:AGGREGATE
|  group by: name, id
|  row-size=25B cardinality=10
|
03:EXCHANGE [HASH(name,id)]
|
01:AGGREGATE [STREAMING]
|  group by: name, id
|  row-size=25B cardinality=10
|
00:SCAN KUDU [functional_kudu.dimtbl]
   row-size=29B cardinality=10
====
# All predicates can be pushed down.
select * from functional_kudu.testtbl
where id >= 10 and zip <= 5 and 20 >= id and 'foo' = name and zip >= 0 and 30 >= zip
and zip > 1 and zip < 50
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.testtbl]
   kudu predicates: name = 'foo', id <= 20, id >= 10, zip < 50, zip <= 30, zip <= 5, zip > 1, zip >= 0
   row-size=28B cardinality=0
---- SCANRANGELOCATIONS
NODE 0:
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [<start>, (int64 id=1004))}
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN KUDU [functional_kudu.testtbl]
   kudu predicates: name = 'foo', id <= 20, id >= 10, zip < 50, zip <= 30, zip <= 5, zip > 1, zip >= 0
   row-size=28B cardinality=0
====
# Constant propagation works for Kudu
select * from functional_kudu.alltypes t
where t.int_col = 10 and t.bigint_col = t.int_col * 100 and
      cast(t.tinyint_col as bigint) = t.bigint_col
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.alltypes t]
   predicates: CAST(t.tinyint_col AS BIGINT) = 1000
   kudu predicates: t.bigint_col = 1000, t.int_col = 10
   row-size=97B cardinality=107
====
# Test constant folding.
select * from functional_kudu.testtbl
where id < 10 + 30  and cast(sin(id) as boolean) = true and 20 * 3 >= id and 10 * 10 + 3 > id
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.testtbl]
   predicates: CAST(sin(id) AS BOOLEAN) = TRUE
   kudu predicates: id < 103, id < 40, id <= 60
   row-size=28B cardinality=0
---- SCANRANGELOCATIONS
NODE 0:
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [<start>, (int64 id=1004))}
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN KUDU [functional_kudu.testtbl]
   predicates: CAST(sin(id) AS BOOLEAN) = TRUE
   kudu predicates: id < 103, id < 40, id <= 60
   row-size=28B cardinality=0
====
# Some predicates can be pushed down but others can't (predicate on an non-const value).
select * from functional_kudu.testtbl
where cast(sin(id) as boolean) = true and name = 'a'
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.testtbl]
   predicates: CAST(sin(id) AS BOOLEAN) = TRUE
   kudu predicates: name = 'a'
   row-size=28B cardinality=0
---- SCANRANGELOCATIONS
NODE 0:
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [(int64 id=1004), (int64 id=1008))}
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [(int64 id=1008), <end>)}
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [<start>, (int64 id=1004))}
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN KUDU [functional_kudu.testtbl]
   predicates: CAST(sin(id) AS BOOLEAN) = TRUE
   kudu predicates: name = 'a'
   row-size=28B cardinality=0
====
# No predicates can be pushed down (predicate on a non-const value and
# non-binary predicate). There is a single tablet so no partition pruning.
select * from functional_kudu.testtbl
where cast(sin(id) as boolean) = true and name is null
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.testtbl]
   predicates: CAST(sin(id) AS BOOLEAN) = TRUE
   kudu predicates: name IS NULL
   row-size=28B cardinality=0
---- SCANRANGELOCATIONS
NODE 0:
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [(int64 id=1004), (int64 id=1008))}
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [(int64 id=1008), <end>)}
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [<start>, (int64 id=1004))}
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN KUDU [functional_kudu.testtbl]
   predicates: CAST(sin(id) AS BOOLEAN) = TRUE
   kudu predicates: name IS NULL
   row-size=28B cardinality=0
====
# Derived EmptySets for Kudu
select * from functional_kudu.alltypes t
where t.int_col = 10 and t.bigint_col = t.int_col * 100 and
      CAST(t.int_col as BIGINT) = t.bigint_col
---- PLAN
PLAN-ROOT SINK
|
00:EMPTYSET
====
# IMPALA-3856: KuduScanNode crash when pushing predicates including a cast
select o_orderkey from tpch_kudu.orders where o_orderkey < 10.0 order by 1
---- PLAN
PLAN-ROOT SINK
|
01:SORT
|  order by: o_orderkey ASC
|  row-size=8B cardinality=150.00K
|
00:SCAN KUDU [tpch_kudu.orders]
   predicates: o_orderkey < 10.0
   row-size=8B cardinality=150.00K
====
# IMPALA-3871: Casting literals to TIMESTAMP throw when pushed to KuduScanNode
select t.c from
  (select cast(o_orderdate as timestamp) c from tpch_kudu.orders where o_orderkey < 10) t
where t.c <= cast('1995-01-01 00:00:00' as timestamp) order by c
---- PLAN
PLAN-ROOT SINK
|
01:SORT
|  order by: c ASC
|  row-size=22B cardinality=150.00K
|
00:SCAN KUDU [tpch_kudu.orders]
   predicates: CAST(o_orderdate AS TIMESTAMP) <= TIMESTAMP '1995-01-01 00:00:00'
   kudu predicates: o_orderkey < 10
   row-size=26B cardinality=150.00K
====
# IMPALA-4213: Planner not pushing some predicates with constant exprs to Kudu
select count(*) from functional_kudu.alltypes
where id < 1475059765 + 10
and 1475059765 - 100 < id
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
00:SCAN KUDU [functional_kudu.alltypes]
   kudu predicates: id < 1475059775, id > 1475059665
   row-size=0B cardinality=730
====
insert into table functional_kudu.alltypes
select * from functional_kudu.alltypes
---- PLAN
INSERT INTO KUDU [functional_kudu.alltypes]
|
00:SCAN KUDU [functional_kudu.alltypes]
   row-size=97B cardinality=7.30K
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [functional_kudu.alltypes]
|
02:PARTIAL SORT
|  order by: KuduPartition(functional_kudu.alltypes.id) ASC NULLS LAST, id ASC NULLS LAST
|  row-size=93B cardinality=7.30K
|
01:EXCHANGE [KUDU(KuduPartition(functional_kudu.alltypes.id))]
|
00:SCAN KUDU [functional_kudu.alltypes]
   row-size=97B cardinality=7.30K
====
insert into table functional_kudu.testtbl
select id, name, maxzip as zip
from (
select id, max(zip) as maxzip, name
from functional_kudu.testtbl group by id, name
) as sub;
---- PLAN
INSERT INTO KUDU [functional_kudu.testtbl]
|
01:AGGREGATE [FINALIZE]
|  output: max(zip)
|  group by: id, name
|  row-size=24B cardinality=0
|
00:SCAN KUDU [functional_kudu.testtbl]
   row-size=28B cardinality=0
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [functional_kudu.testtbl]
|
05:PARTIAL SORT
|  order by: KuduPartition(id) ASC NULLS LAST, id ASC NULLS LAST
|  row-size=28B cardinality=0
|
04:EXCHANGE [KUDU(KuduPartition(id))]
|
03:AGGREGATE [FINALIZE]
|  output: max:merge(zip)
|  group by: id, name
|  row-size=24B cardinality=0
|
02:EXCHANGE [HASH(id,name)]
|
01:AGGREGATE [STREAMING]
|  output: max(zip)
|  group by: id, name
|  row-size=24B cardinality=0
|
00:SCAN KUDU [functional_kudu.testtbl]
   row-size=28B cardinality=0
====
# IMPALA-4479: Test proper folding of constant boolean exprs.
select * from functional_kudu.alltypes
where bool_col = (true and false)
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.alltypes]
   kudu predicates: bool_col = FALSE
   row-size=97B cardinality=3.65K
====
# IMPALA-4578: Test predicate propagation for Kudu scans.
select /* +straight_join */ count(*)
from functional_kudu.alltypes a
inner join functional_kudu.alltypessmall b
  on a.id = b.id
left outer join functional_kudu.alltypestiny c
  on b.int_col = c.int_col
where a.id > 10 and c.int_col > 20
  and cast(b.id as string) > '123'
---- PLAN
PLAN-ROOT SINK
|
05:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
04:HASH JOIN [LEFT OUTER JOIN]
|  hash predicates: b.int_col = c.int_col
|  other predicates: c.int_col > 20
|  row-size=16B cardinality=1
|
|--02:SCAN KUDU [functional_kudu.alltypestiny c]
|     kudu predicates: c.int_col > 20
|     row-size=4B cardinality=1
|
03:HASH JOIN [INNER JOIN]
|  hash predicates: a.id = b.id
|  runtime filters: RF000 <- b.id, RF001 <- b.id
|  row-size=12B cardinality=1
|
|--01:SCAN KUDU [functional_kudu.alltypessmall b]
|     predicates: CAST(b.id AS STRING) > '123'
|     kudu predicates: b.id > 10
|     row-size=8B cardinality=10
|
00:SCAN KUDU [functional_kudu.alltypes a]
   predicates: CAST(a.id AS STRING) > '123'
   kudu predicates: a.id > 10
   runtime filters: RF000 -> a.id, RF001 -> a.id
   row-size=4B cardinality=10(filtered from 730)
====
# IMPALA-4662: Kudu analysis failure for NULL literal in IN list
# NULL literal in values list results in applying predicate at scan node
select id from functional_kudu.alltypestiny where
id in (1, null) and string_col in (null) and bool_col in (null) and double_col in (null)
and float_col in (null) and tinyint_col in (null) and smallint_col in (null) and
bigint_col in (null)
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.alltypestiny]
   predicates: id IN (1, NULL), bigint_col IN (NULL), bool_col IN (NULL), double_col IN (NULL), float_col IN (NULL), smallint_col IN (NULL), string_col IN (NULL), tinyint_col IN (NULL)
   row-size=45B cardinality=1
====
# IMPALA-3586: The operand with the Kudu scan cannot be passed through because id is
# not-nullable (primary key).
select id from functional_kudu.alltypes
union all
select id from functional.alltypes;
---- PLAN
PLAN-ROOT SINK
|
00:UNION
|  pass-through-operands: 02
|  row-size=4B cardinality=14.60K
|
|--01:SCAN KUDU [functional_kudu.alltypes]
|     row-size=4B cardinality=7.30K
|
02:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   row-size=4B cardinality=7.30K
====
# IMPALA-3586: When both operands are Kudu scans, they should both be passed through.
select id from functional_kudu.alltypes
union all
select id from functional_kudu.alltypes;
---- PLAN
PLAN-ROOT SINK
|
00:UNION
|  pass-through-operands: all
|  row-size=4B cardinality=14.60K
|
|--02:SCAN KUDU [functional_kudu.alltypes]
|     row-size=4B cardinality=7.30K
|
01:SCAN KUDU [functional_kudu.alltypes]
   row-size=4B cardinality=7.30K
====
# Hint - noshuffle should remove the exchange node.
insert into functional_kudu.alltypes /* +noshuffle */ select * from functional.alltypes;
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [functional_kudu.alltypes]
|
01:PARTIAL SORT
|  order by: KuduPartition(functional.alltypes.id) ASC NULLS LAST, id ASC NULLS LAST
|  row-size=93B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   row-size=89B cardinality=7.30K
====
# Hint - noclustered should remove the sort node.
insert into functional_kudu.alltypes /* +noclustered */ select * from functional.alltypes;
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [functional_kudu.alltypes]
|
01:EXCHANGE [KUDU(KuduPartition(functional.alltypes.id))]
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   row-size=89B cardinality=7.30K
====
insert into functional_kudu.alltypes /* +noclustered,noshuffle */
select * from functional.alltypes;
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [functional_kudu.alltypes]
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   row-size=89B cardinality=7.30K
====
# Hint - noclustered should remove the sort node from CTAS.
create /* +noclustered */ table t
primary key(id) partition by hash(id) partitions 3 stored as kudu as
select * from functional.alltypes;
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [default.t]
|
01:EXCHANGE [KUDU(KuduPartition(functional.alltypes.id))]
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   row-size=89B cardinality=7.30K
====
create /* +noclustered,noshuffle */ table t
primary key(id) partition by hash(id) partitions 3 stored as kudu as
select * from functional.alltypes;
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [default.t]
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   row-size=89B cardinality=7.30K
====
# Insert into an unpartitioned table, shouldn't partition/sort
insert into tpch_kudu.nation
select * from tpch_parquet.nation
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [tpch_kudu.nation]
|
00:SCAN HDFS [tpch_parquet.nation]
   partitions=1/1 files=1 size=2.75KB
   row-size=109B cardinality=25
====
# Unpartitioned table, still has an exchange due to shuffle hint.
insert into tpch_kudu.nation /* +shuffle */
select * from tpch_parquet.nation
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [tpch_kudu.nation]
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN HDFS [tpch_parquet.nation]
   partitions=1/1 files=1 size=2.75KB
   row-size=109B cardinality=25
====
# Unpartitioned table, clustered hint forces sort node.
insert into tpch_kudu.nation /* +clustered */
select * from tpch_parquet.nation
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [tpch_kudu.nation]
|
01:PARTIAL SORT
|  order by: n_nationkey ASC NULLS LAST
|  row-size=109B cardinality=25
|
00:SCAN HDFS [tpch_parquet.nation]
   partitions=1/1 files=1 size=2.75KB
   row-size=109B cardinality=25
====
# Unpartitioned table, no sort node without clustered hint.
insert into tpch_kudu.nation
select * from tpch_parquet.nation
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [tpch_kudu.nation]
|
00:SCAN HDFS [tpch_parquet.nation]
   partitions=1/1 files=1 size=2.75KB
   row-size=109B cardinality=25
====
# Partition and primary key exprs are all constant, so don't partition/sort.
insert into functional_kudu.alltypes (id)
select 1 from functional_kudu.alltypes
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [functional_kudu.alltypes]
|
00:SCAN KUDU [functional_kudu.alltypes]
   row-size=0B cardinality=7.30K
====
# Partition exprs are constant but primary key exprs aren't, so sort but don't partition.
insert into functional_kudu.jointbl (test_id, test_name, test_zip, alltypes_id)
select 1, '1', int_col, id from functional.alltypes
---- DISTRIBUTEDPLAN
INSERT INTO KUDU [functional_kudu.jointbl]
|
01:PARTIAL SORT
|  order by: int_col ASC NULLS LAST, id ASC NULLS LAST
|  row-size=8B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
   partitions=24/24 files=24 size=478.45KB
   row-size=8B cardinality=7.30K
====
# Decimal predicate.
select * from functional_kudu.decimal_tbl where d4 = 0.123456789;
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.decimal_tbl]
   kudu predicates: d4 = 0.123456789
   row-size=56B cardinality=5
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN KUDU [functional_kudu.decimal_tbl]
   kudu predicates: d4 = 0.123456789
   row-size=56B cardinality=5
====
# Multiple conflicting equality predicates on the Kudu table.
# EmptySetNode should be created.
select * from functional_kudu.testtbl where id = 1 and id = 10
---- PLAN
PLAN-ROOT SINK
|
00:EMPTYSET
---- SCANRANGELOCATIONS

---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
00:EMPTYSET
====
# Query with "limit 0" on the Kudu table
# EmptySetNode should be created.
select * from functional_kudu.testtbl limit 0
---- PLAN
PLAN-ROOT SINK
|
00:EMPTYSET
---- SCANRANGELOCATIONS

---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
00:EMPTYSET
====
# Multiple redundant equality predicates on the Kudu table.
# They should be deduplicated.
select * from functional_kudu.testtbl where name = 'Smith' and name = 'Smith'
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.testtbl]
   kudu predicates: name = 'Smith'
   row-size=28B cardinality=0
---- SCANRANGELOCATIONS
NODE 0:
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [(int64 id=1004), (int64 id=1008))}
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [(int64 id=1008), <end>)}
  ScanToken{table-name=impala::functional_kudu.testtbl, range-partition: [<start>, (int64 id=1004))}
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN KUDU [functional_kudu.testtbl]
   kudu predicates: name = 'Smith'
   row-size=28B cardinality=0
====
# Redundant = and "is not distinct from" predicates.
# They are same and should be deduplicated.
select count(*) from tpch_kudu.lineitem
where l_orderkey = 1 and l_orderkey is not distinct from 1 and
l_partkey = 1 and l_suppkey = 1;
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: count(*)
|  row-size=8B cardinality=1
|
00:SCAN KUDU [tpch_kudu.lineitem]
   kudu predicates: l_orderkey = 1, l_partkey = 1, l_suppkey = 1
   row-size=0B cardinality=1
---- SCANRANGELOCATIONS
NODE 0:
  ScanToken{table-name=impala::tpch_kudu.lineitem, hash-partition-buckets: [3]}
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
03:AGGREGATE [FINALIZE]
|  output: count:merge(*)
|  row-size=8B cardinality=1
|
02:EXCHANGE [UNPARTITIONED]
|
01:AGGREGATE
|  output: count(*)
|  row-size=8B cardinality=1
|
00:SCAN KUDU [tpch_kudu.lineitem]
   kudu predicates: l_orderkey = 1, l_partkey = 1, l_suppkey = 1
   row-size=0B cardinality=1
====
# DATE predicate.
select * from functional_kudu.date_tbl where date_col = DATE "1970-01-01";
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.date_tbl]
   kudu predicates: date_col = DATE '1970-01-01'
   row-size=12B cardinality=1
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN KUDU [functional_kudu.date_tbl]
   kudu predicates: date_col = DATE '1970-01-01'
   row-size=12B cardinality=1
====
# BIGINT predicate.
select * from functional_kudu.alltypes where bigint_col = 1;
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.alltypes]
   kudu predicates: bigint_col = 1
   row-size=97B cardinality=730
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN KUDU [functional_kudu.alltypes]
   kudu predicates: bigint_col = 1
   row-size=97B cardinality=730
====
# FLOAT predicate.
select * from functional_kudu.alltypes where float_col = 1.0;
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.alltypes]
   kudu predicates: float_col = 1.0
   row-size=97B cardinality=730
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN KUDU [functional_kudu.alltypes]
   kudu predicates: float_col = 1.0
   row-size=97B cardinality=730
====
# DOUBLE predicate.
select * from functional_kudu.alltypes where double_col = 1.0;
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.alltypes]
   kudu predicates: double_col = 1.0
   row-size=97B cardinality=730
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
01:EXCHANGE [UNPARTITIONED]
|
00:SCAN KUDU [functional_kudu.alltypes]
   kudu predicates: double_col = 1.0
   row-size=97B cardinality=730
====
# BINARY predicate.
select * from functional_kudu.binary_tbl where binary_col=cast("a" as binary);
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.binary_tbl]
   kudu predicates: binary_col = 'a'
   row-size=36B cardinality=0
====
# BINARY predicate.
# Non-ASCII strings cannot be pushed down to Kudu (IMPALA-10349)
select * from functional_kudu.binary_tbl where binary_col=cast("á" as binary);
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.binary_tbl]
   predicates: binary_col = CAST('á' AS BINARY)
   row-size=36B cardinality=0
====
# BINARY predicate.
# Not valid utf8 strings cannot be pushed down to Kudu (IMPALA-10349)
select * from functional_kudu.binary_tbl where binary_col=cast(unhex("aa") as binary);
---- PLAN
PLAN-ROOT SINK
|
00:SCAN KUDU [functional_kudu.binary_tbl]
   predicates: binary_col = CAST(unhex('aa') AS BINARY)
   row-size=36B cardinality=0
====