You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jc...@apache.org on 2019/03/16 03:18:44 UTC

[hive] 01/02: HIVE-21399: Adjust hive.map.aggr.hash.min.reduction statically depending on group by statistics (Jesus Camacho Rodriguez, reviewed by Gopal V)

This is an automated email from the ASF dual-hosted git repository.

jcamacho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git

commit 4314965cc63b643fc5b9380d2ec191104467affe
Author: Jesus Camacho Rodriguez <jc...@apache.org>
AuthorDate: Wed Mar 6 14:48:23 2019 -0800

    HIVE-21399: Adjust hive.map.aggr.hash.min.reduction statically depending on group by statistics (Jesus Camacho Rodriguez, reviewed by Gopal V)
---
 .../test/results/positive/accumulo_queries.q.out   |   1 +
 .../accumulo_single_sourced_multi_insert.q.out     |   1 +
 .../java/org/apache/hadoop/hive/conf/HiveConf.java |   4 +
 .../results/clientpositive/serde_typedbytes.q.out  |   1 +
 .../results/clientpositive/serde_typedbytes2.q.out |   1 +
 .../results/clientpositive/serde_typedbytes3.q.out |   1 +
 .../results/clientpositive/serde_typedbytes5.q.out |   1 +
 .../results/clientpositive/udaf_example_avg.q.out  |   1 +
 .../clientpositive/udaf_example_group_concat.q.out |   1 +
 .../results/clientpositive/udaf_example_max.q.out  |   1 +
 .../clientpositive/udaf_example_max_n.q.out        |   1 +
 .../results/clientpositive/udaf_example_min.q.out  |   1 +
 .../clientpositive/udaf_example_min_n.q.out        |   1 +
 .../src/test/results/positive/hbase_queries.q.out  |   1 +
 .../hbase_single_sourced_multi_insert.q.out        |   1 +
 .../src/test/results/positive/hbasestats.q.out     |   2 +
 .../src/test/results/clientpositive/explain.q.out  |   1 +
 .../results/clientpositive/insert_into_table.q.out |   1 +
 .../clientpositive/insert_overwrite_table.q.out    |   1 +
 .../write_final_output_blobstore.q.out             |   2 +
 .../hadoop/hive/ql/exec/GroupByOperator.java       |   3 +-
 .../hive/ql/exec/vector/VectorGroupByOperator.java |  14 +--
 .../DynamicPartitionPruningOptimization.java       |  24 +++-
 .../ql/optimizer/SetHashGroupByMinReduction.java   |  93 ++++++++++++++
 .../calcite/translator/HiveGBOpConvUtil.java       |  10 +-
 .../stats/annotation/StatsRulesProcFactory.java    |  27 +----
 .../hadoop/hive/ql/parse/SemanticAnalyzer.java     |  20 ++-
 .../apache/hadoop/hive/ql/parse/TezCompiler.java   |   7 +-
 .../apache/hadoop/hive/ql/plan/GroupByDesc.java    |  22 +++-
 .../apache/hadoop/hive/ql/stats/StatsUtils.java    |  48 ++++++++
 .../test/results/clientnegative/masking_mv.q.out   |   1 +
 .../clientnegative/spark/spark_job_max_tasks.q.out |   1 +
 .../spark/spark_stage_max_tasks.q.out              |   1 +
 .../test/results/clientpositive/acid_mapjoin.q.out |   1 +
 .../results/clientpositive/acid_nullscan.q.out     |   1 +
 .../test/results/clientpositive/acid_stats3.q.out  |   3 +
 .../test/results/clientpositive/acid_stats4.q.out  |   6 +
 .../test/results/clientpositive/acid_stats5.q.out  |   5 +
 .../results/clientpositive/acid_table_stats.q.out  |   1 +
 .../clientpositive/alterColumnStatsPart.q.out      |   4 +
 .../annotate_stats_deep_filters.q.out              |   2 +
 .../clientpositive/annotate_stats_groupby.q.out    |  24 ++++
 .../clientpositive/annotate_stats_groupby2.q.out   |   7 ++
 .../clientpositive/annotate_stats_join.q.out       |   1 +
 .../clientpositive/autoColumnStats_11.q.out        |   2 +
 .../results/clientpositive/autoColumnStats_4.q.out |   1 +
 .../results/clientpositive/autoColumnStats_5.q.out |   3 +
 .../clientpositive/autoColumnStats_5a.q.out        |   3 +
 .../results/clientpositive/autoColumnStats_6.q.out |   1 +
 .../results/clientpositive/autoColumnStats_8.q.out |   2 +
 .../results/clientpositive/autoColumnStats_9.q.out |   2 +
 .../test/results/clientpositive/auto_join0.q.out   |   3 +
 .../test/results/clientpositive/auto_join1.q.out   |   1 +
 .../test/results/clientpositive/auto_join10.q.out  |   1 +
 .../test/results/clientpositive/auto_join11.q.out  |   1 +
 .../test/results/clientpositive/auto_join12.q.out  |   1 +
 .../test/results/clientpositive/auto_join13.q.out  |   1 +
 .../test/results/clientpositive/auto_join14.q.out  |   1 +
 .../test/results/clientpositive/auto_join15.q.out  |   1 +
 .../test/results/clientpositive/auto_join16.q.out  |   1 +
 .../test/results/clientpositive/auto_join17.q.out  |   1 +
 .../test/results/clientpositive/auto_join18.q.out  |   3 +
 .../auto_join18_multi_distinct.q.out               |   3 +
 .../test/results/clientpositive/auto_join19.q.out  |   1 +
 .../clientpositive/auto_join19_inclause.q.out      |   1 +
 .../test/results/clientpositive/auto_join2.q.out   |   1 +
 .../test/results/clientpositive/auto_join20.q.out  |   4 +
 .../test/results/clientpositive/auto_join22.q.out  |   1 +
 .../test/results/clientpositive/auto_join24.q.out  |   1 +
 .../test/results/clientpositive/auto_join26.q.out  |   2 +
 .../test/results/clientpositive/auto_join27.q.out  |   3 +
 .../test/results/clientpositive/auto_join3.q.out   |   1 +
 .../test/results/clientpositive/auto_join31.q.out  |   1 +
 .../test/results/clientpositive/auto_join32.q.out  |   4 +
 .../test/results/clientpositive/auto_join4.q.out   |   1 +
 .../test/results/clientpositive/auto_join5.q.out   |   1 +
 .../test/results/clientpositive/auto_join6.q.out   |   1 +
 .../test/results/clientpositive/auto_join7.q.out   |   1 +
 .../test/results/clientpositive/auto_join8.q.out   |   1 +
 .../test/results/clientpositive/auto_join9.q.out   |   1 +
 .../clientpositive/beeline/explain_outputs.q.out   |   3 +
 .../clientpositive/beeline/smb_mapjoin_11.q.out    |   1 +
 .../clientpositive/beeline/smb_mapjoin_12.q.out    |   1 +
 .../clientpositive/beeline/smb_mapjoin_16.q.out    |   1 +
 .../clientpositive/beeline/smb_mapjoin_7.q.out     |   1 +
 .../clientpositive/binary_output_format.q.out      |   1 +
 .../results/clientpositive/binarysortable_1.q.out  | Bin 4527 -> 4570 bytes
 ql/src/test/results/clientpositive/bucket1.q.out   |   1 +
 ql/src/test/results/clientpositive/bucket3.q.out   |   1 +
 .../results/clientpositive/bucket_map_join_1.q.out |   1 +
 .../results/clientpositive/bucket_map_join_2.q.out |   1 +
 .../clientpositive/bucket_map_join_spark1.q.out    |   2 +
 .../clientpositive/bucket_map_join_spark2.q.out    |   2 +
 .../clientpositive/bucket_map_join_spark3.q.out    |   2 +
 .../results/clientpositive/bucketcontext_1.q.out   |   2 +
 .../results/clientpositive/bucketcontext_2.q.out   |   2 +
 .../results/clientpositive/bucketcontext_3.q.out   |   2 +
 .../results/clientpositive/bucketcontext_4.q.out   |   2 +
 .../results/clientpositive/bucketcontext_5.q.out   |   2 +
 .../results/clientpositive/bucketcontext_6.q.out   |   2 +
 .../results/clientpositive/bucketcontext_7.q.out   |   2 +
 .../results/clientpositive/bucketcontext_8.q.out   |   2 +
 .../results/clientpositive/bucketmapjoin10.q.out   |   1 +
 .../results/clientpositive/bucketmapjoin11.q.out   |   2 +
 .../results/clientpositive/bucketmapjoin12.q.out   |   2 +
 .../results/clientpositive/bucketmapjoin13.q.out   |   4 +
 .../results/clientpositive/bucketmapjoin5.q.out    |   2 +
 .../results/clientpositive/bucketmapjoin8.q.out    |   2 +
 .../results/clientpositive/bucketmapjoin9.q.out    |   2 +
 .../clientpositive/bucketmapjoin_negative.q.out    |   1 +
 .../clientpositive/bucketmapjoin_negative2.q.out   |   1 +
 .../bucketsortoptimize_insert_1.q.out              |   1 +
 .../bucketsortoptimize_insert_3.q.out              |   1 +
 .../bucketsortoptimize_insert_4.q.out              |   2 +
 .../bucketsortoptimize_insert_5.q.out              |   2 +
 .../bucketsortoptimize_insert_8.q.out              |   2 +
 .../results/clientpositive/case_sensitivity.q.out  |   1 +
 ql/src/test/results/clientpositive/cast1.q.out     |   1 +
 .../cbo_rp_annotate_stats_groupby.q.out            |  23 ++++
 .../results/clientpositive/cbo_rp_auto_join0.q.out |   2 +
 .../results/clientpositive/cbo_rp_auto_join1.q.out |  12 ++
 .../clientpositive/cbo_rp_auto_join17.q.out        |   1 +
 .../cbo_rp_cross_product_check_2.q.out             |   4 +
 .../cbo_rp_gby2_map_multi_distinct.q.out           |   4 +
 .../test/results/clientpositive/cbo_rp_join1.q.out |   4 +
 .../cbo_rp_udaf_percentile_approx_23.q.out         |   2 +
 .../columnStatsUpdateForStatsOptimizer_2.q.out     |   2 +
 .../clientpositive/columnstats_partlvl.q.out       |   7 ++
 .../clientpositive/columnstats_partlvl_dp.q.out    |   4 +
 .../clientpositive/columnstats_quoting.q.out       |   2 +
 .../clientpositive/columnstats_tbllvl.q.out        |   7 ++
 ql/src/test/results/clientpositive/combine2.q.out  |   1 +
 ql/src/test/results/clientpositive/comments.q.out  |   1 +
 .../results/clientpositive/complex_alias.q.out     |   3 +
 .../clientpositive/compute_stats_date.q.out        |   1 +
 ql/src/test/results/clientpositive/constGby.q.out  |   1 +
 .../results/clientpositive/constant_prop_2.q.out   |   1 +
 .../results/clientpositive/constant_prop_3.q.out   |   3 +
 .../test/results/clientpositive/constprog_dp.q.out |   1 +
 .../clientpositive/constprog_partitioner.q.out     |   1 +
 .../results/clientpositive/constprog_type.q.out    |   1 +
 .../convert_decimal64_to_decimal.q.out             |   2 +
 .../clientpositive/correlated_join_keys.q.out      |   2 +
 .../clientpositive/correlationoptimizer10.q.out    |   5 +
 .../clientpositive/correlationoptimizer11.q.out    |   2 +
 .../clientpositive/correlationoptimizer13.q.out    |   2 +
 .../clientpositive/correlationoptimizer14.q.out    |   2 +
 .../clientpositive/correlationoptimizer15.q.out    |   1 +
 .../clientpositive/correlationoptimizer7.q.out     |   4 +
 .../clientpositive/correlationoptimizer8.q.out     |  12 ++
 .../clientpositive/correlationoptimizer9.q.out     |   8 ++
 .../clientpositive/count_dist_rewrite.q.out        |   9 ++
 ql/src/test/results/clientpositive/cp_sel.q.out    |   1 +
 .../clientpositive/create_genericudaf.q.out        |   1 +
 .../clientpositive/cross_product_check_1.q.out     |   4 +
 .../clientpositive/cross_product_check_2.q.out     |   4 +
 ql/src/test/results/clientpositive/ctas.q.out      |   5 +
 .../test/results/clientpositive/ctas_colname.q.out |  10 ++
 .../ctas_uses_database_location.q.out              |   1 +
 .../results/clientpositive/decimal_precision.q.out |   1 +
 .../test/results/clientpositive/decimal_udf.q.out  |   7 ++
 .../clientpositive/display_colstats_tbllvl.q.out   |   3 +
 .../results/clientpositive/distinct_stats.q.out    |   3 +
 .../clientpositive/distinct_windowing.q.out        |   3 +
 .../clientpositive/distinct_windowing_no_cbo.q.out |   5 +
 .../druid/druidmini_expressions.q.out              |  14 +++
 .../test/results/clientpositive/except_all.q.out   |  19 +++
 .../exec_parallel_column_stats.q.out               |   1 +
 .../test/results/clientpositive/explain_ddl.q.out  |   5 +
 .../results/clientpositive/explain_logical.q.out   |   3 +
 .../results/clientpositive/explain_outputs.q.out   |   3 +
 .../results/clientpositive/explain_rearrange.q.out |   8 ++
 .../extrapolate_part_stats_date.q.out              |   1 +
 .../results/clientpositive/fetch_aggregation.q.out |   1 +
 .../test/results/clientpositive/filter_aggr.q.out  |   1 +
 .../clientpositive/filter_cond_pushdown2.q.out     |   3 +
 .../filter_cond_pushdown_HIVE_15647.q.out          |   4 +
 .../test/results/clientpositive/filter_union.q.out |   5 +
 ql/src/test/results/clientpositive/fm-sketch.q.out |   2 +
 ql/src/test/results/clientpositive/fold_case.q.out |   7 ++
 .../clientpositive/fold_eq_with_case_when.q.out    |   1 +
 .../clientpositive/fp_literal_arithmetic.q.out     |   4 +
 ql/src/test/results/clientpositive/gby_star.q.out  |   4 +
 ql/src/test/results/clientpositive/groupby13.q.out |   1 +
 .../results/clientpositive/groupby1_limit.q.out    |   1 +
 .../test/results/clientpositive/groupby1_map.q.out |   2 +
 .../clientpositive/groupby1_map_nomap.q.out        |   2 +
 .../results/clientpositive/groupby1_map_skew.q.out |   2 +
 .../results/clientpositive/groupby2_limit.q.out    |   1 +
 .../test/results/clientpositive/groupby2_map.q.out |   2 +
 .../groupby2_map_multi_distinct.q.out              |   4 +
 .../results/clientpositive/groupby2_map_skew.q.out |   2 +
 .../test/results/clientpositive/groupby3_map.q.out |   1 +
 .../groupby3_map_multi_distinct.q.out              |   1 +
 .../results/clientpositive/groupby3_map_skew.q.out |   1 +
 .../test/results/clientpositive/groupby4_map.q.out |   1 +
 .../results/clientpositive/groupby4_map_skew.q.out |   1 +
 .../test/results/clientpositive/groupby5_map.q.out |   1 +
 .../results/clientpositive/groupby5_map_skew.q.out |   1 +
 .../test/results/clientpositive/groupby6_map.q.out |   2 +
 .../results/clientpositive/groupby6_map_skew.q.out |   2 +
 .../test/results/clientpositive/groupby7_map.q.out |   4 +
 .../groupby7_map_multi_single_reducer.q.out        |   2 +
 .../results/clientpositive/groupby7_map_skew.q.out |   4 +
 .../test/results/clientpositive/groupby8_map.q.out |   2 +
 .../results/clientpositive/groupby8_map_skew.q.out |   4 +
 ql/src/test/results/clientpositive/groupby9.q.out  |  20 +++
 .../clientpositive/groupby_complex_types.q.out     |   3 +
 ...roupby_complex_types_multi_single_reducer.q.out |   2 +
 .../results/clientpositive/groupby_cube1.q.out     |  10 ++
 .../clientpositive/groupby_cube_multi_gby.q.out    |   4 +
 .../clientpositive/groupby_distinct_samekey.q.out  |   2 +
 .../clientpositive/groupby_duplicate_key.q.out     |   4 +
 .../clientpositive/groupby_grouping_id3.q.out      |   2 +
 .../clientpositive/groupby_grouping_sets1.q.out    |   7 ++
 .../clientpositive/groupby_grouping_sets2.q.out    |   4 +
 .../clientpositive/groupby_grouping_sets3.q.out    |   3 +
 .../clientpositive/groupby_grouping_sets4.q.out    |   6 +
 .../clientpositive/groupby_grouping_sets5.q.out    |   6 +
 .../clientpositive/groupby_grouping_sets6.q.out    |   2 +
 .../groupby_grouping_sets_grouping.q.out           |  15 +++
 .../groupby_grouping_sets_limit.q.out              |   6 +
 .../clientpositive/groupby_grouping_window.q.out   |   1 +
 .../clientpositive/groupby_join_pushdown.q.out     |  23 ++++
 .../results/clientpositive/groupby_map_ppr.q.out   |   2 +
 .../groupby_map_ppr_multi_distinct.q.out           |   2 +
 .../groupby_multi_insert_common_distinct.q.out     |   4 +
 .../groupby_multi_single_reducer2.q.out            |   2 +
 .../groupby_multi_single_reducer3.q.out            |   8 ++
 .../clientpositive/groupby_multialias.q.out        |   1 +
 .../results/clientpositive/groupby_position.q.out  |  12 ++
 .../test/results/clientpositive/groupby_ppd.q.out  |   2 +
 .../results/clientpositive/groupby_rollup1.q.out   |   8 ++
 .../clientpositive/groupby_rollup_empty.q.out      |   1 +
 .../results/clientpositive/groupby_sort_10.q.out   |   1 +
 .../results/clientpositive/groupby_sort_11.q.out   |   6 +
 .../results/clientpositive/groupby_sort_1_23.q.out |  31 +++++
 .../results/clientpositive/groupby_sort_2.q.out    |   2 +
 .../results/clientpositive/groupby_sort_3.q.out    |   2 +
 .../results/clientpositive/groupby_sort_4.q.out    |   4 +
 .../results/clientpositive/groupby_sort_5.q.out    |   4 +
 .../results/clientpositive/groupby_sort_6.q.out    |   6 +
 .../results/clientpositive/groupby_sort_7.q.out    |   1 +
 .../results/clientpositive/groupby_sort_8.q.out    |   1 +
 .../results/clientpositive/groupby_sort_9.q.out    |   1 +
 .../clientpositive/groupby_sort_skew_1_23.q.out    |  31 +++++
 .../clientpositive/groupby_sort_test_1.q.out       |   1 +
 ql/src/test/results/clientpositive/having.q.out    |   6 +
 ql/src/test/results/clientpositive/having2.q.out   |   5 +
 ql/src/test/results/clientpositive/hll.q.out       |   2 +
 .../results/clientpositive/in_typecheck_char.q.out |   3 +
 .../clientpositive/in_typecheck_pointlook.q.out    |   2 +
 .../clientpositive/in_typecheck_varchar.q.out      |   2 +
 .../infer_bucket_sort_dyn_part.q.out               |   2 +
 .../infer_bucket_sort_grouping_operators.q.out     |   6 +
 .../infer_bucket_sort_map_operators.q.out          |   5 +
 .../infer_bucket_sort_num_buckets.q.out            |   1 +
 ql/src/test/results/clientpositive/innerjoin.q.out |   1 +
 ql/src/test/results/clientpositive/input11.q.out   |   1 +
 ql/src/test/results/clientpositive/input12.q.out   |   3 +
 ql/src/test/results/clientpositive/input13.q.out   |   3 +
 ql/src/test/results/clientpositive/input14.q.out   |   1 +
 ql/src/test/results/clientpositive/input17.q.out   |   1 +
 ql/src/test/results/clientpositive/input18.q.out   |   1 +
 .../test/results/clientpositive/input1_limit.q.out |   2 +
 ql/src/test/results/clientpositive/input20.q.out   |   1 +
 ql/src/test/results/clientpositive/input30.q.out   |   2 +
 ql/src/test/results/clientpositive/input32.q.out   |   1 +
 ql/src/test/results/clientpositive/input33.q.out   |   1 +
 ql/src/test/results/clientpositive/input34.q.out   |   1 +
 ql/src/test/results/clientpositive/input35.q.out   |   1 +
 ql/src/test/results/clientpositive/input36.q.out   |   1 +
 ql/src/test/results/clientpositive/input38.q.out   |   1 +
 ql/src/test/results/clientpositive/input39.q.out   |   1 +
 .../test/results/clientpositive/input3_limit.q.out |   1 +
 ql/src/test/results/clientpositive/input5.q.out    |   1 +
 ql/src/test/results/clientpositive/input6.q.out    |   1 +
 ql/src/test/results/clientpositive/input7.q.out    |   1 +
 ql/src/test/results/clientpositive/input8.q.out    |   1 +
 ql/src/test/results/clientpositive/input9.q.out    |   1 +
 .../test/results/clientpositive/input_part1.q.out  |   1 +
 .../test/results/clientpositive/input_part10.q.out |   1 +
 .../test/results/clientpositive/input_part2.q.out  |   2 +
 .../test/results/clientpositive/input_part5.q.out  |   1 +
 .../clientpositive/input_testsequencefile.q.out    |   1 +
 .../results/clientpositive/input_testxpath.q.out   |   1 +
 .../results/clientpositive/input_testxpath2.q.out  |   1 +
 ql/src/test/results/clientpositive/insert1.q.out   |   6 +
 .../insert2_overwrite_partitions.q.out             |   2 +
 .../test/results/clientpositive/insert_into1.q.out |   6 +
 .../test/results/clientpositive/insert_into2.q.out |   4 +
 .../test/results/clientpositive/insert_into3.q.out |   4 +
 .../test/results/clientpositive/insert_into4.q.out |   3 +
 .../test/results/clientpositive/insert_into5.q.out |   4 +
 .../test/results/clientpositive/insert_into6.q.out |   2 +
 .../clientpositive/insertoverwrite_bucket.q.out    |   2 +
 ql/src/test/results/clientpositive/join14.q.out    |   1 +
 ql/src/test/results/clientpositive/join17.q.out    |   1 +
 ql/src/test/results/clientpositive/join18.q.out    |   2 +
 .../clientpositive/join18_multi_distinct.q.out     |   2 +
 ql/src/test/results/clientpositive/join25.q.out    |   1 +
 ql/src/test/results/clientpositive/join26.q.out    |   1 +
 ql/src/test/results/clientpositive/join27.q.out    |   1 +
 ql/src/test/results/clientpositive/join28.q.out    |   1 +
 ql/src/test/results/clientpositive/join29.q.out    |   5 +
 ql/src/test/results/clientpositive/join3.q.out     |   1 +
 ql/src/test/results/clientpositive/join30.q.out    |   2 +
 ql/src/test/results/clientpositive/join31.q.out    |   4 +
 ql/src/test/results/clientpositive/join32.q.out    |   1 +
 ql/src/test/results/clientpositive/join33.q.out    |   1 +
 ql/src/test/results/clientpositive/join34.q.out    |   2 +
 ql/src/test/results/clientpositive/join35.q.out    |   4 +
 ql/src/test/results/clientpositive/join36.q.out    |   1 +
 ql/src/test/results/clientpositive/join37.q.out    |   1 +
 ql/src/test/results/clientpositive/join38.q.out    |   1 +
 ql/src/test/results/clientpositive/join39.q.out    |   1 +
 ql/src/test/results/clientpositive/join4.q.out     |   1 +
 ql/src/test/results/clientpositive/join40.q.out    |   1 +
 ql/src/test/results/clientpositive/join43.q.out    |   2 +
 ql/src/test/results/clientpositive/join5.q.out     |   1 +
 ql/src/test/results/clientpositive/join6.q.out     |   1 +
 ql/src/test/results/clientpositive/join7.q.out     |   1 +
 ql/src/test/results/clientpositive/join8.q.out     |   1 +
 ql/src/test/results/clientpositive/join9.q.out     |   1 +
 .../clientpositive/join_grp_diff_keys.q.out        |   1 +
 .../test/results/clientpositive/join_map_ppr.q.out |   2 +
 .../join_merge_multi_expressions.q.out             |   1 +
 .../kafka/kafka_storage_handler.q.out              |   2 +
 .../test/results/clientpositive/keep_uniform.q.out |   3 +
 .../results/clientpositive/lateral_view_cp.q.out   |   2 +
 .../clientpositive/lateral_view_explode2.q.out     |   2 +
 .../test/results/clientpositive/leftsemijoin.q.out |   1 +
 .../results/clientpositive/limit_pushdown2.q.out   |  11 ++
 .../clientpositive/limit_pushdown_negative.q.out   |   3 +
 ql/src/test/results/clientpositive/lineage1.q.out  |   2 +
 .../results/clientpositive/list_bucket_dml_1.q.out |   1 +
 .../clientpositive/list_bucket_dml_11.q.out        |   1 +
 .../clientpositive/list_bucket_dml_12.q.out        |   1 +
 .../clientpositive/list_bucket_dml_13.q.out        |   1 +
 .../clientpositive/list_bucket_dml_14.q.out        |   1 +
 .../results/clientpositive/list_bucket_dml_2.q.out |   1 +
 .../results/clientpositive/list_bucket_dml_3.q.out |   1 +
 .../results/clientpositive/list_bucket_dml_4.q.out |   2 +
 .../results/clientpositive/list_bucket_dml_5.q.out |   1 +
 .../results/clientpositive/list_bucket_dml_6.q.out |   2 +
 .../results/clientpositive/list_bucket_dml_7.q.out |   2 +
 .../results/clientpositive/list_bucket_dml_8.q.out |   1 +
 .../results/clientpositive/list_bucket_dml_9.q.out |   2 +
 .../list_bucket_query_oneskew_2.q.out              |   2 +
 .../llap/acid_vectorization_original.q.out         |   1 +
 .../results/clientpositive/llap/auto_join0.q.out   |   1 +
 .../results/clientpositive/llap/auto_join1.q.out   |   1 +
 .../results/clientpositive/llap/auto_join30.q.out  |   8 ++
 .../clientpositive/llap/auto_join_filters.q.out    |   3 +
 .../clientpositive/llap/auto_join_nulls.q.out      |   1 +
 .../clientpositive/llap/auto_smb_mapjoin_14.q.out  |  18 +++
 .../llap/auto_sortmerge_join_1.q.out               |   3 +
 .../llap/auto_sortmerge_join_10.q.out              |   2 +
 .../llap/auto_sortmerge_join_11.q.out              |   4 +
 .../llap/auto_sortmerge_join_12.q.out              |   1 +
 .../llap/auto_sortmerge_join_13.q.out              |   6 +
 .../llap/auto_sortmerge_join_14.q.out              |   2 +
 .../llap/auto_sortmerge_join_15.q.out              |   2 +
 .../llap/auto_sortmerge_join_2.q.out               |   2 +
 .../llap/auto_sortmerge_join_3.q.out               |   3 +
 .../llap/auto_sortmerge_join_4.q.out               |   3 +
 .../llap/auto_sortmerge_join_5.q.out               |   3 +
 .../llap/auto_sortmerge_join_6.q.out               |  10 ++
 .../llap/auto_sortmerge_join_7.q.out               |   3 +
 .../llap/auto_sortmerge_join_8.q.out               |   3 +
 .../llap/auto_sortmerge_join_9.q.out               |  29 +++++
 .../test/results/clientpositive/llap/bucket3.q.out |   1 +
 .../test/results/clientpositive/llap/bucket5.q.out |   2 +
 .../test/results/clientpositive/llap/bucket6.q.out |   1 +
 .../clientpositive/llap/bucket_groupby.q.out       |  12 ++
 .../results/clientpositive/llap/bucket_many.q.out  |   1 +
 .../clientpositive/llap/bucket_map_join_tez2.q.out |   8 ++
 .../clientpositive/llap/bucketmapjoin1.q.out       |   2 +
 .../clientpositive/llap/bucketmapjoin2.q.out       |   3 +
 .../clientpositive/llap/bucketmapjoin3.q.out       |   2 +
 .../clientpositive/llap/bucketmapjoin4.q.out       |   2 +
 .../llap/bucketsortoptimize_insert_2.q.out         |   6 +
 .../llap/bucketsortoptimize_insert_6.q.out         |   7 ++
 .../llap/bucketsortoptimize_insert_7.q.out         |   3 +
 .../clientpositive/llap/check_constraint.q.out     |   3 +
 .../columnStatsUpdateForStatsOptimizer_1.q.out     |   6 +
 .../clientpositive/llap/column_table_stats.q.out   |   4 +
 .../llap/column_table_stats_orc.q.out              |   3 +
 .../llap/constraints_optimization.q.out            |  13 ++
 .../llap/convert_decimal64_to_decimal.q.out        |   2 +
 .../llap/correlationoptimizer1.q.out               |  46 +++++++
 .../llap/correlationoptimizer2.q.out               |  54 +++++++++
 .../llap/correlationoptimizer3.q.out               |  12 ++
 .../llap/correlationoptimizer4.q.out               |  26 ++++
 .../llap/correlationoptimizer6.q.out               |  28 +++++
 .../test/results/clientpositive/llap/count.q.out   |   3 +
 .../clientpositive/llap/count_dist_rewrite.q.out   |  10 ++
 .../results/clientpositive/llap/cross_prod_1.q.out |   2 +
 .../llap/cross_product_check_1.q.out               |   4 +
 .../llap/cross_product_check_2.q.out               |   4 +
 ql/src/test/results/clientpositive/llap/ctas.q.out |   5 +
 ql/src/test/results/clientpositive/llap/dpp.q.out  |   3 +
 .../llap/dynamic_partition_join_noncbo.q.out       |   1 +
 .../llap/dynamic_partition_pruning.q.out           | 135 ++++++++++++++++++---
 .../llap/dynamic_partition_pruning_2.q.out         |   8 ++
 .../llap/dynamic_semijoin_reduction.q.out          |  41 +++++++
 .../llap/dynamic_semijoin_reduction_2.q.out        |  11 ++
 .../llap/dynamic_semijoin_reduction_3.q.out        |   7 ++
 .../llap/dynamic_semijoin_reduction_4.q.out        |   8 ++
 .../llap/dynamic_semijoin_reduction_sw.q.out       |   3 +
 .../llap/dynamic_semijoin_reduction_sw2.q.out      |   2 +
 .../llap/dynamic_semijoin_user_level.q.out         |   2 +
 .../llap/dynpart_sort_opt_vectorization.q.out      |  14 +++
 .../llap/dynpart_sort_optimization.q.out           |  25 ++++
 .../llap/dynpart_sort_optimization2.q.out          |   7 ++
 .../llap/enforce_constraint_notnull.q.out          |  35 ++++++
 .../clientpositive/llap/except_distinct.q.out      |  16 +++
 .../results/clientpositive/llap/filter_union.q.out |   5 +
 .../llap/groupby_groupingset_bug.q.out             |   4 +-
 .../clientpositive/llap/groupby_resolution.q.out   |   5 +
 .../clientpositive/llap/groupby_rollup_empty.q.out |   1 +
 .../test/results/clientpositive/llap/having.q.out  |   6 +
 .../llap/hybridgrace_hashjoin_1.q.out              |  10 ++
 .../llap/hybridgrace_hashjoin_2.q.out              |  14 +++
 .../test/results/clientpositive/llap/insert1.q.out |   6 +
 .../llap/insert1_overwrite_partitions.q.out        |   3 +
 .../results/clientpositive/llap/insert_into1.q.out |   6 +
 .../results/clientpositive/llap/insert_into2.q.out |   4 +
 .../llap/insert_into_default_keyword.q.out         |  20 +++
 .../insert_values_orig_table_use_metadata.q.out    |   1 +
 .../clientpositive/llap/intersect_all.q.out        |  16 +++
 .../clientpositive/llap/intersect_distinct.q.out   |  16 +++
 .../clientpositive/llap/intersect_merge.q.out      |  66 ++++++++++
 .../results/clientpositive/llap/jdbc_handler.q.out |   1 +
 .../test/results/clientpositive/llap/join1.q.out   |   1 +
 .../clientpositive/llap/join32_lessSize.q.out      |   6 +
 .../llap/join_reordering_no_stats.q.out            |   4 +
 .../results/clientpositive/llap/keep_uniform.q.out |   3 +
 ql/src/test/results/clientpositive/llap/kryo.q.out |   1 +
 .../results/clientpositive/llap/lateral_view.q.out |   1 +
 .../results/clientpositive/llap/leftsemijoin.q.out |   1 +
 .../clientpositive/llap/limit_pushdown.q.out       |   9 ++
 .../clientpositive/llap/limit_pushdown3.q.out      |   7 ++
 .../clientpositive/llap/list_bucket_dml_10.q.out   |   1 +
 .../llap/llap_decimal64_reader.q.out               |   2 +
 .../clientpositive/llap/llap_nullscan.q.out        |   2 +
 .../clientpositive/llap/llap_partitioned.q.out     |   6 +-
 .../results/clientpositive/llap/llap_smb.q.out     |   1 +
 .../results/clientpositive/llap/llap_smb_ptf.q.out |   2 +
 .../results/clientpositive/llap/llap_stats.q.out   |   1 +
 .../llap/llap_vector_nohybridgrace.q.out           |   2 +
 .../results/clientpositive/llap/llapdecider.q.out  |   8 ++
 .../clientpositive/llap/load_dyn_part1.q.out       |   2 +
 .../clientpositive/llap/load_dyn_part2.q.out       |   1 +
 .../clientpositive/llap/load_dyn_part5.q.out       |   1 +
 .../results/clientpositive/llap/mapjoin_hint.q.out |   5 +
 .../clientpositive/llap/mapjoin_mapjoin.q.out      |   1 +
 .../results/clientpositive/llap/mapreduce1.q.out   |   1 +
 .../results/clientpositive/llap/mapreduce2.q.out   |   1 +
 .../llap/materialized_view_create_rewrite_2.q.out  |   5 +
 .../llap/materialized_view_create_rewrite_3.q.out  |   9 ++
 .../llap/materialized_view_create_rewrite_4.q.out  |   9 ++
 .../llap/materialized_view_create_rewrite_5.q.out  |   4 +
 ...ialized_view_create_rewrite_rebuild_dummy.q.out |   9 ++
 ...erialized_view_create_rewrite_time_window.q.out |   7 ++
 .../llap/materialized_view_partitioned.q.out       |   3 +
 .../llap/materialized_view_partitioned_3.q.out     |   1 +
 .../llap/materialized_view_rewrite_1.q.out         |   3 +
 .../llap/materialized_view_rewrite_10.q.out        |   1 +
 .../llap/materialized_view_rewrite_2.q.out         |   2 +
 .../llap/materialized_view_rewrite_4.q.out         |   6 +
 .../llap/materialized_view_rewrite_5.q.out         |   6 +
 .../llap/materialized_view_rewrite_6.q.out         |   2 +
 .../llap/materialized_view_rewrite_7.q.out         |   7 ++
 .../llap/materialized_view_rewrite_8.q.out         |   4 +
 .../llap/materialized_view_rewrite_9.q.out         |   3 +
 .../materialized_view_rewrite_no_join_opt.q.out    |   2 +
 .../materialized_view_rewrite_no_join_opt_2.q.out  |   9 +-
 .../llap/materialized_view_rewrite_part_1.q.out    |   8 +-
 .../llap/materialized_view_rewrite_part_2.q.out    |   3 +
 .../llap/materialized_view_rewrite_ssb.q.out       |  13 ++
 .../llap/materialized_view_rewrite_ssb_2.q.out     |  13 ++
 .../test/results/clientpositive/llap/merge1.q.out  |   4 +
 .../test/results/clientpositive/llap/merge2.q.out  |   4 +
 .../results/clientpositive/llap/mergejoin.q.out    |  16 +++
 .../llap/metadata_only_queries.q.out               |   5 +
 .../clientpositive/llap/metadataonly1.q.out        |  11 ++
 .../test/results/clientpositive/llap/mm_all.q.out  |   1 +
 .../test/results/clientpositive/llap/mm_bhif.q.out |   1 +
 ql/src/test/results/clientpositive/llap/mrr.q.out  |   6 +
 .../clientpositive/llap/multiMapJoin1.q.out        |   7 ++
 .../clientpositive/llap/multiMapJoin2.q.out        |  16 +++
 .../llap/multi_count_distinct_null.q.out           |   4 +
 .../results/clientpositive/llap/multi_insert.q.out |  32 +++++
 .../llap/multi_insert_lateral_view.q.out           |  31 +++++
 .../results/clientpositive/llap/offset_limit.q.out |   1 +
 .../llap/offset_limit_ppd_optimizer.q.out          |   7 ++
 .../clientpositive/llap/optimize_join_ptp.q.out    |   1 +
 .../clientpositive/llap/optimize_nullscan.q.out    |   4 +
 .../results/clientpositive/llap/orc_llap.q.out     |  13 ++
 .../results/clientpositive/llap/orc_merge1.q.out   |   3 +
 .../results/clientpositive/llap/orc_merge10.q.out  |   3 +
 .../results/clientpositive/llap/orc_merge2.q.out   |   1 +
 .../results/clientpositive/llap/orc_merge3.q.out   |   1 +
 .../results/clientpositive/llap/orc_merge4.q.out   |   1 +
 .../results/clientpositive/llap/orc_merge5.q.out   |   2 +
 .../results/clientpositive/llap/orc_merge6.q.out   |   2 +
 .../results/clientpositive/llap/orc_merge7.q.out   |   2 +
 .../clientpositive/llap/orc_merge_diff_fs.q.out    |   3 +
 .../clientpositive/llap/orc_merge_incompat1.q.out  |   1 +
 .../clientpositive/llap/orc_merge_incompat2.q.out  |   1 +
 .../results/clientpositive/llap/orc_ppd_date.q.out |   2 +
 .../llap/orc_predicate_pushdown.q.out              |   4 +
 .../llap/orc_struct_type_vectorization.q.out       |   1 +
 .../results/clientpositive/llap/parallel.q.out     |   3 +
 .../clientpositive/llap/parallel_colstats.q.out    |   3 +
 .../llap/parquet_complex_types_vectorization.q.out |   3 +
 .../llap/parquet_map_type_vectorization.q.out      |   1 +
 .../llap/parquet_predicate_pushdown.q.out          |   2 +
 .../llap/parquet_struct_type_vectorization.q.out   |   1 +
 .../llap/parquet_types_vectorization.q.out         |   7 ++
 .../results/clientpositive/llap/partialdhj.q.out   |   2 +
 .../clientpositive/llap/partition_ctas.q.out       |   1 +
 .../llap/partition_multilevels.q.out               |   2 +
 ql/src/test/results/clientpositive/llap/ptf.q.out  |   5 +
 .../clientpositive/llap/q93_with_constraints.q.out |   1 +
 .../clientpositive/llap/rcfile_createas1.q.out     |   1 +
 .../clientpositive/llap/rcfile_merge2.q.out        |   1 +
 .../clientpositive/llap/rcfile_merge3.q.out        |   1 +
 .../clientpositive/llap/rcfile_merge4.q.out        |   1 +
 .../clientpositive/llap/reduce_deduplicate.q.out   |   1 +
 .../llap/reduce_deduplicate_distinct.q.out         |   9 ++
 .../llap/reduce_deduplicate_extended.q.out         |   4 +
 .../clientpositive/llap/reopt_semijoin.q.out       |   4 +
 .../clientpositive/llap/results_cache_1.q.out      |   3 +
 .../clientpositive/llap/results_cache_2.q.out      |   2 +
 .../llap/results_cache_capacity.q.out              |   2 +
 .../llap/results_cache_diff_fs.q.out               |   1 +
 .../llap/results_cache_empty_result.q.out          |   1 +
 .../llap/results_cache_invalidation.q.out          |   7 ++
 .../llap/results_cache_invalidation2.q.out         |   2 +
 .../llap/results_cache_lifetime.q.out              |   1 +
 .../llap/results_cache_quoted_identifiers.q.out    |   1 +
 .../llap/results_cache_temptable.q.out             |   3 +
 .../llap/results_cache_transactional.q.out         |   6 +
 .../llap/results_cache_with_masking.q.out          |   2 +
 .../test/results/clientpositive/llap/sample1.q.out |   1 +
 .../results/clientpositive/llap/sample10.q.out     |   1 +
 .../results/clientpositive/llap/sample10_mm.q.out  |   1 +
 .../clientpositive/llap/selectDistinctStar.q.out   |   8 ++
 .../results/clientpositive/llap/semijoin.q.out     |  24 ++++
 .../results/clientpositive/llap/semijoin6.q.out    |   7 ++
 .../results/clientpositive/llap/semijoin7.q.out    |   7 ++
 .../clientpositive/llap/semijoin_hint.q.out        |  44 +++++++
 .../clientpositive/llap/semijoin_reddedup.q.out    |   3 +
 .../clientpositive/llap/sharedworkext.q.out        |   2 +
 .../results/clientpositive/llap/skewjoin.q.out     |   6 +
 .../clientpositive/llap/skewjoinopt15.q.out        |   2 +
 .../clientpositive/llap/smb_mapjoin_14.q.out       |  13 ++
 .../clientpositive/llap/smb_mapjoin_17.q.out       |   3 +
 .../clientpositive/llap/smb_mapjoin_18.q.out       |   1 +
 .../clientpositive/llap/smb_mapjoin_6.q.out        |   4 +
 .../results/clientpositive/llap/sqlmerge.q.out     |   3 +
 .../clientpositive/llap/sqlmerge_stats.q.out       |  14 +++
 .../test/results/clientpositive/llap/stats11.q.out |   2 +
 .../clientpositive/llap/stats_only_external.q.out  |   2 +
 .../clientpositive/llap/stats_only_null.q.out      |   2 +
 .../clientpositive/llap/subquery_corr.q.out        |   3 +
 .../clientpositive/llap/subquery_exists.q.out      |   7 ++
 .../results/clientpositive/llap/subquery_in.q.out  |  71 +++++++++++
 .../clientpositive/llap/subquery_in_having.q.out   |  26 ++++
 .../clientpositive/llap/subquery_multi.q.out       |  53 ++++++++
 .../clientpositive/llap/subquery_notin.q.out       |  83 +++++++++++++
 .../clientpositive/llap/subquery_null_agg.q.out    |   2 +
 .../clientpositive/llap/subquery_scalar.q.out      |  78 ++++++++++++
 .../clientpositive/llap/subquery_select.q.out      |  53 ++++++++
 .../clientpositive/llap/subquery_views.q.out       |   5 +
 .../test/results/clientpositive/llap/sysdb.q.out   |   2 +
 .../test/results/clientpositive/llap/tez_dml.q.out |   4 +
 .../llap/tez_dynpart_hashjoin_1.q.out              |   4 +
 .../clientpositive/llap/tez_input_counters.q.out   |   5 +-
 .../clientpositive/llap/tez_join_hash.q.out        |   2 +
 .../clientpositive/llap/tez_nway_join.q.out        |   4 +
 .../clientpositive/llap/tez_smb_empty.q.out        |   5 +
 .../results/clientpositive/llap/tez_smb_main.q.out |  15 +++
 .../clientpositive/llap/tez_smb_reduce_side.q.out  |   9 ++
 .../results/clientpositive/llap/tez_union.q.out    |   1 +
 .../results/clientpositive/llap/tez_union2.q.out   |   4 +
 .../llap/tez_union_dynamic_partition.q.out         |   2 +
 .../llap/tez_union_dynamic_partition_2.q.out       |   2 +
 .../clientpositive/llap/tez_union_group_by.q.out   |   4 +
 .../llap/tez_union_multiinsert.q.out               |  40 ++++++
 .../llap/tez_vector_dynpart_hashjoin_1.q.out       |   4 +
 .../test/results/clientpositive/llap/topnkey.q.out |   2 +
 .../test/results/clientpositive/llap/union2.q.out  |   2 +
 .../test/results/clientpositive/llap/union4.q.out  |   4 +
 .../test/results/clientpositive/llap/union5.q.out  |   4 +
 .../test/results/clientpositive/llap/union6.q.out  |   3 +
 .../test/results/clientpositive/llap/union7.q.out  |   3 +
 .../test/results/clientpositive/llap/union9.q.out  |   3 +
 .../clientpositive/llap/unionDistinct_1.q.out      | 133 ++++++++++++++++++++
 .../clientpositive/llap/unionDistinct_3.q.out      |  47 +++++++
 .../clientpositive/llap/union_remove_26.q.out      |  12 ++
 .../clientpositive/llap/union_top_level.q.out      |   9 ++
 .../llap/vector_adaptor_usage_mode.q.out           |   2 +
 .../clientpositive/llap/vector_aggregate_9.q.out   |   3 +
 .../llap/vector_aggregate_without_gby.q.out        |   1 +
 .../llap/vector_auto_smb_mapjoin_14.q.out          |  14 +++
 .../clientpositive/llap/vector_between_in.q.out    |   7 ++
 .../llap/vector_binary_join_groupby.q.out          |   2 +
 .../clientpositive/llap/vector_cast_constant.q.out |   1 +
 .../clientpositive/llap/vector_char_2.q.out        |   2 +
 .../llap/vector_char_varchar_1.q.out               |   2 +
 .../clientpositive/llap/vector_coalesce_2.q.out    |   2 +
 .../clientpositive/llap/vector_complex_all.q.out   |   5 +
 .../results/clientpositive/llap/vector_count.q.out |   2 +
 .../llap/vector_count_distinct.q.out               |   2 +
 .../clientpositive/llap/vector_data_types.q.out    |   1 +
 .../llap/vector_decimal_aggregate.q.out            |   4 +
 .../clientpositive/llap/vector_decimal_join.q.out  |   1 +
 .../llap/vector_decimal_precision.q.out            |   2 +
 .../clientpositive/llap/vector_decimal_udf.q.out   |  14 +++
 .../clientpositive/llap/vector_distinct_2.q.out    |   1 +
 .../clientpositive/llap/vector_groupby_3.q.out     |   1 +
 .../clientpositive/llap/vector_groupby_cube1.q.out |  10 ++
 .../llap/vector_groupby_grouping_id1.q.out         |   6 +
 .../llap/vector_groupby_grouping_id2.q.out         |  12 ++
 .../llap/vector_groupby_grouping_id3.q.out         |   2 +
 .../llap/vector_groupby_grouping_sets1.q.out       |   7 ++
 .../llap/vector_groupby_grouping_sets2.q.out       |   4 +
 .../llap/vector_groupby_grouping_sets3.q.out       |   3 +
 .../llap/vector_groupby_grouping_sets3_dec.q.out   |   3 +
 .../llap/vector_groupby_grouping_sets4.q.out       |   3 +
 .../llap/vector_groupby_grouping_sets5.q.out       |   6 +
 .../llap/vector_groupby_grouping_sets6.q.out       |   2 +
 .../vector_groupby_grouping_sets_grouping.q.out    |  15 +++
 .../llap/vector_groupby_grouping_sets_limit.q.out  |   6 +
 .../llap/vector_groupby_grouping_window.q.out      |   1 +
 .../llap/vector_groupby_mapjoin.q.out              |   2 +
 .../llap/vector_groupby_reduce.q.out               |   5 +
 .../llap/vector_groupby_rollup1.q.out              |   6 +
 .../llap/vector_groupby_sort_11.q.out              |   8 ++
 .../llap/vector_groupby_sort_8.q.out               |   1 +
 .../clientpositive/llap/vector_grouping_sets.q.out |   3 +
 .../llap/vector_include_no_sel.q.out               |   1 +
 .../clientpositive/llap/vector_inner_join.q.out    |   1 +
 .../clientpositive/llap/vector_join30.q.out        |  15 +++
 .../clientpositive/llap/vector_join_filters.q.out  |   5 +
 .../clientpositive/llap/vector_join_nulls.q.out    |   5 +
 .../llap/vector_left_outer_join.q.out              |   1 +
 .../llap/vector_leftsemi_mapjoin.q.out             | 113 +++++++++++++++++
 .../llap/vector_mapjoin_complex_values.q.out       |   2 +
 .../llap/vector_mapjoin_reduce.q.out               |   4 +
 .../llap/vector_mr_diff_schema_alias.q.out         |   1 +
 .../llap/vector_null_projection.q.out              |   2 +
 .../llap/vector_number_compare_projection.q.out    |   2 +
 .../llap/vector_orc_merge_incompat_schema.q.out    |   1 +
 .../llap/vector_orc_nested_column_pruning.q.out    |  10 ++
 .../clientpositive/llap/vector_orderby_5.q.out     |   1 +
 .../clientpositive/llap/vector_outer_join1.q.out   |   1 +
 .../clientpositive/llap/vector_outer_join2.q.out   |   1 +
 .../llap/vector_outer_reference_windowed.q.out     |  10 ++
 .../llap/vector_partition_diff_num_cols.q.out      |   5 +
 .../llap/vector_partitioned_date_time.q.out        |   6 +
 .../results/clientpositive/llap/vector_ptf_1.q.out |   1 +
 .../llap/vector_reduce_groupby_decimal.q.out       |   1 +
 .../vector_reduce_groupby_duplicate_cols.q.out     |   1 +
 .../clientpositive/llap/vector_retry_failure.q.out |   1 +
 .../llap/vector_reuse_scratchcols.q.out            |   2 +
 .../clientpositive/llap/vector_string_concat.q.out |   1 +
 .../clientpositive/llap/vector_topnkey.q.out       |   2 +
 .../results/clientpositive/llap/vector_udf1.q.out  |   3 +
 .../llap/vector_when_case_null.q.out               |   1 +
 .../clientpositive/llap/vector_windowing.q.out     |   9 ++
 .../clientpositive/llap/vector_windowing_gby.q.out |   1 +
 .../llap/vector_windowing_gby2.q.out               |   4 +
 .../llap/vector_windowing_streaming.q.out          |   1 +
 .../clientpositive/llap/vectorization_0.q.out      |   9 ++
 .../clientpositive/llap/vectorization_1.q.out      |   1 +
 .../clientpositive/llap/vectorization_12.q.out     |   1 +
 .../clientpositive/llap/vectorization_13.q.out     |   2 +
 .../clientpositive/llap/vectorization_14.q.out     |   1 +
 .../clientpositive/llap/vectorization_15.q.out     |   1 +
 .../clientpositive/llap/vectorization_16.q.out     |   1 +
 .../clientpositive/llap/vectorization_2.q.out      |   1 +
 .../clientpositive/llap/vectorization_3.q.out      |   1 +
 .../clientpositive/llap/vectorization_4.q.out      |   1 +
 .../clientpositive/llap/vectorization_5.q.out      |   1 +
 .../clientpositive/llap/vectorization_9.q.out      |   1 +
 .../llap/vectorization_input_format_excludes.q.out |   4 +
 .../clientpositive/llap/vectorization_limit.q.out  |   4 +
 .../llap/vectorization_nested_udf.q.out            |   1 +
 .../llap/vectorization_pushdown.q.out              |   1 +
 .../llap/vectorization_short_regress.q.out         |  16 +++
 .../clientpositive/llap/vectorized_case.q.out      |   2 +
 .../llap/vectorized_distinct_gby.q.out             |   3 +
 .../vectorized_dynamic_partition_pruning.q.out     | 130 +++++++++++++++++---
 .../vectorized_dynamic_semijoin_reduction.q.out    |  14 +++
 .../vectorized_dynamic_semijoin_reduction2.q.out   |  16 +++
 .../clientpositive/llap/vectorized_mapjoin.q.out   |   1 +
 .../clientpositive/llap/vectorized_mapjoin3.q.out  |   3 +
 .../llap/vectorized_multi_output_select.q.out      |   2 +
 .../llap/vectorized_nested_mapjoin.q.out           |   3 +-
 .../clientpositive/llap/vectorized_parquet.q.out   |   1 +
 .../llap/vectorized_parquet_types.q.out            |   2 +
 .../clientpositive/llap/vectorized_ptf.q.out       |   5 +
 .../llap/vectorized_shufflejoin.q.out              |   1 +
 .../clientpositive/llap/vectorized_timestamp.q.out |   3 +
 .../llap/vectorized_timestamp_funcs.q.out          |   3 +
 .../results/clientpositive/llap/windowing.q.out    |   1 +
 .../results/clientpositive/load_dyn_part1.q.out    |   2 +
 .../results/clientpositive/load_dyn_part10.q.out   |   1 +
 .../results/clientpositive/load_dyn_part13.q.out   |   2 +
 .../results/clientpositive/load_dyn_part14.q.out   |   3 +
 .../results/clientpositive/load_dyn_part2.q.out    |   1 +
 .../results/clientpositive/load_dyn_part3.q.out    |   1 +
 .../results/clientpositive/load_dyn_part4.q.out    |   1 +
 .../results/clientpositive/load_dyn_part8.q.out    |   2 +
 .../results/clientpositive/load_dyn_part9.q.out    |   1 +
 .../results/clientpositive/mapjoin_distinct.q.out  |   2 +
 .../results/clientpositive/mapjoin_mapjoin.q.out   |   1 +
 .../test/results/clientpositive/mapreduce1.q.out   |   1 +
 .../test/results/clientpositive/mapreduce2.q.out   |   1 +
 .../test/results/clientpositive/mapreduce3.q.out   |   1 +
 .../test/results/clientpositive/mapreduce4.q.out   |   1 +
 .../test/results/clientpositive/mapreduce5.q.out   |   1 +
 .../test/results/clientpositive/mapreduce6.q.out   |   1 +
 .../test/results/clientpositive/mapreduce7.q.out   |   1 +
 .../test/results/clientpositive/mapreduce8.q.out   |   1 +
 .../test/results/clientpositive/masking_10.q.out   |   1 +
 .../test/results/clientpositive/masking_12.q.out   |   2 +
 ql/src/test/results/clientpositive/masking_2.q.out |   2 +
 ql/src/test/results/clientpositive/masking_3.q.out |  14 +++
 ql/src/test/results/clientpositive/masking_4.q.out |   2 +
 .../clientpositive/masking_disablecbo_2.q.out      |   2 +
 .../clientpositive/masking_disablecbo_3.q.out      |   7 ++
 .../clientpositive/masking_disablecbo_4.q.out      |   1 +
 .../test/results/clientpositive/masking_mv.q.out   |   7 ++
 ql/src/test/results/clientpositive/merge1.q.out    |   4 +
 ql/src/test/results/clientpositive/merge2.q.out    |   4 +
 ql/src/test/results/clientpositive/merge3.q.out    |   2 +
 ql/src/test/results/clientpositive/merge4.q.out    |   3 +
 .../clientpositive/merge_dynamic_partition.q.out   |   3 +
 .../clientpositive/merge_dynamic_partition2.q.out  |   1 +
 .../clientpositive/merge_dynamic_partition3.q.out  |   1 +
 .../clientpositive/merge_dynamic_partition4.q.out  |   1 +
 .../clientpositive/merge_dynamic_partition5.q.out  |   1 +
 ql/src/test/results/clientpositive/mergejoin.q.out |  11 ++
 .../clientpositive/metadata_only_queries.q.out     |   5 +
 ql/src/test/results/clientpositive/mm_all.q.out    |   1 +
 .../clientpositive/multi_insert_distinct.q.out     |   6 +
 .../results/clientpositive/multi_insert_gby.q.out  |   4 +
 .../results/clientpositive/multi_insert_gby3.q.out |  18 +++
 .../results/clientpositive/multi_insert_gby4.q.out |   3 +
 .../clientpositive/multi_insert_mixed.q.out        |   3 +
 ...ulti_insert_move_tasks_share_dependencies.q.out |  40 ++++++
 .../clientpositive/multi_insert_with_join2.q.out   |  14 +++
 .../clientpositive/multigroupby_singlemr.q.out     |  20 +++
 .../clientpositive/nested_column_pruning.q.out     |  10 ++
 .../clientpositive/nonblock_op_deduplicate.q.out   |   2 +
 .../test/results/clientpositive/nonmr_fetch.q.out  |   4 +
 .../nonreserved_keywords_insert_into1.q.out        |   3 +
 .../results/clientpositive/notable_alias1.q.out    |   2 +
 .../results/clientpositive/notable_alias2.q.out    |   2 +
 .../results/clientpositive/nullformatCTAS.q.out    |   1 +
 ql/src/test/results/clientpositive/nullgroup.q.out |   2 +
 .../test/results/clientpositive/nullgroup2.q.out   |   2 +
 .../test/results/clientpositive/nullgroup3.q.out   |   4 +
 .../test/results/clientpositive/nullgroup4.q.out   |   2 +
 .../clientpositive/nullgroup4_multi_distinct.q.out |   1 +
 .../results/clientpositive/orc_createas1.q.out     |   2 +
 .../test/results/clientpositive/orc_merge1.q.out   |   3 +
 .../test/results/clientpositive/orc_merge10.q.out  |   3 +
 .../test/results/clientpositive/orc_merge2.q.out   |   1 +
 .../test/results/clientpositive/orc_merge3.q.out   |   1 +
 .../test/results/clientpositive/orc_merge4.q.out   |   1 +
 .../test/results/clientpositive/orc_merge5.q.out   |   2 +
 .../test/results/clientpositive/orc_merge6.q.out   |   2 +
 .../results/clientpositive/orc_merge_diff_fs.q.out |   3 +
 .../clientpositive/orc_merge_incompat1.q.out       |   1 +
 .../clientpositive/orc_merge_incompat2.q.out       |   1 +
 .../clientpositive/orc_nested_column_pruning.q.out |  10 ++
 .../orc_struct_type_vectorization.q.out            |   1 +
 ql/src/test/results/clientpositive/order3.q.out    |   6 +
 .../clientpositive/outer_reference_windowed.q.out  |   5 +
 ql/src/test/results/clientpositive/parallel.q.out  |   3 +
 .../results/clientpositive/parallel_colstats.q.out |   3 +
 .../results/clientpositive/parallel_join1.q.out    |   1 +
 .../parquet_complex_types_vectorization.q.out      |   3 +
 .../parquet_map_type_vectorization.q.out           |   1 +
 .../parquet_struct_type_vectorization.q.out        |   1 +
 ...pes_non_dictionary_encoding_vectorization.q.out |   6 +
 .../parquet_types_vectorization.q.out              |   7 ++
 .../clientpositive/parquet_vectorization_0.q.out   |   9 ++
 .../clientpositive/parquet_vectorization_1.q.out   |   1 +
 .../clientpositive/parquet_vectorization_12.q.out  |   1 +
 .../clientpositive/parquet_vectorization_13.q.out  |   2 +
 .../clientpositive/parquet_vectorization_14.q.out  |   1 +
 .../clientpositive/parquet_vectorization_15.q.out  |   1 +
 .../clientpositive/parquet_vectorization_16.q.out  |   1 +
 .../clientpositive/parquet_vectorization_2.q.out   |   1 +
 .../clientpositive/parquet_vectorization_3.q.out   |   1 +
 .../clientpositive/parquet_vectorization_4.q.out   |   1 +
 .../clientpositive/parquet_vectorization_5.q.out   |   1 +
 .../clientpositive/parquet_vectorization_9.q.out   |   1 +
 .../parquet_vectorization_limit.q.out              |   4 +
 .../parquet_vectorization_pushdown.q.out           |   1 +
 .../clientpositive/partial_column_stats.q.out      |   1 +
 .../clientpositive/partition_boolexpr.q.out        |   3 +
 ql/src/test/results/clientpositive/pcr.q.out       |   4 +
 .../results/clientpositive/perf/spark/query1.q.out |   2 +
 .../clientpositive/perf/spark/query10.q.out        |   4 +
 .../clientpositive/perf/spark/query11.q.out        |   4 +
 .../clientpositive/perf/spark/query12.q.out        |   1 +
 .../clientpositive/perf/spark/query13.q.out        |   1 +
 .../clientpositive/perf/spark/query15.q.out        |   1 +
 .../clientpositive/perf/spark/query16.q.out        |   3 +
 .../clientpositive/perf/spark/query17.q.out        |   1 +
 .../clientpositive/perf/spark/query18.q.out        |   1 +
 .../clientpositive/perf/spark/query19.q.out        |   1 +
 .../results/clientpositive/perf/spark/query2.q.out |   2 +
 .../clientpositive/perf/spark/query20.q.out        |   1 +
 .../clientpositive/perf/spark/query21.q.out        |   1 +
 .../clientpositive/perf/spark/query22.q.out        |   1 +
 .../clientpositive/perf/spark/query23.q.out        |  12 ++
 .../clientpositive/perf/spark/query24.q.out        |   3 +
 .../clientpositive/perf/spark/query25.q.out        |   1 +
 .../clientpositive/perf/spark/query26.q.out        |   1 +
 .../clientpositive/perf/spark/query27.q.out        |   1 +
 .../clientpositive/perf/spark/query28.q.out        |   6 +
 .../clientpositive/perf/spark/query29.q.out        |   1 +
 .../results/clientpositive/perf/spark/query3.q.out |   1 +
 .../clientpositive/perf/spark/query30.q.out        |   2 +
 .../clientpositive/perf/spark/query31.q.out        |   6 +
 .../clientpositive/perf/spark/query32.q.out        |   2 +
 .../clientpositive/perf/spark/query33.q.out        |   7 ++
 .../clientpositive/perf/spark/query34.q.out        |   1 +
 .../clientpositive/perf/spark/query35.q.out        |   4 +
 .../clientpositive/perf/spark/query36.q.out        |   1 +
 .../clientpositive/perf/spark/query37.q.out        |   1 +
 .../clientpositive/perf/spark/query38.q.out        |   7 ++
 .../clientpositive/perf/spark/query39.q.out        |   2 +
 .../results/clientpositive/perf/spark/query4.q.out |   6 +
 .../clientpositive/perf/spark/query40.q.out        |   1 +
 .../clientpositive/perf/spark/query42.q.out        |   1 +
 .../clientpositive/perf/spark/query43.q.out        |   1 +
 .../clientpositive/perf/spark/query44.q.out        |   2 +
 .../clientpositive/perf/spark/query45.q.out        |   3 +
 .../clientpositive/perf/spark/query46.q.out        |   1 +
 .../clientpositive/perf/spark/query47.q.out        |   3 +
 .../clientpositive/perf/spark/query48.q.out        |   1 +
 .../clientpositive/perf/spark/query49.q.out        |   7 ++
 .../results/clientpositive/perf/spark/query5.q.out |   6 +
 .../clientpositive/perf/spark/query50.q.out        |   1 +
 .../clientpositive/perf/spark/query51.q.out        |   2 +
 .../clientpositive/perf/spark/query52.q.out        |   1 +
 .../clientpositive/perf/spark/query53.q.out        |   1 +
 .../clientpositive/perf/spark/query54.q.out        |   7 ++
 .../clientpositive/perf/spark/query55.q.out        |   1 +
 .../clientpositive/perf/spark/query56.q.out        |   7 ++
 .../clientpositive/perf/spark/query57.q.out        |   3 +
 .../clientpositive/perf/spark/query58.q.out        |   9 ++
 .../clientpositive/perf/spark/query59.q.out        |   2 +
 .../results/clientpositive/perf/spark/query6.q.out |   5 +
 .../clientpositive/perf/spark/query60.q.out        |   7 ++
 .../clientpositive/perf/spark/query61.q.out        |   2 +
 .../clientpositive/perf/spark/query63.q.out        |   1 +
 .../clientpositive/perf/spark/query65.q.out        |   2 +
 .../clientpositive/perf/spark/query66.q.out        |   4 +
 .../clientpositive/perf/spark/query67.q.out        |   1 +
 .../clientpositive/perf/spark/query68.q.out        |   1 +
 .../clientpositive/perf/spark/query69.q.out        |   4 +
 .../results/clientpositive/perf/spark/query7.q.out |   1 +
 .../clientpositive/perf/spark/query70.q.out        |   2 +
 .../clientpositive/perf/spark/query71.q.out        |   1 +
 .../clientpositive/perf/spark/query72.q.out        |   1 +
 .../clientpositive/perf/spark/query73.q.out        |   1 +
 .../clientpositive/perf/spark/query74.q.out        |   4 +
 .../clientpositive/perf/spark/query75.q.out        |   8 ++
 .../clientpositive/perf/spark/query76.q.out        |   3 +
 .../clientpositive/perf/spark/query77.q.out        |   9 ++
 .../clientpositive/perf/spark/query78.q.out        |   3 +
 .../clientpositive/perf/spark/query79.q.out        |   1 +
 .../results/clientpositive/perf/spark/query8.q.out |   6 +
 .../clientpositive/perf/spark/query80.q.out        |   6 +
 .../clientpositive/perf/spark/query81.q.out        |   2 +
 .../clientpositive/perf/spark/query82.q.out        |   1 +
 .../clientpositive/perf/spark/query83.q.out        |   9 ++
 .../clientpositive/perf/spark/query85.q.out        |   1 +
 .../clientpositive/perf/spark/query86.q.out        |   1 +
 .../clientpositive/perf/spark/query87.q.out        |   8 ++
 .../clientpositive/perf/spark/query88.q.out        |   8 ++
 .../clientpositive/perf/spark/query89.q.out        |   1 +
 .../results/clientpositive/perf/spark/query9.q.out |  15 +++
 .../clientpositive/perf/spark/query90.q.out        |   2 +
 .../clientpositive/perf/spark/query91.q.out        |   1 +
 .../clientpositive/perf/spark/query92.q.out        |   2 +
 .../clientpositive/perf/spark/query93.q.out        |   1 +
 .../clientpositive/perf/spark/query94.q.out        |   3 +
 .../clientpositive/perf/spark/query95.q.out        |   3 +
 .../clientpositive/perf/spark/query96.q.out        |   1 +
 .../clientpositive/perf/spark/query97.q.out        |   3 +
 .../clientpositive/perf/spark/query98.q.out        |   1 +
 .../clientpositive/perf/spark/query99.q.out        |   1 +
 .../clientpositive/position_alias_test_1.q.out     |   1 +
 ql/src/test/results/clientpositive/ppd2.q.out      |   2 +
 .../results/clientpositive/ppd_constant_expr.q.out |   2 +
 ql/src/test/results/clientpositive/ppd_gby.q.out   |   2 +
 ql/src/test/results/clientpositive/ppd_gby2.q.out  |   4 +
 .../test/results/clientpositive/ppd_gby_join.q.out |   2 +
 .../results/clientpositive/ppd_join_filter.q.out   |   4 +
 .../results/clientpositive/ppd_multi_insert.q.out  |   6 +
 .../results/clientpositive/ptfgroupbyjoin.q.out    |   3 +
 ql/src/test/results/clientpositive/quote1.q.out    |   1 +
 .../results/clientpositive/quotedid_basic.q.out    |   3 +
 .../clientpositive/quotedid_partition.q.out        |   1 +
 .../clientpositive/rand_partitionpruner2.q.out     |   1 +
 .../results/clientpositive/rcfile_null_value.q.out |   1 +
 .../reduce_deduplicate_extended2.q.out             |  15 +++
 .../runtime_skewjoin_mapjoin_spark.q.out           |   3 +
 ql/src/test/results/clientpositive/sample1.q.out   |   1 +
 ql/src/test/results/clientpositive/sample5.q.out   |   1 +
 ql/src/test/results/clientpositive/sample6.q.out   |   1 +
 ql/src/test/results/clientpositive/sample7.q.out   |   1 +
 .../sample_islocalmode_hook_use_metadata.q.out     |   2 +
 ql/src/test/results/clientpositive/semijoin2.q.out |   1 +
 ql/src/test/results/clientpositive/semijoin3.q.out |   1 +
 ql/src/test/results/clientpositive/semijoin4.q.out |   1 +
 ql/src/test/results/clientpositive/semijoin5.q.out |   1 +
 .../test/results/clientpositive/setop_subq.q.out   |  14 +++
 ql/src/test/results/clientpositive/skewjoin.q.out  |  10 ++
 .../results/clientpositive/skewjoin_mapjoin1.q.out |   4 +
 .../clientpositive/skewjoin_mapjoin10.q.out        |   4 +
 .../results/clientpositive/skewjoin_mapjoin5.q.out |   1 +
 .../results/clientpositive/skewjoin_noskew.q.out   |   1 +
 .../clientpositive/skewjoin_onesideskew.q.out      |   2 +
 .../test/results/clientpositive/skewjoinopt1.q.out |   4 +
 .../test/results/clientpositive/skewjoinopt2.q.out |   4 +
 .../test/results/clientpositive/skewjoinopt9.q.out |   1 +
 .../test/results/clientpositive/smb_mapjoin9.q.out |   1 +
 .../results/clientpositive/smb_mapjoin_11.q.out    |   1 +
 .../results/clientpositive/smb_mapjoin_12.q.out    |   1 +
 .../results/clientpositive/smb_mapjoin_16.q.out    |   1 +
 .../results/clientpositive/smb_mapjoin_20.q.out    |   3 +
 .../results/clientpositive/smb_mapjoin_21.q.out    |   5 +
 .../results/clientpositive/smb_mapjoin_7.q.out     |   1 +
 .../clientpositive/sort_merge_join_desc_1.q.out    |   1 +
 .../clientpositive/sort_merge_join_desc_2.q.out    |   1 +
 .../clientpositive/sort_merge_join_desc_3.q.out    |   1 +
 .../clientpositive/sort_merge_join_desc_4.q.out    |   1 +
 .../clientpositive/sort_merge_join_desc_5.q.out    |   1 +
 .../clientpositive/sort_merge_join_desc_6.q.out    |   1 +
 .../clientpositive/sort_merge_join_desc_7.q.out    |   1 +
 .../clientpositive/sort_merge_join_desc_8.q.out    |   2 +
 .../clientpositive/spark/annotate_stats_join.q.out |   1 +
 .../results/clientpositive/spark/auto_join0.q.out  |   1 +
 .../results/clientpositive/spark/auto_join10.q.out |   1 +
 .../results/clientpositive/spark/auto_join11.q.out |   1 +
 .../results/clientpositive/spark/auto_join12.q.out |   1 +
 .../results/clientpositive/spark/auto_join13.q.out |   1 +
 .../results/clientpositive/spark/auto_join15.q.out |   1 +
 .../results/clientpositive/spark/auto_join16.q.out |   1 +
 .../results/clientpositive/spark/auto_join18.q.out |   3 +
 .../spark/auto_join18_multi_distinct.q.out         |   3 +
 .../results/clientpositive/spark/auto_join20.q.out |   2 +
 .../results/clientpositive/spark/auto_join22.q.out |   1 +
 .../results/clientpositive/spark/auto_join24.q.out |   1 +
 .../results/clientpositive/spark/auto_join26.q.out |   1 +
 .../results/clientpositive/spark/auto_join27.q.out |   2 +
 .../results/clientpositive/spark/auto_join30.q.out |   8 ++
 .../results/clientpositive/spark/auto_join31.q.out |   1 +
 .../results/clientpositive/spark/auto_join32.q.out |   4 +
 .../clientpositive/spark/auto_join_filters.q.out   |   3 +
 .../clientpositive/spark/auto_join_nulls.q.out     |   1 +
 .../clientpositive/spark/auto_smb_mapjoin_14.q.out |  13 ++
 .../spark/auto_sortmerge_join_1.q.out              |   3 +
 .../spark/auto_sortmerge_join_12.q.out             |   1 +
 .../spark/auto_sortmerge_join_14.q.out             |   2 +
 .../spark/auto_sortmerge_join_15.q.out             |   2 +
 .../spark/auto_sortmerge_join_2.q.out              |   2 +
 .../spark/auto_sortmerge_join_3.q.out              |   3 +
 .../spark/auto_sortmerge_join_4.q.out              |   3 +
 .../spark/auto_sortmerge_join_5.q.out              |   3 +
 .../spark/auto_sortmerge_join_6.q.out              |  10 ++
 .../spark/auto_sortmerge_join_7.q.out              |   3 +
 .../spark/auto_sortmerge_join_8.q.out              |   3 +
 .../spark/auto_sortmerge_join_9.q.out              |  27 +++++
 .../clientpositive/spark/bucket_map_join_1.q.out   |   1 +
 .../clientpositive/spark/bucket_map_join_2.q.out   |   1 +
 .../spark/bucket_map_join_tez1.q.out               |  16 +++
 .../spark/bucket_map_join_tez2.q.out               |   8 ++
 .../clientpositive/spark/bucketmapjoin10.q.out     |   1 +
 .../clientpositive/spark/bucketmapjoin11.q.out     |   2 +
 .../clientpositive/spark/bucketmapjoin12.q.out     |   2 +
 .../clientpositive/spark/bucketmapjoin13.q.out     |   4 +
 .../clientpositive/spark/bucketmapjoin8.q.out      |   2 +
 .../clientpositive/spark/bucketmapjoin9.q.out      |   2 +
 .../spark/constprog_partitioner.q.out              |   1 +
 .../clientpositive/spark/constprog_semijoin.q.out  |   8 ++
 .../test/results/clientpositive/spark/count.q.out  |   3 +
 .../spark/cross_product_check_1.q.out              |   4 +
 .../spark/cross_product_check_2.q.out              |   4 +
 .../clientpositive/spark/dynamic_rdd_cache.q.out   |   6 +
 .../spark/dynpart_sort_optimization.q.out          |   2 +
 .../clientpositive/spark/groupby1_map.q.out        |   1 +
 .../clientpositive/spark/groupby1_map_nomap.q.out  |   1 +
 .../clientpositive/spark/groupby1_map_skew.q.out   |   1 +
 .../clientpositive/spark/groupby2_map.q.out        |   1 +
 .../spark/groupby2_map_multi_distinct.q.out        |   2 +
 .../clientpositive/spark/groupby2_map_skew.q.out   |   1 +
 .../clientpositive/spark/groupby3_map.q.out        |   1 +
 .../spark/groupby3_map_multi_distinct.q.out        |   1 +
 .../clientpositive/spark/groupby3_map_skew.q.out   |   1 +
 .../clientpositive/spark/groupby4_map.q.out        |   1 +
 .../clientpositive/spark/groupby4_map_skew.q.out   |   1 +
 .../clientpositive/spark/groupby5_map.q.out        |   1 +
 .../clientpositive/spark/groupby5_map_skew.q.out   |   1 +
 .../clientpositive/spark/groupby6_map.q.out        |   1 +
 .../clientpositive/spark/groupby6_map_skew.q.out   |   1 +
 .../clientpositive/spark/groupby7_map.q.out        |   1 +
 .../clientpositive/spark/groupby7_map_skew.q.out   |   1 +
 .../clientpositive/spark/groupby8_map_skew.q.out   |   1 +
 .../results/clientpositive/spark/groupby9.q.out    |  10 ++
 .../spark/groupby_complex_types.q.out              |   3 +
 ...roupby_complex_types_multi_single_reducer.q.out |   2 +
 .../clientpositive/spark/groupby_cube1.q.out       |   8 ++
 .../clientpositive/spark/groupby_map_ppr.q.out     |   1 +
 .../spark/groupby_map_ppr_multi_distinct.q.out     |   1 +
 .../groupby_multi_insert_common_distinct.q.out     |   2 +
 .../clientpositive/spark/groupby_position.q.out    |   8 ++
 .../clientpositive/spark/groupby_resolution.q.out  |   5 +
 .../clientpositive/spark/groupby_rollup1.q.out     |   6 +
 .../clientpositive/spark/groupby_sort_1_23.q.out   |   9 ++
 .../spark/groupby_sort_skew_1_23.q.out             |   9 ++
 .../test/results/clientpositive/spark/having.q.out |   6 +
 .../spark/infer_bucket_sort_map_operators.q.out    |   1 +
 .../clientpositive/spark/insert_into1.q.out        |   1 +
 .../clientpositive/spark/insert_into2.q.out        |   1 +
 .../test/results/clientpositive/spark/join18.q.out |   2 +
 .../spark/join18_multi_distinct.q.out              |   2 +
 .../test/results/clientpositive/spark/join29.q.out |   2 +
 .../test/results/clientpositive/spark/join30.q.out |   1 +
 .../test/results/clientpositive/spark/join31.q.out |   3 +
 .../test/results/clientpositive/spark/join35.q.out |   2 +
 .../test/results/clientpositive/spark/join38.q.out |   1 +
 .../test/results/clientpositive/spark/join40.q.out |   1 +
 .../spark/join_merge_multi_expressions.q.out       |   1 +
 .../spark/lateral_view_explode2.q.out              |   2 +
 .../clientpositive/spark/leftsemijoin.q.out        |   1 +
 .../clientpositive/spark/limit_pushdown.q.out      |   9 ++
 .../clientpositive/spark/limit_pushdown2.q.out     |  11 ++
 .../clientpositive/spark/mapjoin_distinct.q.out    |   2 +
 .../clientpositive/spark/mapjoin_mapjoin.q.out     |   1 +
 .../test/results/clientpositive/spark/merge1.q.out |   1 +
 .../test/results/clientpositive/spark/merge2.q.out |   1 +
 .../spark/metadata_only_queries.q.out              |   5 +
 .../clientpositive/spark/multi_insert_gby3.q.out   |   9 ++
 .../spark/multi_insert_lateral_view.q.out          |  15 +++
 .../clientpositive/spark/multi_insert_mixed.q.out  |   2 +
 .../spark/multigroupby_singlemr.q.out              |   9 ++
 .../results/clientpositive/spark/nullgroup.q.out   |   2 +
 .../results/clientpositive/spark/nullgroup2.q.out  |   2 +
 .../results/clientpositive/spark/nullgroup4.q.out  |   2 +
 .../spark/nullgroup4_multi_distinct.q.out          |   1 +
 .../clientpositive/spark/optimize_nullscan.q.out   |   4 +
 .../results/clientpositive/spark/parallel.q.out    |   1 +
 .../spark/parquet_vectorization_0.q.out            |   9 ++
 .../spark/parquet_vectorization_1.q.out            |   1 +
 .../spark/parquet_vectorization_12.q.out           |   1 +
 .../spark/parquet_vectorization_13.q.out           |   2 +
 .../spark/parquet_vectorization_14.q.out           |   1 +
 .../spark/parquet_vectorization_15.q.out           |   1 +
 .../spark/parquet_vectorization_16.q.out           |   1 +
 .../spark/parquet_vectorization_2.q.out            |   1 +
 .../spark/parquet_vectorization_3.q.out            |   1 +
 .../spark/parquet_vectorization_4.q.out            |   1 +
 .../spark/parquet_vectorization_5.q.out            |   1 +
 .../spark/parquet_vectorization_9.q.out            |   1 +
 .../spark/parquet_vectorization_limit.q.out        |   4 +
 .../spark/parquet_vectorization_pushdown.q.out     |   1 +
 .../clientpositive/spark/ppd_gby_join.q.out        |   2 +
 .../clientpositive/spark/ppd_join_filter.q.out     |   4 +
 ql/src/test/results/clientpositive/spark/ptf.q.out |   3 +
 .../spark/runtime_skewjoin_mapjoin_spark.q.out     |   3 +
 .../results/clientpositive/spark/sample10.q.out    |   1 +
 .../results/clientpositive/spark/semijoin.q.out    |  24 ++++
 .../results/clientpositive/spark/skewjoin.q.out    |   9 ++
 .../clientpositive/spark/skewjoinopt1.q.out        |   4 +
 .../clientpositive/spark/skewjoinopt15.q.out       |   4 +
 .../clientpositive/spark/skewjoinopt2.q.out        |   4 +
 .../clientpositive/spark/skewjoinopt9.q.out        |   1 +
 .../clientpositive/spark/smb_mapjoin_14.q.out      |  13 ++
 .../clientpositive/spark/smb_mapjoin_16.q.out      |   1 +
 .../clientpositive/spark/smb_mapjoin_17.q.out      |   3 +
 .../spark/spark_dynamic_partition_pruning.q.out    | 119 ++++++++++++++++++
 .../spark/spark_dynamic_partition_pruning_2.q.out  |   8 ++
 .../spark/spark_dynamic_partition_pruning_3.q.out  |  22 ++++
 .../spark/spark_dynamic_partition_pruning_4.q.out  |  22 ++++
 .../spark/spark_dynamic_partition_pruning_5.q.out  |   2 +
 .../spark/spark_dynamic_partition_pruning_6.q.out  |   5 +
 .../spark/spark_dynamic_partition_pruning_7.q.out  |   3 +
 ...rk_dynamic_partition_pruning_mapjoin_only.q.out |   3 +
 .../spark/spark_explain_groupbyshuffle.q.out       |   2 +
 .../spark/spark_in_process_launcher.q.out          |   1 +
 .../clientpositive/spark/spark_use_op_stats.q.out  |   1 +
 ...park_vectorized_dynamic_partition_pruning.q.out | 116 ++++++++++++++++++
 .../test/results/clientpositive/spark/stats1.q.out |   1 +
 .../clientpositive/spark/stats_noscan_2.q.out      |   1 +
 .../clientpositive/spark/stats_only_null.q.out     |   2 +
 .../clientpositive/spark/subquery_exists.q.out     |   7 ++
 .../results/clientpositive/spark/subquery_in.q.out |  70 +++++++++++
 .../clientpositive/spark/subquery_multi.q.out      |  55 +++++++++
 .../spark/subquery_multiinsert.q.out               |   6 +
 .../clientpositive/spark/subquery_notin.q.out      |  82 +++++++++++++
 .../clientpositive/spark/subquery_null_agg.q.out   |   2 +
 .../clientpositive/spark/subquery_scalar.q.out     |  76 ++++++++++++
 .../clientpositive/spark/subquery_select.q.out     |  49 ++++++++
 .../clientpositive/spark/subquery_views.q.out      |   4 +
 .../results/clientpositive/spark/union10.q.out     |   1 +
 .../results/clientpositive/spark/union11.q.out     |   4 +
 .../results/clientpositive/spark/union12.q.out     |   3 +
 .../results/clientpositive/spark/union14.q.out     |   3 +
 .../results/clientpositive/spark/union15.q.out     |   3 +
 .../results/clientpositive/spark/union16.q.out     |   1 +
 .../results/clientpositive/spark/union17.q.out     |   5 +
 .../results/clientpositive/spark/union18.q.out     |   1 +
 .../results/clientpositive/spark/union19.q.out     |   3 +
 .../test/results/clientpositive/spark/union2.q.out |   1 +
 .../results/clientpositive/spark/union20.q.out     |   1 +
 .../results/clientpositive/spark/union21.q.out     |   5 +
 .../results/clientpositive/spark/union24.q.out     |   2 +
 .../results/clientpositive/spark/union25.q.out     |   4 +
 .../results/clientpositive/spark/union26.q.out     |   3 +
 .../results/clientpositive/spark/union28.q.out     |   1 +
 .../results/clientpositive/spark/union30.q.out     |   1 +
 .../results/clientpositive/spark/union31.q.out     |   7 ++
 .../results/clientpositive/spark/union33.q.out     |   2 +
 .../test/results/clientpositive/spark/union4.q.out |   1 +
 .../test/results/clientpositive/spark/union5.q.out |   3 +
 .../test/results/clientpositive/spark/union6.q.out |   1 +
 .../test/results/clientpositive/spark/union7.q.out |   3 +
 .../test/results/clientpositive/spark/union9.q.out |   1 +
 .../clientpositive/spark/union_remove_1.q.out      |   1 +
 .../clientpositive/spark/union_remove_10.q.out     |   1 +
 .../clientpositive/spark/union_remove_13.q.out     |   1 +
 .../clientpositive/spark/union_remove_15.q.out     |   1 +
 .../clientpositive/spark/union_remove_16.q.out     |   1 +
 .../clientpositive/spark/union_remove_18.q.out     |   1 +
 .../clientpositive/spark/union_remove_19.q.out     |   3 +
 .../clientpositive/spark/union_remove_2.q.out      |   1 +
 .../clientpositive/spark/union_remove_20.q.out     |   1 +
 .../clientpositive/spark/union_remove_21.q.out     |   1 +
 .../clientpositive/spark/union_remove_22.q.out     |   2 +
 .../clientpositive/spark/union_remove_23.q.out     |   2 +
 .../clientpositive/spark/union_remove_24.q.out     |   1 +
 .../clientpositive/spark/union_remove_25.q.out     |   1 +
 .../clientpositive/spark/union_remove_4.q.out      |   1 +
 .../clientpositive/spark/union_remove_5.q.out      |   1 +
 .../clientpositive/spark/union_remove_6.q.out      |   1 +
 .../clientpositive/spark/union_remove_6_subq.q.out |   7 ++
 .../clientpositive/spark/union_remove_7.q.out      |   1 +
 .../clientpositive/spark/union_remove_8.q.out      |   1 +
 .../clientpositive/spark/union_remove_9.q.out      |   1 +
 .../results/clientpositive/spark/union_view.q.out  |  18 ++-
 .../clientpositive/spark/vector_between_in.q.out   |   7 ++
 .../spark/vector_cast_constant.q.out               |   1 +
 .../spark/vector_count_distinct.q.out              |   2 +
 .../clientpositive/spark/vector_data_types.q.out   |   1 +
 .../spark/vector_decimal_aggregate.q.out           |   4 +
 .../clientpositive/spark/vector_distinct_2.q.out   |   1 +
 .../clientpositive/spark/vector_groupby_3.q.out    |   1 +
 .../clientpositive/spark/vector_inner_join.q.out   |   1 +
 .../spark/vector_left_outer_join.q.out             |   1 +
 .../spark/vector_mapjoin_reduce.q.out              |   4 +
 .../clientpositive/spark/vector_orderby_5.q.out    |   1 +
 .../clientpositive/spark/vector_outer_join1.q.out  |   1 +
 .../clientpositive/spark/vector_outer_join2.q.out  |   1 +
 .../spark/vector_string_concat.q.out               |   1 +
 .../clientpositive/spark/vectorization_0.q.out     |   9 ++
 .../clientpositive/spark/vectorization_1.q.out     |   1 +
 .../clientpositive/spark/vectorization_12.q.out    |   1 +
 .../clientpositive/spark/vectorization_13.q.out    |   2 +
 .../clientpositive/spark/vectorization_14.q.out    |   1 +
 .../clientpositive/spark/vectorization_15.q.out    |   1 +
 .../clientpositive/spark/vectorization_16.q.out    |   1 +
 .../clientpositive/spark/vectorization_2.q.out     |   1 +
 .../clientpositive/spark/vectorization_3.q.out     |   1 +
 .../clientpositive/spark/vectorization_4.q.out     |   1 +
 .../clientpositive/spark/vectorization_5.q.out     |   1 +
 .../clientpositive/spark/vectorization_9.q.out     |   1 +
 .../vectorization_input_format_excludes.q.out      |   4 +
 .../spark/vectorization_nested_udf.q.out           |   1 +
 .../spark/vectorization_parquet_projection.q.out   |   5 +
 .../spark/vectorization_pushdown.q.out             |   1 +
 .../spark/vectorization_short_regress.q.out        |  16 +++
 .../clientpositive/spark/vectorized_case.q.out     |   2 +
 .../clientpositive/spark/vectorized_mapjoin.q.out  |   1 +
 .../spark/vectorized_nested_mapjoin.q.out          |   1 +
 .../clientpositive/spark/vectorized_ptf.q.out      |   3 +
 .../spark/vectorized_shufflejoin.q.out             |   1 +
 .../spark/vectorized_timestamp_funcs.q.out         |   3 +
 .../results/clientpositive/spark/windowing.q.out   |   1 +
 .../clientpositive/stat_estimate_drill.q.out       |   7 ++
 ql/src/test/results/clientpositive/stats0.q.out    |   4 +
 ql/src/test/results/clientpositive/stats1.q.out    |   3 +
 ql/src/test/results/clientpositive/stats10.q.out   |   1 +
 ql/src/test/results/clientpositive/stats4.q.out    |   2 +
 .../clientpositive/stats_empty_dyn_part.q.out      |   1 +
 .../results/clientpositive/stats_nonpart.q.out     |   1 +
 .../results/clientpositive/stats_noscan_2.q.out    |   1 +
 .../results/clientpositive/stats_only_null.q.out   |   2 +
 .../test/results/clientpositive/stats_part.q.out   |   1 +
 .../test/results/clientpositive/stats_part2.q.out  |   5 +
 .../results/clientpositive/stats_ppr_all.q.out     |   4 +
 .../results/clientpositive/stats_sizebug.q.out     |   1 +
 ql/src/test/results/clientpositive/subq2.q.out     |   1 +
 .../clientpositive/subq_where_serialization.q.out  |   1 +
 .../results/clientpositive/subquery_exists.q.out   |   7 ++
 .../clientpositive/subquery_exists_having.q.out    |   4 +
 .../clientpositive/subquery_multiinsert.q.out      |   8 ++
 .../clientpositive/subquery_notexists.q.out        |   5 +
 .../clientpositive/subquery_notexists_having.q.out |   4 +
 .../clientpositive/subquery_notin_having.q.out     |  18 +++
 .../clientpositive/subquery_unqual_corr_expr.q.out |   3 +
 .../clientpositive/subquery_unqualcolumnrefs.q.out |   5 +
 .../clientpositive/symlink_text_input_format.q.out |   2 +
 .../test/results/clientpositive/tablevalues.q.out  |   1 +
 .../temp_table_display_colstats_tbllvl.q.out       |   3 +
 .../tez/acid_vectorization_original_tez.q.out      |   1 +
 .../tez/hybridgrace_hashjoin_1.q.out               |  10 ++
 .../tez/hybridgrace_hashjoin_2.q.out               |  14 +++
 .../tez/vector_join_part_col_char.q.out            |   4 +-
 ql/src/test/results/clientpositive/timestamp.q.out |   4 +
 ql/src/test/results/clientpositive/topnkey.q.out   |   2 +
 .../clientpositive/udaf_binarysetfunctions.q.out   |   1 +
 .../udaf_binarysetfunctions_no_cbo.q.out           |   1 +
 .../clientpositive/udaf_number_format.q.out        |   1 +
 .../clientpositive/udaf_percentile_approx_23.q.out |   2 +
 ql/src/test/results/clientpositive/udf1.q.out      |   1 +
 ql/src/test/results/clientpositive/udf3.q.out      |   1 +
 ql/src/test/results/clientpositive/udf8.q.out      |   1 +
 .../test/results/clientpositive/udf_10_trims.q.out |   1 +
 .../clientpositive/udf_character_length.q.out      |   1 +
 ql/src/test/results/clientpositive/udf_count.q.out |   2 +
 .../test/results/clientpositive/udf_explode.q.out  |   2 +
 .../clientpositive/udf_isops_simplify.q.out        |   6 +
 .../test/results/clientpositive/udf_length.q.out   |   1 +
 .../results/clientpositive/udf_octet_length.q.out  |   1 +
 .../test/results/clientpositive/udf_reverse.q.out  |   1 +
 .../test/results/clientpositive/udtf_explode.q.out |   2 +
 .../results/clientpositive/udtf_json_tuple.q.out   |   2 +
 .../clientpositive/udtf_parse_url_tuple.q.out      |   2 +
 ql/src/test/results/clientpositive/union10.q.out   |   6 +
 ql/src/test/results/clientpositive/union11.q.out   |   6 +
 ql/src/test/results/clientpositive/union12.q.out   |   6 +
 ql/src/test/results/clientpositive/union14.q.out   |   3 +
 ql/src/test/results/clientpositive/union15.q.out   |   4 +
 ql/src/test/results/clientpositive/union16.q.out   |  25 ++++
 ql/src/test/results/clientpositive/union17.q.out   |   7 ++
 ql/src/test/results/clientpositive/union18.q.out   |   5 +
 ql/src/test/results/clientpositive/union19.q.out   |   6 +
 ql/src/test/results/clientpositive/union2.q.out    |   2 +
 ql/src/test/results/clientpositive/union20.q.out   |   2 +
 ql/src/test/results/clientpositive/union21.q.out   |   5 +
 ql/src/test/results/clientpositive/union22.q.out   |   2 +
 ql/src/test/results/clientpositive/union24.q.out   |   2 +
 ql/src/test/results/clientpositive/union25.q.out   |   5 +
 ql/src/test/results/clientpositive/union26.q.out   |   3 +
 ql/src/test/results/clientpositive/union28.q.out   |   5 +
 ql/src/test/results/clientpositive/union29.q.out   |   3 +
 ql/src/test/results/clientpositive/union30.q.out   |   6 +
 ql/src/test/results/clientpositive/union31.q.out   |  13 ++
 ql/src/test/results/clientpositive/union33.q.out   |   6 +
 ql/src/test/results/clientpositive/union4.q.out    |   4 +
 ql/src/test/results/clientpositive/union5.q.out    |   4 +
 ql/src/test/results/clientpositive/union6.q.out    |   3 +
 ql/src/test/results/clientpositive/union7.q.out    |   3 +
 ql/src/test/results/clientpositive/union9.q.out    |   3 +
 .../results/clientpositive/union_lateralview.q.out |   1 +
 .../results/clientpositive/union_pos_alias.q.out   |   7 ++
 .../results/clientpositive/union_remove_1.q.out    |   2 +
 .../results/clientpositive/union_remove_10.q.out   |   1 +
 .../results/clientpositive/union_remove_13.q.out   |   1 +
 .../results/clientpositive/union_remove_15.q.out   |   2 +
 .../results/clientpositive/union_remove_16.q.out   |   2 +
 .../results/clientpositive/union_remove_18.q.out   |   2 +
 .../results/clientpositive/union_remove_19.q.out   |   6 +
 .../results/clientpositive/union_remove_2.q.out    |   1 +
 .../results/clientpositive/union_remove_20.q.out   |   2 +
 .../results/clientpositive/union_remove_21.q.out   |   2 +
 .../results/clientpositive/union_remove_22.q.out   |   4 +
 .../results/clientpositive/union_remove_23.q.out   |   2 +
 .../results/clientpositive/union_remove_24.q.out   |   2 +
 .../results/clientpositive/union_remove_25.q.out   |   2 +
 .../results/clientpositive/union_remove_4.q.out    |   2 +
 .../results/clientpositive/union_remove_5.q.out    |   1 +
 .../results/clientpositive/union_remove_6.q.out    |   2 +
 .../clientpositive/union_remove_6_subq.q.out       |  10 ++
 .../results/clientpositive/union_remove_7.q.out    |   2 +
 .../results/clientpositive/union_remove_8.q.out    |   1 +
 .../results/clientpositive/union_remove_9.q.out    |   1 +
 .../results/clientpositive/union_remove_plan.q.out |   2 +
 .../test/results/clientpositive/union_view.q.out   |  12 ++
 .../clientpositive/vector_aggregate_9.q.out        |   3 +
 .../vector_aggregate_without_gby.q.out             |   1 +
 .../vector_binary_join_groupby.q.out               |   2 +
 .../clientpositive/vector_cast_constant.q.out      |   1 +
 .../results/clientpositive/vector_char_2.q.out     |   2 +
 .../results/clientpositive/vector_coalesce_2.q.out |   2 +
 .../test/results/clientpositive/vector_count.q.out |   2 +
 .../results/clientpositive/vector_data_types.q.out |   1 +
 .../clientpositive/vector_decimal_aggregate.q.out  |   4 +
 .../clientpositive/vector_decimal_join.q.out       |   1 +
 .../clientpositive/vector_decimal_precision.q.out  |   2 +
 .../clientpositive/vector_delete_orig_table.q.out  |   1 +
 .../results/clientpositive/vector_distinct_2.q.out |   1 +
 .../clientpositive/vector_empty_where.q.out        |   4 +
 .../results/clientpositive/vector_groupby_3.q.out  |   1 +
 .../clientpositive/vector_groupby_mapjoin.q.out    |   2 +
 .../clientpositive/vector_groupby_reduce.q.out     |   5 +
 .../clientpositive/vector_grouping_sets.q.out      |   3 +
 .../clientpositive/vector_include_no_sel.q.out     |   1 +
 .../clientpositive/vector_left_outer_join.q.out    |   1 +
 .../vector_mr_diff_schema_alias.q.out              |   1 +
 .../clientpositive/vector_null_projection.q.out    |   2 +
 .../results/clientpositive/vector_orderby_5.q.out  |   1 +
 .../clientpositive/vector_outer_join1.q.out        |   1 +
 .../clientpositive/vector_outer_join2.q.out        |   1 +
 .../clientpositive/vector_outer_join3.q.out        |   6 +-
 .../clientpositive/vector_outer_join4.q.out        |   2 +-
 .../clientpositive/vector_outer_join_no_keys.q.out |   2 +
 .../vector_reduce_groupby_decimal.q.out            |   1 +
 .../vector_reduce_groupby_duplicate_cols.q.out     |   1 +
 .../clientpositive/vector_string_concat.q.out      |   1 +
 .../clientpositive/vector_tablesample_rows.q.out   |   1 +
 .../results/clientpositive/vector_topnkey.q.out    |   2 +
 .../clientpositive/vector_when_case_null.q.out     |   1 +
 .../results/clientpositive/vectorization_1.q.out   |   1 +
 .../results/clientpositive/vectorization_12.q.out  |   1 +
 .../results/clientpositive/vectorization_13.q.out  |   2 +
 .../results/clientpositive/vectorization_14.q.out  |   1 +
 .../results/clientpositive/vectorization_15.q.out  |   1 +
 .../results/clientpositive/vectorization_16.q.out  |   1 +
 .../results/clientpositive/vectorization_2.q.out   |   1 +
 .../results/clientpositive/vectorization_3.q.out   |   1 +
 .../results/clientpositive/vectorization_4.q.out   |   1 +
 .../results/clientpositive/vectorization_5.q.out   |   1 +
 .../results/clientpositive/vectorization_9.q.out   |   1 +
 .../clientpositive/vectorization_limit.q.out       |   4 +
 .../clientpositive/vectorization_nested_udf.q.out  |   1 +
 .../vectorization_parquet_projection.q.out         |   5 +
 .../clientpositive/vectorization_pushdown.q.out    |   1 +
 .../results/clientpositive/vectorized_case.q.out   |   2 +
 .../clientpositive/vectorized_distinct_gby.q.out   |   2 +
 .../clientpositive/vectorized_mapjoin.q.out        |   1 +
 .../clientpositive/vectorized_mapjoin2.q.out       |   1 +
 .../clientpositive/vectorized_mapjoin3.q.out       |   3 +
 .../clientpositive/vectorized_parquet_types.q.out  |   2 +
 .../clientpositive/vectorized_shufflejoin.q.out    |   1 +
 .../clientpositive/vectorized_timestamp.q.out      |   3 +
 .../vectorized_timestamp_funcs.q.out               |   3 +
 ql/src/test/results/clientpositive/view_cbo.q.out  |   5 +
 .../results/clientpositive/windowing_gby2.q.out    |   4 +
 1363 files changed, 6540 insertions(+), 105 deletions(-)

diff --git a/accumulo-handler/src/test/results/positive/accumulo_queries.q.out b/accumulo-handler/src/test/results/positive/accumulo_queries.q.out
index d021482..80a7dc9 100644
--- a/accumulo-handler/src/test/results/positive/accumulo_queries.q.out
+++ b/accumulo-handler/src/test/results/positive/accumulo_queries.q.out
@@ -556,6 +556,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/accumulo-handler/src/test/results/positive/accumulo_single_sourced_multi_insert.q.out b/accumulo-handler/src/test/results/positive/accumulo_single_sourced_multi_insert.q.out
index 3fa3f16..1a5dde0 100644
--- a/accumulo-handler/src/test/results/positive/accumulo_single_sourced_multi_insert.q.out
+++ b/accumulo-handler/src/test/results/positive/accumulo_single_sourced_multi_insert.q.out
@@ -99,6 +99,7 @@ STAGE PLANS:
                   Statistics: Num rows: 55 Data size: 9405 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
index 27041a7..0c783e1 100644
--- a/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
+++ b/common/src/java/org/apache/hadoop/hive/conf/HiveConf.java
@@ -1750,6 +1750,10 @@ public class HiveConf extends Configuration {
     HIVEMAPAGGRHASHMINREDUCTION("hive.map.aggr.hash.min.reduction", (float) 0.99,
         "Hash aggregation will be turned off if the ratio between hash  table size and input rows is bigger than this number. \n" +
         "Set to 1 to make sure hash aggregation is never turned off."),
+    HIVEMAPAGGRHASHMINREDUCTIONSTATSADJUST("hive.map.aggr.hash.min.reduction.stats", true,
+        "Whether the value for hive.map.aggr.hash.min.reduction should be set statically using stats estimates. \n" +
+        "If this is enabled, the default value for hive.map.aggr.hash.min.reduction is only used as an upper-bound\n" +
+        "for the value set in the map-side group by operators."),
     HIVEMULTIGROUPBYSINGLEREDUCER("hive.multigroupby.singlereducer", true,
         "Whether to optimize multi group by query to generate single M/R  job plan. If the multi group by query has \n" +
         "common group by keys, it will be optimized to generate single M/R job."),
diff --git a/contrib/src/test/results/clientpositive/serde_typedbytes.q.out b/contrib/src/test/results/clientpositive/serde_typedbytes.q.out
index ee9600a..f3c05c0 100644
--- a/contrib/src/test/results/clientpositive/serde_typedbytes.q.out
+++ b/contrib/src/test/results/clientpositive/serde_typedbytes.q.out
@@ -82,6 +82,7 @@ STAGE PLANS:
                     Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/contrib/src/test/results/clientpositive/serde_typedbytes2.q.out b/contrib/src/test/results/clientpositive/serde_typedbytes2.q.out
index 683aa16..e23c2b0 100644
--- a/contrib/src/test/results/clientpositive/serde_typedbytes2.q.out
+++ b/contrib/src/test/results/clientpositive/serde_typedbytes2.q.out
@@ -78,6 +78,7 @@ STAGE PLANS:
                   Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/contrib/src/test/results/clientpositive/serde_typedbytes3.q.out b/contrib/src/test/results/clientpositive/serde_typedbytes3.q.out
index 395e64e..675dec2 100644
--- a/contrib/src/test/results/clientpositive/serde_typedbytes3.q.out
+++ b/contrib/src/test/results/clientpositive/serde_typedbytes3.q.out
@@ -78,6 +78,7 @@ STAGE PLANS:
                   Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/contrib/src/test/results/clientpositive/serde_typedbytes5.q.out b/contrib/src/test/results/clientpositive/serde_typedbytes5.q.out
index edae02b..a622278 100644
--- a/contrib/src/test/results/clientpositive/serde_typedbytes5.q.out
+++ b/contrib/src/test/results/clientpositive/serde_typedbytes5.q.out
@@ -82,6 +82,7 @@ STAGE PLANS:
                     Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/contrib/src/test/results/clientpositive/udaf_example_avg.q.out b/contrib/src/test/results/clientpositive/udaf_example_avg.q.out
index 0f82922..55a8045 100644
--- a/contrib/src/test/results/clientpositive/udaf_example_avg.q.out
+++ b/contrib/src/test/results/clientpositive/udaf_example_avg.q.out
@@ -35,6 +35,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: example_avg(_col0), example_avg(_col1)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 128 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/contrib/src/test/results/clientpositive/udaf_example_group_concat.q.out b/contrib/src/test/results/clientpositive/udaf_example_group_concat.q.out
index a316839..8fa4e09 100644
--- a/contrib/src/test/results/clientpositive/udaf_example_group_concat.q.out
+++ b/contrib/src/test/results/clientpositive/udaf_example_group_concat.q.out
@@ -36,6 +36,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: example_group_concat('(', _col2, ':', _col4, ')')
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 526000 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/contrib/src/test/results/clientpositive/udaf_example_max.q.out b/contrib/src/test/results/clientpositive/udaf_example_max.q.out
index 7e14c07..66e3ea5 100644
--- a/contrib/src/test/results/clientpositive/udaf_example_max.q.out
+++ b/contrib/src/test/results/clientpositive/udaf_example_max.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: example_max(_col0), example_max(_col1)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/contrib/src/test/results/clientpositive/udaf_example_max_n.q.out b/contrib/src/test/results/clientpositive/udaf_example_max_n.q.out
index 9eae3af..09382ff 100644
--- a/contrib/src/test/results/clientpositive/udaf_example_max_n.q.out
+++ b/contrib/src/test/results/clientpositive/udaf_example_max_n.q.out
@@ -35,6 +35,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: example_max_n(_col0, 10), example_max_n(_col2, 10)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/contrib/src/test/results/clientpositive/udaf_example_min.q.out b/contrib/src/test/results/clientpositive/udaf_example_min.q.out
index 17332e8..4b96eda 100644
--- a/contrib/src/test/results/clientpositive/udaf_example_min.q.out
+++ b/contrib/src/test/results/clientpositive/udaf_example_min.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: example_min(_col0), example_min(_col1)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/contrib/src/test/results/clientpositive/udaf_example_min_n.q.out b/contrib/src/test/results/clientpositive/udaf_example_min_n.q.out
index 30b3f12..1c3fb0c 100644
--- a/contrib/src/test/results/clientpositive/udaf_example_min_n.q.out
+++ b/contrib/src/test/results/clientpositive/udaf_example_min_n.q.out
@@ -35,6 +35,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: example_min_n(_col0, 10), example_min_n(_col2, 10)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/hbase-handler/src/test/results/positive/hbase_queries.q.out b/hbase-handler/src/test/results/positive/hbase_queries.q.out
index 793e01f..4986532 100644
--- a/hbase-handler/src/test/results/positive/hbase_queries.q.out
+++ b/hbase-handler/src/test/results/positive/hbase_queries.q.out
@@ -557,6 +557,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out b/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out
index 60d0829..d474b4d 100644
--- a/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out
+++ b/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out
@@ -99,6 +99,7 @@ STAGE PLANS:
                   Statistics: Num rows: 55 Data size: 9405 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/hbase-handler/src/test/results/positive/hbasestats.q.out b/hbase-handler/src/test/results/positive/hbasestats.q.out
index 783708f..812a74e 100644
--- a/hbase-handler/src/test/results/positive/hbasestats.q.out
+++ b/hbase-handler/src/test/results/positive/hbasestats.q.out
@@ -308,6 +308,7 @@ STAGE PLANS:
               Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
               Group By Operator
                 aggregations: count()
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
@@ -418,6 +419,7 @@ STAGE PLANS:
               Statistics: Num rows: 2 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
               Group By Operator
                 aggregations: count()
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
diff --git a/itests/hive-blobstore/src/test/results/clientpositive/explain.q.out b/itests/hive-blobstore/src/test/results/clientpositive/explain.q.out
index cf1a496..69d7ba3 100644
--- a/itests/hive-blobstore/src/test/results/clientpositive/explain.q.out
+++ b/itests/hive-blobstore/src/test/results/clientpositive/explain.q.out
@@ -55,6 +55,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 40 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: count()
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/itests/hive-blobstore/src/test/results/clientpositive/insert_into_table.q.out b/itests/hive-blobstore/src/test/results/clientpositive/insert_into_table.q.out
index 128aaa8..bab8942 100644
--- a/itests/hive-blobstore/src/test/results/clientpositive/insert_into_table.q.out
+++ b/itests/hive-blobstore/src/test/results/clientpositive/insert_into_table.q.out
@@ -118,6 +118,7 @@ STAGE PLANS:
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(id, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/itests/hive-blobstore/src/test/results/clientpositive/insert_overwrite_table.q.out b/itests/hive-blobstore/src/test/results/clientpositive/insert_overwrite_table.q.out
index c2ee0db..9903d69 100644
--- a/itests/hive-blobstore/src/test/results/clientpositive/insert_overwrite_table.q.out
+++ b/itests/hive-blobstore/src/test/results/clientpositive/insert_overwrite_table.q.out
@@ -126,6 +126,7 @@ STAGE PLANS:
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(id, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/itests/hive-blobstore/src/test/results/clientpositive/write_final_output_blobstore.q.out b/itests/hive-blobstore/src/test/results/clientpositive/write_final_output_blobstore.q.out
index b9b1ab7..e997fa6 100644
--- a/itests/hive-blobstore/src/test/results/clientpositive/write_final_output_blobstore.q.out
+++ b/itests/hive-blobstore/src/test/results/clientpositive/write_final_output_blobstore.q.out
@@ -56,6 +56,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
@@ -335,6 +336,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
index 583460f..3265cc1 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
@@ -390,8 +390,7 @@ public class GroupByOperator extends Operator<GroupByDesc> implements IConfigure
 
       // compare every groupbyMapAggrInterval rows
       numRowsCompareHashAggr = groupbyMapAggrInterval;
-      minReductionHashAggr = HiveConf.getFloatVar(hconf,
-          HiveConf.ConfVars.HIVEMAPAGGRHASHMINREDUCTION);
+      minReductionHashAggr = conf.getMinReductionHashAggr();
     }
 
     List<String> fieldNames = new ArrayList<String>(conf.getOutputColumnNames());
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
index 0d80c9e..b5f5933 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorGroupByOperator.java
@@ -363,11 +363,9 @@ public class VectorGroupByOperator extends Operator<GroupByDesc>
         this.checkInterval = HiveConf.getIntVar(hconf,
           HiveConf.ConfVars.HIVE_VECTORIZATION_GROUPBY_CHECKINTERVAL);
         this.maxHtEntries = HiveConf.getIntVar(hconf,
-            HiveConf.ConfVars.HIVE_VECTORIZATION_GROUPBY_MAXENTRIES);
-        this.minReductionHashAggr = HiveConf.getFloatVar(hconf,
-            HiveConf.ConfVars.HIVEMAPAGGRHASHMINREDUCTION);
-          this.numRowsCompareHashAggr = HiveConf.getIntVar(hconf,
-            HiveConf.ConfVars.HIVEGROUPBYMAPINTERVAL);
+          HiveConf.ConfVars.HIVE_VECTORIZATION_GROUPBY_MAXENTRIES);
+        this.numRowsCompareHashAggr = HiveConf.getIntVar(hconf,
+          HiveConf.ConfVars.HIVEGROUPBYMAPINTERVAL);
       }
       else {
         this.percentEntriesToFlush =
@@ -376,12 +374,12 @@ public class VectorGroupByOperator extends Operator<GroupByDesc>
             HiveConf.ConfVars.HIVE_VECTORIZATION_GROUPBY_CHECKINTERVAL.defaultIntVal;
         this.maxHtEntries =
             HiveConf.ConfVars.HIVE_VECTORIZATION_GROUPBY_MAXENTRIES.defaultIntVal;
-        this.minReductionHashAggr =
-            HiveConf.ConfVars.HIVEMAPAGGRHASHMINREDUCTION.defaultFloatVal;
-          this.numRowsCompareHashAggr =
+        this.numRowsCompareHashAggr =
             HiveConf.ConfVars.HIVEGROUPBYMAPINTERVAL.defaultIntVal;
       }
 
+      minReductionHashAggr = getConf().getMinReductionHashAggr();
+
       sumBatchSize = 0;
 
       mapKeysAggregationBuffers = new HashMap<KeyWrapper, VectorAggregationBufferRow>();
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
index cc01034..189c68d 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/DynamicPartitionPruningOptimization.java
@@ -471,10 +471,13 @@ public class DynamicPartitionPruningOptimization implements NodeProcessor {
     ArrayList<String> outputNames = new ArrayList<String>();
     outputNames.add(HiveConf.getColumnInternalName(0));
 
+    ArrayList<ColumnInfo> selectColInfos = new ArrayList<ColumnInfo>();
+    selectColInfos.add(new ColumnInfo(outputNames.get(0), key.getTypeInfo(), "", false));
+
     // project the relevant key column
     SelectDesc select = new SelectDesc(keyExprs, outputNames);
     SelectOperator selectOp =
-        (SelectOperator) OperatorFactory.getAndMakeChild(select, parentOfRS);
+        (SelectOperator) OperatorFactory.getAndMakeChild(select, new RowSchema(selectColInfos), parentOfRS);
 
     // do a group by on the list to dedup
     float groupByMemoryUsage =
@@ -482,6 +485,9 @@ public class DynamicPartitionPruningOptimization implements NodeProcessor {
     float memoryThreshold =
         HiveConf.getFloatVar(parseContext.getConf(),
             HiveConf.ConfVars.HIVEMAPAGGRMEMORYTHRESHOLD);
+    float minReductionHashAggr =
+        HiveConf.getFloatVar(parseContext.getConf(),
+            ConfVars.HIVEMAPAGGRHASHMINREDUCTION);
 
     ArrayList<ExprNodeDesc> groupByExprs = new ArrayList<ExprNodeDesc>();
     ExprNodeDesc groupByExpr =
@@ -491,10 +497,13 @@ public class DynamicPartitionPruningOptimization implements NodeProcessor {
     GroupByDesc groupBy =
         new GroupByDesc(GroupByDesc.Mode.HASH, outputNames, groupByExprs,
             new ArrayList<AggregationDesc>(), false, groupByMemoryUsage, memoryThreshold,
-            null, false, -1, true);
+            minReductionHashAggr, null, false, -1, true);
+
+    ArrayList<ColumnInfo> groupbyColInfos = new ArrayList<ColumnInfo>();
+    groupbyColInfos.add(new ColumnInfo(outputNames.get(0), key.getTypeInfo(), "", false));
 
     GroupByOperator groupByOp = (GroupByOperator) OperatorFactory.getAndMakeChild(
-        groupBy, selectOp);
+        groupBy, new RowSchema(groupbyColInfos), selectOp);
 
     Map<String, ExprNodeDesc> colMap = new HashMap<String, ExprNodeDesc>();
     colMap.put(outputNames.get(0), groupByExpr);
@@ -618,6 +627,9 @@ public class DynamicPartitionPruningOptimization implements NodeProcessor {
     float memoryThreshold =
             HiveConf.getFloatVar(parseContext.getConf(),
                     HiveConf.ConfVars.HIVEMAPAGGRMEMORYTHRESHOLD);
+    float minReductionHashAggr =
+        HiveConf.getFloatVar(parseContext.getConf(),
+            ConfVars.HIVEMAPAGGRHASHMINREDUCTION);
 
     // Add min/max and bloom filter aggregations
     List<ObjectInspector> aggFnOIs = new ArrayList<ObjectInspector>();
@@ -664,8 +676,8 @@ public class DynamicPartitionPruningOptimization implements NodeProcessor {
     gbOutputNames.add(SemanticAnalyzer.getColumnInternalName(1));
     gbOutputNames.add(SemanticAnalyzer.getColumnInternalName(2));
     GroupByDesc groupBy = new GroupByDesc(GroupByDesc.Mode.HASH,
-            gbOutputNames, new ArrayList<ExprNodeDesc>(), aggs, false,
-        groupByMemoryUsage, memoryThreshold, null, false, -1, false);
+        gbOutputNames, new ArrayList<ExprNodeDesc>(), aggs, false,
+        groupByMemoryUsage, memoryThreshold, minReductionHashAggr, null, false, -1, false);
 
     ArrayList<ColumnInfo> groupbyColInfos = new ArrayList<ColumnInfo>();
     groupbyColInfos.add(new ColumnInfo(gbOutputNames.get(0), key.getTypeInfo(), "", false));
@@ -764,7 +776,7 @@ public class DynamicPartitionPruningOptimization implements NodeProcessor {
 
     GroupByDesc groupByDescFinal = new GroupByDesc(GroupByDesc.Mode.FINAL,
             gbOutputNames, new ArrayList<ExprNodeDesc>(), aggsFinal, false,
-            groupByMemoryUsage, memoryThreshold, null, false, 0, false);
+            groupByMemoryUsage, memoryThreshold, minReductionHashAggr, null, false, 0, false);
     GroupByOperator groupByOpFinal = (GroupByOperator)OperatorFactory.getAndMakeChild(
             groupByDescFinal, new RowSchema(rsOp.getSchema()), rsOp);
     groupByOpFinal.setColumnExprMap(new HashMap<String, ExprNodeDesc>());
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SetHashGroupByMinReduction.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SetHashGroupByMinReduction.java
new file mode 100644
index 0000000..ebed040
--- /dev/null
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SetHashGroupByMinReduction.java
@@ -0,0 +1,93 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hive.ql.optimizer;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Stack;
+import org.apache.hadoop.hive.ql.exec.ColumnInfo;
+import org.apache.hadoop.hive.ql.exec.GroupByOperator;
+import org.apache.hadoop.hive.ql.lib.Node;
+import org.apache.hadoop.hive.ql.lib.NodeProcessor;
+import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx;
+import org.apache.hadoop.hive.ql.parse.SemanticException;
+import org.apache.hadoop.hive.ql.plan.ColStatistics;
+import org.apache.hadoop.hive.ql.plan.GroupByDesc;
+import org.apache.hadoop.hive.ql.plan.GroupByDesc.Mode;
+import org.apache.hadoop.hive.ql.plan.Statistics.State;
+import org.apache.hadoop.hive.ql.stats.StatsUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * SetHashGroupByMinReduction determines the min reduction to perform
+ * a hash aggregation for a group by.
+ */
+public class SetHashGroupByMinReduction implements NodeProcessor {
+
+  private static final Logger LOG = LoggerFactory.getLogger(SetHashGroupByMinReduction.class.getName());
+
+  @SuppressWarnings("unchecked")
+  @Override
+  public Object process(Node nd, Stack<Node> stack,
+      NodeProcessorCtx procContext, Object... nodeOutputs)
+      throws SemanticException {
+
+    GroupByOperator groupByOperator = (GroupByOperator) nd;
+    GroupByDesc desc = groupByOperator.getConf();
+
+    if (desc.getMode() != Mode.HASH || groupByOperator.getStatistics().getBasicStatsState() != State.COMPLETE
+        || groupByOperator.getStatistics().getColumnStatsState() != State.COMPLETE) {
+      return null;
+    }
+
+    // compute product of distinct values of grouping columns
+    List<ColStatistics> colStats = new ArrayList<>();
+    for (int i = 0; i < desc.getKeys().size(); i++) {
+      ColumnInfo ci = groupByOperator.getSchema().getSignature().get(i);
+      colStats.add(
+          groupByOperator.getStatistics().getColumnStatisticsFromColName(ci.getInternalName()));
+    }
+    long ndvProduct = StatsUtils.computeNDVGroupingColumns(
+        colStats, groupByOperator.getParentOperators().get(0).getStatistics(), true);
+    // if ndvProduct is 0 then column stats state must be partial and we are missing
+    if (ndvProduct == 0) {
+      return null;
+    }
+
+    long numRows = groupByOperator.getStatistics().getNumRows();
+    if (ndvProduct > numRows) {
+      ndvProduct = numRows;
+    }
+
+    // change the min reduction for hash group by
+    float defaultMinReductionHashAggrFactor = desc.getMinReductionHashAggr();
+    float minReductionHashAggrFactor = 1f - ((float) ndvProduct / numRows);
+    if (minReductionHashAggrFactor < defaultMinReductionHashAggrFactor) {
+      desc.setMinReductionHashAggr(minReductionHashAggrFactor);
+      if (LOG.isDebugEnabled()) {
+        LOG.debug("Minimum reduction for hash group by operator {} set to {}", groupByOperator, minReductionHashAggrFactor);
+      }
+    }
+
+    return null;
+  }
+
+}
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveGBOpConvUtil.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveGBOpConvUtil.java
index b304e38..268aca6 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveGBOpConvUtil.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveGBOpConvUtil.java
@@ -117,6 +117,7 @@ public class HiveGBOpConvUtil {
 
     float                             groupByMemoryUsage;
     float                             memoryThreshold;
+    float                             minReductionHashAggr;
 
     private HIVEGBPHYSICALMODE        gbPhysicalPipelineMode;
   };
@@ -277,6 +278,7 @@ public class HiveGBOpConvUtil {
     // 4. Gather GB Memory threshold
     gbInfo.groupByMemoryUsage = HiveConf.getFloatVar(hc, HiveConf.ConfVars.HIVEMAPAGGRHASHMEMORY);
     gbInfo.memoryThreshold = HiveConf.getFloatVar(hc, HiveConf.ConfVars.HIVEMAPAGGRMEMORYTHRESHOLD);
+    gbInfo.minReductionHashAggr = HiveConf.getFloatVar(hc, HiveConf.ConfVars.HIVEMAPAGGRHASHMINREDUCTION);
 
     // 5. Gather GB Physical pipeline (based on user config & Grping Sets size)
     gbInfo.gbPhysicalPipelineMode = getAggOPMode(hc, gbInfo);
@@ -821,7 +823,7 @@ public class HiveGBOpConvUtil {
 
     Operator rsGBOp2 = OperatorFactory.getAndMakeChild(new GroupByDesc(GroupByDesc.Mode.FINAL,
         outputColNames, gbKeys, aggregations, false, gbInfo.groupByMemoryUsage,
-        gbInfo.memoryThreshold, null, false, groupingSetsPosition, gbInfo.containsDistinctAggr),
+        gbInfo.memoryThreshold, gbInfo.minReductionHashAggr, null, false, groupingSetsPosition, gbInfo.containsDistinctAggr),
         new RowSchema(colInfoLst), rs);
 
     rsGBOp2.setColumnExprMap(colExprMap);
@@ -959,7 +961,7 @@ public class HiveGBOpConvUtil {
         && !finalGB
         && !(gbInfo.gbPhysicalPipelineMode == HIVEGBPHYSICALMODE.MAP_SIDE_GB_SKEW_GBKEYS_OR_DIST_UDAF_PRESENT);
     Operator rsGBOp = OperatorFactory.getAndMakeChild(new GroupByDesc(gbMode, outputColNames,
-        gbKeys, aggregations, gbInfo.groupByMemoryUsage, gbInfo.memoryThreshold, gbInfo.grpSets,
+        gbKeys, aggregations, gbInfo.groupByMemoryUsage, gbInfo.memoryThreshold, gbInfo.minReductionHashAggr, gbInfo.grpSets,
         includeGrpSetInGBDesc, groupingSetsColPosition, gbInfo.containsDistinctAggr),
         new RowSchema(colInfoLst), rs);
 
@@ -1071,7 +1073,7 @@ public class HiveGBOpConvUtil {
     }
 
     Operator rsGB1 = OperatorFactory.getAndMakeChild(new GroupByDesc(gbMode, outputColNames,
-        gbKeys, aggregations, false, gbInfo.groupByMemoryUsage, gbInfo.memoryThreshold, null,
+        gbKeys, aggregations, false, gbInfo.groupByMemoryUsage, gbInfo.memoryThreshold, gbInfo.minReductionHashAggr, null,
         false, -1, numDistinctUDFs > 0), new RowSchema(colInfoLst), rs);
     rsGB1.setColumnExprMap(colExprMap);
 
@@ -1167,7 +1169,7 @@ public class HiveGBOpConvUtil {
     @SuppressWarnings("rawtypes")
     Operator gbOp = OperatorFactory.getAndMakeChild(new GroupByDesc(GroupByDesc.Mode.HASH,
         outputColNames, gbKeys, aggregations, false, gbAttrs.groupByMemoryUsage,
-        gbAttrs.memoryThreshold, gbAttrs.grpSets, inclGrpID, groupingSetsPosition,
+        gbAttrs.memoryThreshold, gbAttrs.minReductionHashAggr, gbAttrs.grpSets, inclGrpID, groupingSetsPosition,
         gbAttrs.containsDistinctAggr), new RowSchema(colInfoLst), inputOpAf.inputs.get(0));
 
     // 5. Setup Expr Col Map
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java
index 00f5358..6a1c210 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/stats/annotation/StatsRulesProcFactory.java
@@ -1342,34 +1342,11 @@ public class StatsRulesProcFactory {
 
         stats = parentStats.clone();
         stats.setColumnStats(colStats);
-        long ndvProduct = 1;
         final long parentNumRows = stats.getNumRows();
 
         // compute product of distinct values of grouping columns
-        for (ColStatistics cs : colStats) {
-          if (cs != null) {
-            long ndv = cs.getCountDistint();
-            if (cs.getNumNulls() > 0) {
-              ndv = StatsUtils.safeAdd(ndv, 1);
-            }
-            ndvProduct = StatsUtils.safeMult(ndvProduct, ndv);
-          } else {
-            if (parentStats.getColumnStatsState().equals(Statistics.State.COMPLETE)) {
-              // the column must be an aggregate column inserted by GBY. We
-              // don't have to account for this column when computing product
-              // of NDVs
-              continue;
-            } else {
-              // partial column statistics on grouping attributes case.
-              // if column statistics on grouping attribute is missing, then
-              // assume worst case.
-              // GBY rule will emit half the number of rows if ndvProduct is 0
-              ndvProduct = 0;
-            }
-            break;
-          }
-        }
-
+        long ndvProduct =
+            StatsUtils.computeNDVGroupingColumns(colStats, parentStats, false);
         // if ndvProduct is 0 then column stats state must be partial and we are missing
         // column stats for a group by column
         if (ndvProduct == 0) {
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index 18dbbb2..65648d9 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -5036,10 +5036,12 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
     float groupByMemoryUsage = HiveConf.getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRHASHMEMORY);
     float memoryThreshold = HiveConf
         .getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRMEMORYTHRESHOLD);
+    float minReductionHashAggr = HiveConf
+        .getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRHASHMINREDUCTION);
 
     Operator op = putOpInsertMap(OperatorFactory.getAndMakeChild(
         new GroupByDesc(mode, outputColumnNames, groupByKeys, aggregations,
-            false, groupByMemoryUsage, memoryThreshold, null, false, -1, numDistinctUDFs > 0),
+            false, groupByMemoryUsage, memoryThreshold, minReductionHashAggr, null, false, -1, numDistinctUDFs > 0),
         new RowSchema(groupByOutputRowResolver.getColumnInfos()),
         input), groupByOutputRowResolver);
     op.setColumnExprMap(colExprMap);
@@ -5298,6 +5300,8 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
     float groupByMemoryUsage = HiveConf.getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRHASHMEMORY);
     float memoryThreshold = HiveConf
         .getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRMEMORYTHRESHOLD);
+    float minReductionHashAggr = HiveConf
+        .getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRHASHMINREDUCTION);
 
     // Nothing special needs to be done for grouping sets if
     // this is the final group by operator, and multiple rows corresponding to the
@@ -5306,7 +5310,7 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
     // additional rows corresponding to grouping sets need to be created here.
     Operator op = putOpInsertMap(OperatorFactory.getAndMakeChild(
         new GroupByDesc(mode, outputColumnNames, groupByKeys, aggregations,
-            groupByMemoryUsage, memoryThreshold,
+            groupByMemoryUsage, memoryThreshold, minReductionHashAggr,
             groupingSets,
             groupingSetsPresent && groupingSetsNeedAdditionalMRJob,
             groupingSetsPosition, containsDistinctAggr),
@@ -5479,9 +5483,11 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
     float groupByMemoryUsage = HiveConf.getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRHASHMEMORY);
     float memoryThreshold = HiveConf
         .getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRMEMORYTHRESHOLD);
+    float minReductionHashAggr = HiveConf
+        .getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRHASHMINREDUCTION);
     Operator op = putOpInsertMap(OperatorFactory.getAndMakeChild(
         new GroupByDesc(mode, outputColumnNames, groupByKeys, aggregations,
-            false, groupByMemoryUsage, memoryThreshold,
+            false, groupByMemoryUsage, memoryThreshold, minReductionHashAggr,
             groupingSetKeys, groupingSetsPresent, groupingSetsPosition, containsDistinctAggr),
         new RowSchema(groupByOutputRowResolver.getColumnInfos()),
         inputOperatorInfo), groupByOutputRowResolver);
@@ -6016,10 +6022,12 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
     float groupByMemoryUsage = HiveConf.getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRHASHMEMORY);
     float memoryThreshold = HiveConf
         .getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRMEMORYTHRESHOLD);
+    float minReductionHashAggr = HiveConf
+        .getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRHASHMINREDUCTION);
 
     Operator op = putOpInsertMap(OperatorFactory.getAndMakeChild(
         new GroupByDesc(mode, outputColumnNames, groupByKeys, aggregations,
-            false, groupByMemoryUsage, memoryThreshold, null, false,
+            false, groupByMemoryUsage, memoryThreshold, minReductionHashAggr, null, false,
             groupingSetsPosition, containsDistinctAggr),
         new RowSchema(groupByOutputRowResolver2.getColumnInfos()),
         reduceSinkOperatorInfo2), groupByOutputRowResolver2);
@@ -9272,9 +9280,11 @@ public class SemanticAnalyzer extends BaseSemanticAnalyzer {
     float groupByMemoryUsage = HiveConf.getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRHASHMEMORY);
     float memoryThreshold = HiveConf
         .getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRMEMORYTHRESHOLD);
+    float minReductionHashAggr = HiveConf
+        .getFloatVar(conf, HiveConf.ConfVars.HIVEMAPAGGRHASHMINREDUCTION);
     Operator op = putOpInsertMap(OperatorFactory.getAndMakeChild(
         new GroupByDesc(mode, outputColumnNames, groupByKeys, aggregations,
-            false, groupByMemoryUsage, memoryThreshold, null, false, -1, false),
+            false, groupByMemoryUsage, memoryThreshold, minReductionHashAggr, null, false, -1, false),
         new RowSchema(groupByOutputRowResolver.getColumnInfos()),
         input), groupByOutputRowResolver);
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java
index a917617..be6c9dc 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/TezCompiler.java
@@ -84,6 +84,7 @@ import org.apache.hadoop.hive.ql.optimizer.MergeJoinProc;
 import org.apache.hadoop.hive.ql.optimizer.NonBlockingOpDeDupProc;
 import org.apache.hadoop.hive.ql.optimizer.ReduceSinkMapJoinProc;
 import org.apache.hadoop.hive.ql.optimizer.RemoveDynamicPruningBySize;
+import org.apache.hadoop.hive.ql.optimizer.SetHashGroupByMinReduction;
 import org.apache.hadoop.hive.ql.optimizer.SetReducerParallelism;
 import org.apache.hadoop.hive.ql.optimizer.SharedWorkOptimizer;
 import org.apache.hadoop.hive.ql.optimizer.SortedDynPartitionOptimizer;
@@ -451,9 +452,13 @@ public class TezCompiler extends TaskCompiler {
     opRules.put(new RuleRegExp("Set parallelism - ReduceSink",
         ReduceSinkOperator.getOperatorName() + "%"),
         new SetReducerParallelism());
-
     opRules.put(new RuleRegExp("Convert Join to Map-join",
         JoinOperator.getOperatorName() + "%"), new ConvertJoinMapJoin());
+    if (procCtx.conf.getBoolVar(ConfVars.HIVEMAPAGGRHASHMINREDUCTIONSTATSADJUST)) {
+      opRules.put(new RuleRegExp("Set min reduction - GBy (Hash)",
+          GroupByOperator.getOperatorName() + "%"),
+          new SetHashGroupByMinReduction());
+    }
 
     // The dispatcher fires the processor corresponding to the closest matching
     // rule and passes the context along
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/GroupByDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/GroupByDesc.java
index 31237c8..687f667 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/GroupByDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/GroupByDesc.java
@@ -73,6 +73,7 @@ public class GroupByDesc extends AbstractOperatorDesc {
   private ArrayList<java.lang.String> outputColumnNames;
   private float groupByMemoryUsage;
   private float memoryThreshold;
+  private float minReductionHashAggr;
   transient private boolean isDistinct;
   private boolean dontResetAggrsDistinct;
 
@@ -86,12 +87,13 @@ public class GroupByDesc extends AbstractOperatorDesc {
       final ArrayList<org.apache.hadoop.hive.ql.plan.AggregationDesc> aggregators,
       final float groupByMemoryUsage,
       final float memoryThreshold,
+      final float minReductionHashAggr,
       final List<Long> listGroupingSets,
       final boolean groupingSetsPresent,
       final int groupingSetsPosition,
       final boolean isDistinct) {
     this(mode, outputColumnNames, keys, aggregators,
-        false, groupByMemoryUsage, memoryThreshold, listGroupingSets,
+        false, groupByMemoryUsage, memoryThreshold, minReductionHashAggr, listGroupingSets,
         groupingSetsPresent, groupingSetsPosition, isDistinct);
   }
 
@@ -103,6 +105,7 @@ public class GroupByDesc extends AbstractOperatorDesc {
       final boolean bucketGroup,
       final float groupByMemoryUsage,
       final float memoryThreshold,
+      final float minReductionHashAggr,
       final List<Long> listGroupingSets,
       final boolean groupingSetsPresent,
       final int groupingSetsPosition,
@@ -114,6 +117,7 @@ public class GroupByDesc extends AbstractOperatorDesc {
     this.bucketGroup = bucketGroup;
     this.groupByMemoryUsage = groupByMemoryUsage;
     this.memoryThreshold = memoryThreshold;
+    this.minReductionHashAggr = minReductionHashAggr;
     this.listGroupingSets = listGroupingSets;
     this.groupingSetsPresent = groupingSetsPresent;
     this.groupingSetPosition = groupingSetsPosition;
@@ -209,6 +213,19 @@ public class GroupByDesc extends AbstractOperatorDesc {
     this.memoryThreshold = memoryThreshold;
   }
 
+  public float getMinReductionHashAggr() {
+    return minReductionHashAggr;
+  }
+
+  public void setMinReductionHashAggr(float minReductionHashAggr) {
+    this.minReductionHashAggr = minReductionHashAggr;
+  }
+
+  @Explain(displayName = "minReductionHashAggr")
+  public String getMinReductionHashAggrString() {
+    return mode == Mode.HASH ? Float.toString(minReductionHashAggr) : null;
+  }
+
   @Explain(displayName = "aggregations", explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED })
   @Signature
   public List<String> getAggregatorStrings() {
@@ -320,7 +337,8 @@ public class GroupByDesc extends AbstractOperatorDesc {
     List<Long> listGroupingSets = new ArrayList<>();
     listGroupingSets.addAll(this.listGroupingSets);
     return new GroupByDesc(this.mode, outputColumnNames, keys, aggregators,
-        this.groupByMemoryUsage, this.memoryThreshold, listGroupingSets, this.groupingSetsPresent,
+        this.groupByMemoryUsage, this.memoryThreshold, this.minReductionHashAggr,
+        listGroupingSets, this.groupingSetsPresent,
         this.groupingSetPosition, this.isDistinct);
   }
 
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java
index f00c720..6149880 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/stats/StatsUtils.java
@@ -1996,4 +1996,52 @@ public class StatsUtils {
       stats.setDataSize(StatsUtils.getMaxIfOverflow(newDataSize));
     }
   }
+
+  public static long computeNDVGroupingColumns(List<ColStatistics> colStats, Statistics parentStats,
+      boolean expDecay) {
+    List<Long> ndvValues =
+        extractNDVGroupingColumns(colStats, parentStats);
+    if (ndvValues == null) {
+      return 0L;
+    }
+    if (ndvValues.isEmpty()) {
+      // No grouping columns, one row
+      return 1L;
+    }
+    if (expDecay) {
+      return addWithExpDecay(ndvValues);
+    } else {
+      return ndvValues.stream().reduce(1L, StatsUtils::safeMult);
+    }
+  }
+
+  private static List<Long> extractNDVGroupingColumns(List<ColStatistics> colStats, Statistics parentStats) {
+    List<Long> ndvValues = new ArrayList<>(colStats.size());
+
+    // compute product of distinct values of grouping columns
+    for (ColStatistics cs : colStats) {
+      if (cs != null) {
+        long ndv = cs.getCountDistint();
+        if (cs.getNumNulls() > 0) {
+          ndv = StatsUtils.safeAdd(ndv, 1);
+        }
+        ndvValues.add(ndv);
+      } else {
+        if (parentStats.getColumnStatsState().equals(Statistics.State.COMPLETE)) {
+          // the column must be an aggregate column inserted by GBY. We
+          // don't have to account for this column when computing product
+          // of NDVs
+          continue;
+        } else {
+          // partial column statistics on grouping attributes case.
+          // if column statistics on grouping attribute is missing, then
+          // assume worst case.
+          ndvValues = null;
+        }
+        break;
+      }
+    }
+
+    return ndvValues;
+  }
 }
diff --git a/ql/src/test/results/clientnegative/masking_mv.q.out b/ql/src/test/results/clientnegative/masking_mv.q.out
index 27a3deb..6d5a469 100644
--- a/ql/src/test/results/clientnegative/masking_mv.q.out
+++ b/ql/src/test/results/clientnegative/masking_mv.q.out
@@ -63,6 +63,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(col1, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientnegative/spark/spark_job_max_tasks.q.out b/ql/src/test/results/clientnegative/spark/spark_job_max_tasks.q.out
index 97780ff..f3dc18e 100644
--- a/ql/src/test/results/clientnegative/spark/spark_job_max_tasks.q.out
+++ b/ql/src/test/results/clientnegative/spark/spark_job_max_tasks.q.out
@@ -33,6 +33,7 @@ STAGE PLANS:
                     Statistics: Num rows: 25 Data size: 191 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       keys: key (type: string)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 25 Data size: 191 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientnegative/spark/spark_stage_max_tasks.q.out b/ql/src/test/results/clientnegative/spark/spark_stage_max_tasks.q.out
index 97780ff..f3dc18e 100644
--- a/ql/src/test/results/clientnegative/spark/spark_stage_max_tasks.q.out
+++ b/ql/src/test/results/clientnegative/spark/spark_stage_max_tasks.q.out
@@ -33,6 +33,7 @@ STAGE PLANS:
                     Statistics: Num rows: 25 Data size: 191 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       keys: key (type: string)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 25 Data size: 191 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/acid_mapjoin.q.out b/ql/src/test/results/clientpositive/acid_mapjoin.q.out
index a79525c..4225df0 100644
--- a/ql/src/test/results/clientpositive/acid_mapjoin.q.out
+++ b/ql/src/test/results/clientpositive/acid_mapjoin.q.out
@@ -123,6 +123,7 @@ STAGE PLANS:
                   Statistics: Num rows: 8295 Data size: 66360 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: count()
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/acid_nullscan.q.out b/ql/src/test/results/clientpositive/acid_nullscan.q.out
index a45f20d..0db7d34 100644
--- a/ql/src/test/results/clientpositive/acid_nullscan.q.out
+++ b/ql/src/test/results/clientpositive/acid_nullscan.q.out
@@ -57,6 +57,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: sum(a)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/acid_stats3.q.out b/ql/src/test/results/clientpositive/acid_stats3.q.out
index e718018..b694e20 100644
--- a/ql/src/test/results/clientpositive/acid_stats3.q.out
+++ b/ql/src/test/results/clientpositive/acid_stats3.q.out
@@ -65,6 +65,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: count(key)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -240,6 +241,7 @@ STAGE PLANS:
               Statistics: Num rows: 2 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
               Group By Operator
                 aggregations: count(key)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: COMPLETE
@@ -347,6 +349,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: PARTIAL Column stats: COMPLETE
               Group By Operator
                 aggregations: count(key)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/acid_stats4.q.out b/ql/src/test/results/clientpositive/acid_stats4.q.out
index 36d7f5f..bf8585d 100644
--- a/ql/src/test/results/clientpositive/acid_stats4.q.out
+++ b/ql/src/test/results/clientpositive/acid_stats4.q.out
@@ -67,6 +67,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: count(key2)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -272,6 +273,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: count(key2)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -644,6 +646,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 27 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: count(key2)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -769,6 +772,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 12 Basic stats: PARTIAL Column stats: PARTIAL
               Group By Operator
                 aggregations: count(key2)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: PARTIAL
@@ -855,6 +859,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 12 Basic stats: PARTIAL Column stats: PARTIAL
               Group By Operator
                 aggregations: count(key2)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: PARTIAL
@@ -921,6 +926,7 @@ STAGE PLANS:
               Statistics: Num rows: 2 Data size: 8 Basic stats: PARTIAL Column stats: PARTIAL
               Group By Operator
                 aggregations: count(key2)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: PARTIAL
diff --git a/ql/src/test/results/clientpositive/acid_stats5.q.out b/ql/src/test/results/clientpositive/acid_stats5.q.out
index f9509f2..e3996e0 100644
--- a/ql/src/test/results/clientpositive/acid_stats5.q.out
+++ b/ql/src/test/results/clientpositive/acid_stats5.q.out
@@ -149,6 +149,7 @@ STAGE PLANS:
               Statistics: Num rows: 2 Data size: 10 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: count()
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -203,6 +204,7 @@ STAGE PLANS:
               Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
@@ -366,6 +368,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: min(key)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
@@ -602,6 +605,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
@@ -765,6 +769,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: min(key)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/acid_table_stats.q.out b/ql/src/test/results/clientpositive/acid_table_stats.q.out
index 2ab10ff..65d7a83 100644
--- a/ql/src/test/results/clientpositive/acid_table_stats.q.out
+++ b/ql/src/test/results/clientpositive/acid_table_stats.q.out
@@ -462,6 +462,7 @@ STAGE PLANS:
               Statistics: Num rows: 2000 Data size: 174000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: max(key)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/alterColumnStatsPart.q.out b/ql/src/test/results/clientpositive/alterColumnStatsPart.q.out
index 3efe8ec..7a157a2 100644
--- a/ql/src/test/results/clientpositive/alterColumnStatsPart.q.out
+++ b/ql/src/test/results/clientpositive/alterColumnStatsPart.q.out
@@ -133,6 +133,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: max(a)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -278,6 +279,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 7 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: max(a)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -378,6 +380,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: PARTIAL Column stats: NONE
               Group By Operator
                 aggregations: max(a)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
@@ -448,6 +451,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: PARTIAL Column stats: NONE
               Group By Operator
                 aggregations: max(a)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/annotate_stats_deep_filters.q.out b/ql/src/test/results/clientpositive/annotate_stats_deep_filters.q.out
index 5852c51..5edaea2 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_deep_filters.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_deep_filters.q.out
@@ -133,6 +133,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 160 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -228,6 +229,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2098 Data size: 211174 Basic stats: COMPLETE Column stats: NONE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out b/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out
index fe30d31..4fbe96d 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out
@@ -124,6 +124,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: state (type: string), locid (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
@@ -144,6 +145,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: min(_col1)
             keys: _col0 (type: string), _col2 (type: bigint)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2
             Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
@@ -221,6 +223,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: year (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 8 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE
@@ -275,6 +278,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
@@ -329,6 +333,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 32 Data size: 3136 Basic stats: COMPLETE Column stats: COMPLETE
@@ -384,6 +389,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 24 Data size: 2352 Basic stats: COMPLETE Column stats: COMPLETE
@@ -439,6 +445,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 24 Data size: 2352 Basic stats: COMPLETE Column stats: COMPLETE
@@ -494,6 +501,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
@@ -549,6 +557,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 16 Data size: 1568 Basic stats: COMPLETE Column stats: COMPLETE
@@ -604,6 +613,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 24 Data size: 2352 Basic stats: COMPLETE Column stats: COMPLETE
@@ -659,6 +669,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 32 Data size: 3136 Basic stats: COMPLETE Column stats: COMPLETE
@@ -714,6 +725,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: year (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -768,6 +780,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 16 Data size: 1568 Basic stats: COMPLETE Column stats: COMPLETE
@@ -823,6 +836,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 752 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), zip (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 4 Data size: 376 Basic stats: COMPLETE Column stats: COMPLETE
@@ -877,6 +891,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
@@ -932,6 +947,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
@@ -987,6 +1003,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
@@ -1042,6 +1059,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
@@ -1097,6 +1115,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 16 Data size: 1592 Basic stats: COMPLETE Column stats: NONE
@@ -1152,6 +1171,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
@@ -1207,6 +1227,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
@@ -1262,6 +1283,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: year (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
@@ -1316,6 +1338,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
@@ -1474,6 +1497,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: count()
             keys: _col0 (type: int), _col1 (type: int)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2
             Statistics: Num rows: 9970 Data size: 159496 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out b/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out
index 9ec49bd..56fa27a 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out
@@ -61,6 +61,7 @@ STAGE PLANS:
               Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), country (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE
@@ -115,6 +116,7 @@ STAGE PLANS:
               Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), country (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 80 Data size: 800 Basic stats: COMPLETE Column stats: NONE
@@ -170,6 +172,7 @@ STAGE PLANS:
               Statistics: Num rows: 20 Data size: 3460 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), country (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 10 Data size: 1730 Basic stats: COMPLETE Column stats: COMPLETE
@@ -224,6 +227,7 @@ STAGE PLANS:
               Statistics: Num rows: 20 Data size: 1880 Basic stats: COMPLETE Column stats: PARTIAL
               Group By Operator
                 keys: state (type: string), votes (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 10 Data size: 940 Basic stats: COMPLETE Column stats: PARTIAL
@@ -278,6 +282,7 @@ STAGE PLANS:
               Statistics: Num rows: 20 Data size: 3460 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), country (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 40 Data size: 7240 Basic stats: COMPLETE Column stats: COMPLETE
@@ -333,6 +338,7 @@ STAGE PLANS:
               Statistics: Num rows: 20 Data size: 3460 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), country (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 20 Data size: 3460 Basic stats: COMPLETE Column stats: COMPLETE
@@ -387,6 +393,7 @@ STAGE PLANS:
               Statistics: Num rows: 20 Data size: 3460 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), country (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 80 Data size: 14480 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/annotate_stats_join.q.out b/ql/src/test/results/clientpositive/annotate_stats_join.q.out
index 8c9109f..6c73d63 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_join.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_join.q.out
@@ -895,6 +895,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: _col0 (type: string), _col1 (type: int)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 3 Data size: 285 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/autoColumnStats_11.q.out b/ql/src/test/results/clientpositive/autoColumnStats_11.q.out
index b6e7f99..c617641 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_11.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_11.q.out
@@ -57,6 +57,7 @@ STAGE PLANS:
                     Statistics: Num rows: 1 Data size: 56 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(a, 'hll'), compute_stats(b, 'hll'), compute_stats(d, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1368 Basic stats: COMPLETE Column stats: COMPLETE
@@ -312,6 +313,7 @@ STAGE PLANS:
               Statistics: Num rows: 5 Data size: 320 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(a, 'hll'), compute_stats(b, 'hll'), compute_stats(d, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1368 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/autoColumnStats_4.q.out b/ql/src/test/results/clientpositive/autoColumnStats_4.q.out
index 96f4ba1..0629c60 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_4.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_4.q.out
@@ -125,6 +125,7 @@ STAGE PLANS:
             Statistics: Num rows: 10 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: compute_stats(a, 'hll'), compute_stats(b, 'hll')
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/autoColumnStats_5.q.out b/ql/src/test/results/clientpositive/autoColumnStats_5.q.out
index f86dba1..e8b8d12 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_5.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_5.q.out
@@ -59,6 +59,7 @@ STAGE PLANS:
                     Group By Operator
                       aggregations: compute_stats(a, 'hll'), compute_stats(b, 'hll')
                       keys: part (type: int)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 868 Basic stats: COMPLETE Column stats: COMPLETE
@@ -313,6 +314,7 @@ STAGE PLANS:
                     Group By Operator
                       aggregations: compute_stats(a, 'hll'), compute_stats(b, 'hll'), compute_stats(c, 'hll'), compute_stats(d, 'hll')
                       keys: part (type: int)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2, _col3, _col4
                       Statistics: Num rows: 1 Data size: 1732 Basic stats: COMPLETE Column stats: COMPLETE
@@ -525,6 +527,7 @@ STAGE PLANS:
                     Group By Operator
                       aggregations: compute_stats(a, 'hll'), compute_stats(b, 'hll'), compute_stats(c, 'hll'), compute_stats(d, 'hll')
                       keys: part (type: int)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2, _col3, _col4
                       Statistics: Num rows: 1 Data size: 1732 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/autoColumnStats_5a.q.out b/ql/src/test/results/clientpositive/autoColumnStats_5a.q.out
index 9891aed..0f86bed 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_5a.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_5a.q.out
@@ -84,6 +84,7 @@ STAGE PLANS:
                     Group By Operator
                       aggregations: compute_stats(a, 'hll'), compute_stats(b, 'hll')
                       keys: part (type: int)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 868 Basic stats: COMPLETE Column stats: COMPLETE
@@ -509,6 +510,7 @@ STAGE PLANS:
                     Group By Operator
                       aggregations: compute_stats(a, 'hll'), compute_stats(b, 'hll')
                       keys: part (type: int)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 868 Basic stats: COMPLETE Column stats: COMPLETE
@@ -871,6 +873,7 @@ STAGE PLANS:
                     Group By Operator
                       aggregations: compute_stats(a, 'hll'), compute_stats(b, 'hll')
                       keys: part (type: int)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 868 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/autoColumnStats_6.q.out b/ql/src/test/results/clientpositive/autoColumnStats_6.q.out
index 7029a2b..cab3338 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_6.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_6.q.out
@@ -51,6 +51,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                   keys: one (type: string), two (type: string), three (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2, _col3, _col4
                   Statistics: Num rows: 250 Data size: 329250 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/autoColumnStats_8.q.out b/ql/src/test/results/clientpositive/autoColumnStats_8.q.out
index 613465e..0e1868b 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_8.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_8.q.out
@@ -115,6 +115,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                     keys: ds (type: string), hr (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3
                     Statistics: Num rows: 2 Data size: 2496 Basic stats: COMPLETE Column stats: COMPLETE
@@ -172,6 +173,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                     keys: '2008-12-31' (type: string), hr (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3
                     Statistics: Num rows: 2 Data size: 2316 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/autoColumnStats_9.q.out b/ql/src/test/results/clientpositive/autoColumnStats_9.q.out
index 90774c0..2671412 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_9.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_9.q.out
@@ -92,6 +92,7 @@ STAGE PLANS:
               Statistics: Num rows: 791 Data size: 75145 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -148,6 +149,7 @@ STAGE PLANS:
                   Statistics: Num rows: 791 Data size: 75145 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join0.q.out b/ql/src/test/results/clientpositive/auto_join0.q.out
index 25c1e7f..1c1a8bb 100644
--- a/ql/src/test/results/clientpositive/auto_join0.q.out
+++ b/ql/src/test/results/clientpositive/auto_join0.q.out
@@ -102,6 +102,7 @@ STAGE PLANS:
               Statistics: Num rows: 27556 Data size: 9809936 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: sum(hash(_col0,_col1,_col2,_col3))
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -166,6 +167,7 @@ STAGE PLANS:
               Statistics: Num rows: 27556 Data size: 9809936 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: sum(hash(_col0,_col1,_col2,_col3))
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -203,6 +205,7 @@ STAGE PLANS:
           Statistics: Num rows: 27556 Data size: 9809936 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             aggregations: sum(hash(_col0,_col1,_col2,_col3))
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join1.q.out b/ql/src/test/results/clientpositive/auto_join1.q.out
index 2a7d0d5..08fbdb9 100644
--- a/ql/src/test/results/clientpositive/auto_join1.q.out
+++ b/ql/src/test/results/clientpositive/auto_join1.q.out
@@ -90,6 +90,7 @@ STAGE PLANS:
                       Statistics: Num rows: 791 Data size: 75145 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1
                         Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join10.q.out b/ql/src/test/results/clientpositive/auto_join10.q.out
index 356574f..6eda95b 100644
--- a/ql/src/test/results/clientpositive/auto_join10.q.out
+++ b/ql/src/test/results/clientpositive/auto_join10.q.out
@@ -76,6 +76,7 @@ STAGE PLANS:
                     Statistics: Num rows: 791 Data size: 140798 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: sum(_col0)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join11.q.out b/ql/src/test/results/clientpositive/auto_join11.q.out
index d280af6..1ead729 100644
--- a/ql/src/test/results/clientpositive/auto_join11.q.out
+++ b/ql/src/test/results/clientpositive/auto_join11.q.out
@@ -76,6 +76,7 @@ STAGE PLANS:
                     Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: sum(_col0)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join12.q.out b/ql/src/test/results/clientpositive/auto_join12.q.out
index 124bb7b..e294153 100644
--- a/ql/src/test/results/clientpositive/auto_join12.q.out
+++ b/ql/src/test/results/clientpositive/auto_join12.q.out
@@ -109,6 +109,7 @@ STAGE PLANS:
                       Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: sum(_col0)
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join13.q.out b/ql/src/test/results/clientpositive/auto_join13.q.out
index 59e9c70..6bc7ad9 100644
--- a/ql/src/test/results/clientpositive/auto_join13.q.out
+++ b/ql/src/test/results/clientpositive/auto_join13.q.out
@@ -109,6 +109,7 @@ STAGE PLANS:
                       Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: sum(_col0)
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join14.q.out b/ql/src/test/results/clientpositive/auto_join14.q.out
index b6a631f..176f2f2 100644
--- a/ql/src/test/results/clientpositive/auto_join14.q.out
+++ b/ql/src/test/results/clientpositive/auto_join14.q.out
@@ -96,6 +96,7 @@ STAGE PLANS:
                       Statistics: Num rows: 174 Data size: 16530 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: compute_stats(c1, 'hll'), compute_stats(c2, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1
                         Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join15.q.out b/ql/src/test/results/clientpositive/auto_join15.q.out
index 4ff0473..56a4571 100644
--- a/ql/src/test/results/clientpositive/auto_join15.q.out
+++ b/ql/src/test/results/clientpositive/auto_join15.q.out
@@ -68,6 +68,7 @@ STAGE PLANS:
                   Statistics: Num rows: 791 Data size: 281596 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: sum(hash(_col0,_col1,_col2,_col3))
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join16.q.out b/ql/src/test/results/clientpositive/auto_join16.q.out
index 9d8b220..8bbede7 100644
--- a/ql/src/test/results/clientpositive/auto_join16.q.out
+++ b/ql/src/test/results/clientpositive/auto_join16.q.out
@@ -76,6 +76,7 @@ STAGE PLANS:
                     Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: sum(_col0)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join17.q.out b/ql/src/test/results/clientpositive/auto_join17.q.out
index a06fad9..abf3b27 100644
--- a/ql/src/test/results/clientpositive/auto_join17.q.out
+++ b/ql/src/test/results/clientpositive/auto_join17.q.out
@@ -90,6 +90,7 @@ STAGE PLANS:
                       Statistics: Num rows: 791 Data size: 150290 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: compute_stats(key1, 'hll'), compute_stats(value1, 'hll'), compute_stats(key2, 'hll'), compute_stats(value2, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1, _col2, _col3
                         Statistics: Num rows: 1 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join18.q.out b/ql/src/test/results/clientpositive/auto_join18.q.out
index add48da..48415f5 100644
--- a/ql/src/test/results/clientpositive/auto_join18.q.out
+++ b/ql/src/test/results/clientpositive/auto_join18.q.out
@@ -51,6 +51,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(value)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -107,6 +108,7 @@ STAGE PLANS:
             Statistics: Num rows: 274 Data size: 2457 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: sum(_col0)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -153,6 +155,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT value)
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 12 Data size: 2196 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join18_multi_distinct.q.out b/ql/src/test/results/clientpositive/auto_join18_multi_distinct.q.out
index 7f05593..6132eb5 100644
--- a/ql/src/test/results/clientpositive/auto_join18_multi_distinct.q.out
+++ b/ql/src/test/results/clientpositive/auto_join18_multi_distinct.q.out
@@ -53,6 +53,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(value)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -109,6 +110,7 @@ STAGE PLANS:
             Statistics: Num rows: 274 Data size: 2561 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: sum(_col0)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -155,6 +157,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT value), count(DISTINCT key)
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 12 Data size: 2292 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join19.q.out b/ql/src/test/results/clientpositive/auto_join19.q.out
index cb6b471..a69af58 100644
--- a/ql/src/test/results/clientpositive/auto_join19.q.out
+++ b/ql/src/test/results/clientpositive/auto_join19.q.out
@@ -102,6 +102,7 @@ STAGE PLANS:
                       Statistics: Num rows: 3164 Data size: 300580 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1
                         Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join19_inclause.q.out b/ql/src/test/results/clientpositive/auto_join19_inclause.q.out
index 1c4e3c0..4ef4da6 100644
--- a/ql/src/test/results/clientpositive/auto_join19_inclause.q.out
+++ b/ql/src/test/results/clientpositive/auto_join19_inclause.q.out
@@ -102,6 +102,7 @@ STAGE PLANS:
                       Statistics: Num rows: 3164 Data size: 300580 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1
                         Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join2.q.out b/ql/src/test/results/clientpositive/auto_join2.q.out
index 951738a..f154680 100644
--- a/ql/src/test/results/clientpositive/auto_join2.q.out
+++ b/ql/src/test/results/clientpositive/auto_join2.q.out
@@ -117,6 +117,7 @@ STAGE PLANS:
                         Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                         Group By Operator
                           aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                          minReductionHashAggr: 0.99
                           mode: hash
                           outputColumnNames: _col0, _col1
                           Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join20.q.out b/ql/src/test/results/clientpositive/auto_join20.q.out
index 14bf54d..733f51b 100644
--- a/ql/src/test/results/clientpositive/auto_join20.q.out
+++ b/ql/src/test/results/clientpositive/auto_join20.q.out
@@ -120,6 +120,7 @@ STAGE PLANS:
                 Statistics: Num rows: 914 Data size: 310432 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: sum(hash(_col0,_col1,_col2,_col3,_col4,_col5))
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -193,6 +194,7 @@ STAGE PLANS:
             Statistics: Num rows: 914 Data size: 310432 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: sum(hash(_col0,_col1,_col2,_col3,_col4,_col5))
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -350,6 +352,7 @@ STAGE PLANS:
                 Statistics: Num rows: 636 Data size: 161980 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: sum(hash(_col0,_col1,_col2,_col3,_col4,_col5))
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -423,6 +426,7 @@ STAGE PLANS:
             Statistics: Num rows: 636 Data size: 161980 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: sum(hash(_col0,_col1,_col2,_col3,_col4,_col5))
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join22.q.out b/ql/src/test/results/clientpositive/auto_join22.q.out
index c7cbe26..57d5db9 100644
--- a/ql/src/test/results/clientpositive/auto_join22.q.out
+++ b/ql/src/test/results/clientpositive/auto_join22.q.out
@@ -93,6 +93,7 @@ STAGE PLANS:
                       Statistics: Num rows: 1251 Data size: 113841 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: sum(_col0)
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join24.q.out b/ql/src/test/results/clientpositive/auto_join24.q.out
index 1344ff3..a534b4e 100644
--- a/ql/src/test/results/clientpositive/auto_join24.q.out
+++ b/ql/src/test/results/clientpositive/auto_join24.q.out
@@ -82,6 +82,7 @@ STAGE PLANS:
                   Statistics: Num rows: 309 Data size: 1236 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: sum(_col1)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join26.q.out b/ql/src/test/results/clientpositive/auto_join26.q.out
index 6796c40..73a379c 100644
--- a/ql/src/test/results/clientpositive/auto_join26.q.out
+++ b/ql/src/test/results/clientpositive/auto_join26.q.out
@@ -77,6 +77,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 16 Data size: 1504 Basic stats: COMPLETE Column stats: COMPLETE
@@ -114,6 +115,7 @@ STAGE PLANS:
               Statistics: Num rows: 16 Data size: 128 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join27.q.out b/ql/src/test/results/clientpositive/auto_join27.q.out
index e98c8b9..95fff75 100644
--- a/ql/src/test/results/clientpositive/auto_join27.q.out
+++ b/ql/src/test/results/clientpositive/auto_join27.q.out
@@ -46,6 +46,7 @@ STAGE PLANS:
               Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
@@ -121,6 +122,7 @@ STAGE PLANS:
                     Statistics: Num rows: 249 Data size: 1992 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: count()
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -142,6 +144,7 @@ STAGE PLANS:
                 Statistics: Num rows: 249 Data size: 1992 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join3.q.out b/ql/src/test/results/clientpositive/auto_join3.q.out
index 8b137eb..c845871 100644
--- a/ql/src/test/results/clientpositive/auto_join3.q.out
+++ b/ql/src/test/results/clientpositive/auto_join3.q.out
@@ -117,6 +117,7 @@ STAGE PLANS:
                         Statistics: Num rows: 1251 Data size: 118845 Basic stats: COMPLETE Column stats: COMPLETE
                         Group By Operator
                           aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                          minReductionHashAggr: 0.99
                           mode: hash
                           outputColumnNames: _col0, _col1
                           Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join31.q.out b/ql/src/test/results/clientpositive/auto_join31.q.out
index 68fd705..2fc8e70 100644
--- a/ql/src/test/results/clientpositive/auto_join31.q.out
+++ b/ql/src/test/results/clientpositive/auto_join31.q.out
@@ -100,6 +100,7 @@ STAGE PLANS:
                     Statistics: Num rows: 1251 Data size: 222678 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: sum(hash(_col2,_col3))
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join32.q.out b/ql/src/test/results/clientpositive/auto_join32.q.out
index 1259da8..cda6c7a 100644
--- a/ql/src/test/results/clientpositive/auto_join32.q.out
+++ b/ql/src/test/results/clientpositive/auto_join32.q.out
@@ -85,6 +85,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count(DISTINCT _col2)
                     keys: _col0 (type: string), _col2 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2
                     Statistics: Num rows: 1 Data size: 202 Basic stats: COMPLETE Column stats: NONE
@@ -193,6 +194,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count(DISTINCT _col2)
                     keys: _col0 (type: string), _col2 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2
                     Reduce Output Operator
@@ -311,6 +313,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count(DISTINCT _col2)
                     keys: _col0 (type: string), _col2 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2
                     Reduce Output Operator
@@ -451,6 +454,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count(DISTINCT _col2)
                     keys: _col0 (type: string), _col2 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2
                     Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/auto_join4.q.out b/ql/src/test/results/clientpositive/auto_join4.q.out
index bfc5689..eaf7083 100644
--- a/ql/src/test/results/clientpositive/auto_join4.q.out
+++ b/ql/src/test/results/clientpositive/auto_join4.q.out
@@ -112,6 +112,7 @@ STAGE PLANS:
                       Statistics: Num rows: 55 Data size: 10450 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: compute_stats(c1, 'hll'), compute_stats(c2, 'hll'), compute_stats(c3, 'hll'), compute_stats(c4, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1, _col2, _col3
                         Statistics: Num rows: 1 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join5.q.out b/ql/src/test/results/clientpositive/auto_join5.q.out
index 69d8c08..8c6c31c 100644
--- a/ql/src/test/results/clientpositive/auto_join5.q.out
+++ b/ql/src/test/results/clientpositive/auto_join5.q.out
@@ -112,6 +112,7 @@ STAGE PLANS:
                       Statistics: Num rows: 55 Data size: 10450 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: compute_stats(c1, 'hll'), compute_stats(c2, 'hll'), compute_stats(c3, 'hll'), compute_stats(c4, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1, _col2, _col3
                         Statistics: Num rows: 1 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join6.q.out b/ql/src/test/results/clientpositive/auto_join6.q.out
index 5b051a8..977236f 100644
--- a/ql/src/test/results/clientpositive/auto_join6.q.out
+++ b/ql/src/test/results/clientpositive/auto_join6.q.out
@@ -111,6 +111,7 @@ STAGE PLANS:
               Statistics: Num rows: 110 Data size: 20900 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(c1, 'hll'), compute_stats(c2, 'hll'), compute_stats(c3, 'hll'), compute_stats(c4, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join7.q.out b/ql/src/test/results/clientpositive/auto_join7.q.out
index f325e20..aad848f 100644
--- a/ql/src/test/results/clientpositive/auto_join7.q.out
+++ b/ql/src/test/results/clientpositive/auto_join7.q.out
@@ -166,6 +166,7 @@ STAGE PLANS:
                   Statistics: Num rows: 110 Data size: 31350 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(c1, 'hll'), compute_stats(c2, 'hll'), compute_stats(c3, 'hll'), compute_stats(c4, 'hll'), compute_stats(c5, 'hll'), compute_stats(c6, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
                     Statistics: Num rows: 1 Data size: 2592 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join8.q.out b/ql/src/test/results/clientpositive/auto_join8.q.out
index 8716b6c..b2f8543 100644
--- a/ql/src/test/results/clientpositive/auto_join8.q.out
+++ b/ql/src/test/results/clientpositive/auto_join8.q.out
@@ -115,6 +115,7 @@ STAGE PLANS:
                         Statistics: Num rows: 1 Data size: 190 Basic stats: COMPLETE Column stats: COMPLETE
                         Group By Operator
                           aggregations: compute_stats(c1, 'hll'), compute_stats(c2, 'hll'), compute_stats(c3, 'hll'), compute_stats(c4, 'hll')
+                          minReductionHashAggr: 0.99
                           mode: hash
                           outputColumnNames: _col0, _col1, _col2, _col3
                           Statistics: Num rows: 1 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join9.q.out b/ql/src/test/results/clientpositive/auto_join9.q.out
index 10656d4..08bdbb6 100644
--- a/ql/src/test/results/clientpositive/auto_join9.q.out
+++ b/ql/src/test/results/clientpositive/auto_join9.q.out
@@ -94,6 +94,7 @@ STAGE PLANS:
                       Statistics: Num rows: 791 Data size: 75145 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1
                         Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/beeline/explain_outputs.q.out b/ql/src/test/results/clientpositive/beeline/explain_outputs.q.out
index 45f9d5a..5c90f96 100644
--- a/ql/src/test/results/clientpositive/beeline/explain_outputs.q.out
+++ b/ql/src/test/results/clientpositive/beeline/explain_outputs.q.out
@@ -96,6 +96,7 @@ STAGE PLANS:
           Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             aggregations: sum(_col0)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -197,6 +198,7 @@ STAGE PLANS:
           Statistics: Num rows: 2/1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             aggregations: sum(_col0)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1/1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -312,6 +314,7 @@ STAGE PLANS:
           Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             aggregations: sum(_col0)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/beeline/smb_mapjoin_11.q.out b/ql/src/test/results/clientpositive/beeline/smb_mapjoin_11.q.out
index 2c2d378..ff17708 100644
--- a/ql/src/test/results/clientpositive/beeline/smb_mapjoin_11.q.out
+++ b/ql/src/test/results/clientpositive/beeline/smb_mapjoin_11.q.out
@@ -192,6 +192,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
               keys: '1' (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2
               File Output Operator
diff --git a/ql/src/test/results/clientpositive/beeline/smb_mapjoin_12.q.out b/ql/src/test/results/clientpositive/beeline/smb_mapjoin_12.q.out
index 36d00b1..f2d4058 100644
--- a/ql/src/test/results/clientpositive/beeline/smb_mapjoin_12.q.out
+++ b/ql/src/test/results/clientpositive/beeline/smb_mapjoin_12.q.out
@@ -422,6 +422,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
               keys: '2' (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2
               File Output Operator
diff --git a/ql/src/test/results/clientpositive/beeline/smb_mapjoin_16.q.out b/ql/src/test/results/clientpositive/beeline/smb_mapjoin_16.q.out
index 82168ae..ec7e0d9 100644
--- a/ql/src/test/results/clientpositive/beeline/smb_mapjoin_16.q.out
+++ b/ql/src/test/results/clientpositive/beeline/smb_mapjoin_16.q.out
@@ -67,6 +67,7 @@ STAGE PLANS:
                   1 key (type: int)
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/beeline/smb_mapjoin_7.q.out b/ql/src/test/results/clientpositive/beeline/smb_mapjoin_7.q.out
index dba2ceb..e598a47 100644
--- a/ql/src/test/results/clientpositive/beeline/smb_mapjoin_7.q.out
+++ b/ql/src/test/results/clientpositive/beeline/smb_mapjoin_7.q.out
@@ -659,6 +659,7 @@ STAGE PLANS:
                   outputColumnNames: k1, v1, k2, v2
                   Group By Operator
                     aggregations: compute_stats(k1, 'hll'), compute_stats(v1, 'hll'), compute_stats(k2, 'hll'), compute_stats(v2, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3
                     Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/binary_output_format.q.out b/ql/src/test/results/clientpositive/binary_output_format.q.out
index 812c58d..ec6a3a2 100644
--- a/ql/src/test/results/clientpositive/binary_output_format.q.out
+++ b/ql/src/test/results/clientpositive/binary_output_format.q.out
@@ -128,6 +128,7 @@ STAGE PLANS:
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(mydata, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 440 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/binarysortable_1.q.out b/ql/src/test/results/clientpositive/binarysortable_1.q.out
index e45d5da..70c235c 100644
Binary files a/ql/src/test/results/clientpositive/binarysortable_1.q.out and b/ql/src/test/results/clientpositive/binarysortable_1.q.out differ
diff --git a/ql/src/test/results/clientpositive/bucket1.q.out b/ql/src/test/results/clientpositive/bucket1.q.out
index 64a37a6..18781f0 100644
--- a/ql/src/test/results/clientpositive/bucket1.q.out
+++ b/ql/src/test/results/clientpositive/bucket1.q.out
@@ -146,6 +146,7 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/bucket3.q.out b/ql/src/test/results/clientpositive/bucket3.q.out
index c87907b..0463853 100644
--- a/ql/src/test/results/clientpositive/bucket3.q.out
+++ b/ql/src/test/results/clientpositive/bucket3.q.out
@@ -145,6 +145,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
               keys: ds (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2
               Statistics: Num rows: 1 Data size: 949 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/bucket_map_join_1.q.out b/ql/src/test/results/clientpositive/bucket_map_join_1.q.out
index 3f879ce..98c0aa4 100644
--- a/ql/src/test/results/clientpositive/bucket_map_join_1.q.out
+++ b/ql/src/test/results/clientpositive/bucket_map_join_1.q.out
@@ -105,6 +105,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 404 Basic stats: COMPLETE Column stats: NONE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucket_map_join_2.q.out b/ql/src/test/results/clientpositive/bucket_map_join_2.q.out
index bc15b49..01d0999 100644
--- a/ql/src/test/results/clientpositive/bucket_map_join_2.q.out
+++ b/ql/src/test/results/clientpositive/bucket_map_join_2.q.out
@@ -105,6 +105,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 404 Basic stats: COMPLETE Column stats: NONE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucket_map_join_spark1.q.out b/ql/src/test/results/clientpositive/bucket_map_join_spark1.q.out
index df998c7..22c6531 100644
--- a/ql/src/test/results/clientpositive/bucket_map_join_spark1.q.out
+++ b/ql/src/test/results/clientpositive/bucket_map_join_spark1.q.out
@@ -285,6 +285,7 @@ STAGE PLANS:
                       Statistics: Num rows: 156 Data size: 89111 Basic stats: PARTIAL Column stats: NONE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(value1, 'hll'), compute_stats(value2, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1, _col2
                         Statistics: Num rows: 1 Data size: 1320 Basic stats: PARTIAL Column stats: NONE
@@ -746,6 +747,7 @@ STAGE PLANS:
                       Statistics: Num rows: 156 Data size: 89111 Basic stats: PARTIAL Column stats: NONE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(value1, 'hll'), compute_stats(value2, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1, _col2
                         Statistics: Num rows: 1 Data size: 1320 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucket_map_join_spark2.q.out b/ql/src/test/results/clientpositive/bucket_map_join_spark2.q.out
index cfdd9ed..38ed123 100644
--- a/ql/src/test/results/clientpositive/bucket_map_join_spark2.q.out
+++ b/ql/src/test/results/clientpositive/bucket_map_join_spark2.q.out
@@ -269,6 +269,7 @@ STAGE PLANS:
                       Statistics: Num rows: 156 Data size: 89111 Basic stats: PARTIAL Column stats: NONE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(value1, 'hll'), compute_stats(value2, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1, _col2
                         Statistics: Num rows: 1 Data size: 1320 Basic stats: PARTIAL Column stats: NONE
@@ -730,6 +731,7 @@ STAGE PLANS:
                       Statistics: Num rows: 156 Data size: 89111 Basic stats: PARTIAL Column stats: NONE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(value1, 'hll'), compute_stats(value2, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1, _col2
                         Statistics: Num rows: 1 Data size: 1320 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucket_map_join_spark3.q.out b/ql/src/test/results/clientpositive/bucket_map_join_spark3.q.out
index 7b600ec..1795b89 100644
--- a/ql/src/test/results/clientpositive/bucket_map_join_spark3.q.out
+++ b/ql/src/test/results/clientpositive/bucket_map_join_spark3.q.out
@@ -269,6 +269,7 @@ STAGE PLANS:
                       Statistics: Num rows: 156 Data size: 89111 Basic stats: PARTIAL Column stats: NONE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(value1, 'hll'), compute_stats(value2, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1, _col2
                         Statistics: Num rows: 1 Data size: 1320 Basic stats: PARTIAL Column stats: NONE
@@ -730,6 +731,7 @@ STAGE PLANS:
                       Statistics: Num rows: 156 Data size: 89111 Basic stats: PARTIAL Column stats: NONE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(value1, 'hll'), compute_stats(value2, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1, _col2
                         Statistics: Num rows: 1 Data size: 1320 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucketcontext_1.q.out b/ql/src/test/results/clientpositive/bucketcontext_1.q.out
index f0f626b..c7815fe 100644
--- a/ql/src/test/results/clientpositive/bucketcontext_1.q.out
+++ b/ql/src/test/results/clientpositive/bucketcontext_1.q.out
@@ -221,6 +221,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
@@ -436,6 +437,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/bucketcontext_2.q.out b/ql/src/test/results/clientpositive/bucketcontext_2.q.out
index d985a8f..afc937e 100644
--- a/ql/src/test/results/clientpositive/bucketcontext_2.q.out
+++ b/ql/src/test/results/clientpositive/bucketcontext_2.q.out
@@ -205,6 +205,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
@@ -420,6 +421,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/bucketcontext_3.q.out b/ql/src/test/results/clientpositive/bucketcontext_3.q.out
index e3eed76..1922cad 100644
--- a/ql/src/test/results/clientpositive/bucketcontext_3.q.out
+++ b/ql/src/test/results/clientpositive/bucketcontext_3.q.out
@@ -253,6 +253,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
@@ -417,6 +418,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/bucketcontext_4.q.out b/ql/src/test/results/clientpositive/bucketcontext_4.q.out
index e58f630..307b620 100644
--- a/ql/src/test/results/clientpositive/bucketcontext_4.q.out
+++ b/ql/src/test/results/clientpositive/bucketcontext_4.q.out
@@ -269,6 +269,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
@@ -433,6 +434,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/bucketcontext_5.q.out b/ql/src/test/results/clientpositive/bucketcontext_5.q.out
index 1a1db08..88f83fb 100644
--- a/ql/src/test/results/clientpositive/bucketcontext_5.q.out
+++ b/ql/src/test/results/clientpositive/bucketcontext_5.q.out
@@ -131,6 +131,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -283,6 +284,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/bucketcontext_6.q.out b/ql/src/test/results/clientpositive/bucketcontext_6.q.out
index 6e9daeb..fbb5a0b 100644
--- a/ql/src/test/results/clientpositive/bucketcontext_6.q.out
+++ b/ql/src/test/results/clientpositive/bucketcontext_6.q.out
@@ -153,6 +153,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
@@ -364,6 +365,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/bucketcontext_7.q.out b/ql/src/test/results/clientpositive/bucketcontext_7.q.out
index 7d7a7e9..432c042 100644
--- a/ql/src/test/results/clientpositive/bucketcontext_7.q.out
+++ b/ql/src/test/results/clientpositive/bucketcontext_7.q.out
@@ -288,6 +288,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
@@ -507,6 +508,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/bucketcontext_8.q.out b/ql/src/test/results/clientpositive/bucketcontext_8.q.out
index eb5aa9d..e92e92e 100644
--- a/ql/src/test/results/clientpositive/bucketcontext_8.q.out
+++ b/ql/src/test/results/clientpositive/bucketcontext_8.q.out
@@ -288,6 +288,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
@@ -507,6 +508,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/bucketmapjoin10.q.out b/ql/src/test/results/clientpositive/bucketmapjoin10.q.out
index c1cf04c..fcf056d 100644
--- a/ql/src/test/results/clientpositive/bucketmapjoin10.q.out
+++ b/ql/src/test/results/clientpositive/bucketmapjoin10.q.out
@@ -296,6 +296,7 @@ STAGE PLANS:
                 Statistics: Num rows: 187 Data size: 73731 Basic stats: PARTIAL Column stats: NONE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucketmapjoin11.q.out b/ql/src/test/results/clientpositive/bucketmapjoin11.q.out
index 3635425..7032fb5 100644
--- a/ql/src/test/results/clientpositive/bucketmapjoin11.q.out
+++ b/ql/src/test/results/clientpositive/bucketmapjoin11.q.out
@@ -312,6 +312,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
@@ -665,6 +666,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucketmapjoin12.q.out b/ql/src/test/results/clientpositive/bucketmapjoin12.q.out
index fac239c..2ef7cb7 100644
--- a/ql/src/test/results/clientpositive/bucketmapjoin12.q.out
+++ b/ql/src/test/results/clientpositive/bucketmapjoin12.q.out
@@ -221,6 +221,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
@@ -460,6 +461,7 @@ STAGE PLANS:
                 Statistics: Num rows: 100 Data size: 29363 Basic stats: PARTIAL Column stats: NONE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucketmapjoin13.q.out b/ql/src/test/results/clientpositive/bucketmapjoin13.q.out
index 19d3a84..b6e55b3 100644
--- a/ql/src/test/results/clientpositive/bucketmapjoin13.q.out
+++ b/ql/src/test/results/clientpositive/bucketmapjoin13.q.out
@@ -184,6 +184,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1100 Data size: 4400 Basic stats: COMPLETE Column stats: NONE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -487,6 +488,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -745,6 +747,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -1003,6 +1006,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucketmapjoin5.q.out b/ql/src/test/results/clientpositive/bucketmapjoin5.q.out
index ac6bad2..5ada6e7 100644
--- a/ql/src/test/results/clientpositive/bucketmapjoin5.q.out
+++ b/ql/src/test/results/clientpositive/bucketmapjoin5.q.out
@@ -291,6 +291,7 @@ STAGE PLANS:
                     Statistics: Num rows: 312 Data size: 178025 Basic stats: PARTIAL Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(value1, 'hll'), compute_stats(value2, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1320 Basic stats: PARTIAL Column stats: NONE
@@ -905,6 +906,7 @@ STAGE PLANS:
                     Statistics: Num rows: 163 Data size: 93968 Basic stats: PARTIAL Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(value1, 'hll'), compute_stats(value2, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1320 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucketmapjoin8.q.out b/ql/src/test/results/clientpositive/bucketmapjoin8.q.out
index 328663c..5c0ac98 100644
--- a/ql/src/test/results/clientpositive/bucketmapjoin8.q.out
+++ b/ql/src/test/results/clientpositive/bucketmapjoin8.q.out
@@ -187,6 +187,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
@@ -443,6 +444,7 @@ STAGE PLANS:
                 BucketMapJoin: true
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucketmapjoin9.q.out b/ql/src/test/results/clientpositive/bucketmapjoin9.q.out
index cf4b9f9..61be706 100644
--- a/ql/src/test/results/clientpositive/bucketmapjoin9.q.out
+++ b/ql/src/test/results/clientpositive/bucketmapjoin9.q.out
@@ -187,6 +187,7 @@ STAGE PLANS:
                 Statistics: Num rows: 151 Data size: 44551 Basic stats: PARTIAL Column stats: NONE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
@@ -468,6 +469,7 @@ STAGE PLANS:
                 Statistics: Num rows: 100 Data size: 29363 Basic stats: PARTIAL Column stats: NONE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucketmapjoin_negative.q.out b/ql/src/test/results/clientpositive/bucketmapjoin_negative.q.out
index a842b28..cb9d5d0 100644
--- a/ql/src/test/results/clientpositive/bucketmapjoin_negative.q.out
+++ b/ql/src/test/results/clientpositive/bucketmapjoin_negative.q.out
@@ -230,6 +230,7 @@ STAGE PLANS:
                     Statistics: Num rows: 146 Data size: 70215 Basic stats: PARTIAL Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(value1, 'hll'), compute_stats(value2, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1320 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucketmapjoin_negative2.q.out b/ql/src/test/results/clientpositive/bucketmapjoin_negative2.q.out
index 764b2ba..b5aceed 100644
--- a/ql/src/test/results/clientpositive/bucketmapjoin_negative2.q.out
+++ b/ql/src/test/results/clientpositive/bucketmapjoin_negative2.q.out
@@ -296,6 +296,7 @@ STAGE PLANS:
                     Statistics: Num rows: 163 Data size: 93968 Basic stats: PARTIAL Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(value1, 'hll'), compute_stats(value2, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1320 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_1.q.out b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_1.q.out
index 46fd587..69d850e 100644
--- a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_1.q.out
+++ b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_1.q.out
@@ -394,6 +394,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
               keys: ds (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2
               Statistics: Num rows: 1 Data size: 949 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_3.q.out b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_3.q.out
index a4f414c..b59384d 100644
--- a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_3.q.out
+++ b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_3.q.out
@@ -209,6 +209,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(value, 'hll'), compute_stats(key, 'hll')
               keys: ds (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2
               Statistics: Num rows: 1 Data size: 949 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_4.q.out b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_4.q.out
index f0552b6..91f556f 100644
--- a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_4.q.out
+++ b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_4.q.out
@@ -127,6 +127,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(key2, 'hll'), compute_stats(value, 'hll')
               keys: ds (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2, _col3
               File Output Operator
@@ -336,6 +337,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
               keys: ds (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2
               File Output Operator
diff --git a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_5.q.out b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_5.q.out
index f141fee..f15158d 100644
--- a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_5.q.out
+++ b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_5.q.out
@@ -127,6 +127,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
               keys: ds (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2
               File Output Operator
@@ -326,6 +327,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
               keys: ds (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2
               File Output Operator
diff --git a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_8.q.out b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_8.q.out
index f3081fd..6e10eb7 100644
--- a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_8.q.out
+++ b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_8.q.out
@@ -127,6 +127,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(key2, 'hll'), compute_stats(value, 'hll')
               keys: ds (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2, _col3
               File Output Operator
@@ -321,6 +322,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(key2, 'hll'), compute_stats(value, 'hll')
               keys: ds (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2, _col3
               File Output Operator
diff --git a/ql/src/test/results/clientpositive/case_sensitivity.q.out b/ql/src/test/results/clientpositive/case_sensitivity.q.out
index 6df0b1b..8d454cd 100644
--- a/ql/src/test/results/clientpositive/case_sensitivity.q.out
+++ b/ql/src/test/results/clientpositive/case_sensitivity.q.out
@@ -57,6 +57,7 @@ STAGE PLANS:
                   Statistics: Num rows: 3 Data size: 8039 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 3544 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/cast1.q.out b/ql/src/test/results/clientpositive/cast1.q.out
index 1828773..cf8beca 100644
--- a/ql/src/test/results/clientpositive/cast1.q.out
+++ b/ql/src/test/results/clientpositive/cast1.q.out
@@ -55,6 +55,7 @@ STAGE PLANS:
                   Statistics: Num rows: 250 Data size: 31000 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(c1, 'hll'), compute_stats(c2, 'hll'), compute_stats(c3, 'hll'), compute_stats(c4, 'hll'), compute_stats(c5, 'hll'), compute_stats(c6, 'hll'), compute_stats(c7, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
                     Statistics: Num rows: 1 Data size: 2984 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/cbo_rp_annotate_stats_groupby.q.out b/ql/src/test/results/clientpositive/cbo_rp_annotate_stats_groupby.q.out
index 9136967..802a11b 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_annotate_stats_groupby.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_annotate_stats_groupby.q.out
@@ -124,6 +124,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: state (type: string), locid (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
@@ -144,6 +145,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: min(locid)
             keys: state (type: string), $f2 (type: bigint)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2
             Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
@@ -221,6 +223,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: year (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 8 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE
@@ -275,6 +278,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
@@ -329,6 +333,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 32 Data size: 5632 Basic stats: COMPLETE Column stats: COMPLETE
@@ -383,6 +388,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 24 Data size: 4224 Basic stats: COMPLETE Column stats: COMPLETE
@@ -437,6 +443,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 24 Data size: 4224 Basic stats: COMPLETE Column stats: COMPLETE
@@ -491,6 +498,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 8 Data size: 1408 Basic stats: COMPLETE Column stats: COMPLETE
@@ -545,6 +553,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 16 Data size: 2816 Basic stats: COMPLETE Column stats: COMPLETE
@@ -599,6 +608,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 24 Data size: 4224 Basic stats: COMPLETE Column stats: COMPLETE
@@ -653,6 +663,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 32 Data size: 5632 Basic stats: COMPLETE Column stats: COMPLETE
@@ -707,6 +718,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: year (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -761,6 +773,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 16 Data size: 2816 Basic stats: COMPLETE Column stats: COMPLETE
@@ -815,6 +828,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 752 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: state (type: string), zip (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 4 Data size: 376 Basic stats: COMPLETE Column stats: COMPLETE
@@ -869,6 +883,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
@@ -923,6 +938,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
@@ -977,6 +993,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
@@ -1031,6 +1048,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
@@ -1085,6 +1103,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 16 Data size: 1592 Basic stats: COMPLETE Column stats: NONE
@@ -1139,6 +1158,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
@@ -1193,6 +1213,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
@@ -1247,6 +1268,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: year (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
@@ -1301,6 +1323,7 @@ STAGE PLANS:
               Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: state (type: string), locid (type: int), '0L' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/cbo_rp_auto_join0.q.out b/ql/src/test/results/clientpositive/cbo_rp_auto_join0.q.out
index 7e47728..28ca61a 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_auto_join0.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_auto_join0.q.out
@@ -83,6 +83,7 @@ STAGE PLANS:
                     Statistics: Num rows: 36 Data size: 12240 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: sum(hash(_col0,_col1,_col2,_col3))
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -202,6 +203,7 @@ STAGE PLANS:
                     Statistics: Num rows: 36 Data size: 12240 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: sum(hash(_col0,_col1,_col2,_col3))
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/cbo_rp_auto_join1.q.out b/ql/src/test/results/clientpositive/cbo_rp_auto_join1.q.out
index 5341f86..57a78e0 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_auto_join1.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_auto_join1.q.out
@@ -168,6 +168,7 @@ STAGE PLANS:
             Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: $sum0($f4)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -308,6 +309,7 @@ STAGE PLANS:
           Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             aggregations: count()
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -676,6 +678,7 @@ STAGE PLANS:
                   Select Operator
                     Group By Operator
                       aggregations: count()
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
@@ -776,6 +779,7 @@ STAGE PLANS:
                   Select Operator
                     Group By Operator
                       aggregations: count()
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
@@ -898,6 +902,7 @@ STAGE PLANS:
                   Select Operator
                     Group By Operator
                       aggregations: count()
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
@@ -1010,6 +1015,7 @@ STAGE PLANS:
                   Select Operator
                     Group By Operator
                       aggregations: count()
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
@@ -1097,6 +1103,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: key (type: int)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1153,6 +1160,7 @@ STAGE PLANS:
             Statistics: Num rows: 5 Data size: 40 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: $sum0($f4)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1203,6 +1211,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: key (type: int)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1296,6 +1305,7 @@ STAGE PLANS:
                   Select Operator
                     Group By Operator
                       aggregations: count()
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
@@ -1390,6 +1400,7 @@ STAGE PLANS:
                   Select Operator
                     Group By Operator
                       aggregations: count()
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
@@ -1498,6 +1509,7 @@ STAGE PLANS:
                   Select Operator
                     Group By Operator
                       aggregations: count()
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/cbo_rp_auto_join17.q.out b/ql/src/test/results/clientpositive/cbo_rp_auto_join17.q.out
index 9d0dbd2..3055730 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_auto_join17.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_auto_join17.q.out
@@ -90,6 +90,7 @@ STAGE PLANS:
                       Statistics: Num rows: 791 Data size: 150290 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: compute_stats(key1, 'hll'), compute_stats(value1, 'hll'), compute_stats(key2, 'hll'), compute_stats(value2, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1, _col2, _col3
                         Statistics: Num rows: 1 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/cbo_rp_cross_product_check_2.q.out b/ql/src/test/results/clientpositive/cbo_rp_cross_product_check_2.q.out
index 5597828..4c8df5c 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_cross_product_check_2.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_cross_product_check_2.q.out
@@ -292,6 +292,7 @@ STAGE PLANS:
                     Statistics: Num rows: 20 Data size: 1720 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       keys: key (type: string)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
@@ -427,6 +428,7 @@ STAGE PLANS:
                   Statistics: Num rows: 100 Data size: 8600 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     keys: key (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
@@ -542,6 +544,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -723,6 +726,7 @@ STAGE PLANS:
                     Statistics: Num rows: 20 Data size: 1720 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       keys: key (type: string)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/cbo_rp_gby2_map_multi_distinct.q.out b/ql/src/test/results/clientpositive/cbo_rp_gby2_map_multi_distinct.q.out
index 17c8fc7..ecdc784 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_gby2_map_multi_distinct.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_gby2_map_multi_distinct.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT $f1), sum($f1), sum(DISTINCT $f1), count($f2)
                 keys: $f0 (type: string), $f1 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
                 Statistics: Num rows: 250 Data size: 100000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -76,6 +77,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 95000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(c1, 'hll'), compute_stats(c2, 'hll'), compute_stats(c3, 'hll'), compute_stats(c4, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 1 Data size: 2152 Basic stats: COMPLETE Column stats: COMPLETE
@@ -204,6 +206,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT $f0), sum($f1), sum(DISTINCT $f1), count($f2)
                 keys: $f0 (type: string), $f1 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
                 Statistics: Num rows: 250 Data size: 100000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -238,6 +241,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 95000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(c1, 'hll'), compute_stats(c2, 'hll'), compute_stats(c3, 'hll'), compute_stats(c4, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 1 Data size: 2152 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/cbo_rp_join1.q.out b/ql/src/test/results/clientpositive/cbo_rp_join1.q.out
index 78d5e74..1bc3529 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_join1.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_join1.q.out
@@ -72,6 +72,7 @@ STAGE PLANS:
             Statistics: Num rows: 1 Data size: 17 Basic stats: COMPLETE Column stats: NONE
             Group By Operator
               aggregations: sum(_col0)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -179,6 +180,7 @@ STAGE PLANS:
             Statistics: Num rows: 1 Data size: 17 Basic stats: COMPLETE Column stats: NONE
             Group By Operator
               aggregations: sum(_col0)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -286,6 +288,7 @@ STAGE PLANS:
             Statistics: Num rows: 1 Data size: 17 Basic stats: COMPLETE Column stats: NONE
             Group By Operator
               aggregations: sum(_col0)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -393,6 +396,7 @@ STAGE PLANS:
             Statistics: Num rows: 1 Data size: 17 Basic stats: COMPLETE Column stats: NONE
             Group By Operator
               aggregations: sum(_col0)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/cbo_rp_udaf_percentile_approx_23.q.out b/ql/src/test/results/clientpositive/cbo_rp_udaf_percentile_approx_23.q.out
index 15c3b37..a49a179 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_udaf_percentile_approx_23.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_udaf_percentile_approx_23.q.out
@@ -521,6 +521,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: percentile_approx($f0, 0.5)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 168 Basic stats: COMPLETE Column stats: NONE
@@ -584,6 +585,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: percentile_approx($f0, 0.5)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 168 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out b/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out
index bc07612..36be86e 100644
--- a/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out
+++ b/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out
@@ -223,6 +223,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 12 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: max(month)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -354,6 +355,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: max(month)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/columnstats_partlvl.q.out b/ql/src/test/results/clientpositive/columnstats_partlvl.q.out
index e345841..91c5633 100644
--- a/ql/src/test/results/clientpositive/columnstats_partlvl.q.out
+++ b/ql/src/test/results/clientpositive/columnstats_partlvl.q.out
@@ -65,6 +65,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(employeeid, 'hll')
                 keys: 2000.0D (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 3 Data size: 1062 Basic stats: PARTIAL Column stats: NONE
@@ -138,6 +139,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(employeeid, 'hll')
                 keys: 2000.0D (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 3 Data size: 1062 Basic stats: PARTIAL Column stats: NONE
@@ -336,6 +338,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(employeeid, 'hll')
                 keys: 4000.0D (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 3 Data size: 1062 Basic stats: PARTIAL Column stats: NONE
@@ -409,6 +412,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(employeeid, 'hll')
                 keys: 4000.0D (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 3 Data size: 1062 Basic stats: PARTIAL Column stats: NONE
@@ -569,6 +573,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(employeeid, 'hll'), compute_stats(employeename, 'hll')
                 keys: 2000.0D (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 872 Basic stats: COMPLETE Column stats: PARTIAL
@@ -693,6 +698,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(employeeid, 'hll'), compute_stats(employeename, 'hll')
                 keys: employeesalary (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 2 Data size: 1744 Basic stats: COMPLETE Column stats: PARTIAL
@@ -820,6 +826,7 @@ STAGE PLANS:
               Statistics: Num rows: 26 Data size: 2300 Basic stats: COMPLETE Column stats: PARTIAL
               Group By Operator
                 aggregations: compute_stats(employeeid, 'hll'), compute_stats(employeename, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: PARTIAL
diff --git a/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out b/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out
index 4cc76be..56435b4 100644
--- a/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out
+++ b/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out
@@ -101,6 +101,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(employeename, 'hll'), compute_stats(employeeid, 'hll')
                 keys: 4000.0D (type: double), country (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 1236 Basic stats: PARTIAL Column stats: PARTIAL
@@ -247,6 +248,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(employeeid, 'hll')
                 keys: 2000.0D (type: double), country (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 3 Data size: 1836 Basic stats: PARTIAL Column stats: PARTIAL
@@ -391,6 +393,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(employeeid, 'hll')
                 keys: employeesalary (type: double), country (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 31 Data size: 19216 Basic stats: PARTIAL Column stats: PARTIAL
@@ -533,6 +536,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(employeeid, 'hll'), compute_stats(employeename, 'hll')
                 keys: employeesalary (type: double), country (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 8 Data size: 8448 Basic stats: COMPLETE Column stats: PARTIAL
diff --git a/ql/src/test/results/clientpositive/columnstats_quoting.q.out b/ql/src/test/results/clientpositive/columnstats_quoting.q.out
index 9d2ff32..431dc74 100644
--- a/ql/src/test/results/clientpositive/columnstats_quoting.q.out
+++ b/ql/src/test/results/clientpositive/columnstats_quoting.q.out
@@ -37,6 +37,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(user id, 'hll'), compute_stats(user name, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 1056 Basic stats: COMPLETE Column stats: NONE
@@ -103,6 +104,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(user id, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/columnstats_tbllvl.q.out b/ql/src/test/results/clientpositive/columnstats_tbllvl.q.out
index 2f7fa9b..b46a7c7 100644
--- a/ql/src/test/results/clientpositive/columnstats_tbllvl.q.out
+++ b/ql/src/test/results/clientpositive/columnstats_tbllvl.q.out
@@ -67,6 +67,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(sourceip, 'hll'), compute_stats(avgtimeonsite, 'hll'), compute_stats(adrevenue, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1480 Basic stats: COMPLETE Column stats: NONE
@@ -127,6 +128,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(sourceip, 'hll'), compute_stats(avgtimeonsite, 'hll'), compute_stats(adrevenue, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1480 Basic stats: COMPLETE Column stats: NONE
@@ -269,6 +271,7 @@ STAGE PLANS:
               Statistics: Num rows: 55 Data size: 65391 Basic stats: COMPLETE Column stats: PARTIAL
               Group By Operator
                 aggregations: compute_stats(sourceip, 'hll'), compute_stats(desturl, 'hll'), compute_stats(visitdate, 'hll'), compute_stats(adrevenue, 'hll'), compute_stats(useragent, 'hll'), compute_stats(ccode, 'hll'), compute_stats(lcode, 'hll'), compute_stats(skeyword, 'hll'), compute_stats(avgtimeonsite, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
                 Statistics: Num rows: 1 Data size: 3928 Basic stats: COMPLETE Column stats: PARTIAL
@@ -414,6 +417,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 344 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(a, 'hll'), compute_stats(b, 'hll'), compute_stats(c, 'hll'), compute_stats(d, 'hll'), compute_stats(e, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 1 Data size: 2192 Basic stats: COMPLETE Column stats: NONE
@@ -565,6 +569,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(sourceip, 'hll'), compute_stats(avgtimeonsite, 'hll'), compute_stats(adrevenue, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1480 Basic stats: COMPLETE Column stats: NONE
@@ -625,6 +630,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(sourceip, 'hll'), compute_stats(avgtimeonsite, 'hll'), compute_stats(adrevenue, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1480 Basic stats: COMPLETE Column stats: NONE
@@ -767,6 +773,7 @@ STAGE PLANS:
               Statistics: Num rows: 55 Data size: 65391 Basic stats: COMPLETE Column stats: PARTIAL
               Group By Operator
                 aggregations: compute_stats(sourceip, 'hll'), compute_stats(desturl, 'hll'), compute_stats(visitdate, 'hll'), compute_stats(adrevenue, 'hll'), compute_stats(useragent, 'hll'), compute_stats(ccode, 'hll'), compute_stats(lcode, 'hll'), compute_stats(skeyword, 'hll'), compute_stats(avgtimeonsite, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
                 Statistics: Num rows: 1 Data size: 3928 Basic stats: COMPLETE Column stats: PARTIAL
diff --git a/ql/src/test/results/clientpositive/combine2.q.out b/ql/src/test/results/clientpositive/combine2.q.out
index 29f6977..1b1f5fc 100644
--- a/ql/src/test/results/clientpositive/combine2.q.out
+++ b/ql/src/test/results/clientpositive/combine2.q.out
@@ -210,6 +210,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: ds (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/comments.q.out b/ql/src/test/results/clientpositive/comments.q.out
index bca676f..b94e2ce 100644
--- a/ql/src/test/results/clientpositive/comments.q.out
+++ b/ql/src/test/results/clientpositive/comments.q.out
@@ -145,6 +145,7 @@ STAGE PLANS:
                   Statistics: Num rows: 166 Data size: 1328 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: count()
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/complex_alias.q.out b/ql/src/test/results/clientpositive/complex_alias.q.out
index 76dd12e..a808513 100644
--- a/ql/src/test/results/clientpositive/complex_alias.q.out
+++ b/ql/src/test/results/clientpositive/complex_alias.q.out
@@ -85,6 +85,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: col0 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
@@ -160,6 +161,7 @@ STAGE PLANS:
                   Statistics: Num rows: 2 Data size: 180 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     keys: _col0 (type: string), _col1 (type: int)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 90 Basic stats: COMPLETE Column stats: COMPLETE
@@ -183,6 +185,7 @@ STAGE PLANS:
                   Statistics: Num rows: 2 Data size: 180 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     keys: _col0 (type: string), _col1 (type: int)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 90 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/compute_stats_date.q.out b/ql/src/test/results/clientpositive/compute_stats_date.q.out
index e5f1884..d5eaf20 100644
--- a/ql/src/test/results/clientpositive/compute_stats_date.q.out
+++ b/ql/src/test/results/clientpositive/compute_stats_date.q.out
@@ -73,6 +73,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 56 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(fl_date, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 576 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/constGby.q.out b/ql/src/test/results/clientpositive/constGby.q.out
index 41af186..f98e5f2 100644
--- a/ql/src/test/results/clientpositive/constGby.q.out
+++ b/ql/src/test/results/clientpositive/constGby.q.out
@@ -48,6 +48,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: true (type: boolean)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/constant_prop_2.q.out b/ql/src/test/results/clientpositive/constant_prop_2.q.out
index a2549d9..5ed67dd 100644
--- a/ql/src/test/results/clientpositive/constant_prop_2.q.out
+++ b/ql/src/test/results/clientpositive/constant_prop_2.q.out
@@ -60,6 +60,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                 keys: '2008-04-08' (type: string), '11' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 1060 Basic stats: COMPLETE Column stats: PARTIAL
diff --git a/ql/src/test/results/clientpositive/constant_prop_3.q.out b/ql/src/test/results/clientpositive/constant_prop_3.q.out
index 59c1b7a..db73902 100644
--- a/ql/src/test/results/clientpositive/constant_prop_3.q.out
+++ b/ql/src/test/results/clientpositive/constant_prop_3.q.out
@@ -192,6 +192,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 88 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count(), count(s_suppkey)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE
@@ -292,6 +293,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count(DISTINCT _col1)
                   keys: _col3 (type: string), _col4 (type: string), _col5 (type: int), _col1 (type: int)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2, _col3, _col4
                   Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
@@ -364,6 +366,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 88 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: s_suppkey (type: int)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/constprog_dp.q.out b/ql/src/test/results/clientpositive/constprog_dp.q.out
index 8abc90a..3057986 100644
--- a/ql/src/test/results/clientpositive/constprog_dp.q.out
+++ b/ql/src/test/results/clientpositive/constprog_dp.q.out
@@ -58,6 +58,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                   keys: ds (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 1 Data size: 974 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/constprog_partitioner.q.out b/ql/src/test/results/clientpositive/constprog_partitioner.q.out
index b7be60f..4e497d2 100644
--- a/ql/src/test/results/clientpositive/constprog_partitioner.q.out
+++ b/ql/src/test/results/clientpositive/constprog_partitioner.q.out
@@ -127,6 +127,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: _col0 (type: int), _col1 (type: int)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/constprog_type.q.out b/ql/src/test/results/clientpositive/constprog_type.q.out
index 04b52a6..983d5ba 100644
--- a/ql/src/test/results/clientpositive/constprog_type.q.out
+++ b/ql/src/test/results/clientpositive/constprog_type.q.out
@@ -56,6 +56,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 48000 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(d, 'hll'), compute_stats(t, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 944 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/convert_decimal64_to_decimal.q.out b/ql/src/test/results/clientpositive/convert_decimal64_to_decimal.q.out
index 4afd5ad..ad15414 100644
--- a/ql/src/test/results/clientpositive/convert_decimal64_to_decimal.q.out
+++ b/ql/src/test/results/clientpositive/convert_decimal64_to_decimal.q.out
@@ -223,6 +223,7 @@ STAGE PLANS:
                         native: false
                         vectorProcessingMode: HASH
                         projectedOutputColumnNums: [0]
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -382,6 +383,7 @@ STAGE PLANS:
                         native: false
                         vectorProcessingMode: HASH
                         projectedOutputColumnNums: [0]
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/correlated_join_keys.q.out b/ql/src/test/results/clientpositive/correlated_join_keys.q.out
index 6923533..34aa35d 100644
--- a/ql/src/test/results/clientpositive/correlated_join_keys.q.out
+++ b/ql/src/test/results/clientpositive/correlated_join_keys.q.out
@@ -127,6 +127,7 @@ STAGE PLANS:
           Statistics: Num rows: 5 Data size: 40 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             aggregations: count()
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -225,6 +226,7 @@ STAGE PLANS:
           Statistics: Num rows: 20 Data size: 160 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             aggregations: count()
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer10.q.out b/ql/src/test/results/clientpositive/correlationoptimizer10.q.out
index ecd4cb0..c8ea187 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer10.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer10.q.out
@@ -72,6 +72,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: count()
             keys: _col0 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1
             Statistics: Num rows: 16 Data size: 1504 Basic stats: COMPLETE Column stats: COMPLETE
@@ -130,6 +131,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: _col0 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -268,6 +270,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: _col0 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -450,6 +453,7 @@ STAGE PLANS:
           Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             keys: _col0 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 27 Data size: 2349 Basic stats: COMPLETE Column stats: COMPLETE
@@ -786,6 +790,7 @@ STAGE PLANS:
           Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             keys: _col0 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 27 Data size: 2349 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer11.q.out b/ql/src/test/results/clientpositive/correlationoptimizer11.q.out
index 5fff9d2..044218b 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer11.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer11.q.out
@@ -105,6 +105,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: count()
             keys: _col0 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1
             Statistics: Num rows: 7 Data size: 665 Basic stats: COMPLETE Column stats: COMPLETE
@@ -361,6 +362,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: count()
             keys: _col0 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1
             Statistics: Num rows: 16 Data size: 1504 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer13.q.out b/ql/src/test/results/clientpositive/correlationoptimizer13.q.out
index ebd3cad..64b784e 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer13.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer13.q.out
@@ -59,6 +59,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: c1 (type: int), c3 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 171 Data size: 17613 Basic stats: COMPLETE Column stats: COMPLETE
@@ -82,6 +83,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: c1 (type: int), c3 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 57 Data size: 5871 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer14.q.out b/ql/src/test/results/clientpositive/correlationoptimizer14.q.out
index 74956d6..e3cda19 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer14.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer14.q.out
@@ -1371,6 +1371,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 12 Data size: 1128 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1515,6 +1516,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 12 Data size: 1128 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer15.q.out b/ql/src/test/results/clientpositive/correlationoptimizer15.q.out
index 7492cb9..ddbe457 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer15.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer15.q.out
@@ -73,6 +73,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: count()
             keys: _col0 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1
             Statistics: Num rows: 16 Data size: 1504 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer7.q.out b/ql/src/test/results/clientpositive/correlationoptimizer7.q.out
index 7793754..1365e86 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer7.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer7.q.out
@@ -77,6 +77,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 2 Data size: 190 Basic stats: COMPLETE Column stats: COMPLETE
@@ -285,6 +286,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 2 Data size: 190 Basic stats: COMPLETE Column stats: COMPLETE
@@ -460,6 +462,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 2 Data size: 190 Basic stats: COMPLETE Column stats: COMPLETE
@@ -668,6 +671,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 2 Data size: 190 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer8.q.out b/ql/src/test/results/clientpositive/correlationoptimizer8.q.out
index 14784bf..69a6670 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer8.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer8.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
@@ -138,6 +139,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
@@ -245,6 +247,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
@@ -264,6 +267,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
@@ -458,6 +462,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
@@ -550,6 +555,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: value (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 4 Data size: 388 Basic stats: COMPLETE Column stats: COMPLETE
@@ -677,6 +683,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
@@ -700,6 +707,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: value (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 4 Data size: 388 Basic stats: COMPLETE Column stats: COMPLETE
@@ -898,6 +906,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
@@ -994,6 +1003,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 74 Data size: 13764 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1073,6 +1083,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1177,6 +1188,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer9.q.out b/ql/src/test/results/clientpositive/correlationoptimizer9.q.out
index 865890f..ac296db 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer9.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer9.q.out
@@ -60,6 +60,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: c1 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 34 Data size: 408 Basic stats: COMPLETE Column stats: COMPLETE
@@ -135,6 +136,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: c2 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 34 Data size: 408 Basic stats: COMPLETE Column stats: COMPLETE
@@ -230,6 +232,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: c1 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 34 Data size: 408 Basic stats: COMPLETE Column stats: COMPLETE
@@ -249,6 +252,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: c2 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 34 Data size: 408 Basic stats: COMPLETE Column stats: COMPLETE
@@ -389,6 +393,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: c1 (type: int), c3 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 171 Data size: 17613 Basic stats: COMPLETE Column stats: COMPLETE
@@ -468,6 +473,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: c1 (type: int), c3 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 57 Data size: 5871 Basic stats: COMPLETE Column stats: COMPLETE
@@ -563,6 +569,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: c1 (type: int), c3 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 171 Data size: 17613 Basic stats: COMPLETE Column stats: COMPLETE
@@ -586,6 +593,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: c1 (type: int), c3 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 57 Data size: 5871 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/count_dist_rewrite.q.out b/ql/src/test/results/clientpositive/count_dist_rewrite.q.out
index 50f5bf8..c882962 100644
--- a/ql/src/test/results/clientpositive/count_dist_rewrite.q.out
+++ b/ql/src/test/results/clientpositive/count_dist_rewrite.q.out
@@ -24,6 +24,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -116,6 +117,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 67750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -210,6 +212,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max(key), min(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col3
                 Statistics: Num rows: 250 Data size: 113750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -304,6 +307,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max(key), min(key), sum(key), count(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col3, _col4, _col5
                 Statistics: Num rows: 250 Data size: 117750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -401,6 +405,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -507,6 +512,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(), count(key), max(value), max(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col4, _col5
                 Statistics: Num rows: 250 Data size: 117750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -613,6 +619,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(), sum(_col2), sum(_col1), count(_col0)
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col3, _col4, _col5
                 Statistics: Num rows: 250 Data size: 29750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -738,6 +745,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(_col0), count(_col0), max(_col0), min(_col0), sum(_col2), sum(_col1)
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col4, _col5, _col6, _col7
                 Statistics: Num rows: 250 Data size: 146000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -852,6 +860,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max(key), count(DISTINCT key), min(key), sum(key), count(key)
                 keys: value (type: string), key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
                 Statistics: Num rows: 250 Data size: 142500 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/cp_sel.q.out b/ql/src/test/results/clientpositive/cp_sel.q.out
index 76aebda..052db9e 100644
--- a/ql/src/test/results/clientpositive/cp_sel.q.out
+++ b/ql/src/test/results/clientpositive/cp_sel.q.out
@@ -140,6 +140,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
               keys: ds (type: string), hr (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2, _col3
               Statistics: Num rows: 1 Data size: 1058 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/create_genericudaf.q.out b/ql/src/test/results/clientpositive/create_genericudaf.q.out
index 83766af..ca877bf 100644
--- a/ql/src/test/results/clientpositive/create_genericudaf.q.out
+++ b/ql/src/test/results/clientpositive/create_genericudaf.q.out
@@ -51,6 +51,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: test_avg(1), test_avg(_col1)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 332 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/cross_product_check_1.q.out b/ql/src/test/results/clientpositive/cross_product_check_1.q.out
index 462cc86..723dfc9 100644
--- a/ql/src/test/results/clientpositive/cross_product_check_1.q.out
+++ b/ql/src/test/results/clientpositive/cross_product_check_1.q.out
@@ -274,6 +274,7 @@ STAGE PLANS:
           Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             keys: _col0 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
@@ -401,6 +402,7 @@ STAGE PLANS:
           Statistics: Num rows: 100 Data size: 8700 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             keys: _col0 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
@@ -511,6 +513,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -609,6 +612,7 @@ STAGE PLANS:
           Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             keys: _col0 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/cross_product_check_2.q.out b/ql/src/test/results/clientpositive/cross_product_check_2.q.out
index 012a37b..f646fb6 100644
--- a/ql/src/test/results/clientpositive/cross_product_check_2.q.out
+++ b/ql/src/test/results/clientpositive/cross_product_check_2.q.out
@@ -276,6 +276,7 @@ STAGE PLANS:
                   Statistics: Num rows: 20 Data size: 1720 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     keys: _col0 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
@@ -407,6 +408,7 @@ STAGE PLANS:
                 Statistics: Num rows: 100 Data size: 8600 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: _col0 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
@@ -522,6 +524,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -699,6 +702,7 @@ STAGE PLANS:
                   Statistics: Num rows: 20 Data size: 1720 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     keys: _col0 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/ctas.q.out b/ql/src/test/results/clientpositive/ctas.q.out
index c4168b1..1074730 100644
--- a/ql/src/test/results/clientpositive/ctas.q.out
+++ b/ql/src/test/results/clientpositive/ctas.q.out
@@ -96,6 +96,7 @@ STAGE PLANS:
               Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
@@ -298,6 +299,7 @@ STAGE PLANS:
               Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
@@ -500,6 +502,7 @@ STAGE PLANS:
               Statistics: Num rows: 10 Data size: 1920 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -766,6 +769,7 @@ STAGE PLANS:
               Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
@@ -970,6 +974,7 @@ STAGE PLANS:
               Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/ctas_colname.q.out b/ql/src/test/results/clientpositive/ctas_colname.q.out
index b875615..bded2e2 100644
--- a/ql/src/test/results/clientpositive/ctas_colname.q.out
+++ b/ql/src/test/results/clientpositive/ctas_colname.q.out
@@ -59,6 +59,7 @@ STAGE PLANS:
               Statistics: Num rows: 20 Data size: 7400 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll'), compute_stats(col3, 'hll'), compute_stats(col4, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 1744 Basic stats: COMPLETE Column stats: COMPLETE
@@ -269,6 +270,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4475 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll'), compute_stats(col3, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
@@ -511,6 +513,7 @@ STAGE PLANS:
               Statistics: Num rows: 20 Data size: 7240 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll'), compute_stats(col3, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1320 Basic stats: COMPLETE Column stats: COMPLETE
@@ -691,6 +694,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4575 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll'), compute_stats(col3, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
@@ -888,6 +892,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(value)
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -919,6 +924,7 @@ STAGE PLANS:
             Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll'), compute_stats(col3, 'hll')
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2
               Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1373,6 +1379,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(value)
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 83 Data size: 15438 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1404,6 +1411,7 @@ STAGE PLANS:
             Statistics: Num rows: 83 Data size: 15438 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll'), compute_stats(col3, 'hll')
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2
               Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1554,6 +1562,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max(value)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 83 Data size: 22493 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1592,6 +1601,7 @@ STAGE PLANS:
                 Statistics: Num rows: 83 Data size: 22493 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/ctas_uses_database_location.q.out b/ql/src/test/results/clientpositive/ctas_uses_database_location.q.out
index ddc8368..b537450 100644
--- a/ql/src/test/results/clientpositive/ctas_uses_database_location.q.out
+++ b/ql/src/test/results/clientpositive/ctas_uses_database_location.q.out
@@ -60,6 +60,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/decimal_precision.q.out b/ql/src/test/results/clientpositive/decimal_precision.q.out
index 014a364..c0d06ca 100644
--- a/ql/src/test/results/clientpositive/decimal_precision.q.out
+++ b/ql/src/test/results/clientpositive/decimal_precision.q.out
@@ -547,6 +547,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: sum(dec), count(dec)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 232 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/decimal_udf.q.out b/ql/src/test/results/clientpositive/decimal_udf.q.out
index 6f0fc29..b2a5837 100644
--- a/ql/src/test/results/clientpositive/decimal_udf.q.out
+++ b/ql/src/test/results/clientpositive/decimal_udf.q.out
@@ -1372,6 +1372,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(key), count(key)
                 keys: value (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
@@ -1977,6 +1978,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(_col3), sum(_col2), count(_col1)
                 keys: _col0 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
@@ -2063,6 +2065,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(_col3), sum(_col2), count(_col1)
                 keys: _col0 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
@@ -2148,6 +2151,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: histogram_numeric(_col0, 3)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 272 Basic stats: COMPLETE Column stats: NONE
@@ -2209,6 +2213,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: min(key)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE
@@ -2271,6 +2276,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: max(key)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE
@@ -2333,6 +2339,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: count(key)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 120 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/display_colstats_tbllvl.q.out b/ql/src/test/results/clientpositive/display_colstats_tbllvl.q.out
index 56467f5..386b7d8 100644
--- a/ql/src/test/results/clientpositive/display_colstats_tbllvl.q.out
+++ b/ql/src/test/results/clientpositive/display_colstats_tbllvl.q.out
@@ -92,6 +92,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(sourceip, 'hll'), compute_stats(avgtimeonsite, 'hll'), compute_stats(adrevenue, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1480 Basic stats: COMPLETE Column stats: NONE
@@ -152,6 +153,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(sourceip, 'hll'), compute_stats(avgtimeonsite, 'hll'), compute_stats(adrevenue, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1480 Basic stats: COMPLETE Column stats: NONE
@@ -390,6 +392,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 344 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(a, 'hll'), compute_stats(b, 'hll'), compute_stats(c, 'hll'), compute_stats(d, 'hll'), compute_stats(e, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 1 Data size: 2192 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/distinct_stats.q.out b/ql/src/test/results/clientpositive/distinct_stats.q.out
index b2dfba6..24101d6 100644
--- a/ql/src/test/results/clientpositive/distinct_stats.q.out
+++ b/ql/src/test/results/clientpositive/distinct_stats.q.out
@@ -54,6 +54,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT b)
                 keys: a (type: string), b (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -114,6 +115,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: b (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 250 Data size: 22750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -171,6 +173,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/distinct_windowing.q.out b/ql/src/test/results/clientpositive/distinct_windowing.q.out
index 27d74e0..8070877 100644
--- a/ql/src/test/results/clientpositive/distinct_windowing.q.out
+++ b/ql/src/test/results/clientpositive/distinct_windowing.q.out
@@ -104,6 +104,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: _col0 (type: tinyint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -227,6 +228,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: _col0 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -361,6 +363,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: _col0 (type: int), _col1 (type: tinyint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/distinct_windowing_no_cbo.q.out b/ql/src/test/results/clientpositive/distinct_windowing_no_cbo.q.out
index c495c29..ad4b62d 100644
--- a/ql/src/test/results/clientpositive/distinct_windowing_no_cbo.q.out
+++ b/ql/src/test/results/clientpositive/distinct_windowing_no_cbo.q.out
@@ -104,6 +104,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: first_value_window_0 (type: tinyint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -227,6 +228,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: last_value_window_0 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -361,6 +363,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: last_value_window_0 (type: int), first_value_window_1 (type: tinyint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -504,6 +507,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max(f)
                 keys: si (type: smallint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -718,6 +722,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: _col1 (type: smallint), rank_window_0 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out b/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out
index fd4fb05..16ba235 100644
--- a/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out
+++ b/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out
@@ -216,6 +216,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
                     Group By Operator
                       aggregations: count()
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
@@ -398,6 +399,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count(cstring2), sum($f3)
                     keys: extract (type: timestamp with local time zone), cstring1 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3
                     Statistics: Num rows: 9173 Data size: 3625856 Basic stats: COMPLETE Column stats: NONE
@@ -469,6 +471,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count(cdouble), sum($f3)
                     keys: extract (type: timestamp with local time zone), cstring1 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3
                     Statistics: Num rows: 9173 Data size: 2091840 Basic stats: COMPLETE Column stats: NONE
@@ -540,6 +543,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count(cstring2), sum($f3)
                     keys: extract (type: timestamp with local time zone), cstring1 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3
                     Statistics: Num rows: 9173 Data size: 3625856 Basic stats: COMPLETE Column stats: NONE
@@ -611,6 +615,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count(vc), sum($f3)
                     keys: extract (type: timestamp with local time zone), cstring1 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3
                     Statistics: Num rows: 9173 Data size: 3625856 Basic stats: COMPLETE Column stats: NONE
@@ -681,6 +686,7 @@ STAGE PLANS:
                   Statistics: Num rows: 9173 Data size: 1603744 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: count(cstring2)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
@@ -744,6 +750,7 @@ STAGE PLANS:
                   Statistics: Num rows: 9173 Data size: 1673472 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: count(cstring2), sum($f1)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 208 Basic stats: COMPLETE Column stats: NONE
@@ -807,6 +814,7 @@ STAGE PLANS:
                   Statistics: Num rows: 9173 Data size: 1708336 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: count(vc), sum($f1), min($f2)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2
                     Statistics: Num rows: 1 Data size: 216 Basic stats: COMPLETE Column stats: NONE
@@ -872,6 +880,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
                     Group By Operator
                       aggregations: count()
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
@@ -962,6 +971,7 @@ STAGE PLANS:
                   Statistics: Num rows: 9173 Data size: 1603744 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: count(cstring1)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
@@ -2042,6 +2052,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 0 Basic stats: PARTIAL Column stats: COMPLETE
                     Group By Operator
                       aggregations: count()
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
@@ -2322,6 +2333,7 @@ STAGE PLANS:
                   Statistics: Num rows: 9173 Data size: 1603744 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: count(cstring1)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
@@ -2398,6 +2410,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 69728 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: max(_col0)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -2465,6 +2478,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 34864 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: count(cint)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/except_all.q.out b/ql/src/test/results/clientpositive/except_all.q.out
index fdc9ace..24a7dfb 100644
--- a/ql/src/test/results/clientpositive/except_all.q.out
+++ b/ql/src/test/results/clientpositive/except_all.q.out
@@ -238,6 +238,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -279,6 +280,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col4), sum(_col3)
                   keys: _col0 (type: string), _col1 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2, _col3
                   Statistics: Num rows: 250 Data size: 48500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -298,6 +300,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col4), sum(_col3)
                   keys: _col0 (type: string), _col1 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2, _col3
                   Statistics: Num rows: 250 Data size: 48500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -346,6 +349,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -421,6 +425,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -462,6 +467,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col4), sum(_col3)
                   keys: _col0 (type: string), _col1 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2, _col3
                   Statistics: Num rows: 250 Data size: 48500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -481,6 +487,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col4), sum(_col3)
                   keys: _col0 (type: string), _col1 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2, _col3
                   Statistics: Num rows: 250 Data size: 48500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -511,6 +518,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: col1 (type: string), col2 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -563,6 +571,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col2), sum(_col3)
                   keys: _col0 (type: string), _col1 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2, _col3
                   Statistics: Num rows: 125 Data size: 24250 Basic stats: COMPLETE Column stats: COMPLETE
@@ -582,6 +591,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col2), sum(_col3)
                   keys: _col0 (type: string), _col1 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2, _col3
                   Statistics: Num rows: 125 Data size: 24250 Basic stats: COMPLETE Column stats: COMPLETE
@@ -635,6 +645,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col2), sum(_col3)
                   keys: _col0 (type: string), _col1 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2, _col3
                   Statistics: Num rows: 135 Data size: 26190 Basic stats: COMPLETE Column stats: COMPLETE
@@ -654,6 +665,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col2), sum(_col3)
                   keys: _col0 (type: string), _col1 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2, _col3
                   Statistics: Num rows: 135 Data size: 26190 Basic stats: COMPLETE Column stats: COMPLETE
@@ -698,6 +710,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -739,6 +752,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -780,6 +794,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -851,6 +866,7 @@ STAGE PLANS:
               Statistics: Num rows: 5 Data size: 20 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: value (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -896,6 +912,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col1), sum(_col2)
                   keys: _col0 (type: int)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 2 Data size: 40 Basic stats: COMPLETE Column stats: COMPLETE
@@ -915,6 +932,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col1), sum(_col2)
                   keys: _col0 (type: int)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 2 Data size: 40 Basic stats: COMPLETE Column stats: COMPLETE
@@ -958,6 +976,7 @@ STAGE PLANS:
               Statistics: Num rows: 5 Data size: 20 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/exec_parallel_column_stats.q.out b/ql/src/test/results/clientpositive/exec_parallel_column_stats.q.out
index 84aca38..cc785d4 100644
--- a/ql/src/test/results/clientpositive/exec_parallel_column_stats.q.out
+++ b/ql/src/test/results/clientpositive/exec_parallel_column_stats.q.out
@@ -37,6 +37,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/explain_ddl.q.out b/ql/src/test/results/clientpositive/explain_ddl.q.out
index fa98560..c52eda1 100644
--- a/ql/src/test/results/clientpositive/explain_ddl.q.out
+++ b/ql/src/test/results/clientpositive/explain_ddl.q.out
@@ -88,6 +88,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
@@ -216,6 +217,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
@@ -348,6 +350,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
@@ -476,6 +479,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
@@ -688,6 +692,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/explain_logical.q.out b/ql/src/test/results/clientpositive/explain_logical.q.out
index 1ff9a25..248a6f2 100644
--- a/ql/src/test/results/clientpositive/explain_logical.q.out
+++ b/ql/src/test/results/clientpositive/explain_logical.q.out
@@ -89,6 +89,7 @@ srcpart
       Group By Operator (GBY_3)
         aggregations: count()
         keys: key (type: string)
+        minReductionHashAggr: 0.99
         mode: hash
         outputColumnNames: _col0, _col1
         Statistics: Num rows: 316 Data size: 30020 Basic stats: COMPLETE Column stats: COMPLETE
@@ -134,6 +135,7 @@ src
       Group By Operator (GBY_2)
         aggregations: count()
         keys: key (type: string)
+        minReductionHashAggr: 0.99
         mode: hash
         outputColumnNames: _col0, _col1
         Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -603,6 +605,7 @@ $hdt$_0:src
       Group By Operator (GBY_3)
         aggregations: count(value)
         keys: key (type: string)
+        minReductionHashAggr: 0.99
         mode: hash
         outputColumnNames: _col0, _col1
         Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/explain_outputs.q.out b/ql/src/test/results/clientpositive/explain_outputs.q.out
index ab88fcc..d63c656 100644
--- a/ql/src/test/results/clientpositive/explain_outputs.q.out
+++ b/ql/src/test/results/clientpositive/explain_outputs.q.out
@@ -96,6 +96,7 @@ STAGE PLANS:
           Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             aggregations: sum(_col0)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -209,6 +210,7 @@ STAGE PLANS:
           Statistics: Num rows: 2/1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             aggregations: sum(_col0)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1/1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -324,6 +326,7 @@ STAGE PLANS:
           Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             aggregations: sum(_col0)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/explain_rearrange.q.out b/ql/src/test/results/clientpositive/explain_rearrange.q.out
index 5e9e9ba..a649ee5 100644
--- a/ql/src/test/results/clientpositive/explain_rearrange.q.out
+++ b/ql/src/test/results/clientpositive/explain_rearrange.q.out
@@ -93,6 +93,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: int)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Reduce Output Operator
@@ -268,6 +269,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: int)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Reduce Output Operator
@@ -373,6 +375,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: int)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Reduce Output Operator
@@ -548,6 +551,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: int)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Reduce Output Operator
@@ -653,6 +657,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: int)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Reduce Output Operator
@@ -697,6 +702,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: int)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Reduce Output Operator
@@ -933,6 +939,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: int)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Reduce Output Operator
@@ -977,6 +984,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: count()
                     keys: _col0 (type: int)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Reduce Output Operator
diff --git a/ql/src/test/results/clientpositive/extrapolate_part_stats_date.q.out b/ql/src/test/results/clientpositive/extrapolate_part_stats_date.q.out
index 22075f1..ca6a832 100644
--- a/ql/src/test/results/clientpositive/extrapolate_part_stats_date.q.out
+++ b/ql/src/test/results/clientpositive/extrapolate_part_stats_date.q.out
@@ -84,6 +84,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 56 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/fetch_aggregation.q.out b/ql/src/test/results/clientpositive/fetch_aggregation.q.out
index f6371c1..8949995 100644
--- a/ql/src/test/results/clientpositive/fetch_aggregation.q.out
+++ b/ql/src/test/results/clientpositive/fetch_aggregation.q.out
@@ -25,6 +25,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: count(_col0), sum(_col0), min(_col0), max(_col0), sum(_col2), sum(_col1)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
                 Statistics: Num rows: 1 Data size: 400 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/filter_aggr.q.out b/ql/src/test/results/clientpositive/filter_aggr.q.out
index 633156e..a4fe940 100644
--- a/ql/src/test/results/clientpositive/filter_aggr.q.out
+++ b/ql/src/test/results/clientpositive/filter_aggr.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/filter_cond_pushdown2.q.out b/ql/src/test/results/clientpositive/filter_cond_pushdown2.q.out
index b907c05..bd1c89f 100644
--- a/ql/src/test/results/clientpositive/filter_cond_pushdown2.q.out
+++ b/ql/src/test/results/clientpositive/filter_cond_pushdown2.q.out
@@ -122,6 +122,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
                 Group By Operator
                   keys: _col0 (type: int), _col1 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
@@ -171,6 +172,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: count(), sum(if(_col3 is not null, 1, 0))
             keys: _col0 (type: int)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2
             Statistics: Num rows: 1 Data size: 211 Basic stats: COMPLETE Column stats: NONE
@@ -244,6 +246,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
                 Group By Operator
                   keys: _col0 (type: int), _col1 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/filter_cond_pushdown_HIVE_15647.q.out b/ql/src/test/results/clientpositive/filter_cond_pushdown_HIVE_15647.q.out
index 10ab462..c3eebcd 100644
--- a/ql/src/test/results/clientpositive/filter_cond_pushdown_HIVE_15647.q.out
+++ b/ql/src/test/results/clientpositive/filter_cond_pushdown_HIVE_15647.q.out
@@ -73,6 +73,7 @@ STAGE PLANS:
           Statistics: Num rows: 1 Data size: 13 Basic stats: COMPLETE Column stats: NONE
           Group By Operator
             aggregations: count()
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -171,6 +172,7 @@ STAGE PLANS:
           Statistics: Num rows: 1 Data size: 13 Basic stats: COMPLETE Column stats: NONE
           Group By Operator
             aggregations: count()
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -269,6 +271,7 @@ STAGE PLANS:
           Statistics: Num rows: 1 Data size: 13 Basic stats: COMPLETE Column stats: NONE
           Group By Operator
             aggregations: count()
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -367,6 +370,7 @@ STAGE PLANS:
           Statistics: Num rows: 1 Data size: 13 Basic stats: COMPLETE Column stats: NONE
           Group By Operator
             aggregations: count()
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/filter_union.q.out b/ql/src/test/results/clientpositive/filter_union.q.out
index e22467c..29a8816 100644
--- a/ql/src/test/results/clientpositive/filter_union.q.out
+++ b/ql/src/test/results/clientpositive/filter_union.q.out
@@ -56,6 +56,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -272,6 +273,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -423,6 +425,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -506,6 +509,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -588,6 +592,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 95 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/fm-sketch.q.out b/ql/src/test/results/clientpositive/fm-sketch.q.out
index 7165bcc..5653400 100644
--- a/ql/src/test/results/clientpositive/fm-sketch.q.out
+++ b/ql/src/test/results/clientpositive/fm-sketch.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'fm', 16)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
@@ -144,6 +145,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'fm', 16)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/fold_case.q.out b/ql/src/test/results/clientpositive/fold_case.q.out
index 3a74337..f4ef28d 100644
--- a/ql/src/test/results/clientpositive/fold_case.q.out
+++ b/ql/src/test/results/clientpositive/fold_case.q.out
@@ -27,6 +27,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 174 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -84,6 +85,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -140,6 +142,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -217,6 +220,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 174 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -273,6 +277,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -330,6 +335,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 174 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -476,6 +482,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/fold_eq_with_case_when.q.out b/ql/src/test/results/clientpositive/fold_eq_with_case_when.q.out
index aa2da82..7bd756a 100644
--- a/ql/src/test/results/clientpositive/fold_eq_with_case_when.q.out
+++ b/ql/src/test/results/clientpositive/fold_eq_with_case_when.q.out
@@ -56,6 +56,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col1), sum(1)
                   keys: _col0 (type: int)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 3 Data size: 60 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/fp_literal_arithmetic.q.out b/ql/src/test/results/clientpositive/fp_literal_arithmetic.q.out
index da64fe9..bbb0d6d 100644
--- a/ql/src/test/results/clientpositive/fp_literal_arithmetic.q.out
+++ b/ql/src/test/results/clientpositive/fp_literal_arithmetic.q.out
@@ -31,6 +31,7 @@ STAGE PLANS:
                 Statistics: Num rows: 11 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: sum(l_extendedprice)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -103,6 +104,7 @@ STAGE PLANS:
                 Statistics: Num rows: 11 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: sum(l_extendedprice)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -212,6 +214,7 @@ STAGE PLANS:
                 Statistics: Num rows: 11 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: sum(l_extendedprice)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -284,6 +287,7 @@ STAGE PLANS:
                 Statistics: Num rows: 11 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: sum(l_extendedprice)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/gby_star.q.out b/ql/src/test/results/clientpositive/gby_star.q.out
index 93c100c..9e34bcd 100644
--- a/ql/src/test/results/clientpositive/gby_star.q.out
+++ b/ql/src/test/results/clientpositive/gby_star.q.out
@@ -26,6 +26,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(key)
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -106,6 +107,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(key)
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 83 Data size: 15438 Basic stats: COMPLETE Column stats: COMPLETE
@@ -186,6 +188,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(key)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
@@ -303,6 +306,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: sum(_col1)
             keys: _col0 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1
             Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby13.q.out b/ql/src/test/results/clientpositive/groupby13.q.out
index c6a8d7b..d7fcc68 100644
--- a/ql/src/test/results/clientpositive/groupby13.q.out
+++ b/ql/src/test/results/clientpositive/groupby13.q.out
@@ -54,6 +54,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max(_col2)
                 keys: _col0 (type: int), _col1 (type: int), _col2 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby1_limit.q.out b/ql/src/test/results/clientpositive/groupby1_limit.q.out
index 4894f4f..db5fc03 100644
--- a/ql/src/test/results/clientpositive/groupby1_limit.q.out
+++ b/ql/src/test/results/clientpositive/groupby1_limit.q.out
@@ -36,6 +36,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(_col1)
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby1_map.q.out b/ql/src/test/results/clientpositive/groupby1_map.q.out
index de41004..0d18dcc 100644
--- a/ql/src/test/results/clientpositive/groupby1_map.q.out
+++ b/ql/src/test/results/clientpositive/groupby1_map.q.out
@@ -36,6 +36,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(_col1)
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -70,6 +71,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 3000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby1_map_nomap.q.out b/ql/src/test/results/clientpositive/groupby1_map_nomap.q.out
index 72b4155..3b55b4e 100644
--- a/ql/src/test/results/clientpositive/groupby1_map_nomap.q.out
+++ b/ql/src/test/results/clientpositive/groupby1_map_nomap.q.out
@@ -36,6 +36,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(_col1)
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -70,6 +71,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 3000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby1_map_skew.q.out b/ql/src/test/results/clientpositive/groupby1_map_skew.q.out
index 7e2b113..49e1831 100644
--- a/ql/src/test/results/clientpositive/groupby1_map_skew.q.out
+++ b/ql/src/test/results/clientpositive/groupby1_map_skew.q.out
@@ -37,6 +37,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(_col1)
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -96,6 +97,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 3000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby2_limit.q.out b/ql/src/test/results/clientpositive/groupby2_limit.q.out
index 1c80967..a146ee5 100644
--- a/ql/src/test/results/clientpositive/groupby2_limit.q.out
+++ b/ql/src/test/results/clientpositive/groupby2_limit.q.out
@@ -27,6 +27,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(_col1)
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby2_map.q.out b/ql/src/test/results/clientpositive/groupby2_map.q.out
index d3c4870..7e31d87 100644
--- a/ql/src/test/results/clientpositive/groupby2_map.q.out
+++ b/ql/src/test/results/clientpositive/groupby2_map.q.out
@@ -38,6 +38,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT _col1), sum(_col1)
                 keys: _col0 (type: string), _col1 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 250 Data size: 96000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -72,6 +73,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 93000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(c1, 'hll'), compute_stats(c2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby2_map_multi_distinct.q.out b/ql/src/test/results/clientpositive/groupby2_map_multi_distinct.q.out
index d9b0d05..6c01131 100644
--- a/ql/src/test/results/clientpositive/groupby2_map_multi_distinct.q.out
+++ b/ql/src/test/results/clientpositive/groupby2_map_multi_distinct.q.out
@@ -38,6 +38,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT _col1), sum(_col1), sum(DISTINCT _col1), count(_col2)
                 keys: _col0 (type: string), _col1 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
                 Statistics: Num rows: 250 Data size: 100000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -72,6 +73,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 95000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(c1, 'hll'), compute_stats(c2, 'hll'), compute_stats(c3, 'hll'), compute_stats(c4, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 1 Data size: 2152 Basic stats: COMPLETE Column stats: COMPLETE
@@ -188,6 +190,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT _col0), sum(_col1), sum(DISTINCT _col1), count(_col2)
                 keys: _col0 (type: string), _col1 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
                 Statistics: Num rows: 250 Data size: 100000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -222,6 +225,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 95000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(c1, 'hll'), compute_stats(c2, 'hll'), compute_stats(c3, 'hll'), compute_stats(c4, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 1 Data size: 2152 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby2_map_skew.q.out b/ql/src/test/results/clientpositive/groupby2_map_skew.q.out
index 5b6c053..ff9fb26 100644
--- a/ql/src/test/results/clientpositive/groupby2_map_skew.q.out
+++ b/ql/src/test/results/clientpositive/groupby2_map_skew.q.out
@@ -39,6 +39,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT _col1), sum(_col1)
                 keys: _col0 (type: string), _col1 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 250 Data size: 96000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -98,6 +99,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 93000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(c1, 'hll'), compute_stats(c2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby3_map.q.out b/ql/src/test/results/clientpositive/groupby3_map.q.out
index 5b66bb2..66e6844 100644
--- a/ql/src/test/results/clientpositive/groupby3_map.q.out
+++ b/ql/src/test/results/clientpositive/groupby3_map.q.out
@@ -55,6 +55,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(_col0), count(_col0), sum(DISTINCT _col0), count(DISTINCT _col0), max(_col0), min(_col0), sum(_col2), sum(_col1)
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
                 Statistics: Num rows: 250 Data size: 150000 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby3_map_multi_distinct.q.out b/ql/src/test/results/clientpositive/groupby3_map_multi_distinct.q.out
index 39059da..643594e 100644
--- a/ql/src/test/results/clientpositive/groupby3_map_multi_distinct.q.out
+++ b/ql/src/test/results/clientpositive/groupby3_map_multi_distinct.q.out
@@ -59,6 +59,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(_col0), count(_col0), sum(DISTINCT _col0), count(DISTINCT _col0), max(_col0), min(_col0), sum(_col2), sum(_col1)
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
                 Statistics: Num rows: 250 Data size: 150000 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby3_map_skew.q.out b/ql/src/test/results/clientpositive/groupby3_map_skew.q.out
index 7203248..fb30755 100644
--- a/ql/src/test/results/clientpositive/groupby3_map_skew.q.out
+++ b/ql/src/test/results/clientpositive/groupby3_map_skew.q.out
@@ -56,6 +56,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(substr(value, 5)), avg(substr(value, 5)), avg(DISTINCT substr(value, 5)), max(substr(value, 5)), min(substr(value, 5)), std(substr(value, 5)), stddev_samp(substr(value, 5)), variance(substr(value, 5)), var_samp(substr(value, 5))
                 keys: substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9
                 Statistics: Num rows: 250 Data size: 348000 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby4_map.q.out b/ql/src/test/results/clientpositive/groupby4_map.q.out
index c5fec0b..5d94397 100644
--- a/ql/src/test/results/clientpositive/groupby4_map.q.out
+++ b/ql/src/test/results/clientpositive/groupby4_map.q.out
@@ -32,6 +32,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: count()
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby4_map_skew.q.out b/ql/src/test/results/clientpositive/groupby4_map_skew.q.out
index c96e0de..be5f9e3 100644
--- a/ql/src/test/results/clientpositive/groupby4_map_skew.q.out
+++ b/ql/src/test/results/clientpositive/groupby4_map_skew.q.out
@@ -32,6 +32,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: count()
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby5_map.q.out b/ql/src/test/results/clientpositive/groupby5_map.q.out
index b26e6da..b31b872 100644
--- a/ql/src/test/results/clientpositive/groupby5_map.q.out
+++ b/ql/src/test/results/clientpositive/groupby5_map.q.out
@@ -34,6 +34,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: sum(key)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby5_map_skew.q.out b/ql/src/test/results/clientpositive/groupby5_map_skew.q.out
index 69f553c..c628432 100644
--- a/ql/src/test/results/clientpositive/groupby5_map_skew.q.out
+++ b/ql/src/test/results/clientpositive/groupby5_map_skew.q.out
@@ -34,6 +34,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: sum(key)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby6_map.q.out b/ql/src/test/results/clientpositive/groupby6_map.q.out
index 50370db..3cdb17a 100644
--- a/ql/src/test/results/clientpositive/groupby6_map.q.out
+++ b/ql/src/test/results/clientpositive/groupby6_map.q.out
@@ -37,6 +37,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 250 Data size: 46000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -66,6 +67,7 @@ STAGE PLANS:
             Statistics: Num rows: 250 Data size: 46000 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: compute_stats(c1, 'hll')
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0
               Statistics: Num rows: 1 Data size: 440 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby6_map_skew.q.out b/ql/src/test/results/clientpositive/groupby6_map_skew.q.out
index a1124b3..861ece6 100644
--- a/ql/src/test/results/clientpositive/groupby6_map_skew.q.out
+++ b/ql/src/test/results/clientpositive/groupby6_map_skew.q.out
@@ -38,6 +38,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 250 Data size: 46000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -90,6 +91,7 @@ STAGE PLANS:
             Statistics: Num rows: 250 Data size: 46000 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: compute_stats(c1, 'hll')
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0
               Statistics: Num rows: 1 Data size: 440 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby7_map.q.out b/ql/src/test/results/clientpositive/groupby7_map.q.out
index fe67667..e71ee7a 100644
--- a/ql/src/test/results/clientpositive/groupby7_map.q.out
+++ b/ql/src/test/results/clientpositive/groupby7_map.q.out
@@ -54,6 +54,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(substr(value, 5))
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -70,6 +71,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(substr(value, 5))
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -104,6 +106,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 47000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -199,6 +202,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 47000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby7_map_multi_single_reducer.q.out b/ql/src/test/results/clientpositive/groupby7_map_multi_single_reducer.q.out
index ee11ebc..5d0d2c4 100644
--- a/ql/src/test/results/clientpositive/groupby7_map_multi_single_reducer.q.out
+++ b/ql/src/test/results/clientpositive/groupby7_map_multi_single_reducer.q.out
@@ -84,6 +84,7 @@ STAGE PLANS:
                 Statistics: Num rows: 316 Data size: 59408 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -117,6 +118,7 @@ STAGE PLANS:
                 Statistics: Num rows: 316 Data size: 59408 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby7_map_skew.q.out b/ql/src/test/results/clientpositive/groupby7_map_skew.q.out
index f6339e3..55b51d2 100644
--- a/ql/src/test/results/clientpositive/groupby7_map_skew.q.out
+++ b/ql/src/test/results/clientpositive/groupby7_map_skew.q.out
@@ -56,6 +56,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(substr(value, 5))
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -72,6 +73,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(substr(value, 5))
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -131,6 +133,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 47000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -251,6 +254,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 47000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby8_map.q.out b/ql/src/test/results/clientpositive/groupby8_map.q.out
index d5864ac..77b9db3 100644
--- a/ql/src/test/results/clientpositive/groupby8_map.q.out
+++ b/ql/src/test/results/clientpositive/groupby8_map.q.out
@@ -83,6 +83,7 @@ STAGE PLANS:
                 Statistics: Num rows: 316 Data size: 59408 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -116,6 +117,7 @@ STAGE PLANS:
                 Statistics: Num rows: 316 Data size: 59408 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby8_map_skew.q.out b/ql/src/test/results/clientpositive/groupby8_map_skew.q.out
index 098023e..75aa8c7 100644
--- a/ql/src/test/results/clientpositive/groupby8_map_skew.q.out
+++ b/ql/src/test/results/clientpositive/groupby8_map_skew.q.out
@@ -56,6 +56,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: key (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 69750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -71,6 +72,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: key (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 69750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -130,6 +132,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 47000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -249,6 +252,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 47000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby9.q.out b/ql/src/test/results/clientpositive/groupby9.q.out
index ea97956..9ab10a0 100644
--- a/ql/src/test/results/clientpositive/groupby9.q.out
+++ b/ql/src/test/results/clientpositive/groupby9.q.out
@@ -54,6 +54,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: key (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 69750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -69,6 +70,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: key (type: string), value (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 500 Data size: 185000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -103,6 +105,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 47000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -197,6 +200,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 139500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(val1, 'hll'), compute_stats(val2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
@@ -933,6 +937,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: key (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 69750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -948,6 +953,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: value (type: string), key (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 500 Data size: 185000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -982,6 +988,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 47000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1076,6 +1083,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 139500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(val1, 'hll'), compute_stats(val2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1812,6 +1820,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: key (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 69750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1827,6 +1836,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: key (type: string), value (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 500 Data size: 185000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1861,6 +1871,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 47000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1955,6 +1966,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 139500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(val1, 'hll'), compute_stats(val2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
@@ -2691,6 +2703,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(substr(value, 5))
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -2707,6 +2720,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(substr(value, 5))
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -2742,6 +2756,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 47000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -2837,6 +2852,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 69750 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(val1, 'hll'), compute_stats(val2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
@@ -3573,6 +3589,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: key (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 69750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -3588,6 +3605,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: value (type: string), key (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 500 Data size: 185000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -3622,6 +3640,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 47000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -3716,6 +3735,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 139500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(val1, 'hll'), compute_stats(val2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_complex_types.q.out b/ql/src/test/results/clientpositive/groupby_complex_types.q.out
index 93161af..e4e6efb 100644
--- a/ql/src/test/results/clientpositive/groupby_complex_types.q.out
+++ b/ql/src/test/results/clientpositive/groupby_complex_types.q.out
@@ -67,6 +67,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(1)
                 keys: array(key) (type: array<string>)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 482000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -83,6 +84,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(1)
                 keys: map(key:value) (type: map<string,string>)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 232000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -99,6 +101,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(1)
                 keys: struct(key,value) (type: struct<col1:string,col2:string>)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 106000 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_complex_types_multi_single_reducer.q.out b/ql/src/test/results/clientpositive/groupby_complex_types_multi_single_reducer.q.out
index b577d4e..b0ff3f8 100644
--- a/ql/src/test/results/clientpositive/groupby_complex_types_multi_single_reducer.q.out
+++ b/ql/src/test/results/clientpositive/groupby_complex_types_multi_single_reducer.q.out
@@ -54,6 +54,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(1)
                 keys: array(key) (type: array<string>)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 482000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -71,6 +72,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(1)
                 keys: map(key:value) (type: map<string,string>)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 232000 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_cube1.q.out b/ql/src/test/results/clientpositive/groupby_cube1.q.out
index c6ceef9..4697f29 100644
--- a/ql/src/test/results/clientpositive/groupby_cube1.q.out
+++ b/ql/src/test/results/clientpositive/groupby_cube1.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), val (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -105,6 +106,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), val (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -194,6 +196,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: _col0 (type: string), _col1 (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -282,6 +285,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT val)
                 keys: key (type: string), 0L (type: bigint), val (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 2 Data size: 736 Basic stats: COMPLETE Column stats: NONE
@@ -359,6 +363,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), val (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -473,6 +478,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT val)
                 keys: key (type: string), 0L (type: bigint), val (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 2 Data size: 736 Basic stats: COMPLETE Column stats: NONE
@@ -603,6 +609,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(1)
                 keys: key (type: string), val (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -619,6 +626,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(1)
                 keys: key (type: string), val (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -678,6 +686,7 @@ STAGE PLANS:
               Statistics: Num rows: 2 Data size: 736 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(val, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1680 Basic stats: COMPLETE Column stats: NONE
@@ -796,6 +805,7 @@ STAGE PLANS:
               Statistics: Num rows: 2 Data size: 736 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(val, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1680 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_cube_multi_gby.q.out b/ql/src/test/results/clientpositive/groupby_cube_multi_gby.q.out
index c22345a..8f16ca6 100644
--- a/ql/src/test/results/clientpositive/groupby_cube_multi_gby.q.out
+++ b/ql/src/test/results/clientpositive/groupby_cube_multi_gby.q.out
@@ -59,6 +59,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: string), value (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1000 Data size: 186000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -73,6 +74,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: string), value (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 500 Data size: 93000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -107,6 +109,7 @@ STAGE PLANS:
               Statistics: Num rows: 1000 Data size: 271000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
@@ -197,6 +200,7 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1
               Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_distinct_samekey.q.out b/ql/src/test/results/clientpositive/groupby_distinct_samekey.q.out
index 7a2f8f2..ef02740 100644
--- a/ql/src/test/results/clientpositive/groupby_distinct_samekey.q.out
+++ b/ql/src/test/results/clientpositive/groupby_distinct_samekey.q.out
@@ -44,6 +44,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(DISTINCT int1_n60)
                 keys: int1_n60 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 4 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -99,6 +100,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(DISTINCT int1_n60)
                 keys: int1_n60 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 4 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_duplicate_key.q.out b/ql/src/test/results/clientpositive/groupby_duplicate_key.q.out
index d6d1472..bfe1a4b 100644
--- a/ql/src/test/results/clientpositive/groupby_duplicate_key.q.out
+++ b/ql/src/test/results/clientpositive/groupby_duplicate_key.q.out
@@ -26,6 +26,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: string), '' (type: string), '' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 63750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -112,6 +113,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: string), 'X' (type: string), 'X' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 64250 Basic stats: COMPLETE Column stats: COMPLETE
@@ -145,6 +147,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 64250 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(col1, 'hll'), compute_stats(col2, 'hll'), compute_stats(col3, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1320 Basic stats: COMPLETE Column stats: COMPLETE
@@ -261,6 +264,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max('pants'), max('pANTS')
                 keys: _col0 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 113750 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_id3.q.out b/ql/src/test/results/clientpositive/groupby_grouping_id3.q.out
index 4bfae51..5360420 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_id3.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_id3.q.out
@@ -50,6 +50,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: int), value (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 2 Data size: 16 Basic stats: COMPLETE Column stats: NONE
@@ -144,6 +145,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: _col0 (type: int), _col1 (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 2 Data size: 16 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets1.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets1.q.out
index af60682..abf52ce 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets1.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets1.q.out
@@ -58,6 +58,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -146,6 +147,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -234,6 +236,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -322,6 +325,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 2 Data size: 736 Basic stats: COMPLETE Column stats: NONE
@@ -405,6 +409,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: a (type: string), b (type: string), c (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 3 Data size: 1656 Basic stats: COMPLETE Column stats: NONE
@@ -489,6 +494,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: a (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
@@ -560,6 +566,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: _col0 (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out
index 81a1923..ec46e3b 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets2.q.out
@@ -44,6 +44,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
@@ -133,6 +134,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
@@ -246,6 +248,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(c)
                 keys: a (type: string), b (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
@@ -382,6 +385,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(_col2)
                 keys: _col0 (type: string), _col1 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 3 Data size: 534 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out
index fd5ea49..eaa47af 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets3.q.out
@@ -51,6 +51,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(c), count(c), count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
                 Statistics: Num rows: 4 Data size: 2208 Basic stats: COMPLETE Column stats: NONE
@@ -115,6 +116,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(c), count(c), count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5
                 Statistics: Num rows: 4 Data size: 2208 Basic stats: COMPLETE Column stats: NONE
@@ -205,6 +207,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(c), count(c), count()
                 keys: a (type: string), b (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out
index d0e5f26..c72c586 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets4.q.out
@@ -52,6 +52,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -130,6 +131,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -205,6 +207,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -283,6 +286,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -389,6 +393,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
@@ -491,6 +496,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out
index 63ee699..2397201 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets5.q.out
@@ -44,6 +44,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: a (type: string), b (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
@@ -61,6 +62,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: count()
             keys: _col0 (type: string), _col1 (type: string), 0L (type: bigint)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2, _col3
             Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -137,6 +139,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: a (type: string), b (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
@@ -154,6 +157,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: count()
             keys: _col0 (type: string), _col1 (type: string), 0L (type: bigint)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2, _col3
             Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -256,6 +260,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: a (type: string), b (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
@@ -273,6 +278,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: count()
             keys: _col0 (type: string), _col1 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2
             Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets6.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets6.q.out
index 1e02e4d..b3ae48b 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets6.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets6.q.out
@@ -44,6 +44,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 2 Data size: 736 Basic stats: COMPLETE Column stats: NONE
@@ -117,6 +118,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 2 Data size: 736 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets_grouping.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets_grouping.q.out
index 43d1b75..33e6888 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets_grouping.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets_grouping.q.out
@@ -45,6 +45,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: _col0 (type: int), _col1 (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 3 Data size: 24 Basic stats: COMPLETE Column stats: NONE
@@ -131,6 +132,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: _col0 (type: int), _col1 (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 4 Data size: 32 Basic stats: COMPLETE Column stats: NONE
@@ -224,6 +226,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: _col0 (type: int), _col1 (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 4 Data size: 32 Basic stats: COMPLETE Column stats: NONE
@@ -315,6 +318,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: _col0 (type: int), _col1 (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 4 Data size: 32 Basic stats: COMPLETE Column stats: NONE
@@ -428,6 +432,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int), value (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 3 Data size: 24 Basic stats: COMPLETE Column stats: NONE
@@ -514,6 +519,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int), value (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 4 Data size: 32 Basic stats: COMPLETE Column stats: NONE
@@ -607,6 +613,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int), value (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 4 Data size: 32 Basic stats: COMPLETE Column stats: NONE
@@ -695,6 +702,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int), value (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 4 Data size: 32 Basic stats: COMPLETE Column stats: NONE
@@ -808,6 +816,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int), value (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -889,6 +898,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int), value (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -972,6 +982,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int), value (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -1051,6 +1062,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int), value (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 4 Data size: 32 Basic stats: COMPLETE Column stats: NONE
@@ -1142,6 +1154,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int), value (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 4 Data size: 32 Basic stats: COMPLETE Column stats: NONE
@@ -1233,6 +1246,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int), value (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 3 Data size: 24 Basic stats: COMPLETE Column stats: NONE
@@ -1319,6 +1333,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: key (type: int), value (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 3 Data size: 24 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_sets_limit.q.out b/ql/src/test/results/clientpositive/groupby_grouping_sets_limit.q.out
index 19e94de..644b95a 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_sets_limit.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_sets_limit.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -128,6 +129,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 4 Data size: 1472 Basic stats: COMPLETE Column stats: NONE
@@ -214,6 +216,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: a (type: string), b (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 2 Data size: 736 Basic stats: COMPLETE Column stats: NONE
@@ -299,6 +302,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: a (type: string), b (type: string), c (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 3 Data size: 1656 Basic stats: COMPLETE Column stats: NONE
@@ -382,6 +386,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 keys: a (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
@@ -456,6 +461,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: _col0 (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_grouping_window.q.out b/ql/src/test/results/clientpositive/groupby_grouping_window.q.out
index 411ee4e..e6cc459 100644
--- a/ql/src/test/results/clientpositive/groupby_grouping_window.q.out
+++ b/ql/src/test/results/clientpositive/groupby_grouping_window.q.out
@@ -54,6 +54,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max(live), max(comments)
                 keys: category (type: int), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 3 Data size: 60 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_join_pushdown.q.out b/ql/src/test/results/clientpositive/groupby_join_pushdown.q.out
index d61f9bb..dc1e808 100644
--- a/ql/src/test/results/clientpositive/groupby_join_pushdown.q.out
+++ b/ql/src/test/results/clientpositive/groupby_join_pushdown.q.out
@@ -36,6 +36,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: _col0 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -115,6 +116,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count(_col0)
                   keys: _col0 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -182,6 +184,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: _col0 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -252,6 +255,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: _col0 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -315,6 +319,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: _col0 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 250 Data size: 22750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -385,6 +390,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: _col0 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 250 Data size: 22750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -451,6 +457,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: _col0 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -530,6 +537,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: _col0 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -629,6 +637,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: sum(_col2)
             keys: _col0 (type: tinyint), _col3 (type: tinyint)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2
             Statistics: Num rows: 9232 Data size: 138416 Basic stats: COMPLETE Column stats: COMPLETE
@@ -709,6 +718,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: max(_col0)
                   keys: _col1 (type: bigint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 4419 Data size: 44076 Basic stats: COMPLETE Column stats: COMPLETE
@@ -786,6 +796,7 @@ STAGE PLANS:
                 Statistics: Num rows: 9173 Data size: 54792 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: _col0 (type: bigint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 4419 Data size: 26400 Basic stats: COMPLETE Column stats: COMPLETE
@@ -852,6 +863,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: min(_col0)
                   keys: _col0 (type: tinyint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 99 Data size: 696 Basic stats: COMPLETE Column stats: COMPLETE
@@ -929,6 +941,7 @@ STAGE PLANS:
                 Statistics: Num rows: 9173 Data size: 27396 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: _col0 (type: tinyint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 99 Data size: 300 Basic stats: COMPLETE Column stats: COMPLETE
@@ -995,6 +1008,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: min(_col1)
                   keys: _col0 (type: tinyint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 99 Data size: 696 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1072,6 +1086,7 @@ STAGE PLANS:
                 Statistics: Num rows: 9173 Data size: 27396 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   keys: _col0 (type: tinyint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 99 Data size: 300 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1138,6 +1153,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count(_col0)
                   keys: _col0 (type: tinyint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 99 Data size: 1092 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1217,6 +1233,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: _col0 (type: tinyint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 99 Data size: 1092 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1285,6 +1302,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count(_col1)
                   keys: _col0 (type: tinyint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 99 Data size: 1092 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1364,6 +1382,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: _col0 (type: tinyint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 99 Data size: 1092 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1432,6 +1451,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col1)
                   keys: _col0 (type: tinyint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 99 Data size: 1092 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1511,6 +1531,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: _col0 (type: tinyint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 99 Data size: 1092 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1605,6 +1626,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: sum(_col1)
             keys: _col0 (type: tinyint), _col2 (type: tinyint)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2
             Statistics: Num rows: 17161 Data size: 274216 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1727,6 +1749,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: sum(_col1)
             keys: _col0 (type: tinyint), _col2 (type: tinyint)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2
             Statistics: Num rows: 9801 Data size: 156608 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_map_ppr.q.out b/ql/src/test/results/clientpositive/groupby_map_ppr.q.out
index 321ab29..b247113 100644
--- a/ql/src/test/results/clientpositive/groupby_map_ppr.q.out
+++ b/ql/src/test/results/clientpositive/groupby_map_ppr.q.out
@@ -50,6 +50,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT _col1), sum(_col1)
                 keys: _col0 (type: string), _col1 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 500 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -217,6 +218,7 @@ STAGE PLANS:
               Statistics: Num rows: 316 Data size: 117552 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(c1, 'hll'), compute_stats(c2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_map_ppr_multi_distinct.q.out b/ql/src/test/results/clientpositive/groupby_map_ppr_multi_distinct.q.out
index 9724009..b357d0e 100644
--- a/ql/src/test/results/clientpositive/groupby_map_ppr_multi_distinct.q.out
+++ b/ql/src/test/results/clientpositive/groupby_map_ppr_multi_distinct.q.out
@@ -50,6 +50,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT _col1), sum(_col1), sum(DISTINCT _col1), count(DISTINCT _col2)
                 keys: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
                 Statistics: Num rows: 1000 Data size: 491000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -217,6 +218,7 @@ STAGE PLANS:
               Statistics: Num rows: 316 Data size: 120080 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(c1, 'hll'), compute_stats(c2, 'hll'), compute_stats(c3, 'hll'), compute_stats(c4, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 1 Data size: 2152 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_multi_insert_common_distinct.q.out b/ql/src/test/results/clientpositive/groupby_multi_insert_common_distinct.q.out
index b21c079..9cbb5ef 100644
--- a/ql/src/test/results/clientpositive/groupby_multi_insert_common_distinct.q.out
+++ b/ql/src/test/results/clientpositive/groupby_multi_insert_common_distinct.q.out
@@ -54,6 +54,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT value)
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -69,6 +70,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT value)
                 keys: (key + key) (type: double), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 250 Data size: 26750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -103,6 +105,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
@@ -197,6 +200,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_multi_single_reducer2.q.out b/ql/src/test/results/clientpositive/groupby_multi_single_reducer2.q.out
index ec7be0d..5b67147 100644
--- a/ql/src/test/results/clientpositive/groupby_multi_single_reducer2.q.out
+++ b/ql/src/test/results/clientpositive/groupby_multi_single_reducer2.q.out
@@ -87,6 +87,7 @@ STAGE PLANS:
                   Statistics: Num rows: 105 Data size: 19740 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(c1, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -123,6 +124,7 @@ STAGE PLANS:
                   Statistics: Num rows: 105 Data size: 20160 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(c1, 'hll'), compute_stats(c2, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2
                     Statistics: Num rows: 1 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_multi_single_reducer3.q.out b/ql/src/test/results/clientpositive/groupby_multi_single_reducer3.q.out
index 566bd2e..6586693 100644
--- a/ql/src/test/results/clientpositive/groupby_multi_single_reducer3.q.out
+++ b/ql/src/test/results/clientpositive/groupby_multi_single_reducer3.q.out
@@ -99,6 +99,7 @@ STAGE PLANS:
                   Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(count, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -135,6 +136,7 @@ STAGE PLANS:
                   Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(count, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -361,6 +363,7 @@ STAGE PLANS:
                   Statistics: Num rows: 307 Data size: 29165 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(count, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -397,6 +400,7 @@ STAGE PLANS:
                   Statistics: Num rows: 307 Data size: 29165 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(count, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -622,6 +626,7 @@ STAGE PLANS:
                   Statistics: Num rows: 3 Data size: 273 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(count, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -658,6 +663,7 @@ STAGE PLANS:
                   Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(count, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -883,6 +889,7 @@ STAGE PLANS:
                   Statistics: Num rows: 307 Data size: 29165 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(count, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -919,6 +926,7 @@ STAGE PLANS:
                   Statistics: Num rows: 307 Data size: 29165 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(count, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_multialias.q.out b/ql/src/test/results/clientpositive/groupby_multialias.q.out
index 2bee356..4b77d0f 100644
--- a/ql/src/test/results/clientpositive/groupby_multialias.q.out
+++ b/ql/src/test/results/clientpositive/groupby_multialias.q.out
@@ -38,6 +38,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: min(a)
                 keys: a (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_position.q.out b/ql/src/test/results/clientpositive/groupby_position.q.out
index 7305df0..03040a3 100644
--- a/ql/src/test/results/clientpositive/groupby_position.q.out
+++ b/ql/src/test/results/clientpositive/groupby_position.q.out
@@ -53,6 +53,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: key (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 83 Data size: 23157 Basic stats: COMPLETE Column stats: COMPLETE
@@ -67,6 +68,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: key (type: string), value (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 166 Data size: 61420 Basic stats: COMPLETE Column stats: COMPLETE
@@ -101,6 +103,7 @@ STAGE PLANS:
               Statistics: Num rows: 83 Data size: 15604 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -195,6 +198,7 @@ STAGE PLANS:
               Statistics: Num rows: 166 Data size: 46314 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(val1, 'hll'), compute_stats(val2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
@@ -338,6 +342,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: key (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 83 Data size: 23157 Basic stats: COMPLETE Column stats: COMPLETE
@@ -352,6 +357,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT substr(value, 5))
                 keys: value (type: string), key (type: string), substr(value, 5) (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 166 Data size: 61420 Basic stats: COMPLETE Column stats: COMPLETE
@@ -386,6 +392,7 @@ STAGE PLANS:
               Statistics: Num rows: 83 Data size: 15604 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -480,6 +487,7 @@ STAGE PLANS:
               Statistics: Num rows: 166 Data size: 46314 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(val1, 'hll'), compute_stats(val2, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
@@ -617,6 +625,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
@@ -751,6 +760,7 @@ STAGE PLANS:
               Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 27 Data size: 4806 Basic stats: COMPLETE Column stats: COMPLETE
@@ -840,6 +850,7 @@ STAGE PLANS:
               Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: string), value (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 27 Data size: 4806 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1490,6 +1501,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_ppd.q.out b/ql/src/test/results/clientpositive/groupby_ppd.q.out
index f9a1ec6..c8bb05b 100644
--- a/ql/src/test/results/clientpositive/groupby_ppd.q.out
+++ b/ql/src/test/results/clientpositive/groupby_ppd.q.out
@@ -37,6 +37,7 @@ STAGE PLANS:
                   Statistics: Num rows: 2 Data size: 16 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     keys: _col0 (type: int)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 2 Data size: 16 Basic stats: COMPLETE Column stats: NONE
@@ -60,6 +61,7 @@ STAGE PLANS:
                   Statistics: Num rows: 2 Data size: 16 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     keys: _col0 (type: int)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0
                     Statistics: Num rows: 2 Data size: 16 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_rollup1.q.out b/ql/src/test/results/clientpositive/groupby_rollup1.q.out
index 0685ae9..23ba15d 100644
--- a/ql/src/test/results/clientpositive/groupby_rollup1.q.out
+++ b/ql/src/test/results/clientpositive/groupby_rollup1.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), val (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 3 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
@@ -125,6 +126,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT val)
                 keys: key (type: string), 0L (type: bigint), val (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 2 Data size: 736 Basic stats: COMPLETE Column stats: NONE
@@ -202,6 +204,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), val (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 3 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
@@ -310,6 +313,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT val)
                 keys: key (type: string), 0L (type: bigint), val (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 2 Data size: 736 Basic stats: COMPLETE Column stats: NONE
@@ -440,6 +444,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(1)
                 keys: key (type: string), val (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 3 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
@@ -456,6 +461,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(1)
                 keys: key (type: string), val (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 3 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
@@ -515,6 +521,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(val, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1680 Basic stats: COMPLETE Column stats: NONE
@@ -633,6 +640,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(val, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1680 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_rollup_empty.q.out b/ql/src/test/results/clientpositive/groupby_rollup_empty.q.out
index 5eac74e..ecfd766 100644
--- a/ql/src/test/results/clientpositive/groupby_rollup_empty.q.out
+++ b/ql/src/test/results/clientpositive/groupby_rollup_empty.q.out
@@ -175,6 +175,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: sum(_col2)
                   keys: _col0 (type: int), _col1 (type: int), 0L (type: bigint)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2, _col3
                   Statistics: Num rows: 3 Data size: 36 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_10.q.out b/ql/src/test/results/clientpositive/groupby_sort_10.q.out
index fb7693d..5016561 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_10.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_10.q.out
@@ -119,6 +119,7 @@ STAGE PLANS:
               Group By Operator
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 2 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_11.q.out b/ql/src/test/results/clientpositive/groupby_sort_11.q.out
index f3deab7..e9a02e4 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_11.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_11.q.out
@@ -49,6 +49,7 @@ STAGE PLANS:
                 aggregations: count(DISTINCT key)
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 5 Data size: 465 Basic stats: COMPLETE Column stats: COMPLETE
@@ -117,6 +118,7 @@ STAGE PLANS:
                 aggregations: count(DISTINCT key), count(), count(key), sum(DISTINCT key)
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 5 Data size: 585 Basic stats: COMPLETE Column stats: COMPLETE
@@ -185,6 +187,7 @@ STAGE PLANS:
                 aggregations: count(DISTINCT key), count(), count(key), sum(DISTINCT key)
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 5 Data size: 585 Basic stats: COMPLETE Column stats: COMPLETE
@@ -264,6 +267,7 @@ STAGE PLANS:
                 aggregations: count(DISTINCT key), count(), count(key), sum(DISTINCT key)
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 5 Data size: 585 Basic stats: COMPLETE Column stats: COMPLETE
@@ -338,6 +342,7 @@ STAGE PLANS:
               Statistics: Num rows: 10 Data size: 850 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 keys: _col0 (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 5 Data size: 40 Basic stats: COMPLETE Column stats: COMPLETE
@@ -429,6 +434,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(DISTINCT 1)
                 keys: 1 (type: int)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_1_23.q.out b/ql/src/test/results/clientpositive/groupby_sort_1_23.q.out
index 3bf1d59..e4ca83b 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_1_23.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_1_23.q.out
@@ -120,6 +120,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -520,6 +521,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), val (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 6 Data size: 2208 Basic stats: COMPLETE Column stats: NONE
@@ -641,6 +643,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1656 Basic stats: COMPLETE Column stats: NONE
@@ -885,6 +888,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -1327,6 +1331,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -1777,6 +1782,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1456 Basic stats: COMPLETE Column stats: NONE
@@ -2178,6 +2184,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), val (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 6 Data size: 2208 Basic stats: COMPLETE Column stats: NONE
@@ -2299,6 +2306,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(key3, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 2080 Basic stats: COMPLETE Column stats: NONE
@@ -2494,6 +2502,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: _col0 (type: string), _col1 (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
@@ -2615,6 +2624,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1456 Basic stats: COMPLETE Column stats: NONE
@@ -2822,6 +2832,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: sum(_col1)
                     keys: _col0 (type: double)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
@@ -2943,6 +2954,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -3203,6 +3215,7 @@ STAGE PLANS:
                       Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1
                         Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -3272,6 +3285,7 @@ STAGE PLANS:
                       Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1
                         Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -3694,6 +3708,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: _col0 (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
@@ -3857,6 +3872,7 @@ STAGE PLANS:
                       Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1
                         Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -3914,6 +3930,7 @@ STAGE PLANS:
                   Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -4503,6 +4520,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 607 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: NONE
@@ -4715,6 +4733,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), val (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 6 Data size: 2208 Basic stats: COMPLETE Column stats: NONE
@@ -5026,6 +5045,7 @@ STAGE PLANS:
                 aggregations: count()
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 3 Data size: 279 Basic stats: COMPLETE Column stats: COMPLETE
@@ -5147,6 +5167,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
@@ -5389,6 +5410,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 588 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(key3, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2, _col3
                       Statistics: Num rows: 1 Data size: 1712 Basic stats: COMPLETE Column stats: COMPLETE
@@ -5842,6 +5864,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 612 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(key3, 'hll'), compute_stats(key4, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2, _col3, _col4
                       Statistics: Num rows: 1 Data size: 2136 Basic stats: COMPLETE Column stats: COMPLETE
@@ -6294,6 +6317,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 588 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(key3, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2, _col3
                       Statistics: Num rows: 1 Data size: 1712 Basic stats: COMPLETE Column stats: COMPLETE
@@ -6753,6 +6777,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 588 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(key3, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2, _col3
                       Statistics: Num rows: 1 Data size: 1712 Basic stats: COMPLETE Column stats: COMPLETE
@@ -7178,6 +7203,7 @@ STAGE PLANS:
                 aggregations: count(1)
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 3 Data size: 279 Basic stats: COMPLETE Column stats: COMPLETE
@@ -7215,6 +7241,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 564 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(val, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE
@@ -7249,6 +7276,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
@@ -7435,6 +7463,7 @@ STAGE PLANS:
                     aggregations: count(1)
                     bucketGroup: true
                     keys: _col0 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: COMPLETE
@@ -7468,6 +7497,7 @@ STAGE PLANS:
                       Statistics: Num rows: 3 Data size: 282 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(val, 'hll'), compute_stats(cnt, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1, _col2
                         Statistics: Num rows: 1 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE
@@ -7502,6 +7532,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_2.q.out b/ql/src/test/results/clientpositive/groupby_sort_2.q.out
index 4c62f57..ec7ef55 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_2.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_2.q.out
@@ -67,6 +67,7 @@ STAGE PLANS:
                 aggregations: count()
                 bucketGroup: true
                 keys: val (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
@@ -102,6 +103,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(val, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 1048 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_3.q.out b/ql/src/test/results/clientpositive/groupby_sort_3.q.out
index be2f84c..1c4ee48 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_3.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_3.q.out
@@ -91,6 +91,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(val, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1672 Basic stats: COMPLETE Column stats: NONE
@@ -261,6 +262,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 1048 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_4.q.out b/ql/src/test/results/clientpositive/groupby_sort_4.q.out
index 041ba07..bb7bbe9 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_4.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_4.q.out
@@ -67,6 +67,7 @@ STAGE PLANS:
                 aggregations: count()
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
@@ -102,6 +103,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 1048 Basic stats: COMPLETE Column stats: NONE
@@ -218,6 +220,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), val (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 6 Data size: 2208 Basic stats: COMPLETE Column stats: NONE
@@ -253,6 +256,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(val, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1672 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_5.q.out b/ql/src/test/results/clientpositive/groupby_sort_5.q.out
index d20d6a5..6c5a92f 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_5.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_5.q.out
@@ -91,6 +91,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(val, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1672 Basic stats: COMPLETE Column stats: NONE
@@ -289,6 +290,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(val, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1672 Basic stats: COMPLETE Column stats: NONE
@@ -471,6 +473,7 @@ STAGE PLANS:
                 aggregations: count()
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
@@ -506,6 +509,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 1048 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_6.q.out b/ql/src/test/results/clientpositive/groupby_sort_6.q.out
index c0305cf..fd96069 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_6.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_6.q.out
@@ -56,6 +56,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: key (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: PARTIAL
@@ -120,6 +121,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: PARTIAL
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: PARTIAL
@@ -322,6 +324,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: key (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: PARTIAL
@@ -386,6 +389,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: PARTIAL
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: PARTIAL
@@ -577,6 +581,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 484 Basic stats: PARTIAL Column stats: NONE
@@ -693,6 +698,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 484 Basic stats: PARTIAL Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 1032 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_7.q.out b/ql/src/test/results/clientpositive/groupby_sort_7.q.out
index 777b293..d9f9f1a 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_7.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_7.q.out
@@ -97,6 +97,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 1116 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(val, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1672 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_8.q.out b/ql/src/test/results/clientpositive/groupby_sort_8.q.out
index 6cf824a..12fa830 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_8.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_8.q.out
@@ -60,6 +60,7 @@ STAGE PLANS:
                 aggregations: count(DISTINCT key)
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 6 Data size: 1128 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_9.q.out b/ql/src/test/results/clientpositive/groupby_sort_9.q.out
index ff56579..f1381f3 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_9.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_9.q.out
@@ -74,6 +74,7 @@ STAGE PLANS:
                 aggregations: count()
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 12 Data size: 2256 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_skew_1_23.q.out b/ql/src/test/results/clientpositive/groupby_sort_skew_1_23.q.out
index 620edd8..7f1a231 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_skew_1_23.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_skew_1_23.q.out
@@ -120,6 +120,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -521,6 +522,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), val (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 6 Data size: 2208 Basic stats: COMPLETE Column stats: NONE
@@ -711,6 +713,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1656 Basic stats: COMPLETE Column stats: NONE
@@ -955,6 +958,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -1397,6 +1401,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -1847,6 +1852,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1456 Basic stats: COMPLETE Column stats: NONE
@@ -2249,6 +2255,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), val (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 6 Data size: 2208 Basic stats: COMPLETE Column stats: NONE
@@ -2439,6 +2446,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(key3, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 2080 Basic stats: COMPLETE Column stats: NONE
@@ -2635,6 +2643,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: _col0 (type: string), _col1 (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
@@ -2825,6 +2834,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1456 Basic stats: COMPLETE Column stats: NONE
@@ -3033,6 +3043,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: sum(_col1)
                     keys: _col0 (type: double)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
@@ -3223,6 +3234,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -3483,6 +3495,7 @@ STAGE PLANS:
                       Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1
                         Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -3552,6 +3565,7 @@ STAGE PLANS:
                       Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1
                         Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -3975,6 +3989,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: _col0 (type: double)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
@@ -4207,6 +4222,7 @@ STAGE PLANS:
                       Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1
                         Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -4264,6 +4280,7 @@ STAGE PLANS:
                   Statistics: Num rows: 6 Data size: 1104 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
@@ -4853,6 +4870,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 607 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: NONE
@@ -5066,6 +5084,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), val (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 6 Data size: 2208 Basic stats: COMPLETE Column stats: NONE
@@ -5447,6 +5466,7 @@ STAGE PLANS:
                 aggregations: count()
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 3 Data size: 279 Basic stats: COMPLETE Column stats: COMPLETE
@@ -5637,6 +5657,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
@@ -5879,6 +5900,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 588 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(key3, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2, _col3
                       Statistics: Num rows: 1 Data size: 1712 Basic stats: COMPLETE Column stats: COMPLETE
@@ -6332,6 +6354,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 612 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(key3, 'hll'), compute_stats(key4, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2, _col3, _col4
                       Statistics: Num rows: 1 Data size: 2136 Basic stats: COMPLETE Column stats: COMPLETE
@@ -6784,6 +6807,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 588 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(key3, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2, _col3
                       Statistics: Num rows: 1 Data size: 1712 Basic stats: COMPLETE Column stats: COMPLETE
@@ -7243,6 +7267,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 588 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key1, 'hll'), compute_stats(key2, 'hll'), compute_stats(key3, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2, _col3
                       Statistics: Num rows: 1 Data size: 1712 Basic stats: COMPLETE Column stats: COMPLETE
@@ -7669,6 +7694,7 @@ STAGE PLANS:
                 aggregations: count(1)
                 bucketGroup: true
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 3 Data size: 279 Basic stats: COMPLETE Column stats: COMPLETE
@@ -7706,6 +7732,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 564 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(val, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE
@@ -7765,6 +7792,7 @@ STAGE PLANS:
               Statistics: Num rows: 3 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
@@ -7952,6 +7980,7 @@ STAGE PLANS:
                     aggregations: count(1)
                     bucketGroup: true
                     keys: _col0 (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 93 Basic stats: COMPLETE Column stats: COMPLETE
@@ -7985,6 +8014,7 @@ STAGE PLANS:
                       Statistics: Num rows: 3 Data size: 282 Basic stats: COMPLETE Column stats: COMPLETE
                       Group By Operator
                         aggregations: compute_stats(key, 'hll'), compute_stats(val, 'hll'), compute_stats(cnt, 'hll')
+                        minReductionHashAggr: 0.99
                         mode: hash
                         outputColumnNames: _col0, _col1, _col2
                         Statistics: Num rows: 1 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE
@@ -8044,6 +8074,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/groupby_sort_test_1.q.out b/ql/src/test/results/clientpositive/groupby_sort_test_1.q.out
index b7f0e79..322c75b 100644
--- a/ql/src/test/results/clientpositive/groupby_sort_test_1.q.out
+++ b/ql/src/test/results/clientpositive/groupby_sort_test_1.q.out
@@ -91,6 +91,7 @@ STAGE PLANS:
                     Statistics: Num rows: 3 Data size: 552 Basic stats: COMPLETE Column stats: NONE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(cnt, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 1032 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/having.q.out b/ql/src/test/results/clientpositive/having.q.out
index 7f1ab54..5e336e7 100644
--- a/ql/src/test/results/clientpositive/having.q.out
+++ b/ql/src/test/results/clientpositive/having.q.out
@@ -24,6 +24,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(value)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -110,6 +111,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max(value)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 67750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -483,6 +485,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max(value)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 67750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -754,6 +757,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max(value)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 83 Data size: 22493 Basic stats: COMPLETE Column stats: COMPLETE
@@ -951,6 +955,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: max(value)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 67750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1218,6 +1223,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count(value)
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/having2.q.out b/ql/src/test/results/clientpositive/having2.q.out
index 962aae5..967fb44 100644
--- a/ql/src/test/results/clientpositive/having2.q.out
+++ b/ql/src/test/results/clientpositive/having2.q.out
@@ -142,6 +142,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(customer_balance), sum(order_quantity), count(discount)
                 keys: customer_name (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 208 Basic stats: COMPLETE Column stats: NONE
@@ -214,6 +215,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: sum(customer_balance), sum(order_quantity), count(discount)
                 keys: customer_name (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 208 Basic stats: COMPLETE Column stats: NONE
@@ -331,6 +333,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: sum(_col2), sum(_col0), count(_col0), count(_col4)
             keys: _col1 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2, _col3, _col4
             Statistics: Num rows: 550 Data size: 97900 Basic stats: COMPLETE Column stats: NONE
@@ -459,6 +462,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: sum(_col2), sum(_col0), count(_col0), count(_col4)
             keys: _col1 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2, _col3, _col4
             Statistics: Num rows: 550 Data size: 97900 Basic stats: COMPLETE Column stats: NONE
@@ -591,6 +595,7 @@ STAGE PLANS:
           Group By Operator
             aggregations: sum(_col2), sum(_col0), count(_col0), count(_col4)
             keys: _col1 (type: string)
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0, _col1, _col2, _col3, _col4
             Statistics: Num rows: 550 Data size: 97900 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/hll.q.out b/ql/src/test/results/clientpositive/hll.q.out
index d55c4a4..f1e6b9f 100644
--- a/ql/src/test/results/clientpositive/hll.q.out
+++ b/ql/src/test/results/clientpositive/hll.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
@@ -144,6 +145,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/in_typecheck_char.q.out b/ql/src/test/results/clientpositive/in_typecheck_char.q.out
index 45dafaf..464aad5 100644
--- a/ql/src/test/results/clientpositive/in_typecheck_char.q.out
+++ b/ql/src/test/results/clientpositive/in_typecheck_char.q.out
@@ -45,6 +45,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -115,6 +116,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 340 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -218,6 +220,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/in_typecheck_pointlook.q.out b/ql/src/test/results/clientpositive/in_typecheck_pointlook.q.out
index ae4027d..2a5ee51 100644
--- a/ql/src/test/results/clientpositive/in_typecheck_pointlook.q.out
+++ b/ql/src/test/results/clientpositive/in_typecheck_pointlook.q.out
@@ -59,6 +59,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 364 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -137,6 +138,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 182 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/in_typecheck_varchar.q.out b/ql/src/test/results/clientpositive/in_typecheck_varchar.q.out
index f51ff29..0c2f366 100644
--- a/ql/src/test/results/clientpositive/in_typecheck_varchar.q.out
+++ b/ql/src/test/results/clientpositive/in_typecheck_varchar.q.out
@@ -45,6 +45,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 171 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -115,6 +116,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 171 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: count()
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/infer_bucket_sort_dyn_part.q.out b/ql/src/test/results/clientpositive/infer_bucket_sort_dyn_part.q.out
index f24f431..2141845 100644
--- a/ql/src/test/results/clientpositive/infer_bucket_sort_dyn_part.q.out
+++ b/ql/src/test/results/clientpositive/infer_bucket_sort_dyn_part.q.out
@@ -444,6 +444,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 316 Data size: 30020 Basic stats: COMPLETE Column stats: COMPLETE
@@ -472,6 +473,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                 keys: ds (type: string), hr (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 158 Data size: 182964 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/infer_bucket_sort_grouping_operators.q.out b/ql/src/test/results/clientpositive/infer_bucket_sort_grouping_operators.q.out
index a5d763b..542adc4 100644
--- a/ql/src/test/results/clientpositive/infer_bucket_sort_grouping_operators.q.out
+++ b/ql/src/test/results/clientpositive/infer_bucket_sort_grouping_operators.q.out
@@ -44,6 +44,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), value (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 750 Data size: 145500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -81,6 +82,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll'), compute_stats(agg, 'hll')
                 keys: part (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 1405 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1529,6 +1531,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), value (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1000 Data size: 194000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1566,6 +1569,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll'), compute_stats(agg, 'hll')
                 keys: part (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 1405 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1760,6 +1764,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: count()
                 keys: key (type: string), value (type: string), 0L (type: bigint)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 500 Data size: 97000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1797,6 +1802,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll'), compute_stats(agg, 'hll')
                 keys: part (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 1405 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/infer_bucket_sort_map_operators.q.out b/ql/src/test/results/clientpositive/infer_bucket_sort_map_operators.q.out
index c032aa4..cd9fb27 100644
--- a/ql/src/test/results/clientpositive/infer_bucket_sort_map_operators.q.out
+++ b/ql/src/test/results/clientpositive/infer_bucket_sort_map_operators.q.out
@@ -102,6 +102,7 @@ STAGE PLANS:
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                       keys: part (type: string)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 965 Basic stats: COMPLETE Column stats: COMPLETE
@@ -341,6 +342,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                 keys: part (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 965 Basic stats: COMPLETE Column stats: COMPLETE
@@ -518,6 +520,7 @@ STAGE PLANS:
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                       keys: '1' (type: string)
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1, _col2
                       Reduce Output Operator
@@ -692,6 +695,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: count()
                   keys: _col6 (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Reduce Output Operator
@@ -721,6 +725,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                 keys: '1' (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 File Output Operator
diff --git a/ql/src/test/results/clientpositive/infer_bucket_sort_num_buckets.q.out b/ql/src/test/results/clientpositive/infer_bucket_sort_num_buckets.q.out
index 5ef8add..72301c2 100644
--- a/ql/src/test/results/clientpositive/infer_bucket_sort_num_buckets.q.out
+++ b/ql/src/test/results/clientpositive/infer_bucket_sort_num_buckets.q.out
@@ -73,6 +73,7 @@ STAGE PLANS:
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
               keys: '2008-04-08' (type: string), hr (type: string)
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1, _col2, _col3
               Statistics: Num rows: 316 Data size: 360872 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/innerjoin.q.out b/ql/src/test/results/clientpositive/innerjoin.q.out
index ea8fcc5..709dbdb 100644
--- a/ql/src/test/results/clientpositive/innerjoin.q.out
+++ b/ql/src/test/results/clientpositive/innerjoin.q.out
@@ -88,6 +88,7 @@ STAGE PLANS:
               Statistics: Num rows: 791 Data size: 75145 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input11.q.out b/ql/src/test/results/clientpositive/input11.q.out
index 37dcd529..562c613 100644
--- a/ql/src/test/results/clientpositive/input11.q.out
+++ b/ql/src/test/results/clientpositive/input11.q.out
@@ -57,6 +57,7 @@ STAGE PLANS:
                   Statistics: Num rows: 166 Data size: 15770 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input12.q.out b/ql/src/test/results/clientpositive/input12.q.out
index 11dbefd..a2a9995 100644
--- a/ql/src/test/results/clientpositive/input12.q.out
+++ b/ql/src/test/results/clientpositive/input12.q.out
@@ -86,6 +86,7 @@ STAGE PLANS:
                   Statistics: Num rows: 166 Data size: 15770 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -114,6 +115,7 @@ STAGE PLANS:
                   Statistics: Num rows: 55 Data size: 5225 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -145,6 +147,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: compute_stats(key, 'hll')
                     keys: '2008-04-08' (type: string), '12' (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2
                     Statistics: Num rows: 1 Data size: 604 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input13.q.out b/ql/src/test/results/clientpositive/input13.q.out
index b68a06e..00f7bc2 100644
--- a/ql/src/test/results/clientpositive/input13.q.out
+++ b/ql/src/test/results/clientpositive/input13.q.out
@@ -91,6 +91,7 @@ STAGE PLANS:
                   Statistics: Num rows: 166 Data size: 15770 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -119,6 +120,7 @@ STAGE PLANS:
                   Statistics: Num rows: 55 Data size: 5225 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -150,6 +152,7 @@ STAGE PLANS:
                   Group By Operator
                     aggregations: compute_stats(key, 'hll')
                     keys: '2008-04-08' (type: string), '12' (type: string)
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2
                     Statistics: Num rows: 1 Data size: 604 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input14.q.out b/ql/src/test/results/clientpositive/input14.q.out
index f52728e..6b9da77 100644
--- a/ql/src/test/results/clientpositive/input14.q.out
+++ b/ql/src/test/results/clientpositive/input14.q.out
@@ -80,6 +80,7 @@ STAGE PLANS:
             Statistics: Num rows: 166 Data size: 15770 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input17.q.out b/ql/src/test/results/clientpositive/input17.q.out
index 03f17c6..8b0c85e 100644
--- a/ql/src/test/results/clientpositive/input17.q.out
+++ b/ql/src/test/results/clientpositive/input17.q.out
@@ -77,6 +77,7 @@ STAGE PLANS:
             Statistics: Num rows: 11 Data size: 29524 Basic stats: COMPLETE Column stats: NONE
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1
               Statistics: Num rows: 1 Data size: 3548 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/input18.q.out b/ql/src/test/results/clientpositive/input18.q.out
index dc976ef..12da5fc 100644
--- a/ql/src/test/results/clientpositive/input18.q.out
+++ b/ql/src/test/results/clientpositive/input18.q.out
@@ -80,6 +80,7 @@ STAGE PLANS:
             Statistics: Num rows: 166 Data size: 31208 Basic stats: COMPLETE Column stats: COMPLETE
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input1_limit.q.out b/ql/src/test/results/clientpositive/input1_limit.q.out
index c8329a3..927596d 100644
--- a/ql/src/test/results/clientpositive/input1_limit.q.out
+++ b/ql/src/test/results/clientpositive/input1_limit.q.out
@@ -105,6 +105,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 950 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -200,6 +201,7 @@ STAGE PLANS:
                 Statistics: Num rows: 5 Data size: 475 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input20.q.out b/ql/src/test/results/clientpositive/input20.q.out
index 0e7b320..ef1259e 100644
--- a/ql/src/test/results/clientpositive/input20.q.out
+++ b/ql/src/test/results/clientpositive/input20.q.out
@@ -93,6 +93,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input30.q.out b/ql/src/test/results/clientpositive/input30.q.out
index 6d9b46d..0ce7bbb 100644
--- a/ql/src/test/results/clientpositive/input30.q.out
+++ b/ql/src/test/results/clientpositive/input30.q.out
@@ -43,6 +43,7 @@ STAGE PLANS:
               Statistics: Num rows: 250 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: count()
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -156,6 +157,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: count()
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input32.q.out b/ql/src/test/results/clientpositive/input32.q.out
index 7063988..6515d5f 100644
--- a/ql/src/test/results/clientpositive/input32.q.out
+++ b/ql/src/test/results/clientpositive/input32.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
               Statistics: Num rows: 1000 Data size: 10603 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: count()
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input33.q.out b/ql/src/test/results/clientpositive/input33.q.out
index cd97f36..d191f46 100644
--- a/ql/src/test/results/clientpositive/input33.q.out
+++ b/ql/src/test/results/clientpositive/input33.q.out
@@ -93,6 +93,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input34.q.out b/ql/src/test/results/clientpositive/input34.q.out
index 601809b..ada36c4 100644
--- a/ql/src/test/results/clientpositive/input34.q.out
+++ b/ql/src/test/results/clientpositive/input34.q.out
@@ -74,6 +74,7 @@ STAGE PLANS:
                     Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input35.q.out b/ql/src/test/results/clientpositive/input35.q.out
index 26afe87..c0e2cbd 100644
--- a/ql/src/test/results/clientpositive/input35.q.out
+++ b/ql/src/test/results/clientpositive/input35.q.out
@@ -74,6 +74,7 @@ STAGE PLANS:
                     Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input36.q.out b/ql/src/test/results/clientpositive/input36.q.out
index b2903c2..5129f5b 100644
--- a/ql/src/test/results/clientpositive/input36.q.out
+++ b/ql/src/test/results/clientpositive/input36.q.out
@@ -74,6 +74,7 @@ STAGE PLANS:
                     Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                     Group By Operator
                       aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                      minReductionHashAggr: 0.99
                       mode: hash
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input38.q.out b/ql/src/test/results/clientpositive/input38.q.out
index c07a831..90349dc 100644
--- a/ql/src/test/results/clientpositive/input38.q.out
+++ b/ql/src/test/results/clientpositive/input38.q.out
@@ -68,6 +68,7 @@ STAGE PLANS:
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input39.q.out b/ql/src/test/results/clientpositive/input39.q.out
index 32182a8..99ba4ff 100644
--- a/ql/src/test/results/clientpositive/input39.q.out
+++ b/ql/src/test/results/clientpositive/input39.q.out
@@ -121,6 +121,7 @@ STAGE PLANS:
           Statistics: Num rows: 250 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
           Group By Operator
             aggregations: count()
+            minReductionHashAggr: 0.99
             mode: hash
             outputColumnNames: _col0
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input3_limit.q.out b/ql/src/test/results/clientpositive/input3_limit.q.out
index fd3e5bc..e5805b3 100644
--- a/ql/src/test/results/clientpositive/input3_limit.q.out
+++ b/ql/src/test/results/clientpositive/input3_limit.q.out
@@ -108,6 +108,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: NONE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 1248 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/input5.q.out b/ql/src/test/results/clientpositive/input5.q.out
index a371a24..2f23756 100644
--- a/ql/src/test/results/clientpositive/input5.q.out
+++ b/ql/src/test/results/clientpositive/input5.q.out
@@ -77,6 +77,7 @@ STAGE PLANS:
             Statistics: Num rows: 11 Data size: 29480 Basic stats: COMPLETE Column stats: NONE
             Group By Operator
               aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+              minReductionHashAggr: 0.99
               mode: hash
               outputColumnNames: _col0, _col1
               Statistics: Num rows: 1 Data size: 3560 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/input6.q.out b/ql/src/test/results/clientpositive/input6.q.out
index 51ad5ea..eb5034e 100644
--- a/ql/src/test/results/clientpositive/input6.q.out
+++ b/ql/src/test/results/clientpositive/input6.q.out
@@ -57,6 +57,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1 Data size: 173 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input7.q.out b/ql/src/test/results/clientpositive/input7.q.out
index cf4252d..c8addf2 100644
--- a/ql/src/test/results/clientpositive/input7.q.out
+++ b/ql/src/test/results/clientpositive/input7.q.out
@@ -53,6 +53,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 108 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(c1, 'hll'), compute_stats(c2, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input8.q.out b/ql/src/test/results/clientpositive/input8.q.out
index 7795dcd..32daa05 100644
--- a/ql/src/test/results/clientpositive/input8.q.out
+++ b/ql/src/test/results/clientpositive/input8.q.out
@@ -53,6 +53,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 192 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(c1, 'hll'), compute_stats(c2, 'hll'), compute_stats(c3, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 1 Data size: 1288 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input9.q.out b/ql/src/test/results/clientpositive/input9.q.out
index 43f97c6..1a36b07 100644
--- a/ql/src/test/results/clientpositive/input9.q.out
+++ b/ql/src/test/results/clientpositive/input9.q.out
@@ -56,6 +56,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1 Data size: 88 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(value, 'hll'), compute_stats(key, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input_part1.q.out b/ql/src/test/results/clientpositive/input_part1.q.out
index 63ce3a9..195f52c 100644
--- a/ql/src/test/results/clientpositive/input_part1.q.out
+++ b/ql/src/test/results/clientpositive/input_part1.q.out
@@ -89,6 +89,7 @@ STAGE PLANS:
                   Statistics: Num rows: 166 Data size: 45650 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll'), compute_stats(hr, 'hll'), compute_stats(ds, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3
                     Statistics: Num rows: 1 Data size: 1744 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input_part10.q.out b/ql/src/test/results/clientpositive/input_part10.q.out
index 09ebdd1..e26ce0e 100644
--- a/ql/src/test/results/clientpositive/input_part10.q.out
+++ b/ql/src/test/results/clientpositive/input_part10.q.out
@@ -83,6 +83,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: compute_stats(a, 'hll'), compute_stats(b, 'hll')
                   keys: ds (type: string), ts (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2, _col3
                   Statistics: Num rows: 1 Data size: 1070 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input_part2.q.out b/ql/src/test/results/clientpositive/input_part2.q.out
index 3ca9ef8..ea30e6a 100644
--- a/ql/src/test/results/clientpositive/input_part2.q.out
+++ b/ql/src/test/results/clientpositive/input_part2.q.out
@@ -102,6 +102,7 @@ STAGE PLANS:
                   Statistics: Num rows: 333 Data size: 91575 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll'), compute_stats(hr, 'hll'), compute_stats(ds, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3
                     Statistics: Num rows: 1 Data size: 1744 Basic stats: COMPLETE Column stats: COMPLETE
@@ -159,6 +160,7 @@ STAGE PLANS:
                   Statistics: Num rows: 333 Data size: 91575 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll'), compute_stats(hr, 'hll'), compute_stats(ds, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3
                     Statistics: Num rows: 1 Data size: 1744 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input_part5.q.out b/ql/src/test/results/clientpositive/input_part5.q.out
index ad7adfb..2265a63 100644
--- a/ql/src/test/results/clientpositive/input_part5.q.out
+++ b/ql/src/test/results/clientpositive/input_part5.q.out
@@ -61,6 +61,7 @@ STAGE PLANS:
                   Statistics: Num rows: 333 Data size: 151848 Basic stats: COMPLETE Column stats: COMPLETE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll'), compute_stats(hr, 'hll'), compute_stats(ds, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3
                     Statistics: Num rows: 1 Data size: 1760 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input_testsequencefile.q.out b/ql/src/test/results/clientpositive/input_testsequencefile.q.out
index c11daac..a646ad9 100644
--- a/ql/src/test/results/clientpositive/input_testsequencefile.q.out
+++ b/ql/src/test/results/clientpositive/input_testsequencefile.q.out
@@ -53,6 +53,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/input_testxpath.q.out b/ql/src/test/results/clientpositive/input_testxpath.q.out
index 8ccd819..695ce1f 100644
--- a/ql/src/test/results/clientpositive/input_testxpath.q.out
+++ b/ql/src/test/results/clientpositive/input_testxpath.q.out
@@ -53,6 +53,7 @@ STAGE PLANS:
                 Statistics: Num rows: 11 Data size: 39600 Basic stats: COMPLETE Column stats: NONE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll'), compute_stats(mapvalue, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 1 Data size: 4904 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/input_testxpath2.q.out b/ql/src/test/results/clientpositive/input_testxpath2.q.out
index d9b06f2..1bd5bcc 100644
--- a/ql/src/test/results/clientpositive/input_testxpath2.q.out
+++ b/ql/src/test/results/clientpositive/input_testxpath2.q.out
@@ -57,6 +57,7 @@ STAGE PLANS:
                   Statistics: Num rows: 11 Data size: 39600 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: compute_stats(lint_size, 'hll'), compute_stats(lintstring_size, 'hll'), compute_stats(mstringstring_size, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2
                     Statistics: Num rows: 1 Data size: 4872 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/insert1.q.out b/ql/src/test/results/clientpositive/insert1.q.out
index f4c361c..669d39a 100644
--- a/ql/src/test/results/clientpositive/insert1.q.out
+++ b/ql/src/test/results/clientpositive/insert1.q.out
@@ -71,6 +71,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 1052 Basic stats: COMPLETE Column stats: NONE
@@ -196,6 +197,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 1052 Basic stats: COMPLETE Column stats: NONE
@@ -335,6 +337,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 1052 Basic stats: COMPLETE Column stats: NONE
@@ -460,6 +463,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 1052 Basic stats: COMPLETE Column stats: NONE
@@ -595,6 +599,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 1052 Basic stats: COMPLETE Column stats: NONE
@@ -623,6 +628,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
                   Group By Operator
                     aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                    minReductionHashAggr: 0.99
                     mode: hash
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 1052 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/insert2_overwrite_partitions.q.out b/ql/src/test/results/clientpositive/insert2_overwrite_partitions.q.out
index bd82511..b255254 100644
--- a/ql/src/test/results/clientpositive/insert2_overwrite_partitions.q.out
+++ b/ql/src/test/results/clientpositive/insert2_overwrite_partitions.q.out
@@ -102,6 +102,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(one, 'hll'), compute_stats(two, 'hll')
                 keys: ds (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 5 Data size: 4195 Basic stats: PARTIAL Column stats: NONE
@@ -250,6 +251,7 @@ STAGE PLANS:
               Group By Operator
                 aggregations: compute_stats(one, 'hll'), compute_stats(two, 'hll')
                 keys: ds (type: string)
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 5 Data size: 4195 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/insert_into1.q.out b/ql/src/test/results/clientpositive/insert_into1.q.out
index 3905d8d..6eed07b 100644
--- a/ql/src/test/results/clientpositive/insert_into1.q.out
+++ b/ql/src/test/results/clientpositive/insert_into1.q.out
@@ -68,6 +68,7 @@ STAGE PLANS:
                 Statistics: Num rows: 100 Data size: 9500 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -229,6 +230,7 @@ STAGE PLANS:
                 Statistics: Num rows: 100 Data size: 9500 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -390,6 +392,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 950 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -537,6 +540,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 89 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -669,6 +673,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 89 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -898,6 +903,7 @@ STAGE PLANS:
               Statistics: Num rows: 2 Data size: 6 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: count()
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/insert_into2.q.out b/ql/src/test/results/clientpositive/insert_into2.q.out
index d617256..c4837fa 100644
--- a/ql/src/test/results/clientpositive/insert_into2.q.out
+++ b/ql/src/test/results/clientpositive/insert_into2.q.out
@@ -73,6 +73,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                   keys: ds (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 1 Data size: 949 Basic stats: COMPLETE Column stats: COMPLETE
@@ -287,6 +288,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                   keys: ds (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 1 Data size: 949 Basic stats: COMPLETE Column stats: COMPLETE
@@ -466,6 +468,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                   keys: ds (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 1 Data size: 949 Basic stats: COMPLETE Column stats: COMPLETE
@@ -622,6 +625,7 @@ STAGE PLANS:
               Statistics: Num rows: 50 Data size: 930 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: count()
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/insert_into3.q.out b/ql/src/test/results/clientpositive/insert_into3.q.out
index 152390b..292ade7 100644
--- a/ql/src/test/results/clientpositive/insert_into3.q.out
+++ b/ql/src/test/results/clientpositive/insert_into3.q.out
@@ -97,6 +97,7 @@ STAGE PLANS:
                 Statistics: Num rows: 50 Data size: 4750 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -192,6 +193,7 @@ STAGE PLANS:
                 Statistics: Num rows: 100 Data size: 9500 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -358,6 +360,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 950 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -453,6 +456,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 950 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/insert_into4.q.out b/ql/src/test/results/clientpositive/insert_into4.q.out
index df3ef01..66eaaa9 100644
--- a/ql/src/test/results/clientpositive/insert_into4.q.out
+++ b/ql/src/test/results/clientpositive/insert_into4.q.out
@@ -82,6 +82,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 950 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -216,6 +217,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 950 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -333,6 +335,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 1900 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/insert_into5.q.out b/ql/src/test/results/clientpositive/insert_into5.q.out
index 2ec9496..6489b6a 100644
--- a/ql/src/test/results/clientpositive/insert_into5.q.out
+++ b/ql/src/test/results/clientpositive/insert_into5.q.out
@@ -78,6 +78,7 @@ STAGE PLANS:
               Statistics: Num rows: 10 Data size: 910 Basic stats: COMPLETE Column stats: COMPLETE
               Group By Operator
                 aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                minReductionHashAggr: 0.99
                 mode: hash
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -195,6 +196,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 910 Basic stats: COMPLETE Column stats: COMPLETE
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
@@ -342,6 +344,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                   keys: ds (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 1 Data size: 949 Basic stats: COMPLETE Column stats: COMPLETE
@@ -502,6 +505,7 @@ STAGE PLANS:
                 Group By Operator
                   aggregations: compute_stats(key, 'hll'), compute_stats(value, 'hll')
                   keys: ds (type: string)
+                  minReductionHashAggr: 0.99
                   mode: hash
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 1 Data size: 949 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/insert_into6.q.out b/ql/src/test/results/clientpositive/insert_into6.q.out
index ce3b23b..c7655cc 100644
... 47780 lines suppressed ...