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:43 UTC

[hive] branch master updated (6a33d26 -> 8d4300a)

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

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


    from 6a33d26  HIVE-21382: Group by keys reduction optimization - keys are not reduced in query23 (Vineet Garg, reviewed by Jesus Camacho Rodriguez)
     new 4314965  HIVE-21399: Adjust hive.map.aggr.hash.min.reduction statically depending on group by statistics (Jesus Camacho Rodriguez, reviewed by Gopal V)
     new 8d4300a  HIVE-21444: Additional tests for materialized view rewriting (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../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 ++++
 .../clientpositive/materialized_view_rewrite_1.q   |  38 +++
 .../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         | 255 +++++++++++++++++++++
 .../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 +
 1364 files changed, 6830 insertions(+), 105 deletions(-)
 create mode 100644 ql/src/java/org/apache/hadoop/hive/ql/optimizer/SetHashGroupByMinReduction.java


[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)

Posted by jc...@apache.org.
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 ...


[hive] 02/02: HIVE-21444: Additional tests for materialized view rewriting (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)

Posted by jc...@apache.org.
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 8d4300a02691777fc96f33861ed27e64fed72f2c
Author: Jesus Camacho Rodriguez <jc...@apache.org>
AuthorDate: Wed Mar 13 13:31:43 2019 -0700

    HIVE-21444: Additional tests for materialized view rewriting (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)
---
 .../clientpositive/materialized_view_rewrite_1.q   |  38 ++++
 .../llap/materialized_view_rewrite_1.q.out         | 252 +++++++++++++++++++++
 2 files changed, 290 insertions(+)

diff --git a/ql/src/test/queries/clientpositive/materialized_view_rewrite_1.q b/ql/src/test/queries/clientpositive/materialized_view_rewrite_1.q
index ff7cefc..fc69cfd 100644
--- a/ql/src/test/queries/clientpositive/materialized_view_rewrite_1.q
+++ b/ql/src/test/queries/clientpositive/materialized_view_rewrite_1.q
@@ -167,3 +167,41 @@ select name from emps_n3 group by name;
 select name from emps_n3 group by name;
 
 drop materialized view mv1_n2;
+
+-- NEW 1
+create materialized view mv1_n2 as
+select deptno, name, count(*) as c
+from depts_n2
+group by deptno, name;
+
+explain
+select name, count(*) as c
+from depts_n2
+where name = 'Sales'
+group by name;
+
+select name, count(*) as c
+from depts_n2
+where name = 'Sales'
+group by name;
+
+drop materialized view mv1_n2;
+
+-- NEW 2
+create materialized view mv1_n2 as
+select deptno, name, locationid, count(*) as c
+from depts_n2
+group by deptno, name, locationid;
+
+explain
+select deptno, name, count(*) as c
+from depts_n2
+where name = 'Sales'
+group by deptno, name;
+
+select deptno, name, count(*) as c
+from depts_n2
+where name = 'Sales'
+group by deptno, name;
+
+drop materialized view mv1_n2;
diff --git a/ql/src/test/results/clientpositive/llap/materialized_view_rewrite_1.q.out b/ql/src/test/results/clientpositive/llap/materialized_view_rewrite_1.q.out
index b9af487..d8aab03 100644
--- a/ql/src/test/results/clientpositive/llap/materialized_view_rewrite_1.q.out
+++ b/ql/src/test/results/clientpositive/llap/materialized_view_rewrite_1.q.out
@@ -1019,3 +1019,255 @@ POSTHOOK: query: drop materialized view mv1_n2
 POSTHOOK: type: DROP_MATERIALIZED_VIEW
 POSTHOOK: Input: default@mv1_n2
 POSTHOOK: Output: default@mv1_n2
+PREHOOK: query: create materialized view mv1_n2 as
+select deptno, name, count(*) as c
+from depts_n2
+group by deptno, name
+PREHOOK: type: CREATE_MATERIALIZED_VIEW
+PREHOOK: Input: default@depts_n2
+PREHOOK: Output: database:default
+PREHOOK: Output: default@mv1_n2
+POSTHOOK: query: create materialized view mv1_n2 as
+select deptno, name, count(*) as c
+from depts_n2
+group by deptno, name
+POSTHOOK: type: CREATE_MATERIALIZED_VIEW
+POSTHOOK: Input: default@depts_n2
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@mv1_n2
+PREHOOK: query: explain
+select name, count(*) as c
+from depts_n2
+where name = 'Sales'
+group by name
+PREHOOK: type: QUERY
+PREHOOK: Input: default@depts_n2
+PREHOOK: Input: default@mv1_n2
+#### A masked pattern was here ####
+POSTHOOK: query: explain
+select name, count(*) as c
+from depts_n2
+where name = 'Sales'
+group by name
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@depts_n2
+POSTHOOK: Input: default@mv1_n2
+#### A masked pattern was here ####
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Tez
+#### A masked pattern was here ####
+      Edges:
+        Reducer 2 <- Map 1 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: default.mv1_n2
+                  filterExpr: (CAST( name AS STRING) = 'Sales') (type: boolean)
+                  Statistics: Num rows: 3 Data size: 291 Basic stats: COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: (CAST( name AS STRING) = 'Sales') (type: boolean)
+                    Statistics: Num rows: 1 Data size: 97 Basic stats: COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: c (type: bigint)
+                      outputColumnNames: _col0
+                      Statistics: Num rows: 1 Data size: 97 Basic stats: COMPLETE Column stats: COMPLETE
+                      Group By Operator
+                        aggregations: sum(_col0)
+                        keys: true (type: boolean)
+                        minReductionHashAggr: 0.0
+                        mode: hash
+                        outputColumnNames: _col0, _col1
+                        Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
+                        Reduce Output Operator
+                          key expressions: _col0 (type: boolean)
+                          sort order: +
+                          Map-reduce partition columns: _col0 (type: boolean)
+                          Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
+                          value expressions: _col1 (type: bigint)
+            Execution mode: vectorized, llap
+            LLAP IO: all inputs
+        Reducer 2 
+            Execution mode: vectorized, llap
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: sum(VALUE._col0)
+                keys: KEY._col0 (type: boolean)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
+                Select Operator
+                  expressions: 'Sales' (type: varchar(256)), COALESCE(_col1,0) (type: bigint)
+                  outputColumnNames: _col0, _col1
+                  Statistics: Num rows: 1 Data size: 97 Basic stats: COMPLETE Column stats: COMPLETE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 1 Data size: 97 Basic stats: COMPLETE Column stats: COMPLETE
+                    table:
+                        input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select name, count(*) as c
+from depts_n2
+where name = 'Sales'
+group by name
+PREHOOK: type: QUERY
+PREHOOK: Input: default@depts_n2
+PREHOOK: Input: default@mv1_n2
+#### A masked pattern was here ####
+POSTHOOK: query: select name, count(*) as c
+from depts_n2
+where name = 'Sales'
+group by name
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@depts_n2
+POSTHOOK: Input: default@mv1_n2
+#### A masked pattern was here ####
+Sales	1
+PREHOOK: query: drop materialized view mv1_n2
+PREHOOK: type: DROP_MATERIALIZED_VIEW
+PREHOOK: Input: default@mv1_n2
+PREHOOK: Output: default@mv1_n2
+POSTHOOK: query: drop materialized view mv1_n2
+POSTHOOK: type: DROP_MATERIALIZED_VIEW
+POSTHOOK: Input: default@mv1_n2
+POSTHOOK: Output: default@mv1_n2
+PREHOOK: query: create materialized view mv1_n2 as
+select deptno, name, locationid, count(*) as c
+from depts_n2
+group by deptno, name, locationid
+PREHOOK: type: CREATE_MATERIALIZED_VIEW
+PREHOOK: Input: default@depts_n2
+PREHOOK: Output: database:default
+PREHOOK: Output: default@mv1_n2
+POSTHOOK: query: create materialized view mv1_n2 as
+select deptno, name, locationid, count(*) as c
+from depts_n2
+group by deptno, name, locationid
+POSTHOOK: type: CREATE_MATERIALIZED_VIEW
+POSTHOOK: Input: default@depts_n2
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@mv1_n2
+PREHOOK: query: explain
+select deptno, name, count(*) as c
+from depts_n2
+where name = 'Sales'
+group by deptno, name
+PREHOOK: type: QUERY
+PREHOOK: Input: default@depts_n2
+PREHOOK: Input: default@mv1_n2
+#### A masked pattern was here ####
+POSTHOOK: query: explain
+select deptno, name, count(*) as c
+from depts_n2
+where name = 'Sales'
+group by deptno, name
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@depts_n2
+POSTHOOK: Input: default@mv1_n2
+#### A masked pattern was here ####
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Tez
+#### A masked pattern was here ####
+      Edges:
+        Reducer 2 <- Map 1 (SIMPLE_EDGE)
+#### A masked pattern was here ####
+      Vertices:
+        Map 1 
+            Map Operator Tree:
+                TableScan
+                  alias: default.mv1_n2
+                  filterExpr: (CAST( name AS STRING) = 'Sales') (type: boolean)
+                  Statistics: Num rows: 3 Data size: 303 Basic stats: COMPLETE Column stats: COMPLETE
+                  Filter Operator
+                    predicate: (CAST( name AS STRING) = 'Sales') (type: boolean)
+                    Statistics: Num rows: 1 Data size: 101 Basic stats: COMPLETE Column stats: COMPLETE
+                    Select Operator
+                      expressions: deptno (type: int), c (type: bigint)
+                      outputColumnNames: _col0, _col1
+                      Statistics: Num rows: 1 Data size: 101 Basic stats: COMPLETE Column stats: COMPLETE
+                      Group By Operator
+                        aggregations: sum(_col1)
+                        keys: _col0 (type: int)
+                        minReductionHashAggr: 0.0
+                        mode: hash
+                        outputColumnNames: _col0, _col1
+                        Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
+                        Reduce Output Operator
+                          key expressions: _col0 (type: int)
+                          sort order: +
+                          Map-reduce partition columns: _col0 (type: int)
+                          Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
+                          value expressions: _col1 (type: bigint)
+            Execution mode: vectorized, llap
+            LLAP IO: all inputs
+        Reducer 2 
+            Execution mode: vectorized, llap
+            Reduce Operator Tree:
+              Group By Operator
+                aggregations: sum(VALUE._col0)
+                keys: KEY._col0 (type: int)
+                mode: mergepartial
+                outputColumnNames: _col0, _col1
+                Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
+                Select Operator
+                  expressions: _col0 (type: int), 'Sales' (type: varchar(256)), COALESCE(_col1,0) (type: bigint)
+                  outputColumnNames: _col0, _col1, _col2
+                  Statistics: Num rows: 1 Data size: 101 Basic stats: COMPLETE Column stats: COMPLETE
+                  File Output Operator
+                    compressed: false
+                    Statistics: Num rows: 1 Data size: 101 Basic stats: COMPLETE Column stats: COMPLETE
+                    table:
+                        input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                        output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                        serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select deptno, name, count(*) as c
+from depts_n2
+where name = 'Sales'
+group by deptno, name
+PREHOOK: type: QUERY
+PREHOOK: Input: default@depts_n2
+PREHOOK: Input: default@mv1_n2
+#### A masked pattern was here ####
+POSTHOOK: query: select deptno, name, count(*) as c
+from depts_n2
+where name = 'Sales'
+group by deptno, name
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@depts_n2
+POSTHOOK: Input: default@mv1_n2
+#### A masked pattern was here ####
+10	Sales	1
+PREHOOK: query: drop materialized view mv1_n2
+PREHOOK: type: DROP_MATERIALIZED_VIEW
+PREHOOK: Input: default@mv1_n2
+PREHOOK: Output: default@mv1_n2
+POSTHOOK: query: drop materialized view mv1_n2
+POSTHOOK: type: DROP_MATERIALIZED_VIEW
+POSTHOOK: Input: default@mv1_n2
+POSTHOOK: Output: default@mv1_n2