# A subset of aggregation classes are materialized. No group by.
select a, c, e1, e2, e3 from
  (select count(distinct tinyint_col) a, avg(distinct smallint_col) b,
          count(distinct int_col) c, avg(distinct bigint_col) d,
          min(float_col) e1, max(float_col) e2, sum(double_col) e3
   from functional.alltypes) v
---- PLAN
PLAN-ROOT SINK
|
03:AGGREGATE [FINALIZE]
|  output: aggif(valid_tid(2,5,7,10,11) = 2, count(tinyint_col)), aggif(valid_tid(2,5,7,10,11) = 7, count(int_col)), aggif(valid_tid(2,5,7,10,11) = 11, min(float_col)), aggif(valid_tid(2,5,7,10,11) = 11, max(float_col)), aggif(valid_tid(2,5,7,10,11) = 11, sum(double_col))
|  row-size=32B cardinality=1
|
02:AGGREGATE [FINALIZE]
|  Class 0
|    output: count(tinyint_col)
|  Class 1
|    output: count(int_col)
|  Class 2
|    output: min:merge(float_col), max:merge(float_col), sum:merge(double_col)
|  row-size=32B cardinality=3
|
01:AGGREGATE
|  Class 0
|    group by: tinyint_col
|  Class 1
|    group by: int_col
|  Class 2
|    output: min(float_col), max(float_col), sum(double_col)
|  row-size=21B cardinality=21
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=17B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
03:AGGREGATE [FINALIZE]
|  output: aggif(valid_tid(2,5,7,10,11) = 2, count(tinyint_col)), aggif(valid_tid(2,5,7,10,11) = 7, count(int_col)), aggif(valid_tid(2,5,7,10,11) = 11, min(float_col)), aggif(valid_tid(2,5,7,10,11) = 11, max(float_col)), aggif(valid_tid(2,5,7,10,11) = 11, sum(double_col))
|  row-size=32B cardinality=1
|
07:AGGREGATE [FINALIZE]
|  Class 0
|    output: count:merge(tinyint_col)
|  Class 1
|    output: count:merge(int_col)
|  Class 2
|    output: min:merge(float_col), max:merge(float_col), sum:merge(double_col)
|  row-size=32B cardinality=3
|
06:EXCHANGE [UNPARTITIONED]
|
02:AGGREGATE
|  Class 0
|    output: count(tinyint_col)
|  Class 1
|    output: count(int_col)
|  Class 2
|    output: min:merge(float_col), max:merge(float_col), sum:merge(double_col)
|  row-size=32B cardinality=3
|
05:AGGREGATE
|  Class 0
|    group by: tinyint_col
|  Class 1
|    group by: int_col
|  Class 2
|    output: min:merge(float_col), max:merge(float_col), sum:merge(double_col)
|  row-size=21B cardinality=21
|
04:EXCHANGE [HASH(CASE valid_tid(1,6,11) WHEN 1 THEN murmur_hash(tinyint_col) WHEN 6 THEN murmur_hash(int_col) WHEN 11 THEN 0 END)]
|
01:AGGREGATE [STREAMING]
|  Class 0
|    group by: tinyint_col
|  Class 1
|    group by: int_col
|  Class 2
|    output: min(float_col), max(float_col), sum(double_col)
|  row-size=21B cardinality=21
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=17B cardinality=7.30K
====
# A subset of aggregation classes are materialized. A subset of aggregation functions
# of the surviving classes are materialized. No group by.
select a1, c2, e2 from
  (select count(distinct tinyint_col) a1, avg(distinct tinyint_col) a2,
          count(distinct smallint_col) b1, avg(distinct smallint_col) b2,
          count(distinct int_col) c1, avg(distinct int_col) c2,
          count(distinct bigint_col) d1, avg(distinct bigint_col) d2,
          min(float_col) e1, max(float_col) e2, sum(double_col) e3
   from functional.alltypes) v
---- PLAN
PLAN-ROOT SINK
|
03:AGGREGATE [FINALIZE]
|  output: aggif(valid_tid(3,6,9,12,13) = 3, count(tinyint_col)), aggif(valid_tid(3,6,9,12,13) = 9, avg(int_col)), aggif(valid_tid(3,6,9,12,13) = 13, max(float_col))
|  row-size=20B cardinality=1
|
02:AGGREGATE [FINALIZE]
|  Class 0
|    output: count(tinyint_col)
|  Class 1
|    output: avg(int_col)
|  Class 2
|    output: max:merge(float_col)
|  row-size=20B cardinality=3
|
01:AGGREGATE
|  Class 0
|    group by: tinyint_col
|  Class 1
|    group by: int_col
|  Class 2
|    output: max(float_col)
|  row-size=9B cardinality=21
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=9B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
03:AGGREGATE [FINALIZE]
|  output: aggif(valid_tid(3,6,9,12,13) = 3, count(tinyint_col)), aggif(valid_tid(3,6,9,12,13) = 9, avg(int_col)), aggif(valid_tid(3,6,9,12,13) = 13, max(float_col))
|  row-size=20B cardinality=1
|
07:AGGREGATE [FINALIZE]
|  Class 0
|    output: count:merge(tinyint_col)
|  Class 1
|    output: avg:merge(int_col)
|  Class 2
|    output: max:merge(float_col)
|  row-size=20B cardinality=3
|
06:EXCHANGE [UNPARTITIONED]
|
02:AGGREGATE
|  Class 0
|    output: count(tinyint_col)
|  Class 1
|    output: avg(int_col)
|  Class 2
|    output: max:merge(float_col)
|  row-size=20B cardinality=3
|
05:AGGREGATE
|  Class 0
|    group by: tinyint_col
|  Class 1
|    group by: int_col
|  Class 2
|    output: max:merge(float_col)
|  row-size=9B cardinality=21
|
04:EXCHANGE [HASH(CASE valid_tid(1,7,13) WHEN 1 THEN murmur_hash(tinyint_col) WHEN 7 THEN murmur_hash(int_col) WHEN 13 THEN 0 END)]
|
01:AGGREGATE [STREAMING]
|  Class 0
|    group by: tinyint_col
|  Class 1
|    group by: int_col
|  Class 2
|    output: max(float_col)
|  row-size=9B cardinality=21
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=9B cardinality=7.30K
====
# A subset of aggregation classes are materialized. With group by.
select a, c, e1, e2, e3, gby2 from
  (select count(distinct tinyint_col) a, avg(distinct smallint_col) b,
          count(distinct int_col) c, avg(distinct bigint_col) d,
          min(float_col) e1, max(float_col) e2, sum(double_col) e3,
          string_col gby1, date_string_col gby2
   from functional.alltypes
   group by gby1, gby2) v
---- PLAN
PLAN-ROOT SINK
|
03:AGGREGATE [FINALIZE]
|  output: aggif(valid_tid(2,5,7,10,11) = 2, count(tinyint_col)), aggif(valid_tid(2,5,7,10,11) = 7, count(int_col)), aggif(valid_tid(2,5,7,10,11) = 11, min(float_col)), aggif(valid_tid(2,5,7,10,11) = 11, max(float_col)), aggif(valid_tid(2,5,7,10,11) = 11, sum(double_col))
|  group by: CASE valid_tid(2,7,11) WHEN 2 THEN string_col WHEN 7 THEN string_col WHEN 11 THEN string_col END, CASE valid_tid(2,7,11) WHEN 2 THEN date_string_col WHEN 7 THEN date_string_col WHEN 11 THEN date_string_col END
|  row-size=56B cardinality=8.11K
|
02:AGGREGATE [FINALIZE]
|  Class 0
|    output: count(tinyint_col)
|    group by: string_col, date_string_col
|  Class 1
|    output: count(int_col)
|    group by: string_col, date_string_col
|  Class 2
|    output: min:merge(float_col), max:merge(float_col), sum:merge(double_col)
|    group by: string_col, date_string_col
|  row-size=131B cardinality=22.08K
|
01:AGGREGATE
|  Class 0
|    group by: string_col, date_string_col, tinyint_col
|  Class 1
|    group by: string_col, date_string_col, int_col
|  Class 2
|    output: min(float_col), max(float_col), sum(double_col)
|    group by: string_col, date_string_col
|  row-size=120B cardinality=21.90K
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=50B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
08:EXCHANGE [UNPARTITIONED]
|
03:AGGREGATE [FINALIZE]
|  output: aggif(valid_tid(2,5,7,10,11) = 2, count(tinyint_col)), aggif(valid_tid(2,5,7,10,11) = 7, count(int_col)), aggif(valid_tid(2,5,7,10,11) = 11, min(float_col)), aggif(valid_tid(2,5,7,10,11) = 11, max(float_col)), aggif(valid_tid(2,5,7,10,11) = 11, sum(double_col))
|  group by: CASE valid_tid(2,7,11) WHEN 2 THEN string_col WHEN 7 THEN string_col WHEN 11 THEN string_col END, CASE valid_tid(2,7,11) WHEN 2 THEN date_string_col WHEN 7 THEN date_string_col WHEN 11 THEN date_string_col END
|  row-size=56B cardinality=8.11K
|
07:AGGREGATE [FINALIZE]
|  Class 0
|    output: count:merge(tinyint_col)
|    group by: string_col, date_string_col
|  Class 1
|    output: count:merge(int_col)
|    group by: string_col, date_string_col
|  Class 2
|    output: min:merge(float_col), max:merge(float_col), sum:merge(double_col)
|    group by: string_col, date_string_col
|  row-size=131B cardinality=22.08K
|
06:EXCHANGE [HASH(CASE valid_tid(2,7,11) WHEN 2 THEN murmur_hash(string_col) WHEN 7 THEN murmur_hash(string_col) WHEN 11 THEN murmur_hash(string_col) END,CASE valid_tid(2,7,11) WHEN 2 THEN murmur_hash(date_string_col) WHEN 7 THEN murmur_hash(date_string_col) WHEN 11 THEN murmur_hash(date_string_col) END)]
|
02:AGGREGATE [STREAMING]
|  Class 0
|    output: count(tinyint_col)
|    group by: string_col, date_string_col
|  Class 1
|    output: count(int_col)
|    group by: string_col, date_string_col
|  Class 2
|    output: min:merge(float_col), max:merge(float_col), sum:merge(double_col)
|    group by: string_col, date_string_col
|  row-size=131B cardinality=22.08K
|
05:AGGREGATE
|  Class 0
|    group by: string_col, date_string_col, tinyint_col
|  Class 1
|    group by: string_col, date_string_col, int_col
|  Class 2
|    output: min:merge(float_col), max:merge(float_col), sum:merge(double_col)
|    group by: string_col, date_string_col
|  row-size=120B cardinality=21.90K
|
04:EXCHANGE [HASH(CASE valid_tid(1,6,11) WHEN 1 THEN murmur_hash(string_col) WHEN 6 THEN murmur_hash(string_col) WHEN 11 THEN murmur_hash(string_col) END,CASE valid_tid(1,6,11) WHEN 1 THEN murmur_hash(date_string_col) WHEN 6 THEN murmur_hash(date_string_col) WHEN 11 THEN murmur_hash(date_string_col) END,CASE valid_tid(1,6,11) WHEN 1 THEN murmur_hash(tinyint_col) WHEN 6 THEN murmur_hash(int_col) WHEN 11 THEN 0 END)]
|
01:AGGREGATE [STREAMING]
|  Class 0
|    group by: string_col, date_string_col, tinyint_col
|  Class 1
|    group by: string_col, date_string_col, int_col
|  Class 2
|    output: min(float_col), max(float_col), sum(double_col)
|    group by: string_col, date_string_col
|  row-size=120B cardinality=21.90K
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=50B cardinality=7.30K
====
# A subset of aggregation classes are materialized. A subset of aggregation functions
# of the surviving classes are materialized. With group by.
select a1, c2, e2, gby1 from
  (select count(distinct tinyint_col) a1, avg(distinct tinyint_col) a2,
          count(distinct smallint_col) b1, avg(distinct smallint_col) b2,
          count(distinct int_col) c1, avg(distinct int_col) c2,
          count(distinct bigint_col) d1, avg(distinct bigint_col) d2,
          min(float_col) e1, max(float_col) e2, sum(double_col) e3,
          string_col gby1, date_string_col gby2
   from functional.alltypes
   group by gby1, gby2) v
---- PLAN
PLAN-ROOT SINK
|
03:AGGREGATE [FINALIZE]
|  output: aggif(valid_tid(3,6,9,12,13) = 3, count(tinyint_col)), aggif(valid_tid(3,6,9,12,13) = 9, avg(int_col)), aggif(valid_tid(3,6,9,12,13) = 13, max(float_col))
|  group by: CASE valid_tid(3,9,13) WHEN 3 THEN string_col WHEN 9 THEN string_col WHEN 13 THEN string_col END, CASE valid_tid(3,9,13) WHEN 3 THEN date_string_col WHEN 9 THEN date_string_col WHEN 13 THEN date_string_col END
|  row-size=44B cardinality=8.11K
|
02:AGGREGATE [FINALIZE]
|  Class 0
|    output: count(tinyint_col)
|    group by: string_col, date_string_col
|  Class 1
|    output: avg(int_col)
|    group by: string_col, date_string_col
|  Class 2
|    output: max:merge(float_col)
|    group by: string_col, date_string_col
|  row-size=119B cardinality=22.08K
|
01:AGGREGATE
|  Class 0
|    group by: string_col, date_string_col, tinyint_col
|  Class 1
|    group by: string_col, date_string_col, int_col
|  Class 2
|    output: max(float_col)
|    group by: string_col, date_string_col
|  row-size=108B cardinality=21.90K
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=42B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
08:EXCHANGE [UNPARTITIONED]
|
03:AGGREGATE [FINALIZE]
|  output: aggif(valid_tid(3,6,9,12,13) = 3, count(tinyint_col)), aggif(valid_tid(3,6,9,12,13) = 9, avg(int_col)), aggif(valid_tid(3,6,9,12,13) = 13, max(float_col))
|  group by: CASE valid_tid(3,9,13) WHEN 3 THEN string_col WHEN 9 THEN string_col WHEN 13 THEN string_col END, CASE valid_tid(3,9,13) WHEN 3 THEN date_string_col WHEN 9 THEN date_string_col WHEN 13 THEN date_string_col END
|  row-size=44B cardinality=8.11K
|
07:AGGREGATE [FINALIZE]
|  Class 0
|    output: count:merge(tinyint_col)
|    group by: string_col, date_string_col
|  Class 1
|    output: avg:merge(int_col)
|    group by: string_col, date_string_col
|  Class 2
|    output: max:merge(float_col)
|    group by: string_col, date_string_col
|  row-size=119B cardinality=22.08K
|
06:EXCHANGE [HASH(CASE valid_tid(2,8,13) WHEN 2 THEN murmur_hash(string_col) WHEN 8 THEN murmur_hash(string_col) WHEN 13 THEN murmur_hash(string_col) END,CASE valid_tid(2,8,13) WHEN 2 THEN murmur_hash(date_string_col) WHEN 8 THEN murmur_hash(date_string_col) WHEN 13 THEN murmur_hash(date_string_col) END)]
|
02:AGGREGATE [STREAMING]
|  Class 0
|    output: count(tinyint_col)
|    group by: string_col, date_string_col
|  Class 1
|    output: avg(int_col)
|    group by: string_col, date_string_col
|  Class 2
|    output: max:merge(float_col)
|    group by: string_col, date_string_col
|  row-size=119B cardinality=22.08K
|
05:AGGREGATE
|  Class 0
|    group by: string_col, date_string_col, tinyint_col
|  Class 1
|    group by: string_col, date_string_col, int_col
|  Class 2
|    output: max:merge(float_col)
|    group by: string_col, date_string_col
|  row-size=108B cardinality=21.90K
|
04:EXCHANGE [HASH(CASE valid_tid(1,7,13) WHEN 1 THEN murmur_hash(string_col) WHEN 7 THEN murmur_hash(string_col) WHEN 13 THEN murmur_hash(string_col) END,CASE valid_tid(1,7,13) WHEN 1 THEN murmur_hash(date_string_col) WHEN 7 THEN murmur_hash(date_string_col) WHEN 13 THEN murmur_hash(date_string_col) END,CASE valid_tid(1,7,13) WHEN 1 THEN murmur_hash(tinyint_col) WHEN 7 THEN murmur_hash(int_col) WHEN 13 THEN 0 END)]
|
01:AGGREGATE [STREAMING]
|  Class 0
|    group by: string_col, date_string_col, tinyint_col
|  Class 1
|    group by: string_col, date_string_col, int_col
|  Class 2
|    output: max(float_col)
|    group by: string_col, date_string_col
|  row-size=108B cardinality=21.90K
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=42B cardinality=7.30K
====
# Simplifies to a single aggrgeation class. Only first distinct agg is materialized.
select a from
  (select count(distinct tinyint_col) a, count(distinct smallint_col) b
   from functional.alltypes) v
---- PLAN
PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
|  output: count(tinyint_col)
|  row-size=8B cardinality=1
|
01:AGGREGATE
|  group by: tinyint_col
|  row-size=1B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=1B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count:merge(tinyint_col)
|  row-size=8B cardinality=1
|
06:EXCHANGE [UNPARTITIONED]
|
02:AGGREGATE
|  output: count(tinyint_col)
|  row-size=8B cardinality=1
|
05:AGGREGATE
|  group by: tinyint_col
|  row-size=1B cardinality=10
|
04:EXCHANGE [HASH(tinyint_col)]
|
01:AGGREGATE [STREAMING]
|  group by: tinyint_col
|  row-size=1B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=1B cardinality=7.30K
====
# Simplifies to a single aggrgeation class. Only second distinct agg is materialized.
select b from
  (select count(distinct tinyint_col) a, count(distinct smallint_col) b
   from functional.alltypes) v
---- PLAN
PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
|  output: count(smallint_col)
|  row-size=8B cardinality=1
|
01:AGGREGATE
|  group by: smallint_col
|  row-size=2B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=2B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count:merge(smallint_col)
|  row-size=8B cardinality=1
|
06:EXCHANGE [UNPARTITIONED]
|
02:AGGREGATE
|  output: count(smallint_col)
|  row-size=8B cardinality=1
|
05:AGGREGATE
|  group by: smallint_col
|  row-size=2B cardinality=10
|
04:EXCHANGE [HASH(smallint_col)]
|
01:AGGREGATE [STREAMING]
|  group by: smallint_col
|  row-size=2B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=2B cardinality=7.30K
====
# Some aggs only referenced in HAVING clause.
select count(distinct tinyint_col), min(timestamp_col) from functional.alltypes
having count(distinct smallint_col) < 10 and max(date_string_col) = 'test'
---- PLAN
PLAN-ROOT SINK
|
03:AGGREGATE [FINALIZE]
|  output: aggif(valid_tid(2,4,5) = 2, count(tinyint_col)), aggif(valid_tid(2,4,5) = 4, count(smallint_col)), aggif(valid_tid(2,4,5) = 5, min(timestamp_col)), aggif(valid_tid(2,4,5) = 5, max(date_string_col))
|  having: aggif(valid_tid(2,4,5) = 4, count(smallint_col)) < 10, aggif(valid_tid(2,4,5) = 5, max(date_string_col)) = 'test'
|  row-size=44B cardinality=0
|
02:AGGREGATE [FINALIZE]
|  Class 0
|    output: count(tinyint_col)
|  Class 1
|    output: count(smallint_col)
|  Class 2
|    output: min:merge(timestamp_col), max:merge(date_string_col)
|  row-size=44B cardinality=3
|
01:AGGREGATE
|  Class 0
|    group by: tinyint_col
|  Class 1
|    group by: smallint_col
|  Class 2
|    output: min(timestamp_col), max(date_string_col)
|  row-size=31B cardinality=21
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=39B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
03:AGGREGATE [FINALIZE]
|  output: aggif(valid_tid(2,4,5) = 2, count(tinyint_col)), aggif(valid_tid(2,4,5) = 4, count(smallint_col)), aggif(valid_tid(2,4,5) = 5, min(timestamp_col)), aggif(valid_tid(2,4,5) = 5, max(date_string_col))
|  having: aggif(valid_tid(2,4,5) = 4, count(smallint_col)) < 10, aggif(valid_tid(2,4,5) = 5, max(date_string_col)) = 'test'
|  row-size=44B cardinality=0
|
07:AGGREGATE [FINALIZE]
|  Class 0
|    output: count:merge(tinyint_col)
|  Class 1
|    output: count:merge(smallint_col)
|  Class 2
|    output: min:merge(timestamp_col), max:merge(date_string_col)
|  row-size=44B cardinality=3
|
06:EXCHANGE [UNPARTITIONED]
|
02:AGGREGATE
|  Class 0
|    output: count(tinyint_col)
|  Class 1
|    output: count(smallint_col)
|  Class 2
|    output: min:merge(timestamp_col), max:merge(date_string_col)
|  row-size=44B cardinality=3
|
05:AGGREGATE
|  Class 0
|    group by: tinyint_col
|  Class 1
|    group by: smallint_col
|  Class 2
|    output: min:merge(timestamp_col), max:merge(date_string_col)
|  row-size=31B cardinality=21
|
04:EXCHANGE [HASH(CASE valid_tid(1,3,5) WHEN 1 THEN murmur_hash(tinyint_col) WHEN 3 THEN murmur_hash(smallint_col) WHEN 5 THEN 0 END)]
|
01:AGGREGATE [STREAMING]
|  Class 0
|    group by: tinyint_col
|  Class 1
|    group by: smallint_col
|  Class 2
|    output: min(timestamp_col), max(date_string_col)
|  row-size=31B cardinality=21
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=39B cardinality=7.30K
====
# Some aggs only referenced in ORDER BY clause.
select count(distinct tinyint_col), min(timestamp_col) from functional.alltypes
group by bigint_col
order by count(distinct smallint_col), max(date_string_col)
---- PLAN
PLAN-ROOT SINK
|
04:SORT
|  order by: aggif(valid_tid(2,4,5) = 4, count(smallint_col)) ASC, aggif(valid_tid(2,4,5) = 5, max(date_string_col)) ASC
|  row-size=44B cardinality=11
|
03:AGGREGATE [FINALIZE]
|  output: aggif(valid_tid(2,4,5) = 2, count(tinyint_col)), aggif(valid_tid(2,4,5) = 4, count(smallint_col)), aggif(valid_tid(2,4,5) = 5, min(timestamp_col)), aggif(valid_tid(2,4,5) = 5, max(date_string_col))
|  group by: CASE valid_tid(2,4,5) WHEN 2 THEN bigint_col WHEN 4 THEN bigint_col WHEN 5 THEN bigint_col END
|  row-size=52B cardinality=11
|
02:AGGREGATE [FINALIZE]
|  Class 0
|    output: count(tinyint_col)
|    group by: bigint_col
|  Class 1
|    output: count(smallint_col)
|    group by: bigint_col
|  Class 2
|    output: min:merge(timestamp_col), max:merge(date_string_col)
|    group by: bigint_col
|  row-size=68B cardinality=30
|
01:AGGREGATE
|  Class 0
|    group by: bigint_col, tinyint_col
|  Class 1
|    group by: bigint_col, smallint_col
|  Class 2
|    output: min(timestamp_col), max(date_string_col)
|    group by: bigint_col
|  row-size=55B cardinality=210
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=47B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
09:MERGING-EXCHANGE [UNPARTITIONED]
|  order by: aggif(valid_tid(2,4,5) = 4, count(smallint_col)) ASC, aggif(valid_tid(2,4,5) = 5, max(date_string_col)) ASC
|
04:SORT
|  order by: aggif(valid_tid(2,4,5) = 4, count(smallint_col)) ASC, aggif(valid_tid(2,4,5) = 5, max(date_string_col)) ASC
|  row-size=44B cardinality=11
|
03:AGGREGATE [FINALIZE]
|  output: aggif(valid_tid(2,4,5) = 2, count(tinyint_col)), aggif(valid_tid(2,4,5) = 4, count(smallint_col)), aggif(valid_tid(2,4,5) = 5, min(timestamp_col)), aggif(valid_tid(2,4,5) = 5, max(date_string_col))
|  group by: CASE valid_tid(2,4,5) WHEN 2 THEN bigint_col WHEN 4 THEN bigint_col WHEN 5 THEN bigint_col END
|  row-size=52B cardinality=11
|
08:AGGREGATE [FINALIZE]
|  Class 0
|    output: count:merge(tinyint_col)
|    group by: bigint_col
|  Class 1
|    output: count:merge(smallint_col)
|    group by: bigint_col
|  Class 2
|    output: min:merge(timestamp_col), max:merge(date_string_col)
|    group by: bigint_col
|  row-size=68B cardinality=30
|
07:EXCHANGE [HASH(CASE valid_tid(2,4,5) WHEN 2 THEN murmur_hash(bigint_col) WHEN 4 THEN murmur_hash(bigint_col) WHEN 5 THEN murmur_hash(bigint_col) END)]
|
02:AGGREGATE [STREAMING]
|  Class 0
|    output: count(tinyint_col)
|    group by: bigint_col
|  Class 1
|    output: count(smallint_col)
|    group by: bigint_col
|  Class 2
|    output: min:merge(timestamp_col), max:merge(date_string_col)
|    group by: bigint_col
|  row-size=68B cardinality=30
|
06:AGGREGATE
|  Class 0
|    group by: bigint_col, tinyint_col
|  Class 1
|    group by: bigint_col, smallint_col
|  Class 2
|    output: min:merge(timestamp_col), max:merge(date_string_col)
|    group by: bigint_col
|  row-size=55B cardinality=210
|
05:EXCHANGE [HASH(CASE valid_tid(1,3,5) WHEN 1 THEN murmur_hash(bigint_col) WHEN 3 THEN murmur_hash(bigint_col) WHEN 5 THEN murmur_hash(bigint_col) END,CASE valid_tid(1,3,5) WHEN 1 THEN murmur_hash(tinyint_col) WHEN 3 THEN murmur_hash(smallint_col) WHEN 5 THEN 0 END)]
|
01:AGGREGATE [STREAMING]
|  Class 0
|    group by: bigint_col, tinyint_col
|  Class 1
|    group by: bigint_col, smallint_col
|  Class 2
|    output: min(timestamp_col), max(date_string_col)
|    group by: bigint_col
|  row-size=55B cardinality=210
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=47B cardinality=7.30K
====
# Mixed distinct and non-distinct aggs. No materialized aggregations. No group by.
select 1 from
  (select min(string_col) a, count(distinct tinyint_col) b,
          max(string_col) c, count(distinct smallint_col) d
   from functional.alltypes) v
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  row-size=0B cardinality=1
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=0B cardinality=7.30K
====
# Mixed distinct and non-distinct aggs. No materialized aggregations. With group by.
select v.gby1 from
  (select min(string_col) a, count(distinct tinyint_col) b,
          max(string_col) c, count(distinct smallint_col) d,
          string_col gby1, date_string_col gby2
   from functional.alltypes
   group by gby1, gby2) v
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  group by: string_col, date_string_col
|  row-size=33B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=33B cardinality=7.30K
====
# Only distinct aggs. No materialized aggregations. No group by.
select 1 from
  (select count(distinct tinyint_col) a, count(distinct smallint_col) b
   from functional.alltypes) v
---- PLAN
PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
|  row-size=0B cardinality=1
|
01:AGGREGATE
|  group by: smallint_col
|  row-size=2B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=2B cardinality=7.30K
====
# Only distinct aggs. No materialized aggregations. With group by.
select v.gby2 from
  (select count(distinct tinyint_col) a, count(distinct smallint_col) b,
          string_col gby1, date_string_col gby2
   from functional.alltypes
   group by gby1, gby2) v
---- PLAN
PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
|  group by: string_col, date_string_col
|  row-size=33B cardinality=7.30K
|
01:AGGREGATE
|  group by: string_col, date_string_col, smallint_col
|  row-size=35B cardinality=7.30K
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=35B cardinality=7.30K
====
# Simplifies to a single aggregation class. Only first distinct agg is materialized.
# No group by.
select b from
  (select min(string_col) a, count(distinct tinyint_col) b,
          max(string_col) c, count(distinct smallint_col) d
   from functional.alltypes
   having count(distinct tinyint_col) < 9) v
---- PLAN
PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
|  output: count(tinyint_col)
|  having: count(tinyint_col) < 9
|  row-size=8B cardinality=0
|
01:AGGREGATE
|  group by: tinyint_col
|  row-size=1B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=1B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count:merge(tinyint_col)
|  having: count(tinyint_col) < 9
|  row-size=8B cardinality=1
|
06:EXCHANGE [UNPARTITIONED]
|
02:AGGREGATE
|  output: count(tinyint_col)
|  row-size=8B cardinality=0
|
05:AGGREGATE
|  group by: tinyint_col
|  row-size=1B cardinality=10
|
04:EXCHANGE [HASH(tinyint_col)]
|
01:AGGREGATE [STREAMING]
|  group by: tinyint_col
|  row-size=1B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=1B cardinality=7.30K
====
# Simplifies to a single aggregation class. Only second distinct agg is materialized.
# No group by.
select d from
  (select min(string_col) a, count(distinct tinyint_col) b,
          max(string_col) c, count(distinct smallint_col) d
   from functional.alltypes
   having count(distinct smallint_col) < 9) v
---- PLAN
PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
|  output: count(smallint_col)
|  having: count(smallint_col) < 9
|  row-size=8B cardinality=0
|
01:AGGREGATE
|  group by: smallint_col
|  row-size=2B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=2B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count:merge(smallint_col)
|  having: count(smallint_col) < 9
|  row-size=8B cardinality=1
|
06:EXCHANGE [UNPARTITIONED]
|
02:AGGREGATE
|  output: count(smallint_col)
|  row-size=8B cardinality=0
|
05:AGGREGATE
|  group by: smallint_col
|  row-size=2B cardinality=10
|
04:EXCHANGE [HASH(smallint_col)]
|
01:AGGREGATE [STREAMING]
|  group by: smallint_col
|  row-size=2B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=2B cardinality=7.30K
====
# Simplifies to a single aggregation class. Only non-distinct aggs remain.
# No group by.
select a, c from
  (select min(string_col) a, count(distinct tinyint_col) b,
          max(string_col) c, count(distinct smallint_col) d
   from functional.alltypes
   having min(string_col) < '9') v
where c > '0' and c < a
---- PLAN
PLAN-ROOT SINK
|
01:AGGREGATE [FINALIZE]
|  output: min(string_col), max(string_col)
|  having: max(string_col) > '0', min(string_col) < '9', max(string_col) < min(string_col)
|  row-size=24B cardinality=0
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=13B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
04:AGGREGATE [FINALIZE]
|  output: min:merge(string_col), max:merge(string_col)
|  having: max(string_col) > '0', min(string_col) < '9', max(string_col) < min(string_col)
|  row-size=24B cardinality=0
|
03:EXCHANGE [UNPARTITIONED]
|
01:AGGREGATE
|  output: min(string_col), max(string_col)
|  row-size=24B cardinality=1
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=13B cardinality=7.30K
====
# Simplifies to a single aggregation class with distinct and non-distinct aggs.
# No group by.
select a, b, c from
  (select min(string_col) a, count(distinct tinyint_col) b,
          max(string_col) c, count(distinct smallint_col) d
   from functional.alltypes
   having min(string_col) < '9' and count(distinct tinyint_col) = 10) v
where c > '0' and c < a
---- PLAN
PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
|  output: count(tinyint_col), min:merge(string_col), max:merge(string_col)
|  having: count(tinyint_col) = 10, max(string_col) > '0', min(string_col) < '9', max(string_col) < min(string_col)
|  row-size=32B cardinality=0
|
01:AGGREGATE
|  output: min(string_col), max(string_col)
|  group by: tinyint_col
|  row-size=25B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=14B cardinality=7.30K
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
07:AGGREGATE [FINALIZE]
|  output: count:merge(tinyint_col), min:merge(string_col), max:merge(string_col)
|  having: count(tinyint_col) = 10, max(string_col) > '0', min(string_col) < '9', max(string_col) < min(string_col)
|  row-size=32B cardinality=1
|
06:EXCHANGE [UNPARTITIONED]
|
02:AGGREGATE
|  output: count(tinyint_col), min:merge(string_col), max:merge(string_col)
|  row-size=32B cardinality=0
|
05:AGGREGATE
|  output: min:merge(string_col), max:merge(string_col)
|  group by: tinyint_col
|  row-size=25B cardinality=10
|
04:EXCHANGE [HASH(tinyint_col)]
|
01:AGGREGATE [STREAMING]
|  output: min(string_col), max(string_col)
|  group by: tinyint_col
|  row-size=25B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   row-size=14B cardinality=7.30K
====
# Simplifies to a single aggregation class with one distinct agg.
# With group by.
select b, gby1 from
  (select min(string_col) a, count(distinct tinyint_col) b,
          max(string_col) c, count(distinct smallint_col) d,
          date_string_col gby1, timestamp_col gby2
   from functional.alltypes
   group by gby1, gby2
   having count(distinct tinyint_col) < 10) v
where gby1 = 'test1'
---- PLAN
PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
|  output: count(tinyint_col)
|  group by: date_string_col, timestamp_col
|  having: count(tinyint_col) < 10
|  row-size=44B cardinality=1
|
01:AGGREGATE
|  group by: date_string_col, timestamp_col, tinyint_col
|  row-size=37B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   predicates: functional.alltypes.date_string_col = 'test1'
   row-size=37B cardinality=10
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
08:EXCHANGE [UNPARTITIONED]
|
07:AGGREGATE [FINALIZE]
|  output: count:merge(tinyint_col)
|  group by: date_string_col, timestamp_col
|  having: count(tinyint_col) < 10
|  row-size=44B cardinality=10
|
06:EXCHANGE [HASH(date_string_col,timestamp_col)]
|
02:AGGREGATE [STREAMING]
|  output: count(tinyint_col)
|  group by: date_string_col, timestamp_col
|  row-size=44B cardinality=1
|
05:AGGREGATE
|  group by: date_string_col, timestamp_col, tinyint_col
|  row-size=37B cardinality=10
|
04:EXCHANGE [HASH(date_string_col,timestamp_col,tinyint_col)]
|
01:AGGREGATE [STREAMING]
|  group by: date_string_col, timestamp_col, tinyint_col
|  row-size=37B cardinality=10
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   predicates: functional.alltypes.date_string_col = 'test1'
   row-size=37B cardinality=10
====
# Simplifies to a single aggregation class with two non-distinct aggs.
# With group by.
select a, c, gby1, gby2 from
  (select min(string_col) a, count(distinct tinyint_col) b,
          max(string_col) c, count(distinct smallint_col) d,
          date_string_col gby1, timestamp_col gby2
   from functional.alltypes
   group by gby1, gby2
   having count(distinct tinyint_col) < 10) v
where gby1 = 'test1' and gby1 < gby2
---- PLAN
PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
|  output: count(tinyint_col), min:merge(string_col), max:merge(string_col)
|  group by: date_string_col, timestamp_col
|  having: count(tinyint_col) < 10, date_string_col < timestamp_col
|  row-size=68B cardinality=0
|
01:AGGREGATE
|  output: min(string_col), max(string_col)
|  group by: date_string_col, timestamp_col, tinyint_col
|  row-size=61B cardinality=3
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   predicates: functional.alltypes.timestamp_col > NULL, functional.alltypes.date_string_col = 'test1'
   row-size=50B cardinality=3
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
08:EXCHANGE [UNPARTITIONED]
|
07:AGGREGATE [FINALIZE]
|  output: count:merge(tinyint_col), min:merge(string_col), max:merge(string_col)
|  group by: date_string_col, timestamp_col
|  having: count(tinyint_col) < 10, date_string_col < timestamp_col
|  row-size=68B cardinality=3
|
06:EXCHANGE [HASH(date_string_col,timestamp_col)]
|
02:AGGREGATE [STREAMING]
|  output: count(tinyint_col), min:merge(string_col), max:merge(string_col)
|  group by: date_string_col, timestamp_col
|  row-size=68B cardinality=0
|
05:AGGREGATE
|  output: min:merge(string_col), max:merge(string_col)
|  group by: date_string_col, timestamp_col, tinyint_col
|  row-size=61B cardinality=3
|
04:EXCHANGE [HASH(date_string_col,timestamp_col,tinyint_col)]
|
01:AGGREGATE [STREAMING]
|  output: min(string_col), max(string_col)
|  group by: date_string_col, timestamp_col, tinyint_col
|  row-size=61B cardinality=3
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   predicates: functional.alltypes.timestamp_col > NULL, functional.alltypes.date_string_col = 'test1'
   row-size=50B cardinality=3
====
# Simplifies to a single aggregation class with one distinct and one non-distinct agg.
# With group by.
select c, d, gby1, gby2 from
  (select min(string_col) a, count(distinct tinyint_col) b,
          max(string_col) c, count(distinct smallint_col) d,
          date_string_col gby1, timestamp_col gby2
   from functional.alltypes
   group by gby1, gby2
   having count(distinct smallint_col) < 20) v
where gby1 = 'test1' and gby1 < gby2
---- PLAN
PLAN-ROOT SINK
|
02:AGGREGATE [FINALIZE]
|  output: count(smallint_col), max:merge(string_col)
|  group by: date_string_col, timestamp_col
|  having: count(smallint_col) < 20, date_string_col < timestamp_col
|  row-size=56B cardinality=0
|
01:AGGREGATE
|  output: max(string_col)
|  group by: date_string_col, timestamp_col, smallint_col
|  row-size=50B cardinality=3
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   predicates: functional.alltypes.timestamp_col > NULL, functional.alltypes.date_string_col = 'test1'
   row-size=51B cardinality=3
---- DISTRIBUTEDPLAN
PLAN-ROOT SINK
|
08:EXCHANGE [UNPARTITIONED]
|
07:AGGREGATE [FINALIZE]
|  output: count:merge(smallint_col), max:merge(string_col)
|  group by: date_string_col, timestamp_col
|  having: count(smallint_col) < 20, date_string_col < timestamp_col
|  row-size=56B cardinality=3
|
06:EXCHANGE [HASH(date_string_col,timestamp_col)]
|
02:AGGREGATE [STREAMING]
|  output: count(smallint_col), max:merge(string_col)
|  group by: date_string_col, timestamp_col
|  row-size=56B cardinality=0
|
05:AGGREGATE
|  output: max:merge(string_col)
|  group by: date_string_col, timestamp_col, smallint_col
|  row-size=50B cardinality=3
|
04:EXCHANGE [HASH(date_string_col,timestamp_col,smallint_col)]
|
01:AGGREGATE [STREAMING]
|  output: max(string_col)
|  group by: date_string_col, timestamp_col, smallint_col
|  row-size=50B cardinality=3
|
00:SCAN HDFS [functional.alltypes]
   HDFS partitions=24/24 files=24 size=478.45KB
   predicates: functional.alltypes.timestamp_col > NULL, functional.alltypes.date_string_col = 'test1'
   row-size=51B cardinality=3
====
