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/11/25 17:15:18 UTC

[hive] branch master updated: HIVE-22481: Expose null sort order at default level (Krisztian Kasa, reviewed by Jesus Camacho Rodriguez)

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


The following commit(s) were added to refs/heads/master by this push:
     new 9a9a642  HIVE-22481: Expose null sort order at default level (Krisztian Kasa, reviewed by Jesus Camacho Rodriguez)
9a9a642 is described below

commit 9a9a642824e3a3690d1a06a473898ad81e8b32eb
Author: Krisztian Kasa <kk...@cloudera.com>
AuthorDate: Mon Nov 25 09:06:15 2019 -0800

    HIVE-22481: Expose null sort order at default level (Krisztian Kasa, reviewed by Jesus Camacho Rodriguez)
---
 .../test/results/positive/accumulo_queries.q.out   |   9 +
 .../accumulo_single_sourced_multi_insert.q.out     |   1 +
 .../results/clientpositive/serde_typedbytes.q.out  |   1 +
 .../results/clientpositive/serde_typedbytes2.q.out |   1 +
 .../results/clientpositive/serde_typedbytes3.q.out |   1 +
 .../results/clientpositive/serde_typedbytes4.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 +
 .../results/clientpositive/udf_row_sequence.q.out  |   1 +
 .../src/test/results/positive/hbase_queries.q.out  |   9 +
 .../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/positive/kudu_complex_queries.q.out    |   7 +
 .../apache/hadoop/hive/ql/plan/ReduceSinkDesc.java |   4 +-
 .../apache/hadoop/hive/ql/plan/TopNKeyDesc.java    |   2 +-
 .../clientnegative/bucket_mapjoin_mismatch1.q.out  |   2 +
 .../test/results/clientnegative/masking_mv.q.out   |   1 +
 .../clientnegative/spark/spark_job_max_tasks.q.out |   2 +
 .../spark/spark_stage_max_tasks.q.out              |   2 +
 .../test/results/clientpositive/acid_mapjoin.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  |   7 +
 .../results/clientpositive/acid_table_stats.q.out  |   1 +
 .../results/clientpositive/allcolref_in_udf.q.out  |   2 +
 .../clientpositive/alterColumnStatsPart.q.out      |   4 +
 .../results/clientpositive/ambiguous_col.q.out     |   6 +
 .../annotate_stats_deep_filters.q.out              |   2 +
 .../clientpositive/annotate_stats_groupby.q.out    |  26 +
 .../clientpositive/annotate_stats_groupby2.q.out   |   7 +
 .../clientpositive/annotate_stats_join.q.out       |  28 ++
 .../clientpositive/annotate_stats_join_pkfk.q.out  |  32 ++
 .../clientpositive/annotate_stats_select.q.out     |   4 +
 .../clientpositive/autoColumnStats_11.q.out        |   2 +
 .../results/clientpositive/autoColumnStats_4.q.out |   3 +
 .../results/clientpositive/autoColumnStats_5.q.out |   3 +
 .../clientpositive/autoColumnStats_5a.q.out        |   1 +
 .../results/clientpositive/autoColumnStats_6.q.out |   2 +
 .../results/clientpositive/autoColumnStats_7.q.out |   4 +
 .../results/clientpositive/autoColumnStats_9.q.out |   3 +
 .../test/results/clientpositive/auto_join0.q.out   |   5 +
 .../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  |   5 +
 .../auto_join18_multi_distinct.q.out               |   5 +
 .../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  |   6 +
 .../test/results/clientpositive/auto_join21.q.out  |   3 +
 .../test/results/clientpositive/auto_join22.q.out  |   1 +
 .../test/results/clientpositive/auto_join23.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  |   2 +
 .../test/results/clientpositive/auto_join28.q.out  |   8 +
 .../test/results/clientpositive/auto_join29.q.out  |  15 +
 .../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   |   3 +
 .../test/results/clientpositive/auto_join7.q.out   |   3 +
 .../test/results/clientpositive/auto_join8.q.out   |   1 +
 .../test/results/clientpositive/auto_join9.q.out   |   1 +
 .../results/clientpositive/auto_join_stats.q.out   |   4 +
 .../auto_join_without_localtask.q.out              |  13 +
 .../clientpositive/beeline/explain_outputs.q.out   |   9 +
 .../results/clientpositive/beeline/mapjoin2.q.out  |   2 +
 .../beeline/materialized_view_create_rewrite.q.out |   6 +
 .../clientpositive/beeline/smb_mapjoin_16.q.out    |   1 +
 .../clientpositive/beeline/smb_mapjoin_7.q.out     |   1 +
 .../results/clientpositive/binarysortable_1.q.out  | Bin 4570 -> 4607 bytes
 .../bucketsortoptimize_insert_1.q.out              |   2 +
 .../bucketsortoptimize_insert_3.q.out              |   2 +
 .../bucketsortoptimize_insert_4.q.out              |   4 +
 .../bucketsortoptimize_insert_5.q.out              |   4 +
 .../bucketsortoptimize_insert_8.q.out              |   4 +
 .../results/clientpositive/case_sensitivity.q.out  |   1 +
 ql/src/test/results/clientpositive/cast1.q.out     |   1 +
 .../cbo_SortUnionTransposeRule.q.out               |  26 +
 ql/src/test/results/clientpositive/cbo_const.q.out |   4 +
 .../test/results/clientpositive/cbo_input26.q.out  |   8 +
 .../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 |  23 +
 .../clientpositive/cbo_rp_auto_join17.q.out        |   1 +
 .../cbo_rp_cross_product_check_2.q.out             |   6 +
 .../cbo_rp_gby2_map_multi_distinct.q.out           |   4 +
 .../cbo_rp_groupby3_noskew_multi_distinct.q.out    |   1 +
 .../test/results/clientpositive/cbo_rp_join0.q.out |   7 +
 .../test/results/clientpositive/cbo_rp_join1.q.out |  12 +
 .../cbo_rp_udaf_percentile_approx_23.q.out         |   2 +
 .../columnStatsUpdateForStatsOptimizer_2.q.out     |   2 +
 .../column_pruner_multiple_children.q.out          |   2 +
 .../columnarserde_create_shortcut.q.out            |   1 +
 .../clientpositive/columnstats_partlvl.q.out       |   5 +
 .../clientpositive/columnstats_partlvl_dp.q.out    |   4 +
 .../clientpositive/columnstats_quoting.q.out       |   2 +
 .../clientpositive/columnstats_tbllvl.q.out        |   5 +
 ql/src/test/results/clientpositive/combine2.q.out  |   1 +
 .../results/clientpositive/complex_alias.q.out     |   5 +
 .../clientpositive/compute_stats_date.q.out        |   1 +
 ql/src/test/results/clientpositive/constGby.q.out  |   1 +
 .../results/clientpositive/constant_prop_1.q.out   |  12 +
 .../results/clientpositive/constant_prop_2.q.out   |   1 +
 .../results/clientpositive/constant_prop_3.q.out   |  10 +
 .../test/results/clientpositive/constprog2.q.out   |   4 +
 .../test/results/clientpositive/constprog3.q.out   |   2 +
 .../test/results/clientpositive/constprog_dp.q.out |   1 +
 .../clientpositive/constprog_partitioner.q.out     |   4 +
 .../results/clientpositive/constprog_type.q.out    |   1 +
 .../convert_decimal64_to_decimal.q.out             |   2 +
 .../clientpositive/correlated_join_keys.q.out      |   6 +
 .../clientpositive/correlationoptimizer10.q.out    |  22 +
 .../clientpositive/correlationoptimizer11.q.out    |  10 +
 .../clientpositive/correlationoptimizer12.q.out    |   4 +
 .../clientpositive/correlationoptimizer13.q.out    |   3 +
 .../clientpositive/correlationoptimizer14.q.out    |  34 ++
 .../clientpositive/correlationoptimizer15.q.out    |   9 +
 .../clientpositive/correlationoptimizer5.q.out     |  12 +
 .../clientpositive/correlationoptimizer7.q.out     |   6 +
 .../clientpositive/correlationoptimizer8.q.out     |  26 +
 .../clientpositive/correlationoptimizer9.q.out     |  12 +
 .../clientpositive/count_dist_rewrite.q.out        |  17 +
 ql/src/test/results/clientpositive/cp_sel.q.out    |   3 +
 .../clientpositive/create_genericudaf.q.out        |   1 +
 .../test/results/clientpositive/cross_join.q.out   |   6 +
 .../results/clientpositive/cross_join_merge.q.out  |  24 +
 .../clientpositive/cross_product_check_1.q.out     |  22 +
 .../clientpositive/cross_product_check_2.q.out     |   6 +
 ql/src/test/results/clientpositive/ctas.q.out      |  15 +
 .../test/results/clientpositive/ctas_colname.q.out |  14 +
 .../ctas_uses_database_location.q.out              |   1 +
 ql/src/test/results/clientpositive/cte_5.q.out     |   2 +
 ql/src/test/results/clientpositive/cte_mat_1.q.out |   2 +
 ql/src/test/results/clientpositive/cte_mat_2.q.out |   2 +
 ql/src/test/results/clientpositive/cte_mat_3.q.out |   2 +
 ql/src/test/results/clientpositive/cte_mat_4.q.out |   4 +
 ql/src/test/results/clientpositive/cte_mat_5.q.out |   2 +
 .../results/clientpositive/decimal_join2.q.out     |   4 +
 .../results/clientpositive/decimal_precision.q.out |   1 +
 .../results/clientpositive/decimal_stats.q.out     |   1 +
 .../test/results/clientpositive/decimal_udf.q.out  |   8 +
 .../results/clientpositive/deleteAnalyze.q.out     |   2 +
 .../clientpositive/display_colstats_tbllvl.q.out   |   2 +
 .../results/clientpositive/distinct_groupby.q.out  |  36 ++
 .../results/clientpositive/distinct_stats.q.out    |   3 +
 .../clientpositive/distinct_windowing.q.out        |   6 +
 .../clientpositive/distinct_windowing_no_cbo.q.out |  10 +
 .../druid/druidmini_dynamic_partition.q.out        |   3 +
 .../druid/druidmini_expressions.q.out              |  24 +
 .../clientpositive/druid/druidmini_mv.q.out        |   8 +
 .../druidmini_semijoin_reduction_all_types.q.out   |  60 +++
 .../clientpositive/druid/druidmini_test1.q.out     |   6 +
 .../dynpart_sort_opt_bucketing.q.out               |   1 +
 .../dynpart_sort_optimization_acid2.q.out          |   1 +
 .../results/clientpositive/escape_clusterby1.q.out |   2 +
 .../clientpositive/escape_distributeby1.q.out      |   2 +
 .../results/clientpositive/escape_orderby1.q.out   |   2 +
 .../results/clientpositive/escape_sortby1.q.out    |   2 +
 .../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   |  14 +
 .../results/clientpositive/explain_outputs.q.out   |   9 +
 .../results/clientpositive/explain_rearrange.q.out |  20 +
 .../extrapolate_part_stats_date.q.out              |   1 +
 .../clientpositive/filter_cond_pushdown.q.out      |  14 +
 .../clientpositive/filter_cond_pushdown2.q.out     |   6 +
 .../filter_cond_pushdown_HIVE_15647.q.out          |  12 +
 .../test/results/clientpositive/filter_union.q.out |   3 +
 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 +
 .../test/results/clientpositive/fold_to_null.q.out |   8 +
 .../clientpositive/fp_literal_arithmetic.q.out     |   4 +
 ql/src/test/results/clientpositive/gby_star.q.out  |   6 +
 .../clientpositive/gen_udf_example_add10.q.out     |   1 +
 ql/src/test/results/clientpositive/groupby1.q.out  |   2 +
 ql/src/test/results/clientpositive/groupby10.q.out |  19 +
 ql/src/test/results/clientpositive/groupby11.q.out |   8 +
 ql/src/test/results/clientpositive/groupby12.q.out |   2 +
 ql/src/test/results/clientpositive/groupby13.q.out |   1 +
 .../results/clientpositive/groupby1_limit.q.out    |   2 +
 .../test/results/clientpositive/groupby1_map.q.out |   2 +
 .../clientpositive/groupby1_map_nomap.q.out        |   2 +
 .../results/clientpositive/groupby1_map_skew.q.out |   3 +
 .../results/clientpositive/groupby1_noskew.q.out   |   2 +
 .../results/clientpositive/groupby2_limit.q.out    |   2 +
 .../test/results/clientpositive/groupby2_map.q.out |   2 +
 .../groupby2_map_multi_distinct.q.out              |   4 +
 .../results/clientpositive/groupby2_map_skew.q.out |   3 +
 .../results/clientpositive/groupby2_noskew.q.out   |   2 +
 .../groupby2_noskew_multi_distinct.q.out           |   2 +
 ql/src/test/results/clientpositive/groupby3.q.out  |   3 +
 .../test/results/clientpositive/groupby3_map.q.out |   1 +
 .../groupby3_map_multi_distinct.q.out              |   1 +
 .../results/clientpositive/groupby3_map_skew.q.out |   2 +
 .../results/clientpositive/groupby3_noskew.q.out   |   1 +
 .../groupby3_noskew_multi_distinct.q.out           |   1 +
 ql/src/test/results/clientpositive/groupby4.q.out  |   4 +
 .../test/results/clientpositive/groupby4_map.q.out |   1 +
 .../results/clientpositive/groupby4_map_skew.q.out |   1 +
 .../results/clientpositive/groupby4_noskew.q.out   |   2 +
 ql/src/test/results/clientpositive/groupby5.q.out  |   4 +
 .../test/results/clientpositive/groupby5_map.q.out |   1 +
 .../results/clientpositive/groupby5_map_skew.q.out |   1 +
 .../results/clientpositive/groupby5_noskew.q.out   |   2 +
 ql/src/test/results/clientpositive/groupby6.q.out  |   4 +
 .../test/results/clientpositive/groupby6_map.q.out |   2 +
 .../results/clientpositive/groupby6_map_skew.q.out |   3 +
 .../results/clientpositive/groupby6_noskew.q.out   |   2 +
 .../test/results/clientpositive/groupby7_map.q.out |   4 +
 .../groupby7_map_multi_single_reducer.q.out        |   3 +
 .../results/clientpositive/groupby7_map_skew.q.out |   6 +
 .../results/clientpositive/groupby7_noskew.q.out   |   4 +
 .../groupby7_noskew_multi_single_reducer.q.out     |   5 +
 ql/src/test/results/clientpositive/groupby8.q.out  |  16 +
 .../test/results/clientpositive/groupby8_map.q.out |   3 +
 .../results/clientpositive/groupby8_map_skew.q.out |   6 +
 .../results/clientpositive/groupby8_noskew.q.out   |   3 +
 ql/src/test/results/clientpositive/groupby9.q.out  |  20 +
 .../clientpositive/groupby_complex_types.q.out     |   3 +
 ...roupby_complex_types_multi_single_reducer.q.out |   4 +
 .../results/clientpositive/groupby_cube1.q.out     |  14 +
 .../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    |   8 +
 .../clientpositive/groupby_grouping_sets3.q.out    |   4 +
 .../clientpositive/groupby_grouping_sets4.q.out    |  14 +
 .../clientpositive/groupby_grouping_sets5.q.out    |   7 +
 .../clientpositive/groupby_grouping_sets6.q.out    |   2 +
 .../groupby_grouping_sets_grouping.q.out           |  17 +
 .../groupby_grouping_sets_limit.q.out              |   6 +
 .../clientpositive/groupby_grouping_window.q.out   |   2 +
 .../clientpositive/groupby_join_pushdown.q.out     |  49 ++
 .../groupby_multi_insert_common_distinct.q.out     |   4 +
 .../groupby_multi_single_reducer.q.out             |   4 +
 .../groupby_multi_single_reducer2.q.out            |   3 +
 .../groupby_multi_single_reducer3.q.out            |  12 +
 .../clientpositive/groupby_multialias.q.out        |   1 +
 .../clientpositive/groupby_nocolumnalign.q.out     |   2 +
 .../results/clientpositive/groupby_position.q.out  |  18 +
 .../test/results/clientpositive/groupby_ppd.q.out  |   2 +
 .../results/clientpositive/groupby_rollup1.q.out   |  12 +
 .../clientpositive/groupby_rollup_empty.q.out      |   1 +
 .../results/clientpositive/groupby_sort_10.q.out   |   1 +
 .../results/clientpositive/groupby_sort_11.q.out   |   8 +
 .../results/clientpositive/groupby_sort_1_23.q.out |   6 +
 .../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_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    |   8 +
 .../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   |  11 +
 ql/src/test/results/clientpositive/hll.q.out       |   2 +
 .../implicit_cast_during_insert.q.out              |   1 +
 .../results/clientpositive/in_typecheck_char.q.out |   5 +
 .../clientpositive/in_typecheck_pointlook.q.out    |   2 +
 .../clientpositive/in_typecheck_varchar.q.out      |   2 +
 .../infer_bucket_sort_dyn_part.q.out               |   3 +
 .../infer_bucket_sort_grouping_operators.q.out     |   6 +
 .../infer_bucket_sort_map_operators.q.out          |   7 +
 .../infer_bucket_sort_num_buckets.q.out            |   3 +
 .../results/clientpositive/infer_join_preds.q.out  |  18 +
 ql/src/test/results/clientpositive/innerjoin.q.out |   5 +
 .../test/results/clientpositive/innerjoin1.q.out   |   4 +
 ql/src/test/results/clientpositive/input11.q.out   |   1 +
 .../results/clientpositive/input11_limit.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   |   2 +
 .../results/clientpositive/input14_limit.q.out     |   2 +
 ql/src/test/results/clientpositive/input17.q.out   |   2 +
 ql/src/test/results/clientpositive/input18.q.out   |   2 +
 .../test/results/clientpositive/input1_limit.q.out |   4 +
 ql/src/test/results/clientpositive/input20.q.out   |   2 +
 ql/src/test/results/clientpositive/input21.q.out   |   1 +
 ql/src/test/results/clientpositive/input22.q.out   |   1 +
 ql/src/test/results/clientpositive/input25.q.out   |   2 +
 ql/src/test/results/clientpositive/input26.q.out   |   2 +
 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   |   2 +
 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   |   3 +
 .../test/results/clientpositive/input3_limit.q.out |   3 +
 .../test/results/clientpositive/input4_limit.q.out |   2 +
 ql/src/test/results/clientpositive/input5.q.out    |   2 +
 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 +
 .../clientpositive/input_columnarserde.q.out       |   1 +
 .../results/clientpositive/input_lazyserde.q.out   |   1 +
 .../results/clientpositive/input_lazyserde2.q.out  |   1 +
 .../test/results/clientpositive/input_part10.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             |   4 +
 .../test/results/clientpositive/insert_into1.q.out |   9 +
 .../test/results/clientpositive/insert_into2.q.out |   7 +
 .../test/results/clientpositive/insert_into3.q.out |   8 +
 .../test/results/clientpositive/insert_into4.q.out |   5 +
 .../test/results/clientpositive/insert_into5.q.out |   5 +
 .../test/results/clientpositive/insert_into6.q.out |   3 +
 .../clientpositive/insertoverwrite_bucket.q.out    |   4 +
 .../test/results/clientpositive/interval_3.q.out   |   2 +
 ql/src/test/results/clientpositive/join0.q.out     |   5 +-
 ql/src/test/results/clientpositive/join10.q.out    |   2 +
 ql/src/test/results/clientpositive/join11.q.out    |   2 +
 ql/src/test/results/clientpositive/join12.q.out    |   4 +
 ql/src/test/results/clientpositive/join13.q.out    |   4 +
 ql/src/test/results/clientpositive/join14.q.out    |   3 +
 ql/src/test/results/clientpositive/join15.q.out    |   3 +
 ql/src/test/results/clientpositive/join16.q.out    |   2 +
 ql/src/test/results/clientpositive/join18.q.out    |   4 +
 .../clientpositive/join18_multi_distinct.q.out     |   4 +
 ql/src/test/results/clientpositive/join19.q.out    |  10 +
 ql/src/test/results/clientpositive/join2.q.out     |   4 +
 ql/src/test/results/clientpositive/join20.q.out    |  10 +
 ql/src/test/results/clientpositive/join21.q.out    |   5 +
 ql/src/test/results/clientpositive/join22.q.out    |   4 +
 ql/src/test/results/clientpositive/join23.q.out    |   3 +
 ql/src/test/results/clientpositive/join25.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     |   5 +
 ql/src/test/results/clientpositive/join30.q.out    |   2 +
 ql/src/test/results/clientpositive/join31.q.out    |   3 +
 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     |   3 +
 ql/src/test/results/clientpositive/join40.q.out    |  15 +
 ql/src/test/results/clientpositive/join41.q.out    |   4 +
 ql/src/test/results/clientpositive/join42.q.out    |  10 +
 ql/src/test/results/clientpositive/join43.q.out    |  10 +
 ql/src/test/results/clientpositive/join44.q.out    |   2 +
 ql/src/test/results/clientpositive/join45.q.out    |  46 ++
 ql/src/test/results/clientpositive/join46.q.out    |  42 ++
 ql/src/test/results/clientpositive/join47.q.out    |  46 ++
 ql/src/test/results/clientpositive/join5.q.out     |   3 +
 ql/src/test/results/clientpositive/join6.q.out     |   3 +
 ql/src/test/results/clientpositive/join7.q.out     |   5 +
 ql/src/test/results/clientpositive/join8.q.out     |   3 +
 .../results/clientpositive/join_alt_syntax.q.out   |  26 +
 .../join_by_range_rule_not_null.q.out              |  12 +
 .../clientpositive/join_cond_pushdown_1.q.out      |  16 +
 .../clientpositive/join_cond_pushdown_2.q.out      |  12 +
 .../clientpositive/join_cond_pushdown_3.q.out      |  16 +
 .../clientpositive/join_cond_pushdown_4.q.out      |  12 +
 .../join_cond_pushdown_unqual1.q.out               |  16 +
 .../join_cond_pushdown_unqual2.q.out               |  12 +
 .../join_cond_pushdown_unqual3.q.out               |  16 +
 .../join_cond_pushdown_unqual4.q.out               |  12 +
 .../join_cond_pushdown_unqual5.q.out               |   2 +
 .../clientpositive/join_emit_interval.q.out        |   4 +
 .../clientpositive/join_grp_diff_keys.q.out        |   7 +
 .../results/clientpositive/join_hive_626.q.out     |   4 +
 .../join_merge_multi_expressions.q.out             |   5 +
 .../test/results/clientpositive/join_merging.q.out |   8 +
 .../results/clientpositive/join_on_varchar.q.out   |   1 +
 .../test/results/clientpositive/join_parse.q.out   |  18 +
 ql/src/test/results/clientpositive/join_rc.q.out   |   2 +
 .../test/results/clientpositive/join_reorder.q.out |  18 +
 .../results/clientpositive/join_reorder2.q.out     |  12 +
 .../results/clientpositive/join_reorder3.q.out     |  12 +
 .../results/clientpositive/join_reorder4.q.out     |  12 +
 .../test/results/clientpositive/join_thrift.q.out  |   2 +
 ql/src/test/results/clientpositive/join_vc.q.out   |   8 +
 ql/src/test/results/clientpositive/join_view.q.out |   2 +
 .../test/results/clientpositive/keep_uniform.q.out |  20 +
 .../results/clientpositive/lateral_view_cp.q.out   |   3 +
 .../clientpositive/lateral_view_explode2.q.out     |   2 +
 .../clientpositive/lateral_view_noalias.q.out      |   6 +
 .../clientpositive/lateral_view_onview.q.out       |   7 +
 .../test/results/clientpositive/leftsemijoin.q.out |   4 +
 .../results/clientpositive/limit_pushdown2.q.out   |  16 +
 .../clientpositive/limit_pushdown_negative.q.out   |   7 +
 ql/src/test/results/clientpositive/lineage1.q.out  |   6 +
 .../clientpositive/llap/acid_no_buckets.q.out      |   4 +
 .../llap/acid_vectorization_original.q.out         |   4 +
 .../results/clientpositive/llap/auto_join0.q.out   |   5 +
 .../results/clientpositive/llap/auto_join1.q.out   |   2 +
 .../results/clientpositive/llap/auto_join21.q.out  |   3 +
 .../results/clientpositive/llap/auto_join29.q.out  |  27 ++
 .../results/clientpositive/llap/auto_join30.q.out  |  21 +
 .../clientpositive/llap/auto_join_filters.q.out    |   9 +
 .../clientpositive/llap/auto_join_nulls.q.out      |   3 +
 .../clientpositive/llap/auto_smb_mapjoin_14.q.out  |  24 +
 .../llap/auto_sortmerge_join_10.q.out              |   5 +
 .../llap/auto_sortmerge_join_13.q.out              |   9 +
 .../llap/auto_sortmerge_join_14.q.out              |   2 +
 .../llap/auto_sortmerge_join_15.q.out              |   2 +
 .../llap/auto_sortmerge_join_16.q.out              |   2 +
 .../llap/auto_sortmerge_join_6.q.out               |  42 ++
 .../llap/auto_sortmerge_join_9.q.out               |  39 ++
 .../test/results/clientpositive/llap/bucket6.q.out |   2 +
 .../clientpositive/llap/bucket_groupby.q.out       |  30 ++
 .../clientpositive/llap/bucket_map_join_tez2.q.out |  45 ++
 .../llap/bucket_map_join_tez_empty.q.out           |   1 +
 .../llap/bucketsortoptimize_insert_2.q.out         |  12 +
 .../llap/bucketsortoptimize_insert_6.q.out         |  21 +
 .../llap/bucketsortoptimize_insert_7.q.out         |   6 +
 .../results/clientpositive/llap/cbo_no_stats.q.out |  15 +
 .../clientpositive/llap/check_constraint.q.out     |  34 ++
 .../test/results/clientpositive/llap/cluster.q.out |  22 +
 .../columnStatsUpdateForStatsOptimizer_1.q.out     |   6 +
 .../clientpositive/llap/column_access_stats.q.out  |  10 +
 .../clientpositive/llap/constprog_dpp.q.out        |   4 +-
 .../clientpositive/llap/constprog_semijoin.q.out   |  32 +-
 .../llap/constraints_optimization.q.out            |  29 ++
 .../llap/convert_decimal64_to_decimal.q.out        |   4 +
 .../llap/correlationoptimizer1.q.out               |  89 ++++
 .../llap/correlationoptimizer2.q.out               |  84 ++++
 .../llap/correlationoptimizer3.q.out               |  42 ++
 .../llap/correlationoptimizer4.q.out               |  76 +++
 .../llap/correlationoptimizer6.q.out               | 107 +++++
 .../test/results/clientpositive/llap/count.q.out   |  15 +
 .../clientpositive/llap/count_dist_rewrite.q.out   |  17 +
 .../results/clientpositive/llap/cross_join.q.out   |  11 +
 .../results/clientpositive/llap/cross_prod_1.q.out |  29 ++
 .../results/clientpositive/llap/cross_prod_3.q.out |   2 +
 .../results/clientpositive/llap/cross_prod_4.q.out |   2 +
 .../llap/cross_product_check_1.q.out               |  22 +
 .../llap/cross_product_check_2.q.out               |  19 +
 ql/src/test/results/clientpositive/llap/ctas.q.out |  15 +
 .../results/clientpositive/llap/cte_mat_3.q.out    |   4 +-
 .../results/clientpositive/llap/cte_mat_4.q.out    |   8 +-
 .../results/clientpositive/llap/cte_mat_5.q.out    |   4 +-
 .../clientpositive/llap/default_constraint.q.out   |  12 +
 .../clientpositive/llap/deleteAnalyze.q.out        |   4 +-
 .../llap/disable_merge_for_bucketing.q.out         |   1 +
 ql/src/test/results/clientpositive/llap/dpp.q.out  |   5 +
 .../llap/dynamic_partition_join_noncbo.q.out       |  10 +
 .../llap/dynamic_partition_pruning.q.out           | 138 ++++++
 .../llap/dynamic_partition_pruning_2.q.out         |  16 +
 .../llap/dynamic_semijoin_reduction.q.out          |  93 ++++
 .../llap/dynamic_semijoin_reduction_2.q.out        |  24 +
 .../llap/dynamic_semijoin_reduction_3.q.out        |  23 +
 .../llap/dynamic_semijoin_reduction_4.q.out        |  25 +
 .../dynamic_semijoin_reduction_on_aggcol.q.out     |   5 +
 .../llap/dynamic_semijoin_reduction_sw.q.out       |  14 +
 .../llap/dynamic_semijoin_reduction_sw2.q.out      |  10 +
 .../llap/dynamic_semijoin_user_level.q.out         |  64 +--
 .../llap/dynpart_sort_opt_vectorization.q.out      |  35 ++
 .../llap/dynpart_sort_optimization.q.out           |  55 +++
 .../llap/dynpart_sort_optimization2.q.out          |  10 +
 .../llap/dynpart_sort_optimization_acid.q.out      |  12 +
 .../results/clientpositive/llap/empty_join.q.out   |   4 +-
 .../llap/enforce_constraint_notnull.q.out          |  70 +++
 .../llap/estimate_pkfk_filtered_fk.q.out           |  12 +-
 .../clientpositive/llap/estimate_pkfk_nocond.q.out |   8 +-
 .../clientpositive/llap/estimate_pkfk_push.q.out   |   8 +-
 .../clientpositive/llap/except_distinct.q.out      |  18 +
 .../clientpositive/llap/explainanalyze_2.q.out     | 240 +++++-----
 .../clientpositive/llap/explainuser_1.q.out        | 522 +++++++++++----------
 .../clientpositive/llap/explainuser_2.q.out        | 438 ++++++++---------
 .../clientpositive/llap/explainuser_4.q.out        |  32 +-
 .../clientpositive/llap/external_jdbc_table.q.out  |   2 +
 .../clientpositive/llap/external_jdbc_table2.q.out |   4 +
 .../clientpositive/llap/external_jdbc_table3.q.out |   2 +
 .../clientpositive/llap/external_jdbc_table4.q.out |   4 +
 .../llap/external_jdbc_table_perf.q.out            |  68 +++
 .../results/clientpositive/llap/filter_union.q.out |   4 +
 .../llap/fullouter_mapjoin_1_optimized.q.out       |  24 +
 .../results/clientpositive/llap/groupby1.q.out     |   2 +
 .../results/clientpositive/llap/groupby2.q.out     |   4 +
 .../results/clientpositive/llap/groupby3.q.out     |   3 +
 .../llap/groupby_groupingset_bug.q.out             |  15 +-
 .../clientpositive/llap/groupby_resolution.q.out   |  16 +
 .../clientpositive/llap/groupby_rollup_empty.q.out |   1 +
 .../llap/groupby_rollup_empty2.q.out               |   2 +
 .../test/results/clientpositive/llap/having.q.out  |   6 +
 .../llap/hybridgrace_hashjoin_1.q.out              |  26 +
 .../llap/hybridgrace_hashjoin_2.q.out              |  44 ++
 .../llap/identity_project_remove_skip.q.out        |   1 +
 .../test/results/clientpositive/llap/insert1.q.out |   6 +
 .../llap/insert1_overwrite_partitions.q.out        |   6 +
 .../results/clientpositive/llap/insert_into1.q.out |   9 +
 .../results/clientpositive/llap/insert_into2.q.out |   7 +
 .../llap/insert_into_default_keyword.q.out         |  46 ++
 .../llap/insert_only_empty_query.q.out             |   2 +
 .../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      |  67 +++
 .../results/clientpositive/llap/jdbc_handler.q.out |   4 +
 .../test/results/clientpositive/llap/join0.q.out   |   3 +
 .../test/results/clientpositive/llap/join1.q.out   |   3 +
 .../clientpositive/llap/join32_lessSize.q.out      |   6 +
 .../test/results/clientpositive/llap/join46.q.out  |  42 ++
 .../llap/join_constraints_optimization.q.out       |  10 +
 .../clientpositive/llap/join_emit_interval.q.out   |   4 +
 .../llap/join_is_not_distinct_from.q.out           |  20 +
 .../clientpositive/llap/join_max_hashtable.q.out   |  14 +
 .../clientpositive/llap/join_nullsafe.q.out        |  20 +
 .../llap/join_reordering_no_stats.q.out            |  20 +
 .../results/clientpositive/llap/keep_uniform.q.out |  18 +
 ql/src/test/results/clientpositive/llap/kryo.q.out |   1 +
 .../results/clientpositive/llap/lateral_view.q.out |   4 +
 .../results/clientpositive/llap/leftsemijoin.q.out |   4 +
 .../clientpositive/llap/limit_join_transpose.q.out |  50 ++
 .../clientpositive/llap/limit_pushdown.q.out       |  24 +
 .../clientpositive/llap/limit_pushdown3.q.out      |  24 +
 .../llap/llap_decimal64_reader.q.out               |   4 +
 .../clientpositive/llap/llap_nullscan.q.out        |   6 +
 .../clientpositive/llap/llap_partitioned.q.out     |   2 +
 .../results/clientpositive/llap/llap_smb.q.out     |   1 +
 .../results/clientpositive/llap/llap_smb_ptf.q.out |  10 +
 .../results/clientpositive/llap/llap_stats.q.out   |   1 +
 .../llap/llap_vector_nohybridgrace.q.out           |   4 +
 .../results/clientpositive/llap/llapdecider.q.out  |  36 ++
 .../clientpositive/llap/load_data_using_job.q.out  |  11 +
 .../clientpositive/llap/load_dyn_part1.q.out       |   2 +
 .../clientpositive/llap/load_dyn_part2.q.out       |   2 +
 .../clientpositive/llap/load_dyn_part5.q.out       |   2 +
 .../results/clientpositive/llap/lvj_mapjoin.q.out  |   2 +
 .../results/clientpositive/llap/mapjoin2.q.out     |   8 +
 .../results/clientpositive/llap/mapjoin3.q.out     |   1 +
 .../results/clientpositive/llap/mapjoin46.q.out    |  37 ++
 .../clientpositive/llap/mapjoin_decimal.q.out      |   2 +
 .../llap/mapjoin_decimal_vectorized.q.out          |   8 +
 .../llap/mapjoin_emit_interval.q.out               |   2 +
 .../results/clientpositive/llap/mapjoin_hint.q.out |  15 +
 .../clientpositive/llap/mapjoin_mapjoin.q.out      |   5 +
 .../results/clientpositive/llap/mapreduce1.q.out   |   2 +
 .../results/clientpositive/llap/mapreduce2.q.out   |   2 +
 .../llap/materialized_view_cluster.q.out           |  12 +
 .../llap/materialized_view_create_rewrite.q.out    |   6 +
 .../llap/materialized_view_create_rewrite_2.q.out  |   5 +
 .../llap/materialized_view_create_rewrite_3.q.out  |  19 +
 .../llap/materialized_view_create_rewrite_4.q.out  |  29 ++
 .../llap/materialized_view_create_rewrite_5.q.out  |  14 +
 .../materialized_view_create_rewrite_dummy.q.out   |   6 +
 ...ialized_view_create_rewrite_rebuild_dummy.q.out |  19 +
 ...erialized_view_create_rewrite_time_window.q.out |  13 +
 .../llap/materialized_view_distribute_sort.q.out   |  12 +
 .../llap/materialized_view_partition_cluster.q.out |  12 +
 .../llap/materialized_view_partitioned.q.out       |   8 +
 .../llap/materialized_view_partitioned_3.q.out     |   2 +
 .../llap/materialized_view_rewrite_1.q.out         |   7 +
 .../llap/materialized_view_rewrite_10.q.out        |   1 +
 .../llap/materialized_view_rewrite_2.q.out         |   4 +
 .../llap/materialized_view_rewrite_3.q.out         |   2 +
 .../llap/materialized_view_rewrite_4.q.out         |  10 +
 .../llap/materialized_view_rewrite_5.q.out         |   8 +
 .../llap/materialized_view_rewrite_6.q.out         |   8 +
 .../llap/materialized_view_rewrite_7.q.out         |  23 +
 .../llap/materialized_view_rewrite_8.q.out         |   5 +
 .../llap/materialized_view_rewrite_9.q.out         |   3 +
 .../materialized_view_rewrite_no_join_opt.q.out    |   8 +
 .../materialized_view_rewrite_no_join_opt_2.q.out  |   7 +
 .../llap/materialized_view_rewrite_part_1.q.out    |   5 +
 .../llap/materialized_view_rewrite_part_2.q.out    |   4 +
 .../llap/materialized_view_rewrite_ssb.q.out       |  23 +
 .../llap/materialized_view_rewrite_ssb_2.q.out     |  23 +
 .../test/results/clientpositive/llap/merge1.q.out  |   4 +
 .../test/results/clientpositive/llap/merge2.q.out  |   4 +
 .../results/clientpositive/llap/mergejoin.q.out    |  45 ++
 .../llap/metadata_only_queries.q.out               |   5 +
 .../test/results/clientpositive/llap/mm_all.q.out  |   1 +
 .../test/results/clientpositive/llap/mm_bhif.q.out |   1 +
 .../test/results/clientpositive/llap/mm_dp.q.out   |   1 +
 ql/src/test/results/clientpositive/llap/mrr.q.out  |  18 +
 .../clientpositive/llap/multiMapJoin1.q.out        |  37 ++
 .../clientpositive/llap/multiMapJoin2.q.out        |  46 ++
 .../llap/multi_count_distinct_null.q.out           |   4 +
 .../results/clientpositive/llap/multi_insert.q.out |  36 ++
 .../llap/multi_insert_lateral_view.q.out           |  33 ++
 .../llap/murmur_hash_migration.q.out               |   6 +
 .../results/clientpositive/llap/offset_limit.q.out |   3 +
 .../llap/offset_limit_ppd_optimizer.q.out          |  22 +
 .../clientpositive/llap/optimize_join_ptp.q.out    |   2 +
 .../results/clientpositive/llap/orc_llap.q.out     |  17 +
 .../results/clientpositive/llap/orc_merge1.q.out   |   3 +
 .../results/clientpositive/llap/orc_merge10.q.out  |   6 +
 .../results/clientpositive/llap/orc_merge2.q.out   |   2 +
 .../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   |   4 +
 .../clientpositive/llap/orc_merge_diff_fs.q.out    |   6 +
 .../clientpositive/llap/orc_merge_incompat1.q.out  |   1 +
 .../clientpositive/llap/orc_merge_incompat2.q.out  |   2 +
 .../results/clientpositive/llap/orc_ppd_date.q.out |   2 +
 .../llap/orc_predicate_pushdown.q.out              |  12 +
 .../llap/orc_struct_type_vectorization.q.out       |   2 +
 .../results/clientpositive/llap/parallel.q.out     |   4 +
 .../clientpositive/llap/parallel_colstats.q.out    |   4 +
 .../llap/parquet_complex_types_vectorization.q.out |   9 +
 .../llap/parquet_map_type_vectorization.q.out      |   3 +
 .../llap/parquet_predicate_pushdown.q.out          |  12 +
 .../llap/parquet_struct_type_vectorization.q.out   |   2 +
 .../llap/parquet_types_vectorization.q.out         |  13 +
 .../results/clientpositive/llap/partialdhj.q.out   |  10 +
 .../clientpositive/llap/partition_ctas.q.out       |   2 +
 .../llap/partition_multilevels.q.out               |   2 +
 .../llap/partition_shared_scan.q.out               |   8 +
 ql/src/test/results/clientpositive/llap/ptf.q.out  |  64 +++
 .../clientpositive/llap/ptf_matchpath.q.out        |   3 +
 .../clientpositive/llap/ptf_streaming.q.out        |  36 ++
 .../clientpositive/llap/q93_with_constraints.q.out |   6 +
 .../clientpositive/llap/rcfile_createas1.q.out     |   1 +
 .../clientpositive/llap/rcfile_merge2.q.out        |   2 +
 .../clientpositive/llap/rcfile_merge3.q.out        |   1 +
 .../clientpositive/llap/rcfile_merge4.q.out        |   1 +
 .../llap/reduce_deduplicate_distinct.q.out         |  11 +
 .../llap/reduce_deduplicate_extended.q.out         |  24 +
 .../clientpositive/llap/reducesink_dedup.q.out     |   1 +
 .../results/clientpositive/llap/reopt_dpp.q.out    |   4 +-
 .../clientpositive/llap/reopt_semijoin.q.out       |  10 +
 .../clientpositive/llap/results_cache_1.q.out      |   9 +
 .../clientpositive/llap/results_cache_2.q.out      |   2 +
 .../llap/results_cache_capacity.q.out              |   2 +
 .../llap/results_cache_diff_fs.q.out               |   3 +
 .../llap/results_cache_empty_result.q.out          |   1 +
 .../llap/results_cache_invalidation.q.out          |  13 +
 .../llap/results_cache_invalidation2.q.out         |   4 +
 .../llap/results_cache_lifetime.q.out              |   3 +
 .../llap/results_cache_quoted_identifiers.q.out    |   1 +
 .../llap/results_cache_temptable.q.out             |   3 +
 .../llap/results_cache_transactional.q.out         |  12 +
 .../llap/results_cache_with_masking.q.out          |   2 +
 .../llap/retry_failure_reorder.q.out               |  24 +-
 .../llap/retry_failure_stat_changes.q.out          |  12 +-
 .../clientpositive/llap/runtime_stats_hs2.q.out    |   8 +-
 .../clientpositive/llap/runtime_stats_merge.q.out  |   6 +-
 .../results/clientpositive/llap/sample10_mm.q.out  |   1 +
 .../clientpositive/llap/selectDistinctStar.q.out   |   8 +
 .../results/clientpositive/llap/semijoin.q.out     |  85 ++++
 .../results/clientpositive/llap/semijoin6.q.out    |  14 +
 .../results/clientpositive/llap/semijoin7.q.out    |  14 +
 .../clientpositive/llap/semijoin_hint.q.out        | 127 +++++
 .../clientpositive/llap/semijoin_reddedup.q.out    |  10 +
 .../clientpositive/llap/sharedworkext.q.out        |  13 +
 .../results/clientpositive/llap/skewjoin.q.out     |  32 ++
 .../clientpositive/llap/skewjoinopt15.q.out        |  10 +
 .../clientpositive/llap/smb_mapjoin_14.q.out       |  18 +
 .../clientpositive/llap/smb_mapjoin_17.q.out       |  47 ++
 .../clientpositive/llap/smb_mapjoin_18.q.out       |   2 +
 .../clientpositive/llap/smb_mapjoin_4.q.out        |  30 ++
 .../clientpositive/llap/smb_mapjoin_5.q.out        |  30 ++
 .../clientpositive/llap/smb_mapjoin_6.q.out        |   6 +
 .../results/clientpositive/llap/sqlmerge.q.out     |  11 +
 .../clientpositive/llap/sqlmerge_stats.q.out       |  42 ++
 .../clientpositive/llap/stats_only_external.q.out  |   2 +
 .../clientpositive/llap/stats_only_null.q.out      |   2 +
 .../results/clientpositive/llap/subquery_ALL.q.out |  18 +
 .../results/clientpositive/llap/subquery_ANY.q.out |  28 ++
 .../clientpositive/llap/subquery_corr.q.out        |   6 +
 .../clientpositive/llap/subquery_exists.q.out      |  15 +
 .../results/clientpositive/llap/subquery_in.q.out  | 150 ++++++
 .../clientpositive/llap/subquery_in_having.q.out   |  38 ++
 .../clientpositive/llap/subquery_multi.q.out       | 142 ++++++
 .../clientpositive/llap/subquery_notin.q.out       | 227 +++++++++
 .../clientpositive/llap/subquery_null_agg.q.out    |   5 +
 .../clientpositive/llap/subquery_scalar.q.out      | 214 +++++++++
 .../clientpositive/llap/subquery_select.q.out      | 171 +++++++
 .../clientpositive/llap/subquery_views.q.out       |  16 +
 .../test/results/clientpositive/llap/sysdb.q.out   |   2 +
 .../results/clientpositive/llap/temp_table.q.out   |   3 +
 .../llap/tez_bmj_schema_evolution.q.out            |   2 +
 .../test/results/clientpositive/llap/tez_dml.q.out |   5 +
 .../llap/tez_dynpart_hashjoin_1.q.out              |  23 +
 .../llap/tez_dynpart_hashjoin_2.q.out              |  15 +
 .../llap/tez_dynpart_hashjoin_3.q.out              |   7 +
 .../clientpositive/llap/tez_input_counters.q.out   |   3 +
 .../results/clientpositive/llap/tez_join.q.out     |   4 +
 .../clientpositive/llap/tez_join_hash.q.out        |   9 +
 .../clientpositive/llap/tez_join_tests.q.out       |   5 +
 .../clientpositive/llap/tez_joins_explain.q.out    |   5 +
 .../clientpositive/llap/tez_nway_join.q.out        |  13 +
 .../clientpositive/llap/tez_self_join.q.out        |   4 +
 .../clientpositive/llap/tez_smb_empty.q.out        |   9 +
 .../results/clientpositive/llap/tez_smb_main.q.out |  45 ++
 .../clientpositive/llap/tez_smb_reduce_side.q.out  |  17 +
 .../results/clientpositive/llap/tez_union.q.out    |  26 +
 .../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   |   8 +
 .../llap/tez_union_multiinsert.q.out               |  40 ++
 .../llap/tez_vector_dynpart_hashjoin_1.q.out       |  20 +
 .../llap/tez_vector_dynpart_hashjoin_2.q.out       |  15 +
 .../test/results/clientpositive/llap/topnkey.q.out |  12 +
 .../test/results/clientpositive/llap/union2.q.out  |   2 +
 .../test/results/clientpositive/llap/union3.q.out  |   8 +
 .../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      | 132 +++++-
 .../clientpositive/llap/unionDistinct_3.q.out      |  51 ++
 .../clientpositive/llap/union_assertion_type.q.out |   3 +
 .../clientpositive/llap/union_remove_26.q.out      |  12 +
 .../clientpositive/llap/union_top_level.q.out      |  27 ++
 .../results/clientpositive/llap/vector_acid4.q.out |   1 +
 .../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_annotate_stats_select.q.out        |   4 +
 .../llap/vector_auto_smb_mapjoin_14.q.out          |  20 +
 .../llap/vector_between_columns.q.out              |   4 +
 .../clientpositive/llap/vector_between_in.q.out    |  16 +
 .../llap/vector_binary_join_groupby.q.out          |   5 +
 .../clientpositive/llap/vector_bucket.q.out        |   1 +
 .../clientpositive/llap/vector_case_when_2.q.out   |   7 +
 .../clientpositive/llap/vector_cast_constant.q.out |   3 +
 .../clientpositive/llap/vector_char_2.q.out        |   6 +
 .../clientpositive/llap/vector_char_mapjoin1.q.out |   6 +
 .../llap/vector_char_varchar_1.q.out               |   2 +
 .../clientpositive/llap/vector_coalesce_2.q.out    |   2 +
 .../clientpositive/llap/vector_coalesce_3.q.out    |   1 +
 .../clientpositive/llap/vector_coalesce_4.q.out    |   1 +
 .../clientpositive/llap/vector_complex_all.q.out   |   8 +
 .../clientpositive/llap/vector_complex_join.q.out  |   3 +
 .../results/clientpositive/llap/vector_count.q.out |   4 +
 .../llap/vector_count_distinct.q.out               |   2 +
 .../clientpositive/llap/vector_data_types.q.out    |   3 +
 .../clientpositive/llap/vector_date_1.q.out        |   5 +
 .../vector_decimal64_div_decimal64column.q.out     |   1 +
 .../vector_decimal64_div_decimal64scalar.q.out     |   2 +
 .../clientpositive/llap/vector_decimal_1.q.out     |   9 +
 .../clientpositive/llap/vector_decimal_10_0.q.out  |   2 +
 .../clientpositive/llap/vector_decimal_2.q.out     |  16 +
 .../clientpositive/llap/vector_decimal_6.q.out     |   5 +
 .../llap/vector_decimal_aggregate.q.out            |   4 +
 .../llap/vector_decimal_expressions.q.out          |   2 +
 .../clientpositive/llap/vector_decimal_join.q.out  |   2 +
 .../llap/vector_decimal_mapjoin.q.out              |   6 +
 .../llap/vector_decimal_precision.q.out            |   2 +
 .../clientpositive/llap/vector_decimal_round.q.out |   6 +
 .../llap/vector_decimal_round_2.q.out              |   4 +
 .../llap/vector_decimal_trailing.q.out             |   1 +
 .../clientpositive/llap/vector_decimal_udf.q.out   |  16 +
 .../clientpositive/llap/vector_distinct_2.q.out    |   1 +
 .../llap/vector_full_outer_join.q.out              |  16 +
 .../llap/vector_fullouter_mapjoin_1_fast.q.out     |  24 +
 .../vector_fullouter_mapjoin_1_optimized.q.out     |  24 +
 ...or_fullouter_mapjoin_1_optimized_passthru.q.out |  24 +
 .../clientpositive/llap/vector_groupby4.q.out      |   4 +
 .../clientpositive/llap/vector_groupby6.q.out      |   4 +
 .../clientpositive/llap/vector_groupby_3.q.out     |   1 +
 .../clientpositive/llap/vector_groupby_cube1.q.out |  14 +
 .../llap/vector_groupby_grouping_id1.q.out         |   6 +
 .../llap/vector_groupby_grouping_id2.q.out         |  29 ++
 .../llap/vector_groupby_grouping_id3.q.out         |   2 +
 .../llap/vector_groupby_grouping_sets1.q.out       |   7 +
 .../llap/vector_groupby_grouping_sets2.q.out       |   8 +
 .../llap/vector_groupby_grouping_sets3.q.out       |   4 +
 .../llap/vector_groupby_grouping_sets3_dec.q.out   |   4 +
 .../llap/vector_groupby_grouping_sets4.q.out       |  13 +
 .../llap/vector_groupby_grouping_sets5.q.out       |   7 +
 .../llap/vector_groupby_grouping_sets6.q.out       |   2 +
 .../vector_groupby_grouping_sets_grouping.q.out    |  17 +
 .../llap/vector_groupby_grouping_sets_limit.q.out  |  18 +
 .../llap/vector_groupby_grouping_window.q.out      |   2 +
 .../llap/vector_groupby_mapjoin.q.out              |   5 +
 .../llap/vector_groupby_reduce.q.out               |   9 +
 .../llap/vector_groupby_rollup1.q.out              |  10 +
 .../llap/vector_groupby_sort_11.q.out              |  10 +
 .../llap/vector_groupby_sort_8.q.out               |   1 +
 .../clientpositive/llap/vector_grouping_sets.q.out |   3 +
 .../llap/vector_identity_reuse.q.out               |   3 +
 .../clientpositive/llap/vector_if_expr.q.out       |   1 +
 .../clientpositive/llap/vector_if_expr_2.q.out     |   1 +
 .../llap/vector_include_no_sel.q.out               |   3 +
 .../clientpositive/llap/vector_inner_join.q.out    |   9 +
 .../clientpositive/llap/vector_interval_1.q.out    |   8 +
 .../clientpositive/llap/vector_interval_2.q.out    |  10 +
 .../llap/vector_interval_arithmetic.q.out          |   6 +
 .../llap/vector_interval_mapjoin.q.out             |   1 +
 .../clientpositive/llap/vector_join30.q.out        |  49 ++
 .../clientpositive/llap/vector_join_filters.q.out  |  10 +
 .../clientpositive/llap/vector_join_nulls.q.out    |  10 +
 .../llap/vector_left_outer_join.q.out              |   3 +
 .../llap/vector_left_outer_join2.q.out             |   6 +
 .../llap/vector_left_outer_join3.q.out             |   2 +
 .../llap/vector_leftsemi_mapjoin.q.out             | 282 +++++++++++
 .../clientpositive/llap/vector_like_2.q.out        |   1 +
 .../llap/vector_llap_io_data_conversion.q.out      |   1 +
 .../clientpositive/llap/vector_llap_text_1.q.out   |   2 +
 .../llap/vector_mapjoin_complex_values.q.out       |   3 +
 .../llap/vector_mapjoin_reduce.q.out               |   5 +
 .../llap/vector_mr_diff_schema_alias.q.out         |   7 +
 .../llap/vector_null_projection.q.out              |   2 +
 .../clientpositive/llap/vector_nullsafe_join.q.out |  20 +
 .../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    |  20 +
 .../clientpositive/llap/vector_order_null.q.out    |  11 +
 .../clientpositive/llap/vector_orderby_5.q.out     |   2 +
 .../clientpositive/llap/vector_outer_join0.q.out   |   2 +
 .../clientpositive/llap/vector_outer_join1.q.out   |   5 +
 .../clientpositive/llap/vector_outer_join2.q.out   |   3 +
 .../llap/vector_outer_reference_windowed.q.out     |  30 ++
 .../llap/vector_partition_diff_num_cols.q.out      |   5 +
 .../llap/vector_partitioned_date_time.q.out        |  18 +
 .../results/clientpositive/llap/vector_ptf_1.q.out |   1 +
 .../llap/vector_ptf_part_simple.q.out              |  30 ++
 .../clientpositive/llap/vector_reduce1.q.out       |   1 +
 .../clientpositive/llap/vector_reduce2.q.out       |   1 +
 .../clientpositive/llap/vector_reduce3.q.out       |   1 +
 .../llap/vector_reduce_groupby_decimal.q.out       |   3 +
 .../vector_reduce_groupby_duplicate_cols.q.out     |   2 +
 .../clientpositive/llap/vector_retry_failure.q.out |   1 +
 .../llap/vector_reuse_scratchcols.q.out            |   2 +
 .../clientpositive/llap/vector_string_concat.q.out |   3 +
 .../clientpositive/llap/vector_topnkey.q.out       |   9 +
 .../results/clientpositive/llap/vector_udf1.q.out  |   3 +
 .../llap/vector_udf_string_to_boolean.q.out        |   1 +
 .../clientpositive/llap/vector_union_null.q.out    |   2 +
 .../llap/vector_varchar_mapjoin1.q.out             |   6 +
 .../llap/vector_varchar_simple.q.out               |   3 +
 .../llap/vector_when_case_null.q.out               |   1 +
 .../clientpositive/llap/vector_windowing.q.out     |  72 +++
 .../llap/vector_windowing_expressions.q.out        |  10 +
 .../clientpositive/llap/vector_windowing_gby.q.out |   4 +
 .../llap/vector_windowing_gby2.q.out               |  12 +
 .../llap/vector_windowing_multipartitioning.q.out  |  11 +
 .../llap/vector_windowing_navfn.q.out              |  11 +
 .../llap/vector_windowing_order_null.q.out         |   8 +
 .../llap/vector_windowing_range_multiorder.q.out   |  11 +
 .../llap/vector_windowing_rank.q.out               |  13 +
 .../llap/vector_windowing_streaming.q.out          |   6 +
 .../llap/vector_windowing_windowspec.q.out         |  11 +
 .../llap/vector_windowing_windowspec4.q.out        |   1 +
 .../clientpositive/llap/vectorization_0.q.out      |   7 +
 .../clientpositive/llap/vectorization_1.q.out      |   1 +
 .../clientpositive/llap/vectorization_12.q.out     |   2 +
 .../clientpositive/llap/vectorization_13.q.out     |   4 +
 .../clientpositive/llap/vectorization_14.q.out     |   2 +
 .../clientpositive/llap/vectorization_15.q.out     |   2 +
 .../clientpositive/llap/vectorization_16.q.out     |   1 +
 .../clientpositive/llap/vectorization_17.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_7.q.out      |   2 +
 .../clientpositive/llap/vectorization_8.q.out      |   2 +
 .../clientpositive/llap/vectorization_9.q.out      |   1 +
 .../clientpositive/llap/vectorization_div0.q.out   |   4 +
 .../llap/vectorization_input_format_excludes.q.out |   4 +
 .../clientpositive/llap/vectorization_limit.q.out  |  10 +
 .../llap/vectorization_nested_udf.q.out            |   1 +
 .../llap/vectorization_part_project.q.out          |   1 +
 .../llap/vectorization_pushdown.q.out              |   1 +
 .../llap/vectorization_short_regress.q.out         |  24 +
 .../clientpositive/llap/vectorized_case.q.out      |   2 +
 .../clientpositive/llap/vectorized_context.q.out   |   2 +
 .../llap/vectorized_distinct_gby.q.out             |   3 +
 .../vectorized_dynamic_partition_pruning.q.out     | 130 +++++
 .../vectorized_dynamic_semijoin_reduction.q.out    |  37 ++
 .../vectorized_dynamic_semijoin_reduction2.q.out   |  40 ++
 .../vectorized_insert_into_bucketed_table.q.out    |   1 +
 .../clientpositive/llap/vectorized_join46.q.out    |  21 +
 .../clientpositive/llap/vectorized_mapjoin.q.out   |   2 +
 .../clientpositive/llap/vectorized_mapjoin3.q.out  |  10 +
 .../llap/vectorized_multi_output_select.q.out      |   5 +
 .../llap/vectorized_nested_mapjoin.q.out           |   3 +
 .../clientpositive/llap/vectorized_parquet.q.out   |   1 +
 .../llap/vectorized_parquet_types.q.out            |   3 +
 .../clientpositive/llap/vectorized_ptf.q.out       |  64 +++
 .../llap/vectorized_shufflejoin.q.out              |   3 +
 .../clientpositive/llap/vectorized_timestamp.q.out |   3 +
 .../llap/vectorized_timestamp_funcs.q.out          |   7 +
 .../results/clientpositive/llap/windowing.q.out    |   2 +
 .../clientpositive/llap/windowing_gby.q.out        |   8 +-
 .../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   |   6 +
 .../results/clientpositive/load_dyn_part2.q.out    |   2 +
 .../results/clientpositive/load_dyn_part3.q.out    |   1 +
 .../results/clientpositive/load_dyn_part4.q.out    |   1 +
 .../results/clientpositive/load_dyn_part9.q.out    |   1 +
 .../load_static_ptn_into_bucketed_table.q.out      |   4 +
 ql/src/test/results/clientpositive/mapjoin2.q.out  |   2 +
 ql/src/test/results/clientpositive/mapjoin46.q.out |  20 +
 ql/src/test/results/clientpositive/mapjoin47.q.out |   8 +
 .../mapjoin_decimal_vectorized.q.out               |   4 +
 .../results/clientpositive/mapjoin_distinct.q.out  |   6 +
 .../mapjoin_filter_on_outerjoin.q.out              |   2 +
 .../results/clientpositive/mapjoin_mapjoin.q.out   |   1 +
 .../clientpositive/mapjoin_test_outer.q.out        |   2 +
 .../test/results/clientpositive/mapreduce1.q.out   |   2 +
 .../test/results/clientpositive/mapreduce2.q.out   |   2 +
 .../test/results/clientpositive/mapreduce3.q.out   |   2 +
 .../test/results/clientpositive/mapreduce4.q.out   |   2 +
 .../test/results/clientpositive/mapreduce5.q.out   |   2 +
 .../test/results/clientpositive/mapreduce6.q.out   |   2 +
 .../test/results/clientpositive/mapreduce7.q.out   |   2 +
 .../test/results/clientpositive/mapreduce8.q.out   |   2 +
 ql/src/test/results/clientpositive/masking_1.q.out |   2 +
 .../test/results/clientpositive/masking_10.q.out   |   6 +
 .../test/results/clientpositive/masking_12.q.out   |   7 +
 ql/src/test/results/clientpositive/masking_2.q.out |   6 +
 ql/src/test/results/clientpositive/masking_3.q.out |  37 ++
 ql/src/test/results/clientpositive/masking_4.q.out |   5 +
 .../clientpositive/masking_disablecbo_1.q.out      |   2 +
 .../clientpositive/masking_disablecbo_2.q.out      |   6 +
 .../clientpositive/masking_disablecbo_3.q.out      |  16 +
 .../clientpositive/masking_disablecbo_4.q.out      |   2 +
 .../test/results/clientpositive/masking_mv.q.out   |   8 +
 .../results/clientpositive/masking_reserved.q.out  |   4 +
 ql/src/test/results/clientpositive/merge1.q.out    |   4 +
 ql/src/test/results/clientpositive/merge2.q.out    |   4 +
 ql/src/test/results/clientpositive/merge4.q.out    |   5 +
 .../clientpositive/merge_dynamic_partition.q.out   |   5 +
 .../clientpositive/merge_dynamic_partition2.q.out  |   2 +
 .../clientpositive/merge_dynamic_partition3.q.out  |   2 +
 .../clientpositive/merge_dynamic_partition4.q.out  |   2 +
 .../clientpositive/merge_dynamic_partition5.q.out  |   2 +
 .../test/results/clientpositive/merge_join_1.q.out |   4 +
 ql/src/test/results/clientpositive/mergejoin.q.out |  47 ++
 .../test/results/clientpositive/mergejoins.q.out   |  12 +
 .../results/clientpositive/mergejoins_mixed.q.out  |  72 +++
 .../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  |   6 +
 .../results/clientpositive/multi_insert_gby2.q.out |   1 +
 .../results/clientpositive/multi_insert_gby3.q.out |  18 +
 .../results/clientpositive/multi_insert_gby4.q.out |   4 +
 .../clientpositive/multi_insert_mixed.q.out        |   5 +
 ...ulti_insert_move_tasks_share_dependencies.q.out |  56 +++
 .../clientpositive/multi_insert_union_src.q.out    |   3 +
 .../clientpositive/multi_insert_with_join2.q.out   |  30 ++
 .../clientpositive/multigroupby_singlemr.q.out     |  21 +
 .../results/clientpositive/named_column_join.q.out |   2 +
 .../clientpositive/nested_column_pruning.q.out     |  20 +
 ql/src/test/results/clientpositive/no_hooks.q.out  |   3 +
 .../clientpositive/nonblock_op_deduplicate.q.out   |   4 +
 .../test/results/clientpositive/nonmr_fetch.q.out  |   6 +
 .../nonreserved_keywords_insert_into1.q.out        |   6 +
 .../results/clientpositive/notable_alias1.q.out    |   2 +
 .../results/clientpositive/notable_alias2.q.out    |   2 +
 .../nullability_transitive_inference.q.out         |   2 +
 .../results/clientpositive/nullformatCTAS.q.out    |   1 +
 ql/src/test/results/clientpositive/nullgroup.q.out |   5 +
 .../test/results/clientpositive/nullgroup2.q.out   |   6 +
 .../test/results/clientpositive/nullgroup3.q.out   |   4 +
 .../test/results/clientpositive/nullgroup4.q.out   |   7 +
 .../clientpositive/nullgroup4_multi_distinct.q.out |   2 +
 .../results/clientpositive/optional_outer.q.out    |  12 +
 .../results/clientpositive/orc_createas1.q.out     |   3 +
 .../test/results/clientpositive/orc_merge1.q.out   |   3 +
 .../test/results/clientpositive/orc_merge10.q.out  |   6 +
 .../test/results/clientpositive/orc_merge2.q.out   |   2 +
 .../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 |   6 +
 .../clientpositive/orc_merge_incompat1.q.out       |   1 +
 .../clientpositive/orc_merge_incompat2.q.out       |   2 +
 .../clientpositive/orc_nested_column_pruning.q.out |  20 +
 .../orc_struct_type_vectorization.q.out            |   1 +
 ql/src/test/results/clientpositive/order.q.out     |   2 +
 ql/src/test/results/clientpositive/order3.q.out    |  12 +
 .../results/clientpositive/order_by_expr_1.q.out   |   2 +
 .../clientpositive/outer_reference_windowed.q.out  |  15 +
 ql/src/test/results/clientpositive/parallel.q.out  |   4 +
 .../results/clientpositive/parallel_colstats.q.out |   4 +
 .../results/clientpositive/parallel_join0.q.out    |   5 +-
 .../results/clientpositive/parallel_join1.q.out    |   3 +
 .../results/clientpositive/parallel_orderby.q.out  |   1 +
 .../parquet_complex_types_vectorization.q.out      |   6 +
 .../test/results/clientpositive/parquet_join.q.out |   2 +
 .../parquet_map_type_vectorization.q.out           |   2 +
 .../clientpositive/parquet_no_row_serde.q.out      |   2 +
 .../parquet_struct_type_vectorization.q.out        |   1 +
 ...pes_non_dictionary_encoding_vectorization.q.out |  11 +
 .../parquet_types_vectorization.q.out              |  13 +
 .../clientpositive/parquet_vectorization_0.q.out   |   7 +
 .../clientpositive/parquet_vectorization_1.q.out   |   1 +
 .../clientpositive/parquet_vectorization_12.q.out  |   2 +
 .../clientpositive/parquet_vectorization_13.q.out  |   4 +
 .../clientpositive/parquet_vectorization_14.q.out  |   2 +
 .../clientpositive/parquet_vectorization_15.q.out  |   2 +
 .../clientpositive/parquet_vectorization_16.q.out  |   1 +
 .../clientpositive/parquet_vectorization_17.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_7.q.out   |   2 +
 .../clientpositive/parquet_vectorization_8.q.out   |   2 +
 .../clientpositive/parquet_vectorization_9.q.out   |   1 +
 .../parquet_vectorization_div0.q.out               |   2 +
 .../parquet_vectorization_limit.q.out              |   6 +
 .../parquet_vectorization_offset_limit.q.out       |   1 +
 .../parquet_vectorization_part_project.q.out       |   1 +
 .../parquet_vectorization_pushdown.q.out           |   1 +
 .../clientpositive/partial_column_stats.q.out      |   1 +
 .../clientpositive/partition_boolexpr.q.out        |   3 +
 ql/src/test/results/clientpositive/pcs.q.out       |   1 +
 .../results/clientpositive/perf/spark/query1.q.out |  11 +
 .../clientpositive/perf/spark/query10.q.out        |  18 +
 .../clientpositive/perf/spark/query11.q.out        |  25 +
 .../clientpositive/perf/spark/query12.q.out        |   5 +
 .../clientpositive/perf/spark/query13.q.out        |   7 +
 .../clientpositive/perf/spark/query15.q.out        |   8 +
 .../clientpositive/perf/spark/query16.q.out        |   9 +
 .../clientpositive/perf/spark/query17.q.out        |  14 +
 .../clientpositive/perf/spark/query18.q.out        |  14 +
 .../clientpositive/perf/spark/query19.q.out        |  10 +
 .../results/clientpositive/perf/spark/query2.q.out |  14 +
 .../clientpositive/perf/spark/query20.q.out        |   5 +
 .../clientpositive/perf/spark/query21.q.out        |   4 +
 .../clientpositive/perf/spark/query22.q.out        |   6 +
 .../clientpositive/perf/spark/query23.q.out        |  32 ++
 .../clientpositive/perf/spark/query24.q.out        |  19 +
 .../clientpositive/perf/spark/query25.q.out        |  14 +
 .../clientpositive/perf/spark/query26.q.out        |   8 +
 .../clientpositive/perf/spark/query27.q.out        |   8 +
 .../clientpositive/perf/spark/query28.q.out        |  12 +
 .../clientpositive/perf/spark/query29.q.out        |  14 +
 .../results/clientpositive/perf/spark/query3.q.out |   6 +
 .../clientpositive/perf/spark/query30.q.out        |  17 +
 .../clientpositive/perf/spark/query31.q.out        |  37 ++
 .../clientpositive/perf/spark/query32.q.out        |   6 +
 .../clientpositive/perf/spark/query33.q.out        |  27 ++
 .../clientpositive/perf/spark/query34.q.out        |   4 +
 .../clientpositive/perf/spark/query35.q.out        |  18 +
 .../clientpositive/perf/spark/query36.q.out        |   7 +
 .../clientpositive/perf/spark/query37.q.out        |   5 +
 .../clientpositive/perf/spark/query38.q.out        |  17 +
 .../clientpositive/perf/spark/query39.q.out        |  13 +
 .../results/clientpositive/perf/spark/query4.q.out |  37 ++
 .../clientpositive/perf/spark/query40.q.out        |   6 +
 .../clientpositive/perf/spark/query42.q.out        |   6 +
 .../clientpositive/perf/spark/query43.q.out        |   4 +
 .../clientpositive/perf/spark/query44.q.out        |  18 +
 .../clientpositive/perf/spark/query45.q.out        |  14 +
 .../clientpositive/perf/spark/query46.q.out        |  10 +
 .../clientpositive/perf/spark/query47.q.out        |  23 +
 .../clientpositive/perf/spark/query48.q.out        |   7 +
 .../clientpositive/perf/spark/query49.q.out        |  24 +
 .../results/clientpositive/perf/spark/query5.q.out |  19 +
 .../clientpositive/perf/spark/query50.q.out        |   8 +
 .../clientpositive/perf/spark/query51.q.out        |  10 +
 .../clientpositive/perf/spark/query52.q.out        |   6 +
 .../clientpositive/perf/spark/query53.q.out        |   7 +
 .../clientpositive/perf/spark/query54.q.out        |  28 ++
 .../clientpositive/perf/spark/query55.q.out        |   6 +
 .../clientpositive/perf/spark/query56.q.out        |  27 ++
 .../clientpositive/perf/spark/query57.q.out        |  23 +
 .../clientpositive/perf/spark/query58.q.out        |  37 ++
 .../clientpositive/perf/spark/query59.q.out        |  13 +
 .../results/clientpositive/perf/spark/query6.q.out |  18 +
 .../clientpositive/perf/spark/query60.q.out        |  27 ++
 .../clientpositive/perf/spark/query61.q.out        |  18 +
 .../clientpositive/perf/spark/query63.q.out        |   7 +
 .../clientpositive/perf/spark/query65.q.out        |  11 +
 .../clientpositive/perf/spark/query66.q.out        |   8 +
 .../clientpositive/perf/spark/query67.q.out        |   7 +
 .../clientpositive/perf/spark/query68.q.out        |  10 +
 .../clientpositive/perf/spark/query69.q.out        |  19 +
 .../results/clientpositive/perf/spark/query7.q.out |   8 +
 .../clientpositive/perf/spark/query70.q.out        |  11 +
 .../clientpositive/perf/spark/query71.q.out        |  13 +
 .../clientpositive/perf/spark/query72.q.out        |  16 +
 .../clientpositive/perf/spark/query73.q.out        |   4 +
 .../clientpositive/perf/spark/query74.q.out        |  25 +
 .../clientpositive/perf/spark/query75.q.out        |  39 ++
 .../clientpositive/perf/spark/query76.q.out        |  14 +
 .../clientpositive/perf/spark/query77.q.out        |  21 +
 .../clientpositive/perf/spark/query78.q.out        |  20 +
 .../clientpositive/perf/spark/query79.q.out        |   6 +
 .../results/clientpositive/perf/spark/query8.q.out |  11 +
 .../clientpositive/perf/spark/query80.q.out        |  25 +
 .../clientpositive/perf/spark/query81.q.out        |  17 +
 .../clientpositive/perf/spark/query82.q.out        |   5 +
 .../clientpositive/perf/spark/query83.q.out        |  34 ++
 .../clientpositive/perf/spark/query84.q.out        |   6 +
 .../clientpositive/perf/spark/query85.q.out        |  12 +
 .../clientpositive/perf/spark/query86.q.out        |   7 +
 .../clientpositive/perf/spark/query87.q.out        |  16 +
 .../clientpositive/perf/spark/query88.q.out        |   8 +
 .../clientpositive/perf/spark/query89.q.out        |   7 +
 .../results/clientpositive/perf/spark/query9.q.out |  15 +
 .../clientpositive/perf/spark/query90.q.out        |   6 +
 .../clientpositive/perf/spark/query91.q.out        |  10 +
 .../clientpositive/perf/spark/query92.q.out        |   6 +
 .../clientpositive/perf/spark/query93.q.out        |   4 +
 .../clientpositive/perf/spark/query94.q.out        |   9 +
 .../clientpositive/perf/spark/query95.q.out        |  15 +
 .../clientpositive/perf/spark/query96.q.out        |   1 +
 .../clientpositive/perf/spark/query97.q.out        |   9 +
 .../clientpositive/perf/spark/query98.q.out        |   5 +
 .../clientpositive/perf/spark/query99.q.out        |   4 +
 .../perf/tez/constraints/mv_query44.q.out          |  23 +-
 .../perf/tez/constraints/query1.q.out              |  25 +-
 .../perf/tez/constraints/query10.q.out             |  41 +-
 .../perf/tez/constraints/query11.q.out             |  53 ++-
 .../perf/tez/constraints/query12.q.out             |  13 +-
 .../perf/tez/constraints/query13.q.out             |  16 +-
 .../perf/tez/constraints/query14.q.out             | 163 +++----
 .../perf/tez/constraints/query15.q.out             |  17 +-
 .../perf/tez/constraints/query16.q.out             |  24 +-
 .../perf/tez/constraints/query17.q.out             |  33 +-
 .../perf/tez/constraints/query18.q.out             |  27 +-
 .../perf/tez/constraints/query19.q.out             |  23 +-
 .../perf/tez/constraints/query1b.q.out             |  13 +
 .../perf/tez/constraints/query2.q.out              |  21 +-
 .../perf/tez/constraints/query20.q.out             |  13 +-
 .../perf/tez/constraints/query21.q.out             |  15 +-
 .../perf/tez/constraints/query22.q.out             |  11 +-
 .../perf/tez/constraints/query23.q.out             |  46 +-
 .../perf/tez/constraints/query24.q.out             |  36 +-
 .../perf/tez/constraints/query25.q.out             |  33 +-
 .../perf/tez/constraints/query26.q.out             |  21 +-
 .../perf/tez/constraints/query27.q.out             |  21 +-
 .../perf/tez/constraints/query28.q.out             |  12 +-
 .../perf/tez/constraints/query29.q.out             |  33 +-
 .../perf/tez/constraints/query3.q.out              |  11 +-
 .../perf/tez/constraints/query30.q.out             |  33 +-
 .../perf/tez/constraints/query31.q.out             |  80 ++--
 .../perf/tez/constraints/query32.q.out             |  18 +-
 .../perf/tez/constraints/query33.q.out             |  55 +--
 .../perf/tez/constraints/query34.q.out             |  19 +-
 .../perf/tez/constraints/query35.q.out             |  41 +-
 .../perf/tez/constraints/query36.q.out             |  17 +-
 .../perf/tez/constraints/query37.q.out             |  17 +-
 .../perf/tez/constraints/query38.q.out             |  36 +-
 .../perf/tez/constraints/query39.q.out             |  25 +-
 .../perf/tez/constraints/query4.q.out              |  81 ++--
 .../perf/tez/constraints/query40.q.out             |  21 +-
 .../perf/tez/constraints/query42.q.out             |  11 +-
 .../perf/tez/constraints/query43.q.out             |  13 +-
 .../perf/tez/constraints/query44.q.out             |  23 +-
 .../perf/tez/constraints/query45.q.out             |  27 +-
 .../perf/tez/constraints/query46.q.out             |  27 +-
 .../perf/tez/constraints/query47.q.out             |  29 +-
 .../perf/tez/constraints/query48.q.out             |  12 +-
 .../perf/tez/constraints/query49.q.out             |  55 +--
 .../perf/tez/constraints/query5.q.out              |  53 ++-
 .../perf/tez/constraints/query50.q.out             |  17 +-
 .../perf/tez/constraints/query51.q.out             |  19 +-
 .../perf/tez/constraints/query52.q.out             |  11 +-
 .../perf/tez/constraints/query53.q.out             |  11 +-
 .../perf/tez/constraints/query54.q.out             |  45 +-
 .../perf/tez/constraints/query55.q.out             |  11 +-
 .../perf/tez/constraints/query56.q.out             |  55 +--
 .../perf/tez/constraints/query57.q.out             |  29 +-
 .../perf/tez/constraints/query58.q.out             |  49 +-
 .../perf/tez/constraints/query59.q.out             |  33 +-
 .../perf/tez/constraints/query6.q.out              |  25 +-
 .../perf/tez/constraints/query60.q.out             |  61 +--
 .../perf/tez/constraints/query61.q.out             |  40 +-
 .../perf/tez/constraints/query63.q.out             |  11 +-
 .../perf/tez/constraints/query64.q.out             | 133 +++---
 .../perf/tez/constraints/query65.q.out             |  21 +-
 .../perf/tez/constraints/query66.q.out             |  45 +-
 .../perf/tez/constraints/query67.q.out             |  17 +-
 .../perf/tez/constraints/query68.q.out             |  27 +-
 .../perf/tez/constraints/query69.q.out             |  41 +-
 .../perf/tez/constraints/query7.q.out              |  21 +-
 .../perf/tez/constraints/query70.q.out             |  27 +-
 .../perf/tez/constraints/query71.q.out             |  27 +-
 .../perf/tez/constraints/query72.q.out             |  43 +-
 .../perf/tez/constraints/query73.q.out             |  19 +-
 .../perf/tez/constraints/query74.q.out             |  53 ++-
 .../perf/tez/constraints/query75.q.out             |  93 ++--
 .../perf/tez/constraints/query76.q.out             |  37 +-
 .../perf/tez/constraints/query77.q.out             |  55 +--
 .../perf/tez/constraints/query78.q.out             |  39 +-
 .../perf/tez/constraints/query79.q.out             |  19 +-
 .../perf/tez/constraints/query8.q.out              |  31 +-
 .../perf/tez/constraints/query80.q.out             |  79 ++--
 .../perf/tez/constraints/query81.q.out             |  33 +-
 .../perf/tez/constraints/query82.q.out             |  17 +-
 .../perf/tez/constraints/query83.q.out             |  49 +-
 .../perf/tez/constraints/query84.q.out             |  21 +-
 .../perf/tez/constraints/query85.q.out             |  27 +-
 .../perf/tez/constraints/query86.q.out             |  13 +-
 .../perf/tez/constraints/query87.q.out             |  38 +-
 .../perf/tez/constraints/query88.q.out             |  96 ++--
 .../perf/tez/constraints/query89.q.out             |  17 +-
 .../perf/tez/constraints/query90.q.out             |  20 +-
 .../perf/tez/constraints/query91.q.out             |  27 +-
 .../perf/tez/constraints/query92.q.out             |  18 +-
 .../perf/tez/constraints/query93.q.out             |  11 +-
 .../perf/tez/constraints/query94.q.out             |  24 +-
 .../perf/tez/constraints/query95.q.out             |  34 +-
 .../perf/tez/constraints/query96.q.out             |  12 +-
 .../perf/tez/constraints/query97.q.out             |  16 +-
 .../perf/tez/constraints/query98.q.out             |  13 +-
 .../perf/tez/constraints/query99.q.out             |  21 +-
 .../results/clientpositive/perf/tez/query1.q.out   |  25 +-
 .../results/clientpositive/perf/tez/query10.q.out  |  41 +-
 .../results/clientpositive/perf/tez/query11.q.out  |  53 ++-
 .../results/clientpositive/perf/tez/query12.q.out  |  13 +-
 .../results/clientpositive/perf/tez/query13.q.out  |  20 +-
 .../results/clientpositive/perf/tez/query14.q.out  | 163 +++----
 .../results/clientpositive/perf/tez/query15.q.out  |  17 +-
 .../results/clientpositive/perf/tez/query16.q.out  |  24 +-
 .../results/clientpositive/perf/tez/query17.q.out  |  33 +-
 .../results/clientpositive/perf/tez/query18.q.out  |  27 +-
 .../results/clientpositive/perf/tez/query19.q.out  |  23 +-
 .../results/clientpositive/perf/tez/query1b.q.out  |  11 +
 .../results/clientpositive/perf/tez/query2.q.out   |  21 +-
 .../results/clientpositive/perf/tez/query20.q.out  |  13 +-
 .../results/clientpositive/perf/tez/query21.q.out  |  15 +-
 .../results/clientpositive/perf/tez/query22.q.out  |  15 +-
 .../results/clientpositive/perf/tez/query23.q.out  |  50 +-
 .../results/clientpositive/perf/tez/query24.q.out  |  36 +-
 .../results/clientpositive/perf/tez/query25.q.out  |  33 +-
 .../results/clientpositive/perf/tez/query26.q.out  |  21 +-
 .../results/clientpositive/perf/tez/query27.q.out  |  21 +-
 .../results/clientpositive/perf/tez/query28.q.out  |  12 +-
 .../results/clientpositive/perf/tez/query29.q.out  |  33 +-
 .../results/clientpositive/perf/tez/query3.q.out   |  11 +-
 .../results/clientpositive/perf/tez/query30.q.out  |  33 +-
 .../results/clientpositive/perf/tez/query31.q.out  |  80 ++--
 .../results/clientpositive/perf/tez/query32.q.out  |  18 +-
 .../results/clientpositive/perf/tez/query33.q.out  |  55 +--
 .../results/clientpositive/perf/tez/query34.q.out  |  19 +-
 .../results/clientpositive/perf/tez/query35.q.out  |  41 +-
 .../results/clientpositive/perf/tez/query36.q.out  |  17 +-
 .../results/clientpositive/perf/tez/query37.q.out  |  17 +-
 .../results/clientpositive/perf/tez/query38.q.out  |  36 +-
 .../results/clientpositive/perf/tez/query39.q.out  |  33 +-
 .../results/clientpositive/perf/tez/query4.q.out   |  81 ++--
 .../results/clientpositive/perf/tez/query40.q.out  |  21 +-
 .../results/clientpositive/perf/tez/query42.q.out  |  11 +-
 .../results/clientpositive/perf/tez/query43.q.out  |  13 +-
 .../results/clientpositive/perf/tez/query44.q.out  |  23 +-
 .../results/clientpositive/perf/tez/query45.q.out  |  27 +-
 .../results/clientpositive/perf/tez/query46.q.out  |  27 +-
 .../results/clientpositive/perf/tez/query47.q.out  |  29 +-
 .../results/clientpositive/perf/tez/query48.q.out  |  16 +-
 .../results/clientpositive/perf/tez/query49.q.out  |  55 +--
 .../results/clientpositive/perf/tez/query5.q.out   |  53 ++-
 .../results/clientpositive/perf/tez/query50.q.out  |  21 +-
 .../results/clientpositive/perf/tez/query51.q.out  |  19 +-
 .../results/clientpositive/perf/tez/query52.q.out  |  11 +-
 .../results/clientpositive/perf/tez/query53.q.out  |  15 +-
 .../results/clientpositive/perf/tez/query54.q.out  |  45 +-
 .../results/clientpositive/perf/tez/query55.q.out  |  11 +-
 .../results/clientpositive/perf/tez/query56.q.out  |  55 +--
 .../results/clientpositive/perf/tez/query57.q.out  |  29 +-
 .../results/clientpositive/perf/tez/query58.q.out  |  49 +-
 .../results/clientpositive/perf/tez/query59.q.out  |  33 +-
 .../results/clientpositive/perf/tez/query6.q.out   |  27 +-
 .../results/clientpositive/perf/tez/query60.q.out  |  61 +--
 .../results/clientpositive/perf/tez/query61.q.out  |  40 +-
 .../results/clientpositive/perf/tez/query63.q.out  |  15 +-
 .../results/clientpositive/perf/tez/query64.q.out  | 133 +++---
 .../results/clientpositive/perf/tez/query65.q.out  |  25 +-
 .../results/clientpositive/perf/tez/query66.q.out  |  45 +-
 .../results/clientpositive/perf/tez/query67.q.out  |  17 +-
 .../results/clientpositive/perf/tez/query68.q.out  |  27 +-
 .../results/clientpositive/perf/tez/query69.q.out  |  41 +-
 .../results/clientpositive/perf/tez/query7.q.out   |  21 +-
 .../results/clientpositive/perf/tez/query70.q.out  |  27 +-
 .../results/clientpositive/perf/tez/query71.q.out  |  27 +-
 .../results/clientpositive/perf/tez/query72.q.out  |  43 +-
 .../results/clientpositive/perf/tez/query73.q.out  |  19 +-
 .../results/clientpositive/perf/tez/query74.q.out  |  53 ++-
 .../results/clientpositive/perf/tez/query75.q.out  |  93 ++--
 .../results/clientpositive/perf/tez/query76.q.out  |  37 +-
 .../results/clientpositive/perf/tez/query77.q.out  |  71 +--
 .../results/clientpositive/perf/tez/query78.q.out  |  39 +-
 .../results/clientpositive/perf/tez/query79.q.out  |  19 +-
 .../results/clientpositive/perf/tez/query8.q.out   |  31 +-
 .../results/clientpositive/perf/tez/query80.q.out  |  79 ++--
 .../results/clientpositive/perf/tez/query81.q.out  |  33 +-
 .../results/clientpositive/perf/tez/query82.q.out  |  17 +-
 .../results/clientpositive/perf/tez/query83.q.out  |  49 +-
 .../results/clientpositive/perf/tez/query84.q.out  |  21 +-
 .../results/clientpositive/perf/tez/query85.q.out  |  31 +-
 .../results/clientpositive/perf/tez/query86.q.out  |  13 +-
 .../results/clientpositive/perf/tez/query87.q.out  |  38 +-
 .../results/clientpositive/perf/tez/query88.q.out  |  96 ++--
 .../results/clientpositive/perf/tez/query89.q.out  |  17 +-
 .../results/clientpositive/perf/tez/query90.q.out  |  20 +-
 .../results/clientpositive/perf/tez/query91.q.out  |  27 +-
 .../results/clientpositive/perf/tez/query92.q.out  |  18 +-
 .../results/clientpositive/perf/tez/query93.q.out  |  11 +-
 .../results/clientpositive/perf/tez/query94.q.out  |  24 +-
 .../results/clientpositive/perf/tez/query95.q.out  |  34 +-
 .../results/clientpositive/perf/tez/query96.q.out  |  12 +-
 .../results/clientpositive/perf/tez/query97.q.out  |  16 +-
 .../results/clientpositive/perf/tez/query98.q.out  |  13 +-
 .../results/clientpositive/perf/tez/query99.q.out  |  21 +-
 .../test/results/clientpositive/pointlookup5.q.out |   2 +
 .../clientpositive/position_alias_test_1.q.out     |   5 +
 ql/src/test/results/clientpositive/ppd2.q.out      |   5 +
 .../results/clientpositive/ppd_clusterby.q.out     |   8 +
 .../results/clientpositive/ppd_constant_expr.q.out |   2 +
 .../clientpositive/ppd_deterministic_expr.q.out    |   4 +
 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 |   6 +
 ql/src/test/results/clientpositive/ppd_join.q.out  |   4 +
 ql/src/test/results/clientpositive/ppd_join2.q.out |   8 +
 ql/src/test/results/clientpositive/ppd_join3.q.out |   8 +
 ql/src/test/results/clientpositive/ppd_join4.q.out |   2 +
 ql/src/test/results/clientpositive/ppd_join5.q.out |   8 +
 .../results/clientpositive/ppd_multi_insert.q.out  |  10 +
 .../results/clientpositive/ppd_outer_join1.q.out   |   4 +
 .../results/clientpositive/ppd_outer_join2.q.out   |   4 +
 .../results/clientpositive/ppd_outer_join3.q.out   |   4 +
 .../results/clientpositive/ppd_outer_join4.q.out   |   8 +
 .../results/clientpositive/ppd_outer_join5.q.out   |  12 +
 .../test/results/clientpositive/ppd_random.q.out   |   4 +
 .../clientpositive/ppd_repeated_alias.q.out        |  10 +
 .../results/clientpositive/ppd_transform.q.out     |   2 +
 .../test/results/clientpositive/ppd_udf_case.q.out |   6 +
 .../results/clientpositive/ppd_windowing1.q.out    |  33 ++
 .../results/clientpositive/ptf_matchpath.q.out     |   3 +
 .../results/clientpositive/ptfgroupbyjoin.q.out    |   9 +
 ql/src/test/results/clientpositive/quote1.q.out    |   1 +
 .../results/clientpositive/quotedid_basic.q.out    |   5 +
 .../clientpositive/quotedid_partition.q.out        |   1 +
 .../results/clientpositive/quotedid_skew.q.out     |   4 +
 .../results/clientpositive/rcfile_null_value.q.out |   3 +
 .../reduceSinkDeDuplication_pRS_key_empty.q.out    | Bin 11011 -> 11113 bytes
 .../reduce_deduplicate_exclude_join.q.out          |   1 +
 .../reduce_deduplicate_extended2.q.out             |  30 ++
 ql/src/test/results/clientpositive/regex_col.q.out |   6 +
 ql/src/test/results/clientpositive/row__id.q.out   |   1 +
 .../runtime_skewjoin_mapjoin_spark.q.out           |   5 +
 ql/src/test/results/clientpositive/sample8.q.out   |   4 +
 .../sample_islocalmode_hook_use_metadata.q.out     |   2 +
 .../test/results/clientpositive/script_pipe.q.out  |   1 +
 .../results/clientpositive/select_as_omitted.q.out |   1 +
 .../clientpositive/select_column_pruning.q.out     |   3 +
 .../clientpositive/select_transform_hint.q.out     |   2 +
 ql/src/test/results/clientpositive/semijoin2.q.out |   8 +
 ql/src/test/results/clientpositive/semijoin3.q.out |   3 +
 ql/src/test/results/clientpositive/semijoin4.q.out |   7 +
 ql/src/test/results/clientpositive/semijoin5.q.out |   7 +
 .../test/results/clientpositive/setop_subq.q.out   |  16 +
 ql/src/test/results/clientpositive/skewjoin.q.out  |  30 ++
 .../results/clientpositive/skewjoin_mapjoin1.q.out |   4 +
 .../clientpositive/skewjoin_mapjoin10.q.out        |   4 +
 .../results/clientpositive/skewjoin_mapjoin2.q.out |   4 +
 .../results/clientpositive/skewjoin_mapjoin5.q.out |   1 +
 .../results/clientpositive/skewjoin_noskew.q.out   |   4 +
 .../clientpositive/skewjoin_onesideskew.q.out      |   3 +
 .../clientpositive/skewjoin_union_remove_1.q.out   |  16 +
 .../clientpositive/skewjoin_union_remove_2.q.out   |   7 +
 .../test/results/clientpositive/skewjoinopt1.q.out |  20 +
 .../results/clientpositive/skewjoinopt10.q.out     |   4 +
 .../results/clientpositive/skewjoinopt11.q.out     |   8 +
 .../results/clientpositive/skewjoinopt12.q.out     |   4 +
 .../results/clientpositive/skewjoinopt13.q.out     |   4 +
 .../results/clientpositive/skewjoinopt14.q.out     |   7 +
 .../results/clientpositive/skewjoinopt16.q.out     |   4 +
 .../results/clientpositive/skewjoinopt17.q.out     |   8 +
 .../results/clientpositive/skewjoinopt18.q.out     |   2 +
 .../results/clientpositive/skewjoinopt19.q.out     |   4 +
 .../test/results/clientpositive/skewjoinopt2.q.out |  20 +
 .../results/clientpositive/skewjoinopt20.q.out     |   4 +
 .../results/clientpositive/skewjoinopt21.q.out     |   4 +
 .../test/results/clientpositive/skewjoinopt3.q.out |   8 +
 .../test/results/clientpositive/skewjoinopt4.q.out |   8 +
 .../test/results/clientpositive/skewjoinopt5.q.out |   4 +
 .../test/results/clientpositive/skewjoinopt6.q.out |   4 +
 .../test/results/clientpositive/skewjoinopt7.q.out |   7 +
 .../test/results/clientpositive/skewjoinopt8.q.out |   7 +
 .../test/results/clientpositive/skewjoinopt9.q.out |   6 +
 .../test/results/clientpositive/smb_mapjoin9.q.out |   1 +
 .../results/clientpositive/smb_mapjoin_16.q.out    |   1 +
 .../results/clientpositive/smb_mapjoin_20.q.out    |   6 +
 .../results/clientpositive/smb_mapjoin_21.q.out    |  10 +
 .../results/clientpositive/smb_mapjoin_25.q.out    |   8 +
 .../results/clientpositive/smb_mapjoin_46.q.out    |   8 +
 .../results/clientpositive/smb_mapjoin_47.q.out    |  12 +
 .../results/clientpositive/smb_mapjoin_7.q.out     |   1 +
 ql/src/test/results/clientpositive/sort.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_8.q.out    |   2 +
 .../clientpositive/spark/annotate_stats_join.q.out |  25 +
 .../results/clientpositive/spark/auto_join0.q.out  |   3 +
 .../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 |   5 +
 .../spark/auto_join18_multi_distinct.q.out         |   5 +
 .../results/clientpositive/spark/auto_join20.q.out |   2 +
 .../results/clientpositive/spark/auto_join21.q.out |   1 +
 .../results/clientpositive/spark/auto_join22.q.out |   1 +
 .../results/clientpositive/spark/auto_join23.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 |   5 +
 .../results/clientpositive/spark/auto_join28.q.out |   4 +
 .../results/clientpositive/spark/auto_join29.q.out |   9 +
 .../results/clientpositive/spark/auto_join30.q.out |   8 +
 .../results/clientpositive/spark/auto_join31.q.out |   1 +
 .../results/clientpositive/spark/auto_join32.q.out |   4 +
 .../results/clientpositive/spark/auto_join6.q.out  |   2 +
 .../results/clientpositive/spark/auto_join7.q.out  |   3 +
 .../clientpositive/spark/auto_join_filters.q.out   |   9 +
 .../clientpositive/spark/auto_join_nulls.q.out     |   3 +
 .../clientpositive/spark/auto_join_stats.q.out     |   4 +
 .../spark/auto_join_without_localtask.q.out        |  13 +
 .../clientpositive/spark/auto_smb_mapjoin_14.q.out |  17 +
 .../spark/auto_sortmerge_join_14.q.out             |   2 +
 .../spark/auto_sortmerge_join_15.q.out             |   2 +
 .../spark/auto_sortmerge_join_16.q.out             |   2 +
 .../spark/auto_sortmerge_join_16.q.out_spark       |   2 +
 .../spark/auto_sortmerge_join_6.q.out              |  26 +
 .../spark/auto_sortmerge_join_9.q.out              |  33 ++
 .../results/clientpositive/spark/bucket6.q.out     |   1 +
 .../spark/bucket_map_join_tez1.q.out               |  70 +++
 .../spark/bucket_map_join_tez2.q.out               |  24 +
 .../spark/bucketsortoptimize_insert_2.q.out        |   6 +
 .../spark/bucketsortoptimize_insert_4.q.out        |   2 +
 .../spark/bucketsortoptimize_insert_6.q.out        |   7 +
 .../spark/bucketsortoptimize_insert_7.q.out        |   3 +
 .../spark/bucketsortoptimize_insert_8.q.out        |   2 +
 .../clientpositive/spark/column_access_stats.q.out |   9 +
 .../spark/constprog_partitioner.q.out              |   4 +
 .../clientpositive/spark/constprog_semijoin.q.out  |  16 +
 .../test/results/clientpositive/spark/count.q.out  |  15 +
 .../results/clientpositive/spark/cross_join.q.out  |   6 +
 .../spark/cross_product_check_1.q.out              |  22 +
 .../spark/cross_product_check_2.q.out              |   4 +
 .../test/results/clientpositive/spark/ctas.q.out   |  10 +
 .../spark/disable_merge_for_bucketing.q.out        |   1 +
 .../spark/disable_merge_for_bucketing.q.out_spark  |   1 +
 .../clientpositive/spark/dynamic_rdd_cache.q.out   |  29 ++
 .../spark/dynpart_sort_optimization.q.out          |  31 ++
 .../clientpositive/spark/escape_clusterby1.q.out   |   2 +
 .../spark/escape_distributeby1.q.out               |   2 +
 .../clientpositive/spark/escape_orderby1.q.out     |   2 +
 .../clientpositive/spark/escape_sortby1.q.out      |   2 +
 .../spark/gen_udf_example_add10.q.out              |   1 +
 .../results/clientpositive/spark/groupby1.q.out    |   2 +
 .../results/clientpositive/spark/groupby10.q.out   |   7 +
 .../results/clientpositive/spark/groupby11.q.out   |   4 +
 .../clientpositive/spark/groupby1_map.q.out        |   1 +
 .../clientpositive/spark/groupby1_map_nomap.q.out  |   1 +
 .../clientpositive/spark/groupby1_map_skew.q.out   |   2 +
 .../clientpositive/spark/groupby1_noskew.q.out     |   1 +
 .../results/clientpositive/spark/groupby2.q.out    |   2 +
 .../clientpositive/spark/groupby2_map.q.out        |   1 +
 .../spark/groupby2_map_multi_distinct.q.out        |   2 +
 .../clientpositive/spark/groupby2_map_skew.q.out   |   2 +
 .../clientpositive/spark/groupby2_noskew.q.out     |   1 +
 .../spark/groupby2_noskew_multi_distinct.q.out     |   1 +
 .../results/clientpositive/spark/groupby3.q.out    |   2 +
 .../clientpositive/spark/groupby3_map.q.out        |   1 +
 .../spark/groupby3_map_multi_distinct.q.out        |   1 +
 .../clientpositive/spark/groupby3_map_skew.q.out   |   2 +
 .../clientpositive/spark/groupby3_noskew.q.out     |   1 +
 .../spark/groupby3_noskew_multi_distinct.q.out     |   1 +
 .../results/clientpositive/spark/groupby4.q.out    |   2 +
 .../clientpositive/spark/groupby4_map.q.out        |   1 +
 .../clientpositive/spark/groupby4_map_skew.q.out   |   1 +
 .../clientpositive/spark/groupby4_noskew.q.out     |   1 +
 .../results/clientpositive/spark/groupby5.q.out    |   2 +
 .../clientpositive/spark/groupby5_map.q.out        |   1 +
 .../clientpositive/spark/groupby5_map_skew.q.out   |   1 +
 .../clientpositive/spark/groupby5_noskew.q.out     |   1 +
 .../results/clientpositive/spark/groupby6.q.out    |   2 +
 .../clientpositive/spark/groupby6_map.q.out        |   1 +
 .../clientpositive/spark/groupby6_map_skew.q.out   |   2 +
 .../clientpositive/spark/groupby6_noskew.q.out     |   1 +
 .../clientpositive/spark/groupby7_map.q.out        |   1 +
 .../spark/groupby7_map_multi_single_reducer.q.out  |   1 +
 .../clientpositive/spark/groupby7_map_skew.q.out   |   2 +
 .../clientpositive/spark/groupby7_noskew.q.out     |   1 +
 .../groupby7_noskew_multi_single_reducer.q.out     |   2 +
 .../results/clientpositive/spark/groupby8.q.out    |   4 +
 .../clientpositive/spark/groupby8_map.q.out        |   1 +
 .../clientpositive/spark/groupby8_map_skew.q.out   |   2 +
 .../clientpositive/spark/groupby8_noskew.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 |   4 +
 .../clientpositive/spark/groupby_cube1.q.out       |  12 +
 .../groupby_multi_insert_common_distinct.q.out     |   2 +
 .../spark/groupby_multi_single_reducer.q.out       |   4 +
 .../spark/groupby_multi_single_reducer2.q.out      |   1 +
 .../spark/groupby_multi_single_reducer3.q.out      |   4 +
 .../clientpositive/spark/groupby_position.q.out    |  14 +
 .../clientpositive/spark/groupby_resolution.q.out  |  16 +
 .../clientpositive/spark/groupby_rollup1.q.out     |  10 +
 .../clientpositive/spark/groupby_sort_1_23.q.out   |   2 +
 .../spark/groupby_sort_skew_1_23.q.out             |   4 +
 .../test/results/clientpositive/spark/having.q.out |   6 +
 .../spark/infer_bucket_sort_map_operators.q.out    |   3 +
 .../spark/infer_bucket_sort_num_buckets.q.out      |   2 +
 .../results/clientpositive/spark/innerjoin.q.out   |   4 +
 .../results/clientpositive/spark/input14.q.out     |   1 +
 .../results/clientpositive/spark/input17.q.out     |   1 +
 .../results/clientpositive/spark/input18.q.out     |   1 +
 .../clientpositive/spark/input1_limit.q.out        |   2 +
 .../clientpositive/spark/insert_into1.q.out        |   4 +
 .../clientpositive/spark/insert_into2.q.out        |   4 +
 .../clientpositive/spark/insert_into3.q.out        |   3 +
 .../test/results/clientpositive/spark/join0.q.out  |   3 +
 .../test/results/clientpositive/spark/join1.q.out  |   2 +
 .../test/results/clientpositive/spark/join10.q.out |   2 +
 .../test/results/clientpositive/spark/join11.q.out |   2 +
 .../test/results/clientpositive/spark/join12.q.out |   3 +
 .../test/results/clientpositive/spark/join13.q.out |   4 +
 .../test/results/clientpositive/spark/join14.q.out |   2 +
 .../test/results/clientpositive/spark/join15.q.out |   3 +
 .../test/results/clientpositive/spark/join16.q.out |   2 +
 .../test/results/clientpositive/spark/join18.q.out |   4 +
 .../spark/join18_multi_distinct.q.out              |   4 +
 .../test/results/clientpositive/spark/join19.q.out |  10 +
 .../test/results/clientpositive/spark/join2.q.out  |   4 +
 .../test/results/clientpositive/spark/join20.q.out |   8 +
 .../test/results/clientpositive/spark/join21.q.out |   4 +
 .../test/results/clientpositive/spark/join22.q.out |   4 +
 .../test/results/clientpositive/spark/join23.q.out |   3 +
 .../test/results/clientpositive/spark/join29.q.out |   2 +
 .../test/results/clientpositive/spark/join3.q.out  |   3 +
 .../test/results/clientpositive/spark/join30.q.out |   1 +
 .../test/results/clientpositive/spark/join31.q.out |   2 +
 .../clientpositive/spark/join32_lessSize.q.out     |   4 +
 .../test/results/clientpositive/spark/join38.q.out |   1 +
 .../test/results/clientpositive/spark/join4.q.out  |   2 +
 .../test/results/clientpositive/spark/join40.q.out |  13 +
 .../test/results/clientpositive/spark/join41.q.out |   4 +
 .../test/results/clientpositive/spark/join5.q.out  |   2 +
 .../test/results/clientpositive/spark/join6.q.out  |   2 +
 .../test/results/clientpositive/spark/join7.q.out  |   3 +
 .../test/results/clientpositive/spark/join8.q.out  |   2 +
 .../clientpositive/spark/join_alt_syntax.q.out     |  24 +
 .../spark/join_cond_pushdown_1.q.out               |  14 +
 .../spark/join_cond_pushdown_2.q.out               |  11 +
 .../spark/join_cond_pushdown_3.q.out               |  14 +
 .../spark/join_cond_pushdown_4.q.out               |  11 +
 .../spark/join_cond_pushdown_unqual1.q.out         |  14 +
 .../spark/join_cond_pushdown_unqual2.q.out         |  10 +
 .../spark/join_cond_pushdown_unqual3.q.out         |  14 +
 .../spark/join_cond_pushdown_unqual4.q.out         |  10 +
 .../clientpositive/spark/join_hive_626.q.out       |   4 +
 .../spark/join_merge_multi_expressions.q.out       |   4 +
 .../clientpositive/spark/join_merging.q.out        |   8 +
 .../clientpositive/spark/join_nullsafe.q.out       |  16 +
 .../results/clientpositive/spark/join_rc.q.out     |   2 +
 .../clientpositive/spark/join_reorder.q.out        |  18 +
 .../clientpositive/spark/join_reorder2.q.out       |  10 +
 .../clientpositive/spark/join_reorder3.q.out       |  10 +
 .../clientpositive/spark/join_reorder4.q.out       |   9 +
 .../results/clientpositive/spark/join_thrift.q.out |   2 +
 .../results/clientpositive/spark/join_vc.q.out     |   8 +
 .../results/clientpositive/spark/join_view.q.out   |   2 +
 .../spark/lateral_view_explode2.q.out              |   2 +
 .../clientpositive/spark/leftsemijoin.q.out        |   4 +
 .../clientpositive/spark/limit_pushdown.q.out      |  19 +
 .../clientpositive/spark/limit_pushdown2.q.out     |  16 +
 .../clientpositive/spark/load_dyn_part1.q.out      |   2 +
 .../clientpositive/spark/load_dyn_part10.q.out     |   1 +
 .../clientpositive/spark/load_dyn_part14.q.out     |   1 +
 .../clientpositive/spark/load_dyn_part2.q.out      |   1 +
 .../clientpositive/spark/load_dyn_part3.q.out      |   1 +
 .../clientpositive/spark/load_dyn_part4.q.out      |   1 +
 .../clientpositive/spark/load_dyn_part5.q.out      |   1 +
 .../clientpositive/spark/load_dyn_part9.q.out      |   1 +
 .../clientpositive/spark/mapjoin_decimal.q.out     |   1 +
 .../clientpositive/spark/mapjoin_distinct.q.out    |   6 +
 .../spark/mapjoin_filter_on_outerjoin.q.out        |   2 +
 .../clientpositive/spark/mapjoin_mapjoin.q.out     |   1 +
 .../clientpositive/spark/mapjoin_test_outer.q.out  |   2 +
 .../results/clientpositive/spark/mapreduce1.q.out  |   1 +
 .../results/clientpositive/spark/mapreduce2.q.out  |   1 +
 .../test/results/clientpositive/spark/merge1.q.out |   1 +
 .../test/results/clientpositive/spark/merge2.q.out |   1 +
 .../results/clientpositive/spark/mergejoins.q.out  |   9 +
 .../clientpositive/spark/mergejoins_mixed.q.out    |  63 +++
 .../spark/metadata_only_queries.q.out              |   5 +
 .../clientpositive/spark/multi_insert.q.out        |   4 +
 .../clientpositive/spark/multi_insert_gby.q.out    |   2 +
 .../clientpositive/spark/multi_insert_gby2.q.out   |   1 +
 .../clientpositive/spark/multi_insert_gby3.q.out   |   9 +
 .../spark/multi_insert_lateral_view.q.out          |  17 +
 .../clientpositive/spark/multi_insert_mixed.q.out  |   4 +
 ...ulti_insert_move_tasks_share_dependencies.q.out |  20 +
 .../clientpositive/spark/multi_join_union.q.out    |   3 +
 .../spark/multigroupby_singlemr.q.out              |  10 +
 .../results/clientpositive/spark/nullgroup.q.out   |   5 +
 .../results/clientpositive/spark/nullgroup2.q.out  |   6 +
 .../results/clientpositive/spark/nullgroup4.q.out  |   7 +
 .../spark/nullgroup4_multi_distinct.q.out          |   2 +
 .../results/clientpositive/spark/orc_merge2.q.out  |   1 +
 .../results/clientpositive/spark/orc_merge7.q.out  |   2 +
 .../clientpositive/spark/orc_merge_diff_fs.q.out   |   3 +
 .../clientpositive/spark/orc_merge_incompat2.q.out |   1 +
 .../test/results/clientpositive/spark/order.q.out  |   2 +
 .../results/clientpositive/spark/parallel.q.out    |   2 +
 .../clientpositive/spark/parallel_join0.q.out      |   3 +
 .../clientpositive/spark/parallel_join1.q.out      |   2 +
 .../clientpositive/spark/parallel_orderby.q.out    |   1 +
 .../clientpositive/spark/parquet_join.q.out        |   2 +
 .../spark/parquet_vectorization_0.q.out            |   7 +
 .../spark/parquet_vectorization_1.q.out            |   1 +
 .../spark/parquet_vectorization_12.q.out           |   2 +
 .../spark/parquet_vectorization_13.q.out           |   4 +
 .../spark/parquet_vectorization_14.q.out           |   2 +
 .../spark/parquet_vectorization_15.q.out           |   2 +
 .../spark/parquet_vectorization_16.q.out           |   1 +
 .../spark/parquet_vectorization_17.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_7.q.out            |   2 +
 .../spark/parquet_vectorization_8.q.out            |   2 +
 .../spark/parquet_vectorization_9.q.out            |   1 +
 .../spark/parquet_vectorization_div0.q.out         |   2 +
 .../spark/parquet_vectorization_limit.q.out        |   6 +
 .../spark/parquet_vectorization_offset_limit.q.out |   1 +
 .../spark/parquet_vectorization_part_project.q.out |   1 +
 .../spark/parquet_vectorization_pushdown.q.out     |   1 +
 .../clientpositive/spark/ppd_gby_join.q.out        |   6 +
 .../results/clientpositive/spark/ppd_join.q.out    |   4 +
 .../results/clientpositive/spark/ppd_join2.q.out   |   8 +
 .../results/clientpositive/spark/ppd_join3.q.out   |   6 +
 .../results/clientpositive/spark/ppd_join4.q.out   |   2 +
 .../results/clientpositive/spark/ppd_join5.q.out   |   8 +
 .../clientpositive/spark/ppd_multi_insert.q.out    |   4 +
 .../clientpositive/spark/ppd_outer_join1.q.out     |   4 +
 .../clientpositive/spark/ppd_outer_join2.q.out     |   4 +
 .../clientpositive/spark/ppd_outer_join3.q.out     |   4 +
 .../clientpositive/spark/ppd_outer_join4.q.out     |   6 +
 .../clientpositive/spark/ppd_outer_join5.q.out     |  12 +
 .../clientpositive/spark/ppd_transform.q.out       |   2 +
 ql/src/test/results/clientpositive/spark/ptf.q.out |  62 +++
 .../clientpositive/spark/ptf_matchpath.q.out       |   3 +
 .../clientpositive/spark/ptf_streaming.q.out       |  36 ++
 .../spark/reduce_deduplicate_exclude_join.q.out    |   1 +
 .../spark/runtime_skewjoin_mapjoin_spark.q.out     |   4 +
 .../results/clientpositive/spark/sample8.q.out     |   4 +
 .../results/clientpositive/spark/script_pipe.q.out |   1 +
 .../results/clientpositive/spark/semijoin.q.out    |  72 +++
 .../results/clientpositive/spark/skewjoin.q.out    |  24 +
 .../clientpositive/spark/skewjoin_noskew.q.out     |   3 +
 .../spark/skewjoin_union_remove_1.q.out            |  16 +
 .../spark/skewjoin_union_remove_2.q.out            |   6 +
 .../clientpositive/spark/skewjoinopt1.q.out        |  20 +
 .../clientpositive/spark/skewjoinopt10.q.out       |   4 +
 .../clientpositive/spark/skewjoinopt11.q.out       |   4 +
 .../clientpositive/spark/skewjoinopt12.q.out       |   4 +
 .../clientpositive/spark/skewjoinopt13.q.out       |   4 +
 .../clientpositive/spark/skewjoinopt14.q.out       |   7 +
 .../clientpositive/spark/skewjoinopt15.q.out       |  20 +
 .../clientpositive/spark/skewjoinopt16.q.out       |   4 +
 .../clientpositive/spark/skewjoinopt17.q.out       |   8 +
 .../clientpositive/spark/skewjoinopt18.q.out       |   2 +
 .../clientpositive/spark/skewjoinopt19.q.out       |   4 +
 .../clientpositive/spark/skewjoinopt2.q.out        |  20 +
 .../clientpositive/spark/skewjoinopt20.q.out       |   4 +
 .../clientpositive/spark/skewjoinopt3.q.out        |   8 +
 .../clientpositive/spark/skewjoinopt4.q.out        |   8 +
 .../clientpositive/spark/skewjoinopt5.q.out        |   4 +
 .../clientpositive/spark/skewjoinopt6.q.out        |   4 +
 .../clientpositive/spark/skewjoinopt7.q.out        |   6 +
 .../clientpositive/spark/skewjoinopt8.q.out        |   6 +
 .../clientpositive/spark/skewjoinopt9.q.out        |   5 +
 .../clientpositive/spark/smb_mapjoin_14.q.out      |  16 +
 .../clientpositive/spark/smb_mapjoin_16.q.out      |   1 +
 .../clientpositive/spark/smb_mapjoin_17.q.out      |  10 +
 .../clientpositive/spark/smb_mapjoin_18.q.out      |   1 +
 .../clientpositive/spark/smb_mapjoin_20.q.out      |   3 +
 .../clientpositive/spark/smb_mapjoin_21.q.out      |   5 +
 .../clientpositive/spark/smb_mapjoin_25.q.out      |   5 +
 .../clientpositive/spark/smb_mapjoin_4.q.out       |  12 +
 .../clientpositive/spark/smb_mapjoin_5.q.out       |  12 +
 .../test/results/clientpositive/spark/sort.q.out   |   1 +
 .../spark/spark_combine_equivalent_work_2.q.out    |   3 +
 .../clientpositive/spark/spark_constprog_dpp.q.out |   4 +
 .../spark/spark_dynamic_partition_pruning.q.out    | 132 ++++++
 .../spark/spark_dynamic_partition_pruning_2.q.out  |   7 +
 .../spark/spark_dynamic_partition_pruning_3.q.out  |  10 +
 .../spark/spark_dynamic_partition_pruning_4.q.out  |  40 ++
 .../spark/spark_dynamic_partition_pruning_5.q.out  |   6 +
 .../spark/spark_dynamic_partition_pruning_6.q.out  |   3 +
 .../spark/spark_dynamic_partition_pruning_7.q.out  |   7 +
 ...rk_dynamic_partition_pruning_mapjoin_only.q.out |   6 +
 .../spark/spark_explain_groupbyshuffle.q.out       |   2 +
 .../clientpositive/spark/spark_explainuser_1.q.out | 436 +++++++++--------
 .../spark/spark_in_process_launcher.q.out          |   2 +
 .../clientpositive/spark/spark_local_queries.q.out |   1 +
 .../spark_multi_insert_parallel_orderby.q.out      |   3 +
 .../clientpositive/spark/spark_use_op_stats.q.out  |   8 +
 .../spark/spark_use_ts_stats_for_mapjoin.q.out     |   7 +
 ...park_vectorized_dynamic_partition_pruning.q.out | 131 ++++++
 .../test/results/clientpositive/spark/stats1.q.out |   1 +
 .../results/clientpositive/spark/stats10.q.out     |   1 +
 .../test/results/clientpositive/spark/stats2.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     |  15 +
 .../results/clientpositive/spark/subquery_in.q.out | 149 ++++++
 .../clientpositive/spark/subquery_multi.q.out      | 140 ++++++
 .../spark/subquery_multiinsert.q.out               |  10 +
 .../clientpositive/spark/subquery_notin.q.out      | 223 +++++++++
 .../clientpositive/spark/subquery_null_agg.q.out   |   5 +
 .../clientpositive/spark/subquery_scalar.q.out     | 204 ++++++++
 .../clientpositive/spark/subquery_select.q.out     | 167 +++++++
 .../clientpositive/spark/subquery_views.q.out      |  15 +
 .../results/clientpositive/spark/temp_table.q.out  |   3 +
 .../clientpositive/spark/temp_table_join1.q.out    |   6 +
 .../clientpositive/spark/tez_join_tests.q.out      |   5 +
 .../clientpositive/spark/tez_joins_explain.q.out   |   5 +
 .../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     |   5 +
 .../results/clientpositive/spark/union21.q.out     |   5 +
 .../results/clientpositive/spark/union23.q.out     |   2 +
 .../results/clientpositive/spark/union25.q.out     |   4 +
 .../results/clientpositive/spark/union26.q.out     |   5 +
 .../results/clientpositive/spark/union27.q.out     |   3 +
 .../results/clientpositive/spark/union28.q.out     |   1 +
 .../test/results/clientpositive/spark/union3.q.out |   5 +
 .../results/clientpositive/spark/union30.q.out     |   1 +
 .../results/clientpositive/spark/union31.q.out     |  11 +
 .../results/clientpositive/spark/union32.q.out     |   8 +
 .../results/clientpositive/spark/union33.q.out     |   4 +
 .../results/clientpositive/spark/union34.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_lateralview.q.out   |   5 +
 .../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_17.q.out     |   2 +
 .../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     |   4 +
 .../clientpositive/spark/union_remove_24.q.out     |   1 +
 .../clientpositive/spark/union_remove_25.q.out     |   4 +
 .../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 +
 .../clientpositive/spark/union_top_level.q.out     |  15 +
 .../results/clientpositive/spark/union_view.q.out  |  16 +-
 .../clientpositive/spark/vector_between_in.q.out   |  16 +
 .../spark/vector_cast_constant.q.out               |   2 +
 .../spark/vector_count_distinct.q.out              |   2 +
 .../clientpositive/spark/vector_data_types.q.out   |   3 +
 .../spark/vector_decimal_aggregate.q.out           |   4 +
 .../clientpositive/spark/vector_distinct_2.q.out   |   1 +
 .../clientpositive/spark/vector_groupby_3.q.out    |   1 +
 .../spark/vector_left_outer_join.q.out             |   1 +
 .../spark/vector_mapjoin_reduce.q.out              |   1 +
 .../clientpositive/spark/vector_orderby_5.q.out    |   2 +
 .../clientpositive/spark/vector_outer_join1.q.out  |   1 +
 .../clientpositive/spark/vector_outer_join2.q.out  |   1 +
 .../spark/vector_string_concat.q.out               |   2 +
 .../clientpositive/spark/vectorization_0.q.out     |   7 +
 .../clientpositive/spark/vectorization_1.q.out     |   1 +
 .../clientpositive/spark/vectorization_12.q.out    |   2 +
 .../clientpositive/spark/vectorization_13.q.out    |   4 +
 .../clientpositive/spark/vectorization_14.q.out    |   2 +
 .../clientpositive/spark/vectorization_15.q.out    |   2 +
 .../clientpositive/spark/vectorization_16.q.out    |   1 +
 .../clientpositive/spark/vectorization_17.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 +
 .../clientpositive/spark/vectorization_div0.q.out  |   4 +
 .../vectorization_input_format_excludes.q.out      |   4 +
 .../spark/vectorization_nested_udf.q.out           |   1 +
 .../spark/vectorization_parquet_projection.q.out   |   5 +
 .../spark/vectorization_part_project.q.out         |   1 +
 .../spark/vectorization_pushdown.q.out             |   1 +
 .../spark/vectorization_short_regress.q.out        |  24 +
 .../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      |  62 +++
 .../spark/vectorized_shufflejoin.q.out             |   3 +
 .../spark/vectorized_timestamp_funcs.q.out         |   7 +
 .../results/clientpositive/spark/windowing.q.out   |   2 +
 .../clientpositive/stat_estimate_drill.q.out       |   7 +
 ql/src/test/results/clientpositive/stats0.q.out    |   2 +
 ql/src/test/results/clientpositive/stats1.q.out    |   3 +
 ql/src/test/results/clientpositive/stats10.q.out   |   2 +
 ql/src/test/results/clientpositive/stats4.q.out    |   2 +
 .../clientpositive/stats_empty_dyn_part.q.out      |   1 +
 .../clientpositive/stats_empty_partition2.q.out    |   2 +
 .../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 +
 .../clientpositive/stats_partial_size.q.out        |   2 +
 .../results/clientpositive/stats_ppr_all.q.out     |   4 +
 .../results/clientpositive/stats_sizebug.q.out     |   1 +
 ql/src/test/results/clientpositive/subq2.q.out     |   1 +
 .../results/clientpositive/subquery_exists.q.out   |  15 +
 .../clientpositive/subquery_exists_having.q.out    |   5 +
 .../clientpositive/subquery_multiinsert.q.out      |  14 +
 .../clientpositive/subquery_notexists.q.out        |  19 +
 .../clientpositive/subquery_notexists_having.q.out |   8 +
 .../clientpositive/subquery_notin_having.q.out     |  40 ++
 .../clientpositive/subquery_unqual_corr_expr.q.out |   7 +
 .../clientpositive/subquery_unqualcolumnrefs.q.out |  14 +
 .../clientpositive/symlink_text_input_format.q.out |   6 +
 .../test/results/clientpositive/tablevalues.q.out  |   8 +
 .../temp_table_display_colstats_tbllvl.q.out       |   2 +
 .../results/clientpositive/temp_table_join1.q.out  |   6 +
 .../tez/acid_vectorization_original_tez.q.out      |   4 +
 .../clientpositive/tez/explainanalyze_1.q.out      |  18 +-
 .../clientpositive/tez/explainanalyze_3.q.out      |   3 +-
 .../clientpositive/tez/explainanalyze_4.q.out      |  32 +-
 .../clientpositive/tez/explainanalyze_5.q.out      |  12 +-
 .../results/clientpositive/tez/explainuser_3.q.out |   4 +-
 .../tez/hybridgrace_hashjoin_1.q.out               |  26 +
 .../tez/hybridgrace_hashjoin_2.q.out               |  44 ++
 .../clientpositive/tez/multi_count_distinct.q.out  |   4 +-
 .../test/results/clientpositive/tez/tez-tag.q.out  |  16 +-
 .../test/results/clientpositive/tez/topnkey.q.out  |  18 +-
 .../tez/vector_join_part_col_char.q.out            |   2 +
 .../tez/vector_non_string_partition.q.out          |   2 +
 .../clientpositive/tez/vector_topnkey.q.out        |   9 +
 ql/src/test/results/clientpositive/timestamp.q.out |   4 +
 ql/src/test/results/clientpositive/topnkey.q.out   |   9 +
 .../results/clientpositive/type_widening.q.out     |   2 +
 .../clientpositive/udaf_binarysetfunctions.q.out   |   2 +
 .../udaf_binarysetfunctions_no_cbo.q.out           |   2 +
 .../clientpositive/udaf_number_format.q.out        |   1 +
 .../clientpositive/udaf_percentile_approx_23.q.out |   2 +
 .../clientpositive/udaf_percentile_cont.q.out      |   1 +
 .../clientpositive/udaf_percentile_disc.q.out      |   1 +
 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_case_column_pruning.q.out   |   3 +
 .../clientpositive/udf_character_length.q.out      |   1 +
 ql/src/test/results/clientpositive/udf_count.q.out |   3 +
 .../clientpositive/udf_folder_constants.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 +
 .../results/clientpositive/udtf_json_tuple.q.out   |   8 +
 .../clientpositive/udtf_parse_url_tuple.q.out      |   7 +
 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   |   6 +
 ql/src/test/results/clientpositive/union18.q.out   |   4 +
 ql/src/test/results/clientpositive/union19.q.out   |   5 +
 ql/src/test/results/clientpositive/union2.q.out    |   2 +
 ql/src/test/results/clientpositive/union20.q.out   |   6 +
 ql/src/test/results/clientpositive/union21.q.out   |   5 +
 ql/src/test/results/clientpositive/union23.q.out   |   2 +
 ql/src/test/results/clientpositive/union25.q.out   |   5 +
 ql/src/test/results/clientpositive/union26.q.out   |   5 +
 ql/src/test/results/clientpositive/union27.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/union3.q.out    |   8 +
 ql/src/test/results/clientpositive/union30.q.out   |   6 +
 ql/src/test/results/clientpositive/union31.q.out   |  16 +
 ql/src/test/results/clientpositive/union32.q.out   |   8 +
 ql/src/test/results/clientpositive/union33.q.out   |   8 +
 ql/src/test/results/clientpositive/union34.q.out   |   2 +
 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 |   6 +
 .../test/results/clientpositive/union_offcbo.q.out |  20 +
 .../results/clientpositive/union_pos_alias.q.out   |  12 +
 .../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_17.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   |   4 +
 .../results/clientpositive/union_remove_24.q.out   |   2 +
 .../results/clientpositive/union_remove_25.q.out   |   6 +
 .../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               |   3 +
 .../results/clientpositive/vector_bucket.q.out     |   1 +
 .../clientpositive/vector_case_when_2.q.out        |   7 +
 .../clientpositive/vector_cast_constant.q.out      |   2 +
 .../results/clientpositive/vector_char_2.q.out     |   4 +
 .../clientpositive/vector_char_mapjoin1.q.out      |   3 +
 .../results/clientpositive/vector_coalesce_2.q.out |   2 +
 .../results/clientpositive/vector_coalesce_4.q.out |   1 +
 .../test/results/clientpositive/vector_count.q.out |   4 +
 .../results/clientpositive/vector_data_types.q.out |   3 +
 .../results/clientpositive/vector_date_1.q.out     |   5 +
 .../vector_decimal64_div_decimal64column.q.out     |   1 +
 .../vector_decimal64_div_decimal64scalar.q.out     |   2 +
 .../results/clientpositive/vector_decimal_1.q.out  |   9 +
 .../clientpositive/vector_decimal_10_0.q.out       |   2 +
 .../results/clientpositive/vector_decimal_6.q.out  |   5 +
 .../clientpositive/vector_decimal_aggregate.q.out  |   4 +
 .../vector_decimal_col_scalar_division.q.out       |   1 +
 .../vector_decimal_expressions.q.out               |   2 +
 .../clientpositive/vector_decimal_join.q.out       |   1 +
 .../clientpositive/vector_decimal_precision.q.out  |   2 +
 .../clientpositive/vector_decimal_round.q.out      |   6 +
 .../clientpositive/vector_decimal_round_2.q.out    |   4 +
 .../clientpositive/vector_decimal_trailing.q.out   |   1 +
 .../clientpositive/vector_delete_orig_table.q.out  |   1 +
 .../results/clientpositive/vector_distinct_2.q.out |   1 +
 .../clientpositive/vector_empty_where.q.out        |   8 +
 .../results/clientpositive/vector_groupby4.q.out   |   4 +
 .../results/clientpositive/vector_groupby6.q.out   |   4 +
 .../results/clientpositive/vector_groupby_3.q.out  |   1 +
 .../clientpositive/vector_groupby_mapjoin.q.out    |   7 +
 .../clientpositive/vector_grouping_sets.q.out      |   3 +
 .../results/clientpositive/vector_if_expr.q.out    |   1 +
 .../clientpositive/vector_include_no_sel.q.out     |   1 +
 .../results/clientpositive/vector_interval_1.q.out |   8 +
 .../vector_interval_arithmetic.q.out               |   6 +
 .../clientpositive/vector_join_part_col_char.q.out |   2 +
 .../clientpositive/vector_left_outer_join.q.out    |   1 +
 .../vector_mr_diff_schema_alias.q.out              |   6 +
 .../vector_non_string_partition.q.out              |   2 +
 .../clientpositive/vector_null_projection.q.out    |   2 +
 .../results/clientpositive/vector_orderby_5.q.out  |   2 +
 .../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 +
 .../results/clientpositive/vector_reduce1.q.out    |   1 +
 .../results/clientpositive/vector_reduce2.q.out    |   1 +
 .../results/clientpositive/vector_reduce3.q.out    |   1 +
 .../vector_reduce_groupby_decimal.q.out            |   2 +
 .../vector_reduce_groupby_duplicate_cols.q.out     |   1 +
 .../clientpositive/vector_string_concat.q.out      |   2 +
 .../clientpositive/vector_tablesample_rows.q.out   |   1 +
 .../results/clientpositive/vector_topnkey.q.out    |   7 +
 .../results/clientpositive/vector_udf_trunc.q.out  |   5 +
 .../results/clientpositive/vector_union_null.q.out |   2 +
 .../clientpositive/vector_varchar_mapjoin1.q.out   |   3 +
 .../clientpositive/vector_varchar_simple.q.out     |   3 +
 .../clientpositive/vector_when_case_null.q.out     |   1 +
 .../results/clientpositive/vectorization_1.q.out   |   1 +
 .../results/clientpositive/vectorization_12.q.out  |   2 +
 .../results/clientpositive/vectorization_13.q.out  |   4 +
 .../results/clientpositive/vectorization_14.q.out  |   2 +
 .../results/clientpositive/vectorization_15.q.out  |   2 +
 .../results/clientpositive/vectorization_16.q.out  |   1 +
 .../results/clientpositive/vectorization_17.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_7.q.out   |   2 +
 .../results/clientpositive/vectorization_8.q.out   |   2 +
 .../results/clientpositive/vectorization_9.q.out   |   1 +
 .../clientpositive/vectorization_limit.q.out       |   9 +
 .../clientpositive/vectorization_nested_udf.q.out  |   1 +
 .../vectorization_numeric_overflows.q.out          |  10 +
 .../vectorization_offset_limit.q.out               |   1 +
 .../vectorization_parquet_projection.q.out         |   5 +
 .../vectorization_part_project.q.out               |   1 +
 .../clientpositive/vectorization_pushdown.q.out    |   1 +
 .../results/clientpositive/vectorized_case.q.out   |   2 +
 .../clientpositive/vectorized_distinct_gby.q.out   |   2 +
 .../clientpositive/vectorized_join46_mr.q.out      |   8 +
 .../clientpositive/vectorized_mapjoin.q.out        |   1 +
 .../clientpositive/vectorized_mapjoin2.q.out       |   1 +
 .../clientpositive/vectorized_mapjoin3.q.out       |   3 +
 .../clientpositive/vectorized_parquet_types.q.out  |   3 +
 .../clientpositive/vectorized_shufflejoin.q.out    |   3 +
 .../clientpositive/vectorized_timestamp.q.out      |   3 +
 .../vectorized_timestamp_funcs.q.out               |   7 +
 ql/src/test/results/clientpositive/view_cbo.q.out  |   6 +
 .../results/clientpositive/windowing_gby2.q.out    |  12 +
 .../results/clientpositive/windowing_navfn.q.out   |   1 +
 .../clientpositive/windowing_streaming.q.out       |   3 +
 2059 files changed, 20609 insertions(+), 4096 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 dd42769..7c55262 100644
--- a/accumulo-handler/src/test/results/positive/accumulo_queries.q.out
+++ b/accumulo-handler/src/test/results/positive/accumulo_queries.q.out
@@ -153,6 +153,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: UDFToDouble(_col0) (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: UDFToDouble(_col0) (type: double)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
@@ -168,6 +169,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: UDFToDouble(_col0) (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: UDFToDouble(_col0) (type: double)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -198,6 +200,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string)
+              null sort order: zz
               sort order: ++
               Statistics: Num rows: 550 Data size: 97900 Basic stats: COMPLETE Column stats: NONE
               TopN Hash Memory Usage: 0.1
@@ -311,6 +314,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
@@ -326,6 +330,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
@@ -356,6 +361,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int), _col1 (type: string)
+              null sort order: zz
               sort order: ++
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
       Execution mode: vectorized
@@ -558,6 +564,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -596,6 +603,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col2 (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col2 (type: double)
                   Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
@@ -603,6 +611,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col1 (type: double)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col1 (type: double)
               Statistics: Num rows: 250 Data size: 4000 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 0f64e5a..fde55a2 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
@@ -102,6 +102,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
                       value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/contrib/src/test/results/clientpositive/serde_typedbytes.q.out b/contrib/src/test/results/clientpositive/serde_typedbytes.q.out
index f3c05c0..ae37707 100644
--- a/contrib/src/test/results/clientpositive/serde_typedbytes.q.out
+++ b/contrib/src/test/results/clientpositive/serde_typedbytes.q.out
@@ -87,6 +87,7 @@ STAGE PLANS:
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/contrib/src/test/results/clientpositive/serde_typedbytes2.q.out b/contrib/src/test/results/clientpositive/serde_typedbytes2.q.out
index e23c2b0..65582e7 100644
--- a/contrib/src/test/results/clientpositive/serde_typedbytes2.q.out
+++ b/contrib/src/test/results/clientpositive/serde_typedbytes2.q.out
@@ -83,6 +83,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
                       value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/contrib/src/test/results/clientpositive/serde_typedbytes3.q.out b/contrib/src/test/results/clientpositive/serde_typedbytes3.q.out
index 675dec2..7242473 100644
--- a/contrib/src/test/results/clientpositive/serde_typedbytes3.q.out
+++ b/contrib/src/test/results/clientpositive/serde_typedbytes3.q.out
@@ -83,6 +83,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
                       value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/contrib/src/test/results/clientpositive/serde_typedbytes4.q.out b/contrib/src/test/results/clientpositive/serde_typedbytes4.q.out
index 1f33b95..bf289a9 100644
--- a/contrib/src/test/results/clientpositive/serde_typedbytes4.q.out
+++ b/contrib/src/test/results/clientpositive/serde_typedbytes4.q.out
@@ -67,6 +67,7 @@ STAGE PLANS:
                   Statistics: Num rows: 166 Data size: 15770 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string), _col1 (type: string)
+                    null sort order: zz
                     sort order: ++
                     Statistics: Num rows: 166 Data size: 15770 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
diff --git a/contrib/src/test/results/clientpositive/serde_typedbytes5.q.out b/contrib/src/test/results/clientpositive/serde_typedbytes5.q.out
index a622278..92f2ead 100644
--- a/contrib/src/test/results/clientpositive/serde_typedbytes5.q.out
+++ b/contrib/src/test/results/clientpositive/serde_typedbytes5.q.out
@@ -87,6 +87,7 @@ STAGE PLANS:
                       outputColumnNames: _col0, _col1
                       Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
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 55a8045..7fbe322 100644
--- a/contrib/src/test/results/clientpositive/udaf_example_avg.q.out
+++ b/contrib/src/test/results/clientpositive/udaf_example_avg.q.out
@@ -40,6 +40,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 128 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 128 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: struct<mcount:bigint,msum:double>), _col1 (type: struct<mcount:bigint,msum:double>)
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 8fa4e09..6846720 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
@@ -42,6 +42,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 526000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   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 66e3ea5..aa6a5eb 100644
--- a/contrib/src/test/results/clientpositive/udaf_example_max.q.out
+++ b/contrib/src/test/results/clientpositive/udaf_example_max.q.out
@@ -47,6 +47,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: string), _col1 (type: string)
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 09382ff..beb6874 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
@@ -40,6 +40,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: struct<a:array<double>,n:int>), _col1 (type: struct<a:array<double>,n:int>)
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 4b96eda..f8df34d 100644
--- a/contrib/src/test/results/clientpositive/udaf_example_min.q.out
+++ b/contrib/src/test/results/clientpositive/udaf_example_min.q.out
@@ -47,6 +47,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 368 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: string), _col1 (type: string)
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 1c3fb0c..9e54b15 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
@@ -40,6 +40,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: struct<a:array<double>,n:int>), _col1 (type: struct<a:array<double>,n:int>)
diff --git a/contrib/src/test/results/clientpositive/udf_row_sequence.q.out b/contrib/src/test/results/clientpositive/udf_row_sequence.q.out
index 79d4c10..a8374ba 100644
--- a/contrib/src/test/results/clientpositive/udf_row_sequence.q.out
+++ b/contrib/src/test/results/clientpositive/udf_row_sequence.q.out
@@ -48,6 +48,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col1 (type: bigint)
+                null sort order: z
                 sort order: +
                 Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: _col0 (type: string)
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 90ef9fb..a32ef81 100644
--- a/hbase-handler/src/test/results/positive/hbase_queries.q.out
+++ b/hbase-handler/src/test/results/positive/hbase_queries.q.out
@@ -152,6 +152,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: UDFToDouble(_col0) (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: UDFToDouble(_col0) (type: double)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
@@ -168,6 +169,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: UDFToDouble(_col0) (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: UDFToDouble(_col0) (type: double)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -198,6 +200,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string)
+              null sort order: zz
               sort order: ++
               Statistics: Num rows: 550 Data size: 97900 Basic stats: COMPLETE Column stats: NONE
               TopN Hash Memory Usage: 0.1
@@ -311,6 +314,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
@@ -326,6 +330,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
@@ -356,6 +361,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int), _col1 (type: string)
+              null sort order: zz
               sort order: ++
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
       Execution mode: vectorized
@@ -559,6 +565,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -597,6 +604,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col2 (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col2 (type: double)
                   Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
@@ -604,6 +612,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col1 (type: double)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col1 (type: double)
               Statistics: Num rows: 250 Data size: 4000 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 c205440..1adcf67 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
@@ -102,6 +102,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
                       value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/hbase-handler/src/test/results/positive/hbasestats.q.out b/hbase-handler/src/test/results/positive/hbasestats.q.out
index 514478e..3a30adc 100644
--- a/hbase-handler/src/test/results/positive/hbasestats.q.out
+++ b/hbase-handler/src/test/results/positive/hbasestats.q.out
@@ -307,6 +307,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
                   value expressions: _col0 (type: bigint)
@@ -417,6 +418,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
                   value expressions: _col0 (type: bigint)
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 69d7ba3..1cd55fa 100644
--- a/itests/hive-blobstore/src/test/results/clientpositive/explain.q.out
+++ b/itests/hive-blobstore/src/test/results/clientpositive/explain.q.out
@@ -60,6 +60,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: bigint)
diff --git a/kudu-handler/src/test/results/positive/kudu_complex_queries.q.out b/kudu-handler/src/test/results/positive/kudu_complex_queries.q.out
index db208b3..1324b27 100644
--- a/kudu-handler/src/test/results/positive/kudu_complex_queries.q.out
+++ b/kudu-handler/src/test/results/positive/kudu_complex_queries.q.out
@@ -94,6 +94,7 @@ STAGE PLANS:
                       Statistics: Num rows: 309 Data size: 1236 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: UDFToDouble(_col0) (type: double)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: UDFToDouble(_col0) (type: double)
                         Statistics: Num rows: 309 Data size: 1236 Basic stats: COMPLETE Column stats: COMPLETE
@@ -113,6 +114,7 @@ STAGE PLANS:
                       Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: UDFToDouble(_col0) (type: double)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: UDFToDouble(_col0) (type: double)
                         Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -134,6 +136,7 @@ STAGE PLANS:
                   Statistics: Num rows: 488 Data size: 86864 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string), _col1 (type: string)
+                    null sort order: zz
                     sort order: ++
                     Statistics: Num rows: 488 Data size: 86864 Basic stats: COMPLETE Column stats: COMPLETE
                     TopN Hash Memory Usage: 0.1
@@ -244,6 +247,7 @@ STAGE PLANS:
                       Statistics: Num rows: 154 Data size: 15862 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col2 (type: double)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col2 (type: double)
                         Statistics: Num rows: 154 Data size: 15862 Basic stats: COMPLETE Column stats: COMPLETE
@@ -264,6 +268,7 @@ STAGE PLANS:
                       Statistics: Num rows: 500 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: double)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col0 (type: double)
                         Statistics: Num rows: 500 Data size: 4000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -287,6 +292,7 @@ STAGE PLANS:
                   Statistics: Num rows: 121 Data size: 23232 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: int)
+                    null sort order: a
                     sort order: +
                     Map-reduce partition columns: _col0 (type: int)
                     Statistics: Num rows: 121 Data size: 23232 Basic stats: COMPLETE Column stats: COMPLETE
@@ -306,6 +312,7 @@ STAGE PLANS:
                   Statistics: Num rows: 121 Data size: 22748 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col1 (type: string)
+                    null sort order: z
                     sort order: +
                     Statistics: Num rows: 121 Data size: 22748 Basic stats: COMPLETE Column stats: COMPLETE
                     TopN Hash Memory Usage: 0.1
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceSinkDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceSinkDesc.java
index 9257375..77c8300 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceSinkDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ReduceSinkDesc.java
@@ -381,7 +381,7 @@ public class ReduceSinkDesc extends AbstractOperatorDesc {
    *         (ascending order) and "-" (descending order).
    */
   @Signature
-  @Explain(displayName = "sort order")
+  @Explain(displayName = "sort order", explainLevels = { Level.DEFAULT, Level.EXTENDED, Level.USER })
   public String getOrder() {
     return keySerializeInfo.getProperties().getProperty(
         org.apache.hadoop.hive.serde.serdeConstants.SERIALIZATION_SORT_ORDER);
@@ -407,7 +407,7 @@ public class ReduceSinkDesc extends AbstractOperatorDesc {
    *         of the same length as key columns, that consists of only "a"
    *         (null first) and "z" (null last).
    */
-  @Explain(displayName = "null sort order", explainLevels = { Level.EXTENDED })
+  @Explain(displayName = "null sort order", explainLevels = { Level.DEFAULT, Level.EXTENDED, Level.USER })
   public String getNullOrder() {
     return keySerializeInfo.getProperties().getProperty(
         org.apache.hadoop.hive.serde.serdeConstants.SERIALIZATION_NULL_SORT_ORDER);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/TopNKeyDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/TopNKeyDesc.java
index 84e6149..dc45800 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/TopNKeyDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/TopNKeyDesc.java
@@ -69,7 +69,7 @@ public class TopNKeyDesc extends AbstractOperatorDesc {
     this.columnSortOrder = columnSortOrder;
   }
 
-  @Explain(displayName = "null sort order", explainLevels = { Level.EXTENDED })
+  @Explain(displayName = "null sort order", explainLevels = { Level.DEFAULT, Level.EXTENDED, Level.USER })
   public String getNullOrder() {
     return nullOrder;
   }
diff --git a/ql/src/test/results/clientnegative/bucket_mapjoin_mismatch1.q.out b/ql/src/test/results/clientnegative/bucket_mapjoin_mismatch1.q.out
index 6036a75..62a36ac 100644
--- a/ql/src/test/results/clientnegative/bucket_mapjoin_mismatch1.q.out
+++ b/ql/src/test/results/clientnegative/bucket_mapjoin_mismatch1.q.out
@@ -115,6 +115,7 @@ STAGE PLANS:
                 Statistics: Num rows: 88 Data size: 13633 Basic stats: PARTIAL Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 88 Data size: 13633 Basic stats: PARTIAL Column stats: NONE
@@ -132,6 +133,7 @@ STAGE PLANS:
                 Statistics: Num rows: 57 Data size: 8878 Basic stats: PARTIAL Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 57 Data size: 8878 Basic stats: PARTIAL Column stats: NONE
diff --git a/ql/src/test/results/clientnegative/masking_mv.q.out b/ql/src/test/results/clientnegative/masking_mv.q.out
index 8e49f96..02ff153 100644
--- a/ql/src/test/results/clientnegative/masking_mv.q.out
+++ b/ql/src/test/results/clientnegative/masking_mv.q.out
@@ -68,6 +68,7 @@ STAGE PLANS:
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
                     value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>)
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 f3dc18e..9369fbd 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
@@ -39,6 +39,7 @@ STAGE PLANS:
                       Statistics: Num rows: 25 Data size: 191 Basic stats: COMPLETE Column stats: NONE
                       Reduce Output Operator
                         key expressions: _col0 (type: string)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col0 (type: string)
                         Statistics: Num rows: 25 Data size: 191 Basic stats: COMPLETE Column stats: NONE
@@ -59,6 +60,7 @@ STAGE PLANS:
                   Statistics: Num rows: 12 Data size: 91 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
                     key expressions: _col0 (type: string)
+                    null sort order: z
                     sort order: +
                     Statistics: Num rows: 12 Data size: 91 Basic stats: COMPLETE Column stats: NONE
                     value expressions: _col0 (type: string)
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 f3dc18e..9369fbd 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
@@ -39,6 +39,7 @@ STAGE PLANS:
                       Statistics: Num rows: 25 Data size: 191 Basic stats: COMPLETE Column stats: NONE
                       Reduce Output Operator
                         key expressions: _col0 (type: string)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col0 (type: string)
                         Statistics: Num rows: 25 Data size: 191 Basic stats: COMPLETE Column stats: NONE
@@ -59,6 +60,7 @@ STAGE PLANS:
                   Statistics: Num rows: 12 Data size: 91 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
                     key expressions: _col0 (type: string)
+                    null sort order: z
                     sort order: +
                     Statistics: Num rows: 12 Data size: 91 Basic stats: COMPLETE Column stats: NONE
                     value expressions: _col0 (type: string)
diff --git a/ql/src/test/results/clientpositive/acid_mapjoin.q.out b/ql/src/test/results/clientpositive/acid_mapjoin.q.out
index 4225df0..f66e978 100644
--- a/ql/src/test/results/clientpositive/acid_mapjoin.q.out
+++ b/ql/src/test/results/clientpositive/acid_mapjoin.q.out
@@ -128,6 +128,7 @@ STAGE PLANS:
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/acid_stats3.q.out b/ql/src/test/results/clientpositive/acid_stats3.q.out
index b694e20..f9b0c57 100644
--- a/ql/src/test/results/clientpositive/acid_stats3.q.out
+++ b/ql/src/test/results/clientpositive/acid_stats3.q.out
@@ -70,6 +70,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: bigint)
@@ -246,6 +247,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: COMPLETE
                   value expressions: _col0 (type: bigint)
@@ -354,6 +356,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: COMPLETE
                   value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/acid_stats4.q.out b/ql/src/test/results/clientpositive/acid_stats4.q.out
index 2297f05..279701d 100644
--- a/ql/src/test/results/clientpositive/acid_stats4.q.out
+++ b/ql/src/test/results/clientpositive/acid_stats4.q.out
@@ -72,6 +72,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: bigint)
@@ -278,6 +279,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: bigint)
@@ -651,6 +653,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: bigint)
@@ -777,6 +780,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: PARTIAL
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: PARTIAL
                   value expressions: _col0 (type: bigint)
@@ -864,6 +868,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: PARTIAL
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: PARTIAL
                   value expressions: _col0 (type: bigint)
@@ -931,6 +936,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: PARTIAL
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 12 Basic stats: PARTIAL Column stats: PARTIAL
                   value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/acid_stats5.q.out b/ql/src/test/results/clientpositive/acid_stats5.q.out
index ce76054..de84870 100644
--- a/ql/src/test/results/clientpositive/acid_stats5.q.out
+++ b/ql/src/test/results/clientpositive/acid_stats5.q.out
@@ -154,6 +154,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: bigint)
@@ -210,6 +211,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
@@ -237,6 +239,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -373,6 +376,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: int)
@@ -611,6 +615,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
@@ -638,6 +643,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -774,6 +780,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: int)
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 488096d..fde167b 100644
--- a/ql/src/test/results/clientpositive/acid_table_stats.q.out
+++ b/ql/src/test/results/clientpositive/acid_table_stats.q.out
@@ -467,6 +467,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: string)
diff --git a/ql/src/test/results/clientpositive/allcolref_in_udf.q.out b/ql/src/test/results/clientpositive/allcolref_in_udf.q.out
index eb37c91..a836bb9 100644
--- a/ql/src/test/results/clientpositive/allcolref_in_udf.q.out
+++ b/ql/src/test/results/clientpositive/allcolref_in_udf.q.out
@@ -98,6 +98,7 @@ STAGE PLANS:
                 Statistics: Num rows: 166 Data size: 61420 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col3 (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col3 (type: double)
                   Statistics: Num rows: 166 Data size: 61420 Basic stats: COMPLETE Column stats: COMPLETE
@@ -115,6 +116,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 185000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col3 (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col3 (type: double)
                   Statistics: Num rows: 500 Data size: 185000 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 c47d999..fe17d00 100644
--- a/ql/src/test/results/clientpositive/alterColumnStatsPart.q.out
+++ b/ql/src/test/results/clientpositive/alterColumnStatsPart.q.out
@@ -148,6 +148,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: int)
@@ -294,6 +295,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: int)
@@ -395,6 +397,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
                   value expressions: _col0 (type: int)
@@ -466,6 +469,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: NONE
                   value expressions: _col0 (type: int)
diff --git a/ql/src/test/results/clientpositive/ambiguous_col.q.out b/ql/src/test/results/clientpositive/ambiguous_col.q.out
index 70f8946..3f454b1 100644
--- a/ql/src/test/results/clientpositive/ambiguous_col.q.out
+++ b/ql/src/test/results/clientpositive/ambiguous_col.q.out
@@ -29,6 +29,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -46,6 +47,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -154,6 +156,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -170,6 +173,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -278,6 +282,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -294,6 +299,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
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 53e1f78..e721eac 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
@@ -138,6 +138,7 @@ STAGE PLANS:
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     value expressions: _col0 (type: bigint)
@@ -234,6 +235,7 @@ STAGE PLANS:
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                     value expressions: _col0 (type: bigint)
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 4fbe96d..c19e45b 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_groupby.q.out
@@ -130,6 +130,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
@@ -162,6 +163,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: bigint)
+              null sort order: aa
               sort order: ++
               Map-reduce partition columns: _col0 (type: string), _col1 (type: bigint)
               Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
@@ -229,6 +231,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 8 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE
@@ -284,6 +287,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
@@ -339,6 +343,7 @@ STAGE PLANS:
                 Statistics: Num rows: 32 Data size: 3136 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 32 Data size: 3136 Basic stats: COMPLETE Column stats: COMPLETE
@@ -395,6 +400,7 @@ STAGE PLANS:
                 Statistics: Num rows: 24 Data size: 2352 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 24 Data size: 2352 Basic stats: COMPLETE Column stats: COMPLETE
@@ -451,6 +457,7 @@ STAGE PLANS:
                 Statistics: Num rows: 24 Data size: 2352 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 24 Data size: 2352 Basic stats: COMPLETE Column stats: COMPLETE
@@ -507,6 +514,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
@@ -563,6 +571,7 @@ STAGE PLANS:
                 Statistics: Num rows: 16 Data size: 1568 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 16 Data size: 1568 Basic stats: COMPLETE Column stats: COMPLETE
@@ -619,6 +628,7 @@ STAGE PLANS:
                 Statistics: Num rows: 24 Data size: 2352 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 24 Data size: 2352 Basic stats: COMPLETE Column stats: COMPLETE
@@ -675,6 +685,7 @@ STAGE PLANS:
                 Statistics: Num rows: 32 Data size: 3136 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 32 Data size: 3136 Basic stats: COMPLETE Column stats: COMPLETE
@@ -731,6 +742,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -786,6 +798,7 @@ STAGE PLANS:
                 Statistics: Num rows: 16 Data size: 1568 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 16 Data size: 1568 Basic stats: COMPLETE Column stats: COMPLETE
@@ -842,6 +855,7 @@ STAGE PLANS:
                 Statistics: Num rows: 4 Data size: 376 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: bigint)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: bigint)
                   Statistics: Num rows: 4 Data size: 376 Basic stats: COMPLETE Column stats: COMPLETE
@@ -897,6 +911,7 @@ STAGE PLANS:
                 Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
@@ -953,6 +968,7 @@ STAGE PLANS:
                 Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
@@ -1009,6 +1025,7 @@ STAGE PLANS:
                 Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
@@ -1065,6 +1082,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
@@ -1121,6 +1139,7 @@ STAGE PLANS:
                 Statistics: Num rows: 16 Data size: 1592 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 16 Data size: 1592 Basic stats: COMPLETE Column stats: NONE
@@ -1177,6 +1196,7 @@ STAGE PLANS:
                 Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
@@ -1233,6 +1253,7 @@ STAGE PLANS:
                 Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
@@ -1289,6 +1310,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
@@ -1344,6 +1366,7 @@ STAGE PLANS:
                 Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int), _col2 (type: bigint)
                   Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
@@ -1465,6 +1488,7 @@ STAGE PLANS:
                 Statistics: Num rows: 9970 Data size: 79448 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col1 (type: int)
                   Statistics: Num rows: 9970 Data size: 79448 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1482,6 +1506,7 @@ STAGE PLANS:
                 Statistics: Num rows: 100000000 Data size: 400000000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 100000000 Data size: 400000000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1514,6 +1539,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int), _col1 (type: int)
+              null sort order: aa
               sort order: ++
               Map-reduce partition columns: _col0 (type: int), _col1 (type: int)
               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 56fa27a..d2679b7 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_groupby2.q.out
@@ -67,6 +67,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 20 Data size: 200 Basic stats: COMPLETE Column stats: NONE
@@ -122,6 +123,7 @@ STAGE PLANS:
                 Statistics: Num rows: 80 Data size: 800 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: bigint)
                   Statistics: Num rows: 80 Data size: 800 Basic stats: COMPLETE Column stats: NONE
@@ -178,6 +180,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 1730 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 10 Data size: 1730 Basic stats: COMPLETE Column stats: COMPLETE
@@ -233,6 +236,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 940 Basic stats: COMPLETE Column stats: PARTIAL
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: bigint)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: bigint)
                   Statistics: Num rows: 10 Data size: 940 Basic stats: COMPLETE Column stats: PARTIAL
@@ -288,6 +292,7 @@ STAGE PLANS:
                 Statistics: Num rows: 40 Data size: 7240 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: bigint)
                   Statistics: Num rows: 40 Data size: 7240 Basic stats: COMPLETE Column stats: COMPLETE
@@ -344,6 +349,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 3460 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 20 Data size: 3460 Basic stats: COMPLETE Column stats: COMPLETE
@@ -399,6 +405,7 @@ STAGE PLANS:
                 Statistics: Num rows: 80 Data size: 14480 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: bigint)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: bigint)
                   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 abe31e0..d1d82b2 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_join.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_join.q.out
@@ -155,6 +155,7 @@ STAGE PLANS:
                 Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col1 (type: int)
                   Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
@@ -172,6 +173,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
@@ -230,6 +232,7 @@ STAGE PLANS:
                 Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
@@ -247,6 +250,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: string), _col0 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col1 (type: string), _col0 (type: int)
                   Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
@@ -304,6 +308,7 @@ STAGE PLANS:
                 Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
@@ -321,6 +326,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: string), _col0 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col1 (type: string), _col0 (type: int)
                   Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
@@ -378,6 +384,7 @@ STAGE PLANS:
                 Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
@@ -395,6 +402,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: string), _col0 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col1 (type: string), _col0 (type: int)
                   Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
@@ -453,6 +461,7 @@ STAGE PLANS:
                 Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col1 (type: int)
                   Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
@@ -470,6 +479,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
@@ -496,6 +506,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col1 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col1 (type: int)
               Statistics: Num rows: 48 Data size: 9312 Basic stats: COMPLETE Column stats: COMPLETE
@@ -513,6 +524,7 @@ STAGE PLANS:
                 Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col1 (type: int)
                   Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
@@ -574,6 +586,7 @@ STAGE PLANS:
                 Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col1 (type: int)
                   Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
@@ -591,6 +604,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
@@ -617,6 +631,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col1 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col1 (type: int)
               Statistics: Num rows: 48 Data size: 9312 Basic stats: COMPLETE Column stats: COMPLETE
@@ -634,6 +649,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 816 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col1 (type: int)
                   Statistics: Num rows: 8 Data size: 816 Basic stats: COMPLETE Column stats: COMPLETE
@@ -695,6 +711,7 @@ STAGE PLANS:
                 Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
@@ -712,6 +729,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: string), _col0 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col1 (type: string), _col0 (type: int)
                   Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
@@ -737,6 +755,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: int)
+              null sort order: aa
               sort order: ++
               Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
               Statistics: Num rows: 48 Data size: 9312 Basic stats: COMPLETE Column stats: COMPLETE
@@ -754,6 +773,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 816 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 8 Data size: 816 Basic stats: COMPLETE Column stats: COMPLETE
@@ -808,6 +828,7 @@ STAGE PLANS:
               Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string), _col1 (type: int)
+                null sort order: aa
                 sort order: ++
                 Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                 Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
@@ -825,6 +846,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: string), _col0 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col1 (type: string), _col0 (type: int)
                   Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
@@ -882,6 +904,7 @@ STAGE PLANS:
                 Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
@@ -905,6 +928,7 @@ STAGE PLANS:
                   Statistics: Num rows: 3 Data size: 285 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string), _col1 (type: int)
+                    null sort order: aa
                     sort order: ++
                     Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                     Statistics: Num rows: 3 Data size: 285 Basic stats: COMPLETE Column stats: COMPLETE
@@ -962,6 +986,7 @@ STAGE PLANS:
                 Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
@@ -975,6 +1000,7 @@ STAGE PLANS:
               Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col1 (type: string), _col0 (type: int)
+                null sort order: aa
                 sort order: ++
                 Map-reduce partition columns: _col1 (type: string), _col0 (type: int)
                 Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1028,6 +1054,7 @@ STAGE PLANS:
               Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string), _col1 (type: int)
+                null sort order: aa
                 sort order: ++
                 Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                 Statistics: Num rows: 48 Data size: 4752 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1041,6 +1068,7 @@ STAGE PLANS:
               Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col1 (type: string), _col0 (type: int)
+                null sort order: aa
                 sort order: ++
                 Map-reduce partition columns: _col1 (type: string), _col0 (type: int)
                 Statistics: Num rows: 6 Data size: 570 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out b/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out
index 8a1ebcd..ce6d3fd 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out
@@ -389,6 +389,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -405,6 +406,7 @@ STAGE PLANS:
                 Statistics: Num rows: 964 Data size: 3720 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 964 Data size: 3720 Basic stats: COMPLETE Column stats: COMPLETE
@@ -462,6 +464,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: bigint)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: bigint)
                   Statistics: Num rows: 12 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE
@@ -478,6 +481,7 @@ STAGE PLANS:
                 Statistics: Num rows: 964 Data size: 7440 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: bigint)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: bigint)
                   Statistics: Num rows: 964 Data size: 7440 Basic stats: COMPLETE Column stats: COMPLETE
@@ -535,6 +539,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -551,6 +556,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1000 Data size: 3860 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1000 Data size: 3860 Basic stats: COMPLETE Column stats: COMPLETE
@@ -608,6 +614,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: PARTIAL
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: PARTIAL
@@ -624,6 +631,7 @@ STAGE PLANS:
                 Statistics: Num rows: 876 Data size: 3380 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 876 Data size: 3380 Basic stats: COMPLETE Column stats: COMPLETE
@@ -681,6 +689,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -697,6 +706,7 @@ STAGE PLANS:
                 Statistics: Num rows: 964 Data size: 3720 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 964 Data size: 3720 Basic stats: COMPLETE Column stats: COMPLETE
@@ -754,6 +764,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -770,6 +781,7 @@ STAGE PLANS:
                 Statistics: Num rows: 876 Data size: 3380 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 876 Data size: 3380 Basic stats: COMPLETE Column stats: COMPLETE
@@ -828,6 +840,7 @@ STAGE PLANS:
                 Statistics: Num rows: 964 Data size: 3720 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 964 Data size: 3720 Basic stats: COMPLETE Column stats: COMPLETE
@@ -844,6 +857,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -869,6 +883,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 964 Data size: 7576 Basic stats: COMPLETE Column stats: COMPLETE
@@ -886,6 +901,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -948,6 +964,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
@@ -964,6 +981,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
@@ -989,6 +1007,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1006,6 +1025,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1068,6 +1088,7 @@ STAGE PLANS:
                 Statistics: Num rows: 964 Data size: 3720 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 964 Data size: 3720 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1084,6 +1105,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1109,6 +1131,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 964 Data size: 7576 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1126,6 +1149,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1188,6 +1212,7 @@ STAGE PLANS:
                 Statistics: Num rows: 876 Data size: 3380 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 876 Data size: 3380 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1204,6 +1229,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1229,6 +1255,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 876 Data size: 6884 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1246,6 +1273,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1310,6 +1338,7 @@ STAGE PLANS:
                 Statistics: Num rows: 916 Data size: 7020 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col1 (type: int)
                   Statistics: Num rows: 916 Data size: 7020 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1327,6 +1356,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 12 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1352,6 +1382,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 916 Data size: 7148 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1369,6 +1400,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 80 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 20 Data size: 80 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/annotate_stats_select.q.out b/ql/src/test/results/clientpositive/annotate_stats_select.q.out
index 3a57a65..dba2799 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_select.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_select.q.out
@@ -866,6 +866,7 @@ STAGE PLANS:
                 Number of rows: 10
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
@@ -921,6 +922,7 @@ STAGE PLANS:
                 Number of rows: 10
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
@@ -973,6 +975,7 @@ STAGE PLANS:
                 Number of rows: 10
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
@@ -1028,6 +1031,7 @@ STAGE PLANS:
                 Number of rows: 10
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
diff --git a/ql/src/test/results/clientpositive/autoColumnStats_11.q.out b/ql/src/test/results/clientpositive/autoColumnStats_11.q.out
index 3d895ab..c7a9786 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_11.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_11.q.out
@@ -62,6 +62,7 @@ STAGE PLANS:
                       outputColumnNames: _col0, _col1, _col2
                       Statistics: Num rows: 1 Data size: 1368 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 1368 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:date,max:date,countnulls:bigint,bitvector:binary>)
@@ -318,6 +319,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1368 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 1368 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:date,max:date,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/autoColumnStats_4.q.out b/ql/src/test/results/clientpositive/autoColumnStats_4.q.out
index 0ca11df..5efdc06 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_4.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_4.q.out
@@ -75,6 +75,7 @@ STAGE PLANS:
                 Statistics: Num rows: 9173 Data size: 1479384 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: z
                   sort order: +
                   Statistics: Num rows: 9173 Data size: 1479384 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
@@ -101,6 +102,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 10 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
@@ -161,6 +163,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/autoColumnStats_5.q.out b/ql/src/test/results/clientpositive/autoColumnStats_5.q.out
index 66b47c7..2dcaa3e 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_5.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_5.q.out
@@ -65,6 +65,7 @@ STAGE PLANS:
                       Statistics: Num rows: 1 Data size: 868 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: int)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col0 (type: int)
                         Statistics: Num rows: 1 Data size: 868 Basic stats: COMPLETE Column stats: COMPLETE
@@ -320,6 +321,7 @@ STAGE PLANS:
                       Statistics: Num rows: 1 Data size: 1732 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: int)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col0 (type: int)
                         Statistics: Num rows: 1 Data size: 1732 Basic stats: COMPLETE Column stats: COMPLETE
@@ -533,6 +535,7 @@ STAGE PLANS:
                       Statistics: Num rows: 1 Data size: 1732 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: int)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col0 (type: int)
                         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 6723ffc..9e2606f 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_5a.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_5a.q.out
@@ -879,6 +879,7 @@ STAGE PLANS:
                       Statistics: Num rows: 1 Data size: 868 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: int)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col0 (type: int)
                         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 c66d361..080254c 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_6.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_6.q.out
@@ -57,6 +57,7 @@ STAGE PLANS:
                   Statistics: Num rows: 250 Data size: 329250 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string)
+                    null sort order: aaa
                     sort order: +++
                     Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: string)
                     Statistics: Num rows: 250 Data size: 329250 Basic stats: COMPLETE Column stats: COMPLETE
@@ -92,6 +93,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col2 (type: int), _col3 (type: int)
+              null sort order: aa
               sort order: ++
               Map-reduce partition columns: _col2 (type: int), _col3 (type: int)
               Statistics: Num rows: 500 Data size: 51500 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/autoColumnStats_7.q.out b/ql/src/test/results/clientpositive/autoColumnStats_7.q.out
index 32405b3..d289418 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_7.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_7.q.out
@@ -47,6 +47,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 175168 Basic stats: COMPLETE Column stats: NONE
               Reduce Output Operator
                 key expressions: _col0 (type: string), _col1 (type: string)
+                null sort order: aa
                 sort order: ++
                 Map-reduce partition columns: _col0 (type: string)
                 Statistics: Num rows: 500 Data size: 175168 Basic stats: COMPLETE Column stats: NONE
@@ -71,6 +72,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 500 Data size: 175168 Basic stats: COMPLETE Column stats: NONE
@@ -129,6 +131,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Map-reduce partition columns: rand() (type: double)
               Statistics: Num rows: 250 Data size: 87584 Basic stats: COMPLETE Column stats: NONE
@@ -152,6 +155,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 1672 Basic stats: COMPLETE Column stats: NONE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/autoColumnStats_9.q.out b/ql/src/test/results/clientpositive/autoColumnStats_9.q.out
index 37321a1..f81312b 100644
--- a/ql/src/test/results/clientpositive/autoColumnStats_9.q.out
+++ b/ql/src/test/results/clientpositive/autoColumnStats_9.q.out
@@ -44,6 +44,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -60,6 +61,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -185,6 +187,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join0.q.out b/ql/src/test/results/clientpositive/auto_join0.q.out
index 1c1a8bb..665cf28 100644
--- a/ql/src/test/results/clientpositive/auto_join0.q.out
+++ b/ql/src/test/results/clientpositive/auto_join0.q.out
@@ -56,6 +56,7 @@ STAGE PLANS:
                 Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: zz
                   sort order: ++
                   Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -121,6 +122,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -186,11 +188,13 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string), _col1 (type: string)
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string), _col1 (type: string)
@@ -232,6 +236,7 @@ STAGE PLANS:
                 Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: zz
                   sort order: ++
                   Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
diff --git a/ql/src/test/results/clientpositive/auto_join1.q.out b/ql/src/test/results/clientpositive/auto_join1.q.out
index 08fbdb9..4f02e2d 100644
--- a/ql/src/test/results/clientpositive/auto_join1.q.out
+++ b/ql/src/test/results/clientpositive/auto_join1.q.out
@@ -126,6 +126,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join10.q.out b/ql/src/test/results/clientpositive/auto_join10.q.out
index 6eda95b..3f75016 100644
--- a/ql/src/test/results/clientpositive/auto_join10.q.out
+++ b/ql/src/test/results/clientpositive/auto_join10.q.out
@@ -81,6 +81,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/auto_join11.q.out b/ql/src/test/results/clientpositive/auto_join11.q.out
index 1ead729..6cdfa34 100644
--- a/ql/src/test/results/clientpositive/auto_join11.q.out
+++ b/ql/src/test/results/clientpositive/auto_join11.q.out
@@ -81,6 +81,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/auto_join12.q.out b/ql/src/test/results/clientpositive/auto_join12.q.out
index e294153..60a8f47 100644
--- a/ql/src/test/results/clientpositive/auto_join12.q.out
+++ b/ql/src/test/results/clientpositive/auto_join12.q.out
@@ -114,6 +114,7 @@ STAGE PLANS:
                         outputColumnNames: _col0
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                         Reduce Output Operator
+                          null sort order: 
                           sort order: 
                           Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                           value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/auto_join13.q.out b/ql/src/test/results/clientpositive/auto_join13.q.out
index 6bc7ad9..5f83b39 100644
--- a/ql/src/test/results/clientpositive/auto_join13.q.out
+++ b/ql/src/test/results/clientpositive/auto_join13.q.out
@@ -114,6 +114,7 @@ STAGE PLANS:
                         outputColumnNames: _col0
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                         Reduce Output Operator
+                          null sort order: 
                           sort order: 
                           Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                           value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/auto_join14.q.out b/ql/src/test/results/clientpositive/auto_join14.q.out
index 9ddc3c7..238befe 100644
--- a/ql/src/test/results/clientpositive/auto_join14.q.out
+++ b/ql/src/test/results/clientpositive/auto_join14.q.out
@@ -132,6 +132,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join15.q.out b/ql/src/test/results/clientpositive/auto_join15.q.out
index 56a4571..6ea9db2 100644
--- a/ql/src/test/results/clientpositive/auto_join15.q.out
+++ b/ql/src/test/results/clientpositive/auto_join15.q.out
@@ -73,6 +73,7 @@ STAGE PLANS:
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/auto_join16.q.out b/ql/src/test/results/clientpositive/auto_join16.q.out
index 8bbede7..f131056 100644
--- a/ql/src/test/results/clientpositive/auto_join16.q.out
+++ b/ql/src/test/results/clientpositive/auto_join16.q.out
@@ -81,6 +81,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/auto_join17.q.out b/ql/src/test/results/clientpositive/auto_join17.q.out
index abf3b27..88185e7 100644
--- a/ql/src/test/results/clientpositive/auto_join17.q.out
+++ b/ql/src/test/results/clientpositive/auto_join17.q.out
@@ -126,6 +126,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join18.q.out b/ql/src/test/results/clientpositive/auto_join18.q.out
index 48415f5..3206807 100644
--- a/ql/src/test/results/clientpositive/auto_join18.q.out
+++ b/ql/src/test/results/clientpositive/auto_join18.q.out
@@ -57,6 +57,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -82,6 +83,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -89,6 +91,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 12 Data size: 1128 Basic stats: COMPLETE Column stats: COMPLETE
@@ -124,6 +127,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -161,6 +165,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 2196 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string)
                   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 6132eb5..30d3819 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
@@ -59,6 +59,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -84,6 +85,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -91,6 +93,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 12 Data size: 1224 Basic stats: COMPLETE Column stats: COMPLETE
@@ -126,6 +129,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -163,6 +167,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 2292 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string)
                   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 a69af58..cad3e09 100644
--- a/ql/src/test/results/clientpositive/auto_join19.q.out
+++ b/ql/src/test/results/clientpositive/auto_join19.q.out
@@ -138,6 +138,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
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 4ef4da6..f42743a 100644
--- a/ql/src/test/results/clientpositive/auto_join19_inclause.q.out
+++ b/ql/src/test/results/clientpositive/auto_join19_inclause.q.out
@@ -138,6 +138,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join2.q.out b/ql/src/test/results/clientpositive/auto_join2.q.out
index 3ed9791..c694679 100644
--- a/ql/src/test/results/clientpositive/auto_join2.q.out
+++ b/ql/src/test/results/clientpositive/auto_join2.q.out
@@ -153,6 +153,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join20.q.out b/ql/src/test/results/clientpositive/auto_join20.q.out
index 08ca69e..bd4c4a7 100644
--- a/ql/src/test/results/clientpositive/auto_join20.q.out
+++ b/ql/src/test/results/clientpositive/auto_join20.q.out
@@ -139,6 +139,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -163,6 +164,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 262 Data size: 93272 Basic stats: COMPLETE Column stats: COMPLETE
@@ -172,6 +174,7 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: key (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: key (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -371,6 +374,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -395,6 +399,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 86 Data size: 30616 Basic stats: COMPLETE Column stats: COMPLETE
@@ -404,6 +409,7 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: key (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: key (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join21.q.out b/ql/src/test/results/clientpositive/auto_join21.q.out
index b68259c..aa8577c 100644
--- a/ql/src/test/results/clientpositive/auto_join21.q.out
+++ b/ql/src/test/results/clientpositive/auto_join21.q.out
@@ -126,6 +126,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+              null sort order: zzzzzz
               sort order: ++++++
               Statistics: Num rows: 1705 Data size: 687326 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -148,6 +149,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col5 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col5 (type: string)
               Statistics: Num rows: 762 Data size: 182450 Basic stats: COMPLETE Column stats: COMPLETE
@@ -157,6 +159,7 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: key (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: key (type: string)
               Statistics: Num rows: 500 Data size: 89000 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 57d5db9..5a98716 100644
--- a/ql/src/test/results/clientpositive/auto_join22.q.out
+++ b/ql/src/test/results/clientpositive/auto_join22.q.out
@@ -98,6 +98,7 @@ STAGE PLANS:
                         outputColumnNames: _col0
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                         Reduce Output Operator
+                          null sort order: 
                           sort order: 
                           Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                           value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/auto_join23.q.out b/ql/src/test/results/clientpositive/auto_join23.q.out
index 76bd962..9dcfc1a 100644
--- a/ql/src/test/results/clientpositive/auto_join23.q.out
+++ b/ql/src/test/results/clientpositive/auto_join23.q.out
@@ -59,6 +59,7 @@ STAGE PLANS:
                   Statistics: Num rows: 27556 Data size: 9809936 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string)
+                    null sort order: zzzz
                     sort order: ++++
                     Statistics: Num rows: 27556 Data size: 9809936 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
diff --git a/ql/src/test/results/clientpositive/auto_join24.q.out b/ql/src/test/results/clientpositive/auto_join24.q.out
index a534b4e..56168c3 100644
--- a/ql/src/test/results/clientpositive/auto_join24.q.out
+++ b/ql/src/test/results/clientpositive/auto_join24.q.out
@@ -87,6 +87,7 @@ STAGE PLANS:
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/auto_join26.q.out b/ql/src/test/results/clientpositive/auto_join26.q.out
index 73a379c..80cb569 100644
--- a/ql/src/test/results/clientpositive/auto_join26.q.out
+++ b/ql/src/test/results/clientpositive/auto_join26.q.out
@@ -83,6 +83,7 @@ STAGE PLANS:
                     Statistics: Num rows: 16 Data size: 1504 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: _col0 (type: string)
                       Statistics: Num rows: 16 Data size: 1504 Basic stats: COMPLETE Column stats: COMPLETE
@@ -149,6 +150,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 848 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join27.q.out b/ql/src/test/results/clientpositive/auto_join27.q.out
index 95fff75..65324fb 100644
--- a/ql/src/test/results/clientpositive/auto_join27.q.out
+++ b/ql/src/test/results/clientpositive/auto_join27.q.out
@@ -52,6 +52,7 @@ STAGE PLANS:
                 Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 83 Data size: 14774 Basic stats: COMPLETE Column stats: COMPLETE
@@ -162,6 +163,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/auto_join28.q.out b/ql/src/test/results/clientpositive/auto_join28.q.out
index 3c62b1a..fe3d2ea 100644
--- a/ql/src/test/results/clientpositive/auto_join28.q.out
+++ b/ql/src/test/results/clientpositive/auto_join28.q.out
@@ -126,6 +126,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+              null sort order: zzzzzz
               sort order: ++++++
               Statistics: Num rows: 1705 Data size: 687326 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -148,6 +149,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col5 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col5 (type: string)
               Statistics: Num rows: 762 Data size: 182450 Basic stats: COMPLETE Column stats: COMPLETE
@@ -157,6 +159,7 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: key (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: key (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -275,6 +278,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1204 Data size: 554114 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+                    null sort order: zzzzzz
                     sort order: ++++++
                     Statistics: Num rows: 1204 Data size: 554114 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -384,6 +388,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1204 Data size: 554114 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+                    null sort order: zzzzzz
                     sort order: ++++++
                     Statistics: Num rows: 1204 Data size: 554114 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -536,6 +541,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+              null sort order: zzzzzz
               sort order: ++++++
               Statistics: Num rows: 1705 Data size: 643826 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -558,6 +564,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col5 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col5 (type: string)
               Statistics: Num rows: 762 Data size: 182450 Basic stats: COMPLETE Column stats: COMPLETE
@@ -567,6 +574,7 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: key (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: key (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join29.q.out b/ql/src/test/results/clientpositive/auto_join29.q.out
index 6210e9c..6795573 100644
--- a/ql/src/test/results/clientpositive/auto_join29.q.out
+++ b/ql/src/test/results/clientpositive/auto_join29.q.out
@@ -126,6 +126,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+              null sort order: zzzzzz
               sort order: ++++++
               Statistics: Num rows: 1705 Data size: 687326 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -148,6 +149,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col5 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col5 (type: string)
               Statistics: Num rows: 762 Data size: 182450 Basic stats: COMPLETE Column stats: COMPLETE
@@ -157,6 +159,7 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: key (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: key (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -783,6 +786,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1204 Data size: 554114 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+                    null sort order: zzzzzz
                     sort order: ++++++
                     Statistics: Num rows: 1204 Data size: 554114 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -1400,6 +1404,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1204 Data size: 554114 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+                    null sort order: zzzzzz
                     sort order: ++++++
                     Statistics: Num rows: 1204 Data size: 554114 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -2072,6 +2077,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+              null sort order: zzzzzz
               sort order: ++++++
               Statistics: Num rows: 1705 Data size: 643826 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -2094,6 +2100,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col5 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col5 (type: string)
               Statistics: Num rows: 762 Data size: 182450 Basic stats: COMPLETE Column stats: COMPLETE
@@ -2103,6 +2110,7 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: key (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: key (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -2739,6 +2747,7 @@ STAGE PLANS:
                     Statistics: Num rows: 221 Data size: 102884 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+                      null sort order: zzzzzz
                       sort order: ++++++
                       Statistics: Num rows: 221 Data size: 102884 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -2897,6 +2906,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+              null sort order: zzzzzz
               sort order: ++++++
               Statistics: Num rows: 636 Data size: 161980 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -2919,6 +2929,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col5 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col5 (type: string)
               Statistics: Num rows: 86 Data size: 30616 Basic stats: COMPLETE Column stats: COMPLETE
@@ -2928,6 +2939,7 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: key (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: key (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -3557,6 +3569,7 @@ STAGE PLANS:
                     Statistics: Num rows: 401 Data size: 184586 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+                      null sort order: zzzzzz
                       sort order: ++++++
                       Statistics: Num rows: 401 Data size: 184586 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -3678,6 +3691,7 @@ STAGE PLANS:
                     Statistics: Num rows: 414 Data size: 221076 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+                      null sort order: zzzzzz
                       sort order: ++++++
                       Statistics: Num rows: 414 Data size: 221076 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -3815,6 +3829,7 @@ STAGE PLANS:
                     Statistics: Num rows: 135 Data size: 72090 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: string)
+                      null sort order: zzzzzz
                       sort order: ++++++
                       Statistics: Num rows: 135 Data size: 72090 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
diff --git a/ql/src/test/results/clientpositive/auto_join3.q.out b/ql/src/test/results/clientpositive/auto_join3.q.out
index c845871..7029bc4 100644
--- a/ql/src/test/results/clientpositive/auto_join3.q.out
+++ b/ql/src/test/results/clientpositive/auto_join3.q.out
@@ -153,6 +153,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join31.q.out b/ql/src/test/results/clientpositive/auto_join31.q.out
index 2fc8e70..73651d3 100644
--- a/ql/src/test/results/clientpositive/auto_join31.q.out
+++ b/ql/src/test/results/clientpositive/auto_join31.q.out
@@ -105,6 +105,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/auto_join32.q.out b/ql/src/test/results/clientpositive/auto_join32.q.out
index 4ef5c67..c6af689 100644
--- a/ql/src/test/results/clientpositive/auto_join32.q.out
+++ b/ql/src/test/results/clientpositive/auto_join32.q.out
@@ -91,6 +91,7 @@ STAGE PLANS:
                     Statistics: Num rows: 1 Data size: 202 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: string), _col1 (type: string)
+                      null sort order: aa
                       sort order: ++
                       Map-reduce partition columns: _col0 (type: string)
                       Statistics: Num rows: 1 Data size: 202 Basic stats: COMPLETE Column stats: NONE
@@ -199,6 +200,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1, _col2
                     Reduce Output Operator
                       key expressions: _col0 (type: string), _col1 (type: string)
+                      null sort order: aa
                       sort order: ++
                       Map-reduce partition columns: _col0 (type: string)
       Reduce Operator Tree:
@@ -318,6 +320,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1, _col2
                     Reduce Output Operator
                       key expressions: _col0 (type: string), _col1 (type: string)
+                      null sort order: aa
                       sort order: ++
                       Map-reduce partition columns: _col0 (type: string)
       Reduce Operator Tree:
@@ -459,6 +462,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1, _col2
                     Reduce Output Operator
                       key expressions: _col0 (type: string), _col1 (type: string)
+                      null sort order: aa
                       sort order: ++
                       Map-reduce partition columns: _col0 (type: string)
       Reduce Operator Tree:
diff --git a/ql/src/test/results/clientpositive/auto_join4.q.out b/ql/src/test/results/clientpositive/auto_join4.q.out
index 86bfffa..675dac7 100644
--- a/ql/src/test/results/clientpositive/auto_join4.q.out
+++ b/ql/src/test/results/clientpositive/auto_join4.q.out
@@ -148,6 +148,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join5.q.out b/ql/src/test/results/clientpositive/auto_join5.q.out
index b2884aa..6da8d4a 100644
--- a/ql/src/test/results/clientpositive/auto_join5.q.out
+++ b/ql/src/test/results/clientpositive/auto_join5.q.out
@@ -148,6 +148,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join6.q.out b/ql/src/test/results/clientpositive/auto_join6.q.out
index e48c839..de56585 100644
--- a/ql/src/test/results/clientpositive/auto_join6.q.out
+++ b/ql/src/test/results/clientpositive/auto_join6.q.out
@@ -63,6 +63,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
@@ -80,6 +81,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
@@ -145,6 +147,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join7.q.out b/ql/src/test/results/clientpositive/auto_join7.q.out
index 690d426..a6b4bd5 100644
--- a/ql/src/test/results/clientpositive/auto_join7.q.out
+++ b/ql/src/test/results/clientpositive/auto_join7.q.out
@@ -75,6 +75,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
@@ -92,6 +93,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
@@ -202,6 +204,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 2592 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col4 (type: stru [...]
diff --git a/ql/src/test/results/clientpositive/auto_join8.q.out b/ql/src/test/results/clientpositive/auto_join8.q.out
index 61a92de..5879fbc 100644
--- a/ql/src/test/results/clientpositive/auto_join8.q.out
+++ b/ql/src/test/results/clientpositive/auto_join8.q.out
@@ -151,6 +151,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join9.q.out b/ql/src/test/results/clientpositive/auto_join9.q.out
index 08bdbb6..41a7bc2 100644
--- a/ql/src/test/results/clientpositive/auto_join9.q.out
+++ b/ql/src/test/results/clientpositive/auto_join9.q.out
@@ -130,6 +130,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/auto_join_stats.q.out b/ql/src/test/results/clientpositive/auto_join_stats.q.out
index 515ccb0..efbcb4d 100644
--- a/ql/src/test/results/clientpositive/auto_join_stats.q.out
+++ b/ql/src/test/results/clientpositive/auto_join_stats.q.out
@@ -226,6 +226,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -243,6 +244,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -538,6 +540,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -555,6 +558,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/auto_join_without_localtask.q.out b/ql/src/test/results/clientpositive/auto_join_without_localtask.q.out
index 273fa68..30a3916 100644
--- a/ql/src/test/results/clientpositive/auto_join_without_localtask.q.out
+++ b/ql/src/test/results/clientpositive/auto_join_without_localtask.q.out
@@ -83,6 +83,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string)
+              null sort order: zz
               sort order: ++
               Statistics: Num rows: 791 Data size: 140798 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
@@ -173,6 +174,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -190,6 +192,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -405,6 +408,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string)
+              null sort order: zz
               sort order: ++
               Statistics: Num rows: 1288 Data size: 229264 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
@@ -468,6 +472,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col1 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col1 (type: string)
               Statistics: Num rows: 791 Data size: 140798 Basic stats: COMPLETE Column stats: COMPLETE
@@ -485,6 +490,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -575,6 +581,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -592,6 +599,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -810,6 +818,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string)
+              null sort order: zz
               sort order: ++
               Statistics: Num rows: 270 Data size: 48060 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
@@ -873,6 +882,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col1 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col1 (type: string)
               Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
@@ -890,6 +900,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 45500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -980,6 +991,7 @@ STAGE PLANS:
                 Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 166 Data size: 29548 Basic stats: COMPLETE Column stats: COMPLETE
@@ -997,6 +1009,7 @@ STAGE PLANS:
                 Statistics: Num rows: 166 Data size: 14442 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 166 Data size: 14442 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 5c90f96..4631cce 100644
--- a/ql/src/test/results/clientpositive/beeline/explain_outputs.q.out
+++ b/ql/src/test/results/clientpositive/beeline/explain_outputs.q.out
@@ -66,6 +66,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -82,6 +83,7 @@ STAGE PLANS:
                 Statistics: Num rows: 5 Data size: 20 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 5 Data size: 20 Basic stats: COMPLETE Column stats: COMPLETE
@@ -112,6 +114,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -168,6 +171,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2/2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 2/2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -184,6 +188,7 @@ STAGE PLANS:
                 Statistics: Num rows: 5/5 Data size: 20 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 5/5 Data size: 20 Basic stats: COMPLETE Column stats: COMPLETE
@@ -214,6 +219,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1/1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -284,6 +290,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -300,6 +307,7 @@ STAGE PLANS:
                 Statistics: Num rows: 5 Data size: 20 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 5 Data size: 20 Basic stats: COMPLETE Column stats: COMPLETE
@@ -330,6 +338,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/beeline/mapjoin2.q.out b/ql/src/test/results/clientpositive/beeline/mapjoin2.q.out
index 3ef5b0e..3d5bb60 100644
--- a/ql/src/test/results/clientpositive/beeline/mapjoin2.q.out
+++ b/ql/src/test/results/clientpositive/beeline/mapjoin2.q.out
@@ -263,6 +263,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 95 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 95 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: bigint), _col1 (type: string)
@@ -278,6 +279,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 95 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 95 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: bigint), _col1 (type: string)
diff --git a/ql/src/test/results/clientpositive/beeline/materialized_view_create_rewrite.q.out b/ql/src/test/results/clientpositive/beeline/materialized_view_create_rewrite.q.out
index a463f42..fd4a6c6 100644
--- a/ql/src/test/results/clientpositive/beeline/materialized_view_create_rewrite.q.out
+++ b/ql/src/test/results/clientpositive/beeline/materialized_view_create_rewrite.q.out
@@ -184,6 +184,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 2 Data size: 224 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 224 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: decimal(10,2))
@@ -199,6 +200,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: decimal(10,2))
@@ -322,6 +324,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: decimal(10,2))
@@ -329,6 +332,7 @@ STAGE PLANS:
             alias: default.cmv_mat_view2_n4
             Statistics: Num rows: 2 Data size: 232 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 2 Data size: 232 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: a (type: int), c (type: decimal(10,2))
@@ -427,6 +431,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 2 Data size: 224 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 224 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: decimal(10,2))
@@ -442,6 +447,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 112 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: decimal(10,2))
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 ec7e0d9..1112bd3 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
@@ -71,6 +71,7 @@ STAGE PLANS:
                   mode: hash
                   outputColumnNames: _col0
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     value expressions: _col0 (type: bigint)
       Reduce Operator Tree:
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 e598a47..195bd8b 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
@@ -663,6 +663,7 @@ STAGE PLANS:
                     mode: hash
                     outputColumnNames: _col0, _col1, _col2, _col3
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
       Reduce Operator Tree:
diff --git a/ql/src/test/results/clientpositive/binarysortable_1.q.out b/ql/src/test/results/clientpositive/binarysortable_1.q.out
index 70c235c..511b08c 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/bucketsortoptimize_insert_1.q.out b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_1.q.out
index 69d850e..756bee7 100644
--- a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_1.q.out
+++ b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_1.q.out
@@ -370,6 +370,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: int)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: _col0 (type: int)
                 Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -431,6 +432,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               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 b59384d..fc88d90 100644
--- a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_3.q.out
+++ b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_3.q.out
@@ -185,6 +185,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: UDFToInteger(_col1) (type: int)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: UDFToInteger(_col1) (type: int)
                 Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -246,6 +247,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               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 91f556f..54a3af3 100644
--- a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_4.q.out
+++ b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_4.q.out
@@ -107,6 +107,7 @@ STAGE PLANS:
                     outputColumnNames: _col1, _col2
                     Reduce Output Operator
                       key expressions: _col1 (type: int)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: _col1 (type: int)
                       value expressions: _col2 (type: string)
@@ -163,6 +164,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               value expressions: _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
@@ -317,6 +319,7 @@ STAGE PLANS:
                   outputColumnNames: _col0, _col1
                   Reduce Output Operator
                     key expressions: _col1 (type: string)
+                    null sort order: a
                     sort order: +
                     Map-reduce partition columns: _col1 (type: string)
                     value expressions: _col0 (type: int)
@@ -373,6 +376,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               value expressions: _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
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 f15158d..df08720 100644
--- a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_5.q.out
+++ b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_5.q.out
@@ -107,6 +107,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1
                     Reduce Output Operator
                       key expressions: _col0 (type: int)
+                      null sort order: z
                       sort order: -
                       Map-reduce partition columns: _col0 (type: int)
                       value expressions: _col1 (type: string)
@@ -163,6 +164,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               value expressions: _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
@@ -307,6 +309,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1
                     Reduce Output Operator
                       key expressions: _col0 (type: int)
+                      null sort order: z
                       sort order: -
                       Map-reduce partition columns: _col0 (type: int)
                       value expressions: _col1 (type: string)
@@ -363,6 +366,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               value expressions: _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
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 6e10eb7..ddaeafd 100644
--- a/ql/src/test/results/clientpositive/bucketsortoptimize_insert_8.q.out
+++ b/ql/src/test/results/clientpositive/bucketsortoptimize_insert_8.q.out
@@ -107,6 +107,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1, _col2
                     Reduce Output Operator
                       key expressions: _col0 (type: int)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: _col0 (type: int)
                       value expressions: _col1 (type: int), _col2 (type: string)
@@ -163,6 +164,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               value expressions: _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
@@ -302,6 +304,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1, _col2
                     Reduce Output Operator
                       key expressions: _col0 (type: int)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: _col0 (type: int)
                       value expressions: _col1 (type: int), _col2 (type: string)
@@ -358,6 +361,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               value expressions: _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/case_sensitivity.q.out b/ql/src/test/results/clientpositive/case_sensitivity.q.out
index 8d454cd..fdcf86b 100644
--- a/ql/src/test/results/clientpositive/case_sensitivity.q.out
+++ b/ql/src/test/results/clientpositive/case_sensitivity.q.out
@@ -62,6 +62,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 3544 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 3544 Basic stats: COMPLETE Column stats: NONE
                       value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/cast1.q.out b/ql/src/test/results/clientpositive/cast1.q.out
index cf8beca..c4e76f5 100644
--- a/ql/src/test/results/clientpositive/cast1.q.out
+++ b/ql/src/test/results/clientpositive/cast1.q.out
@@ -60,6 +60,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6
                     Statistics: Num rows: 1 Data size: 2984 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 2984 Basic stats: COMPLETE Column stats: COMPLETE
                       value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvector:binary>), _col4 (type: struct<columntype:string,min:bigint,max:bigint [...]
diff --git a/ql/src/test/results/clientpositive/cbo_SortUnionTransposeRule.q.out b/ql/src/test/results/clientpositive/cbo_SortUnionTransposeRule.q.out
index 89beaa5..fa53bea 100644
--- a/ql/src/test/results/clientpositive/cbo_SortUnionTransposeRule.q.out
+++ b/ql/src/test/results/clientpositive/cbo_SortUnionTransposeRule.q.out
@@ -45,6 +45,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 1740 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Statistics: Num rows: 20 Data size: 1740 Basic stats: COMPLETE Column stats: COMPLETE
           TableScan
@@ -58,6 +59,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 1740 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Statistics: Num rows: 20 Data size: 1740 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
@@ -211,6 +213,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 1740 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Statistics: Num rows: 20 Data size: 1740 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
@@ -225,6 +228,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 1740 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Statistics: Num rows: 20 Data size: 1740 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
@@ -307,6 +311,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -320,6 +325,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: _col0 (type: string)
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -351,6 +357,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
@@ -417,6 +424,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -430,6 +438,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: _col0 (type: string)
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -461,6 +470,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
@@ -522,6 +532,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 1740 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Statistics: Num rows: 20 Data size: 1740 Basic stats: COMPLETE Column stats: COMPLETE
           TableScan
@@ -535,6 +546,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 1740 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Statistics: Num rows: 20 Data size: 1740 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
@@ -619,6 +631,7 @@ STAGE PLANS:
                 Number of rows: 5
                 Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
@@ -683,6 +696,7 @@ STAGE PLANS:
                 Number of rows: 5
                 Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
@@ -746,6 +760,7 @@ STAGE PLANS:
               Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: z
                 sort order: +
                 Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -773,6 +788,7 @@ STAGE PLANS:
               Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: z
                 sort order: +
                 Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -781,6 +797,7 @@ STAGE PLANS:
               Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: z
                 sort order: +
                 Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -812,6 +829,7 @@ STAGE PLANS:
               Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: z
                 sort order: +
                 Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -894,6 +912,7 @@ STAGE PLANS:
                 Number of rows: 5
                 Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
@@ -930,6 +949,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -937,6 +957,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
@@ -968,6 +989,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 5 Data size: 799 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
@@ -1032,6 +1054,7 @@ STAGE PLANS:
                 Number of rows: 5
                 Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
@@ -1068,6 +1091,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1075,6 +1099,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1106,6 +1131,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 5 Data size: 799 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
diff --git a/ql/src/test/results/clientpositive/cbo_const.q.out b/ql/src/test/results/clientpositive/cbo_const.q.out
index a5409c5..93edc99 100644
--- a/ql/src/test/results/clientpositive/cbo_const.q.out
+++ b/ql/src/test/results/clientpositive/cbo_const.q.out
@@ -263,6 +263,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col1 (type: string)
                   Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
@@ -280,6 +281,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE
@@ -305,6 +307,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 1 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
@@ -322,6 +325,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 44500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 44500 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/cbo_input26.q.out b/ql/src/test/results/clientpositive/cbo_input26.q.out
index 480edcb..7705835 100644
--- a/ql/src/test/results/clientpositive/cbo_input26.q.out
+++ b/ql/src/test/results/clientpositive/cbo_input26.q.out
@@ -38,6 +38,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: z
                 sort order: +
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -112,6 +113,7 @@ STAGE PLANS:
                   Number of rows: 5
                   Statistics: Num rows: 1 Data size: 168 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 168 Basic stats: COMPLETE Column stats: COMPLETE
                     TopN Hash Memory Usage: 0.1
@@ -205,6 +207,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: z
                 sort order: +
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -278,6 +281,7 @@ STAGE PLANS:
                   Number of rows: 5
                   Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE
                     TopN Hash Memory Usage: 0.1
@@ -371,6 +375,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: z
                 sort order: +
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -444,6 +449,7 @@ STAGE PLANS:
                   Number of rows: 5
                   Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE
                     TopN Hash Memory Usage: 0.1
@@ -539,6 +545,7 @@ STAGE PLANS:
                 Number of rows: 5
                 Statistics: Num rows: 5 Data size: 890 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 5 Data size: 890 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
@@ -609,6 +616,7 @@ STAGE PLANS:
                   Number of rows: 5
                   Statistics: Num rows: 1 Data size: 168 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 168 Basic stats: COMPLETE Column stats: COMPLETE
                     TopN Hash Memory Usage: 0.1
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 802a11b..c21928d 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
@@ -130,6 +130,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
@@ -162,6 +163,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: bigint)
+              null sort order: aa
               sort order: ++
               Map-reduce partition columns: _col0 (type: string), _col1 (type: bigint)
               Statistics: Num rows: 8 Data size: 784 Basic stats: COMPLETE Column stats: COMPLETE
@@ -229,6 +231,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 8 Data size: 32 Basic stats: COMPLETE Column stats: COMPLETE
@@ -284,6 +287,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 8 Data size: 720 Basic stats: COMPLETE Column stats: COMPLETE
@@ -339,6 +343,7 @@ STAGE PLANS:
                 Statistics: Num rows: 32 Data size: 5632 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 32 Data size: 5632 Basic stats: COMPLETE Column stats: COMPLETE
@@ -394,6 +399,7 @@ STAGE PLANS:
                 Statistics: Num rows: 24 Data size: 4224 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 24 Data size: 4224 Basic stats: COMPLETE Column stats: COMPLETE
@@ -449,6 +455,7 @@ STAGE PLANS:
                 Statistics: Num rows: 24 Data size: 4224 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 24 Data size: 4224 Basic stats: COMPLETE Column stats: COMPLETE
@@ -504,6 +511,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 1408 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 8 Data size: 1408 Basic stats: COMPLETE Column stats: COMPLETE
@@ -559,6 +567,7 @@ STAGE PLANS:
                 Statistics: Num rows: 16 Data size: 2816 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 16 Data size: 2816 Basic stats: COMPLETE Column stats: COMPLETE
@@ -614,6 +623,7 @@ STAGE PLANS:
                 Statistics: Num rows: 24 Data size: 4224 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 24 Data size: 4224 Basic stats: COMPLETE Column stats: COMPLETE
@@ -669,6 +679,7 @@ STAGE PLANS:
                 Statistics: Num rows: 32 Data size: 5632 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 32 Data size: 5632 Basic stats: COMPLETE Column stats: COMPLETE
@@ -724,6 +735,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -779,6 +791,7 @@ STAGE PLANS:
                 Statistics: Num rows: 16 Data size: 2816 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 16 Data size: 2816 Basic stats: COMPLETE Column stats: COMPLETE
@@ -834,6 +847,7 @@ STAGE PLANS:
                 Statistics: Num rows: 4 Data size: 376 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: bigint)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: bigint)
                   Statistics: Num rows: 4 Data size: 376 Basic stats: COMPLETE Column stats: COMPLETE
@@ -889,6 +903,7 @@ STAGE PLANS:
                 Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
@@ -944,6 +959,7 @@ STAGE PLANS:
                 Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
@@ -999,6 +1015,7 @@ STAGE PLANS:
                 Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
@@ -1054,6 +1071,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
@@ -1109,6 +1127,7 @@ STAGE PLANS:
                 Statistics: Num rows: 16 Data size: 1592 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 16 Data size: 1592 Basic stats: COMPLETE Column stats: NONE
@@ -1164,6 +1183,7 @@ STAGE PLANS:
                 Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 24 Data size: 2388 Basic stats: COMPLETE Column stats: NONE
@@ -1219,6 +1239,7 @@ STAGE PLANS:
                 Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
@@ -1274,6 +1295,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: NONE
@@ -1329,6 +1351,7 @@ STAGE PLANS:
                 Statistics: Num rows: 32 Data size: 3184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: int), _col2 (type: string)
+                  null sort order: aaa
                   sort order: +++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                   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 28ca61a..72e041e 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
@@ -88,6 +88,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: bigint)
@@ -208,6 +209,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: bigint)
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 425b920..25261f7 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
@@ -122,6 +122,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: key (type: int)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: key (type: int)
                       Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
@@ -149,6 +150,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: key (type: int)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: key (type: int)
                       Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
@@ -184,6 +186,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -280,6 +283,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: key (type: int)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: key (type: int)
                       Statistics: Num rows: 6 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
@@ -296,6 +300,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 40 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: key (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: key (type: int)
                   Statistics: Num rows: 10 Data size: 40 Basic stats: COMPLETE Column stats: COMPLETE
@@ -325,6 +330,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -446,6 +452,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: key (type: int)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: key (type: int)
                       Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
@@ -473,6 +480,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: key (type: int)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: key (type: int)
                       Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
@@ -519,6 +527,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: key (type: int)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: key (type: int)
                       Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
@@ -546,6 +555,7 @@ STAGE PLANS:
                     Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: key (type: int)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: key (type: int)
                       Statistics: Num rows: 6 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE
@@ -553,6 +563,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: key (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: key (type: int)
               Statistics: Num rows: 6 Data size: 120 Basic stats: COMPLETE Column stats: COMPLETE
@@ -682,6 +693,7 @@ STAGE PLANS:
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         value expressions: _col0 (type: bigint)
       Reduce Operator Tree:
@@ -783,6 +795,7 @@ STAGE PLANS:
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         value expressions: _col0 (type: bigint)
       Reduce Operator Tree:
@@ -906,6 +919,7 @@ STAGE PLANS:
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         value expressions: _col0 (type: bigint)
       Reduce Operator Tree:
@@ -1019,6 +1033,7 @@ STAGE PLANS:
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         value expressions: _col0 (type: bigint)
       Reduce Operator Tree:
@@ -1109,6 +1124,7 @@ STAGE PLANS:
                   Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: int)
+                    null sort order: a
                     sort order: +
                     Map-reduce partition columns: _col0 (type: int)
                     Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1134,6 +1150,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: key (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: key (type: int)
               Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1141,6 +1158,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: key (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: key (type: int)
               Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1176,6 +1194,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -1217,6 +1236,7 @@ STAGE PLANS:
                   Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: int)
+                    null sort order: a
                     sort order: +
                     Map-reduce partition columns: _col0 (type: int)
                     Statistics: Num rows: 5 Data size: 60 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1309,6 +1329,7 @@ STAGE PLANS:
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         value expressions: _col0 (type: bigint)
       Reduce Operator Tree:
@@ -1404,6 +1425,7 @@ STAGE PLANS:
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         value expressions: _col0 (type: bigint)
       Reduce Operator Tree:
@@ -1513,6 +1535,7 @@ STAGE PLANS:
                       mode: hash
                       outputColumnNames: _col0
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         value expressions: _col0 (type: bigint)
       Reduce Operator Tree:
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 3055730..2e037fd 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
@@ -126,6 +126,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 1728 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
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 4c8df5c..876baf3 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
@@ -298,6 +298,7 @@ STAGE PLANS:
                       Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: string)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col0 (type: string)
                         Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
@@ -434,6 +435,7 @@ STAGE PLANS:
                     Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: _col0 (type: string)
                       Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
@@ -550,6 +552,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -649,11 +652,13 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: key (type: string)
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: key (type: string)
@@ -732,6 +737,7 @@ STAGE PLANS:
                       Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: string)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col0 (type: string)
                         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 ecdc784..efdde8b 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
@@ -48,6 +48,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 100000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 100000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -111,6 +112,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 2152 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col4 (type: stru [...]
@@ -212,6 +214,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 100000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 100000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -275,6 +278,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 2152 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col4 (type: stru [...]
diff --git a/ql/src/test/results/clientpositive/cbo_rp_groupby3_noskew_multi_distinct.q.out b/ql/src/test/results/clientpositive/cbo_rp_groupby3_noskew_multi_distinct.q.out
index 9f88e5a..803a276 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_groupby3_noskew_multi_distinct.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_groupby3_noskew_multi_distinct.q.out
@@ -58,6 +58,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 100000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: $f0 (type: string)
+                null sort order: a
                 sort order: +
                 Statistics: Num rows: 500 Data size: 100000 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: $f2 (type: double), $f00 (type: double)
diff --git a/ql/src/test/results/clientpositive/cbo_rp_join0.q.out b/ql/src/test/results/clientpositive/cbo_rp_join0.q.out
index 8b072a5..54c6efe 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_join0.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_join0.q.out
@@ -39,6 +39,7 @@ STAGE PLANS:
                 Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: key (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: key (type: string)
                   Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
@@ -56,6 +57,7 @@ STAGE PLANS:
                 Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: key (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: key (type: string)
                   Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
@@ -69,6 +71,7 @@ STAGE PLANS:
               Statistics: Num rows: 20 Data size: 1615 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: key (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: key (type: string)
                 Statistics: Num rows: 20 Data size: 1615 Basic stats: COMPLETE Column stats: COMPLETE
@@ -700,6 +703,7 @@ STAGE PLANS:
                 Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: key (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: key (type: string)
                   Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
@@ -717,6 +721,7 @@ STAGE PLANS:
                 Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: key (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: key (type: string)
                   Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
@@ -730,6 +735,7 @@ STAGE PLANS:
               Statistics: Num rows: 20 Data size: 1615 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: key (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: key (type: string)
                 Statistics: Num rows: 20 Data size: 1615 Basic stats: COMPLETE Column stats: COMPLETE
@@ -746,6 +752,7 @@ STAGE PLANS:
                 Statistics: Num rows: 18 Data size: 1513 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: key (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: key (type: string)
                   Statistics: Num rows: 18 Data size: 1513 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 1bc3529..d75b040 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_join1.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_join1.q.out
@@ -40,6 +40,7 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1, _col2
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: boolean)
@@ -51,6 +52,7 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1, _col2
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: boolean)
@@ -88,6 +90,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               value expressions: _col0 (type: bigint)
@@ -148,6 +151,7 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1, _col2, _col3
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: boolean), _col3 (type: boolean)
@@ -159,6 +163,7 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1, _col2
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: boolean)
@@ -196,6 +201,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               value expressions: _col0 (type: bigint)
@@ -256,6 +262,7 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1, _col2
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: boolean)
@@ -267,6 +274,7 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1, _col2
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: boolean)
@@ -304,6 +312,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               value expressions: _col0 (type: bigint)
@@ -364,6 +373,7 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1, _col2, _col3, _col4
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: boolean), _col3 (type: boolean), _col4 (type: boolean)
@@ -375,6 +385,7 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1, _col2, _col3, _col4
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: boolean), _col3 (type: boolean), _col4 (type: boolean)
@@ -412,6 +423,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
               value expressions: _col0 (type: bigint)
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 a49a179..893f689 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
@@ -526,6 +526,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 168 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 168 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: array<double>)
@@ -590,6 +591,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 168 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 168 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: array<double>)
diff --git a/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out b/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out
index 36be86e..a2645dd 100644
--- a/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out
+++ b/ql/src/test/results/clientpositive/columnStatsUpdateForStatsOptimizer_2.q.out
@@ -228,6 +228,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: int)
@@ -360,6 +361,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: int)
diff --git a/ql/src/test/results/clientpositive/column_pruner_multiple_children.q.out b/ql/src/test/results/clientpositive/column_pruner_multiple_children.q.out
index 35aa454..91d3d96 100644
--- a/ql/src/test/results/clientpositive/column_pruner_multiple_children.q.out
+++ b/ql/src/test/results/clientpositive/column_pruner_multiple_children.q.out
@@ -47,6 +47,7 @@ STAGE PLANS:
               Statistics: Num rows: 1 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: _col0 (type: string)
                 Statistics: Num rows: 1 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE
@@ -105,6 +106,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: key (type: int), value (type: string)
diff --git a/ql/src/test/results/clientpositive/columnarserde_create_shortcut.q.out b/ql/src/test/results/clientpositive/columnarserde_create_shortcut.q.out
index 6419a5f..09ebed0 100644
--- a/ql/src/test/results/clientpositive/columnarserde_create_shortcut.q.out
+++ b/ql/src/test/results/clientpositive/columnarserde_create_shortcut.q.out
@@ -35,6 +35,7 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1, _col2, _col3, _col4
               Statistics: Num rows: 11 Data size: 34628 Basic stats: COMPLETE Column stats: NONE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Map-reduce partition columns: 1 (type: int)
                 Statistics: Num rows: 11 Data size: 34628 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 0dde254..3e25574 100644
--- a/ql/src/test/results/clientpositive/columnstats_partlvl.q.out
+++ b/ql/src/test/results/clientpositive/columnstats_partlvl.q.out
@@ -71,6 +71,7 @@ STAGE PLANS:
                 Statistics: Num rows: 3 Data size: 1062 Basic stats: PARTIAL Column stats: NONE
                 Reduce Output Operator
                   key expressions: 2000.0D (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: 2000.0D (type: double)
                   Statistics: Num rows: 3 Data size: 1062 Basic stats: PARTIAL Column stats: NONE
@@ -344,6 +345,7 @@ STAGE PLANS:
                 Statistics: Num rows: 3 Data size: 1062 Basic stats: PARTIAL Column stats: NONE
                 Reduce Output Operator
                   key expressions: 4000.0D (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: 4000.0D (type: double)
                   Statistics: Num rows: 3 Data size: 1062 Basic stats: PARTIAL Column stats: NONE
@@ -579,6 +581,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 872 Basic stats: COMPLETE Column stats: PARTIAL
                 Reduce Output Operator
                   key expressions: 2000.0D (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: 2000.0D (type: double)
                   Statistics: Num rows: 1 Data size: 872 Basic stats: COMPLETE Column stats: PARTIAL
@@ -704,6 +707,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 1744 Basic stats: COMPLETE Column stats: PARTIAL
                 Reduce Output Operator
                   key expressions: _col0 (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: double)
                   Statistics: Num rows: 2 Data size: 1744 Basic stats: COMPLETE Column stats: PARTIAL
@@ -831,6 +835,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: PARTIAL
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: PARTIAL
                   value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
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 c62296f..61a53b2 100644
--- a/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out
+++ b/ql/src/test/results/clientpositive/columnstats_partlvl_dp.q.out
@@ -107,6 +107,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 1236 Basic stats: PARTIAL Column stats: PARTIAL
                 Reduce Output Operator
                   key expressions: 4000.0D (type: double), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: 4000.0D (type: double), _col1 (type: string)
                   Statistics: Num rows: 1 Data size: 1236 Basic stats: PARTIAL Column stats: PARTIAL
@@ -254,6 +255,7 @@ STAGE PLANS:
                 Statistics: Num rows: 3 Data size: 1836 Basic stats: PARTIAL Column stats: PARTIAL
                 Reduce Output Operator
                   key expressions: 2000.0D (type: double), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: 2000.0D (type: double), _col1 (type: string)
                   Statistics: Num rows: 3 Data size: 1836 Basic stats: PARTIAL Column stats: PARTIAL
@@ -399,6 +401,7 @@ STAGE PLANS:
                 Statistics: Num rows: 31 Data size: 19216 Basic stats: PARTIAL Column stats: PARTIAL
                 Reduce Output Operator
                   key expressions: _col0 (type: double), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: double), _col1 (type: string)
                   Statistics: Num rows: 31 Data size: 19216 Basic stats: PARTIAL Column stats: PARTIAL
@@ -542,6 +545,7 @@ STAGE PLANS:
                 Statistics: Num rows: 8 Data size: 8448 Basic stats: COMPLETE Column stats: PARTIAL
                 Reduce Output Operator
                   key expressions: _col0 (type: double), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: double), _col1 (type: string)
                   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 431dc74..222c047 100644
--- a/ql/src/test/results/clientpositive/columnstats_quoting.q.out
+++ b/ql/src/test/results/clientpositive/columnstats_quoting.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 1056 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 1056 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
@@ -109,6 +110,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 424 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/columnstats_tbllvl.q.out b/ql/src/test/results/clientpositive/columnstats_tbllvl.q.out
index 9fb75ec..f22d15c 100644
--- a/ql/src/test/results/clientpositive/columnstats_tbllvl.q.out
+++ b/ql/src/test/results/clientpositive/columnstats_tbllvl.q.out
@@ -72,6 +72,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1480 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 1480 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvector:binary>)
@@ -276,6 +277,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
                 Statistics: Num rows: 1 Data size: 3928 Basic stats: COMPLETE Column stats: PARTIAL
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 3928 Basic stats: COMPLETE Column stats: PARTIAL
                   value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvecto [...]
@@ -422,6 +424,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 1 Data size: 2192 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 2192 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,counttrues:bigint,countfalses:bigint,countnulls:bigint>), _col4 (type: struct<columntype:string,ma [...]
@@ -574,6 +577,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1480 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 1480 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvector:binary>)
@@ -778,6 +782,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8
                 Statistics: Num rows: 1 Data size: 3928 Basic stats: COMPLETE Column stats: PARTIAL
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 3928 Basic stats: COMPLETE Column stats: PARTIAL
                   value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvecto [...]
diff --git a/ql/src/test/results/clientpositive/combine2.q.out b/ql/src/test/results/clientpositive/combine2.q.out
index 1b1f5fc..85c98a1 100644
--- a/ql/src/test/results/clientpositive/combine2.q.out
+++ b/ql/src/test/results/clientpositive/combine2.q.out
@@ -216,6 +216,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1000 Data size: 192000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 1000 Data size: 192000 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 af5c86f..7ae2f87 100644
--- a/ql/src/test/results/clientpositive/complex_alias.q.out
+++ b/ql/src/test/results/clientpositive/complex_alias.q.out
@@ -91,6 +91,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
@@ -115,10 +116,12 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 172 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string), _col1 (type: string)
@@ -167,6 +170,7 @@ STAGE PLANS:
                     Statistics: Num rows: 1 Data size: 90 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string), _col1 (type: int)
+                      null sort order: aa
                       sort order: ++
                       Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                       Statistics: Num rows: 1 Data size: 90 Basic stats: COMPLETE Column stats: COMPLETE
@@ -191,6 +195,7 @@ STAGE PLANS:
                     Statistics: Num rows: 1 Data size: 90 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string), _col1 (type: int)
+                      null sort order: aa
                       sort order: ++
                       Map-reduce partition columns: _col0 (type: string), _col1 (type: int)
                       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 1e60fcc..fe36adb 100644
--- a/ql/src/test/results/clientpositive/compute_stats_date.q.out
+++ b/ql/src/test/results/clientpositive/compute_stats_date.q.out
@@ -78,6 +78,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 576 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 576 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: struct<columntype:string,min:date,max:date,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/constGby.q.out b/ql/src/test/results/clientpositive/constGby.q.out
index f98e5f2..554901a 100644
--- a/ql/src/test/results/clientpositive/constGby.q.out
+++ b/ql/src/test/results/clientpositive/constGby.q.out
@@ -54,6 +54,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: boolean)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: boolean)
                   Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/constant_prop_1.q.out b/ql/src/test/results/clientpositive/constant_prop_1.q.out
index b4d2237..80d30d1 100644
--- a/ql/src/test/results/clientpositive/constant_prop_1.q.out
+++ b/ql/src/test/results/clientpositive/constant_prop_1.q.out
@@ -112,6 +112,7 @@ STAGE PLANS:
                     Number of rows: 1
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       TopN Hash Memory Usage: 0.1
@@ -128,6 +129,7 @@ STAGE PLANS:
                     Number of rows: 1
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       TopN Hash Memory Usage: 0.1
@@ -147,6 +149,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
           TableScan
@@ -157,6 +160,7 @@ STAGE PLANS:
               predicate: (value = '12345') (type: boolean)
               Statistics: Num rows: 2 Data size: 356 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 2 Data size: 356 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: key (type: string)
@@ -297,6 +301,7 @@ STAGE PLANS:
                   Number of rows: 1
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                     TopN Hash Memory Usage: 0.1
@@ -314,6 +319,7 @@ STAGE PLANS:
                   Number of rows: 1
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                     TopN Hash Memory Usage: 0.1
@@ -338,6 +344,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: int)
@@ -349,6 +356,7 @@ STAGE PLANS:
               predicate: (value = '12345') (type: boolean)
               Statistics: Num rows: 2 Data size: 356 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 2 Data size: 356 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: key (type: string)
@@ -406,6 +414,7 @@ STAGE PLANS:
               predicate: (key = '238') (type: boolean)
               Statistics: Num rows: 2 Data size: 174 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 2 Data size: 174 Basic stats: COMPLETE Column stats: COMPLETE
           TableScan
@@ -416,6 +425,7 @@ STAGE PLANS:
               predicate: (value = '234') (type: boolean)
               Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
@@ -471,6 +481,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: key (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: key (type: string)
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -483,6 +494,7 @@ STAGE PLANS:
               Statistics: Num rows: 2 Data size: 356 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: key (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: key (type: string)
                 Statistics: Num rows: 2 Data size: 356 Basic stats: COMPLETE 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 5ed67dd..f4c74fa 100644
--- a/ql/src/test/results/clientpositive/constant_prop_2.q.out
+++ b/ql/src/test/results/clientpositive/constant_prop_2.q.out
@@ -66,6 +66,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 1060 Basic stats: COMPLETE Column stats: PARTIAL
                 Reduce Output Operator
                   key expressions: '2008-04-08' (type: string), '11' (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: '2008-04-08' (type: string), '11' (type: string)
                   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 f91c75b..210cb0a 100644
--- a/ql/src/test/results/clientpositive/constant_prop_3.q.out
+++ b/ql/src/test/results/clientpositive/constant_prop_3.q.out
@@ -197,6 +197,7 @@ STAGE PLANS:
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE
                     value expressions: _col0 (type: bigint), _col1 (type: bigint)
@@ -229,11 +230,13 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2, _col3
                 Statistics: Num rows: 1 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 176 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: int)
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint), _col1 (type: bigint)
@@ -259,6 +262,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: COMPLETE
@@ -266,6 +270,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
@@ -310,6 +315,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: int), _col3 (type: int)
+              null sort order: aaaa
               sort order: ++++
               Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: int)
               Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: COMPLETE
@@ -334,6 +340,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col3 (type: bigint), _col0 (type: string), _col1 (type: string), _col2 (type: int)
+              null sort order: zzzz
               sort order: -+++
               Statistics: Num rows: 1 Data size: 180 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -372,6 +379,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: int)
+                    null sort order: a
                     sort order: +
                     Map-reduce partition columns: _col0 (type: int)
                     Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
@@ -409,6 +417,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col1 (type: int)
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
@@ -416,6 +425,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/constprog2.q.out b/ql/src/test/results/clientpositive/constprog2.q.out
index a57a453..b1d99e4 100644
--- a/ql/src/test/results/clientpositive/constprog2.q.out
+++ b/ql/src/test/results/clientpositive/constprog2.q.out
@@ -29,6 +29,7 @@ STAGE PLANS:
               Select Operator
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
           TableScan
@@ -43,6 +44,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: string)
@@ -104,6 +106,7 @@ STAGE PLANS:
               Select Operator
                 Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
           TableScan
@@ -118,6 +121,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: string)
diff --git a/ql/src/test/results/clientpositive/constprog3.q.out b/ql/src/test/results/clientpositive/constprog3.q.out
index a1a7ae8..b4d2e05 100644
--- a/ql/src/test/results/clientpositive/constprog3.q.out
+++ b/ql/src/test/results/clientpositive/constprog3.q.out
@@ -50,6 +50,7 @@ STAGE PLANS:
                 Number of rows: 0
                 Statistics: Num rows: 0 Data size: 0 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 0 Data size: 0 Basic stats: NONE Column stats: NONE
                   value expressions: _col0 (type: int), _col1 (type: int), _col2 (type: int)
@@ -63,6 +64,7 @@ STAGE PLANS:
               Select Operator
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
       Reduce Operator Tree:
diff --git a/ql/src/test/results/clientpositive/constprog_dp.q.out b/ql/src/test/results/clientpositive/constprog_dp.q.out
index 3057986..a86075f 100644
--- a/ql/src/test/results/clientpositive/constprog_dp.q.out
+++ b/ql/src/test/results/clientpositive/constprog_dp.q.out
@@ -64,6 +64,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1 Data size: 974 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string)
+                    null sort order: a
                     sort order: +
                     Map-reduce partition columns: _col0 (type: string)
                     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 958f75d..4a25cd7 100644
--- a/ql/src/test/results/clientpositive/constprog_partitioner.q.out
+++ b/ql/src/test/results/clientpositive/constprog_partitioner.q.out
@@ -29,6 +29,7 @@ STAGE PLANS:
               Select Operator
                 Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
           TableScan
@@ -43,6 +44,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 182 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: string)
@@ -110,6 +112,7 @@ STAGE PLANS:
                 Statistics: Num rows: 14 Data size: 224 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int), 1 (type: int)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: int), 1 (type: int)
                   Statistics: Num rows: 14 Data size: 224 Basic stats: COMPLETE Column stats: COMPLETE
@@ -133,6 +136,7 @@ STAGE PLANS:
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: int), _col1 (type: int)
+                    null sort order: aa
                     sort order: ++
                     Map-reduce partition columns: _col0 (type: int), _col1 (type: int)
                     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 159abf9..66711df 100644
--- a/ql/src/test/results/clientpositive/constprog_type.q.out
+++ b/ql/src/test/results/clientpositive/constprog_type.q.out
@@ -61,6 +61,7 @@ STAGE PLANS:
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 1008 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 1008 Basic stats: COMPLETE Column stats: COMPLETE
                     value expressions: _col0 (type: struct<columntype:string,min:date,max:date,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:timestamp,max:timestamp,countnulls:bigint,bitvector:binary>)
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 215f8a8..f6cfb92 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
@@ -227,6 +227,7 @@ STAGE PLANS:
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Reduce Sink Vectorization:
                           className: VectorReduceSinkOperator
@@ -386,6 +387,7 @@ STAGE PLANS:
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Reduce Sink Vectorization:
                           className: VectorReduceSinkOperator
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 c766e84..8d7be66 100644
--- a/ql/src/test/results/clientpositive/correlated_join_keys.q.out
+++ b/ql/src/test/results/clientpositive/correlated_join_keys.q.out
@@ -98,6 +98,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -114,6 +115,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -143,6 +145,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -197,6 +200,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -213,6 +217,7 @@ STAGE PLANS:
                 Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -242,6 +247,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer10.q.out b/ql/src/test/results/clientpositive/correlationoptimizer10.q.out
index 315a00f..7a56ad5 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer10.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer10.q.out
@@ -41,6 +41,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -57,6 +58,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -89,6 +91,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 16 Data size: 1504 Basic stats: COMPLETE Column stats: COMPLETE
@@ -114,6 +117,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 16 Data size: 1504 Basic stats: COMPLETE Column stats: COMPLETE
@@ -137,6 +141,7 @@ STAGE PLANS:
                   Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string)
+                    null sort order: a
                     sort order: +
                     Map-reduce partition columns: _col0 (type: string)
                     Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -238,6 +243,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -254,6 +260,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -276,6 +283,7 @@ STAGE PLANS:
                   Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string)
+                    null sort order: a
                     sort order: +
                     Map-reduce partition columns: _col0 (type: string)
                     Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -423,6 +431,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
@@ -439,6 +448,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
@@ -480,6 +490,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 350 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 2 Data size: 350 Basic stats: COMPLETE Column stats: COMPLETE
@@ -487,6 +498,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 27 Data size: 2349 Basic stats: COMPLETE Column stats: COMPLETE
@@ -594,6 +606,7 @@ STAGE PLANS:
                 Statistics: Num rows: 2 Data size: 350 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 2 Data size: 350 Basic stats: COMPLETE Column stats: COMPLETE
@@ -611,6 +624,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
@@ -627,6 +641,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
@@ -760,6 +775,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
@@ -776,6 +792,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
@@ -817,6 +834,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
@@ -824,6 +842,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 27 Data size: 2349 Basic stats: COMPLETE Column stats: COMPLETE
@@ -941,6 +960,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 9790 Basic stats: COMPLETE Column stats: COMPLETE
@@ -958,6 +978,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
@@ -974,6 +995,7 @@ STAGE PLANS:
                 Statistics: Num rows: 55 Data size: 4785 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 55 Data size: 4785 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 044218b..b1eaf35 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer11.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer11.q.out
@@ -74,6 +74,7 @@ STAGE PLANS:
                 Statistics: Num rows: 100 Data size: 8700 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 100 Data size: 8700 Basic stats: COMPLETE Column stats: COMPLETE
@@ -90,6 +91,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -122,6 +124,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 7 Data size: 665 Basic stats: COMPLETE Column stats: COMPLETE
@@ -214,6 +217,7 @@ STAGE PLANS:
                 Statistics: Num rows: 100 Data size: 8700 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 100 Data size: 8700 Basic stats: COMPLETE Column stats: COMPLETE
@@ -230,6 +234,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -331,6 +336,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -347,6 +353,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -379,6 +386,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 16 Data size: 1504 Basic stats: COMPLETE Column stats: COMPLETE
@@ -480,6 +488,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -496,6 +505,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer12.q.out b/ql/src/test/results/clientpositive/correlationoptimizer12.q.out
index 4730dd1..3f86e4e 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer12.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer12.q.out
@@ -37,6 +37,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: key (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: key (type: string)
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -84,6 +85,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 500 Data size: 47500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -91,6 +93,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 25 Data size: 2350 Basic stats: COMPLETE Column stats: COMPLETE
@@ -124,6 +127,7 @@ STAGE PLANS:
               Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: key (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: key (type: string)
                 Statistics: Num rows: 25 Data size: 4375 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 4c000f8..54179e9 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer13.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer13.q.out
@@ -65,6 +65,7 @@ STAGE PLANS:
                 Statistics: Num rows: 124 Data size: 12772 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: int), _col1 (type: string)
                   Statistics: Num rows: 124 Data size: 12772 Basic stats: COMPLETE Column stats: COMPLETE
@@ -89,6 +90,7 @@ STAGE PLANS:
                   Statistics: Num rows: 99 Data size: 10197 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: int), _col1 (type: string)
+                    null sort order: aa
                     sort order: ++
                     Map-reduce partition columns: _col0 (type: int), _col1 (type: string)
                     Statistics: Num rows: 99 Data size: 10197 Basic stats: COMPLETE Column stats: COMPLETE
@@ -155,6 +157,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int), _col1 (type: string), _col2 (type: int), _col3 (type: string), _col4 (type: bigint), _col5 (type: bigint)
+              null sort order: zzzzzz
               sort order: ++++++
               Statistics: Num rows: 272 Data size: 28098 Basic stats: COMPLETE Column stats: NONE
       Execution mode: vectorized
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer14.q.out b/ql/src/test/results/clientpositive/correlationoptimizer14.q.out
index e3cda19..24a5335 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer14.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer14.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -65,6 +66,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -72,6 +74,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -108,6 +111,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -176,6 +180,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col1 (type: string)
@@ -198,6 +203,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -205,6 +211,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -242,6 +249,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col1 (type: string)
@@ -309,6 +317,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -332,6 +341,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -339,6 +349,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -376,6 +387,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -499,6 +511,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -516,6 +529,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -674,6 +688,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: -
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -697,6 +712,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -704,6 +720,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -741,6 +758,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: -
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -809,6 +827,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col1 (type: string)
@@ -831,6 +850,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -838,6 +858,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -875,6 +896,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col1 (type: string)
@@ -942,6 +964,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -965,6 +988,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -972,6 +996,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1009,6 +1034,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1132,6 +1158,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1149,6 +1176,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1307,6 +1335,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1330,6 +1359,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1337,6 +1367,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 12 Data size: 1128 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1377,6 +1408,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 1128 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 12 Data size: 1128 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1502,6 +1534,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1522,6 +1555,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 1128 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: z
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   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 ddbe457..a27099a 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer15.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer15.q.out
@@ -42,6 +42,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -58,6 +59,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -90,6 +92,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 16 Data size: 1504 Basic stats: COMPLETE Column stats: COMPLETE
@@ -115,6 +118,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 16 Data size: 1504 Basic stats: COMPLETE Column stats: COMPLETE
@@ -132,6 +136,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -157,6 +162,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: bigint), _col2 (type: string)
+              null sort order: zzz
               sort order: +++
               Statistics: Num rows: 25 Data size: 4525 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -275,6 +281,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -291,6 +298,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -307,6 +315,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer5.q.out b/ql/src/test/results/clientpositive/correlationoptimizer5.q.out
index a007846..42de9d9 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer5.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer5.q.out
@@ -138,6 +138,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
@@ -154,6 +155,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
@@ -179,12 +181,14 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 1 Data size: 206 Basic stats: COMPLETE Column stats: NONE
@@ -241,6 +245,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
@@ -258,6 +263,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
@@ -359,6 +365,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
@@ -375,6 +382,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
@@ -391,6 +399,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 188 Basic stats: COMPLETE Column stats: NONE
@@ -408,6 +417,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
@@ -727,12 +737,14 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: NONE
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 1 Data size: 206 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer7.q.out b/ql/src/test/results/clientpositive/correlationoptimizer7.q.out
index 1365e86..1a93a75 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer7.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer7.q.out
@@ -83,6 +83,7 @@ STAGE PLANS:
                     Statistics: Num rows: 2 Data size: 190 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: _col0 (type: string)
                       Statistics: Num rows: 2 Data size: 190 Basic stats: COMPLETE Column stats: COMPLETE
@@ -260,6 +261,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -292,6 +294,7 @@ STAGE PLANS:
                     Statistics: Num rows: 2 Data size: 190 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: _col0 (type: string)
                       Statistics: Num rows: 2 Data size: 190 Basic stats: COMPLETE Column stats: COMPLETE
@@ -468,6 +471,7 @@ STAGE PLANS:
                     Statistics: Num rows: 2 Data size: 190 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: _col0 (type: string)
                       Statistics: Num rows: 2 Data size: 190 Basic stats: COMPLETE Column stats: COMPLETE
@@ -645,6 +649,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -677,6 +682,7 @@ STAGE PLANS:
                     Statistics: Num rows: 2 Data size: 190 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: _col0 (type: string)
                       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 9751a96..5a78e88 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer8.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer8.q.out
@@ -48,6 +48,7 @@ STAGE PLANS:
                 Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
@@ -75,6 +76,7 @@ STAGE PLANS:
               Statistics: Num rows: 148 Data size: 14060 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: _col0 (type: string)
                 Statistics: Num rows: 148 Data size: 14060 Basic stats: COMPLETE Column stats: COMPLETE
@@ -84,6 +86,7 @@ STAGE PLANS:
               Statistics: Num rows: 148 Data size: 14060 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: _col0 (type: string)
                 Statistics: Num rows: 148 Data size: 14060 Basic stats: COMPLETE Column stats: COMPLETE
@@ -101,6 +104,7 @@ STAGE PLANS:
                 Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
@@ -145,6 +149,7 @@ STAGE PLANS:
                 Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
@@ -253,6 +258,7 @@ STAGE PLANS:
                 Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
@@ -273,6 +279,7 @@ STAGE PLANS:
                 Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
@@ -290,6 +297,7 @@ STAGE PLANS:
                 Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
@@ -468,6 +476,7 @@ STAGE PLANS:
                 Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
@@ -495,6 +504,7 @@ STAGE PLANS:
               Statistics: Num rows: 87 Data size: 8273 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: _col0 (type: string)
                 Statistics: Num rows: 87 Data size: 8273 Basic stats: COMPLETE Column stats: COMPLETE
@@ -504,6 +514,7 @@ STAGE PLANS:
               Statistics: Num rows: 87 Data size: 8273 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: _col0 (type: string)
                 Statistics: Num rows: 87 Data size: 8273 Basic stats: COMPLETE Column stats: COMPLETE
@@ -521,6 +532,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -565,6 +577,7 @@ STAGE PLANS:
                   Statistics: Num rows: 4 Data size: 388 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string)
+                    null sort order: a
                     sort order: +
                     Map-reduce partition columns: _col0 (type: string)
                     Statistics: Num rows: 4 Data size: 388 Basic stats: COMPLETE Column stats: COMPLETE
@@ -693,6 +706,7 @@ STAGE PLANS:
                 Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
@@ -717,6 +731,7 @@ STAGE PLANS:
                   Statistics: Num rows: 4 Data size: 388 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string)
+                    null sort order: a
                     sort order: +
                     Map-reduce partition columns: _col0 (type: string)
                     Statistics: Num rows: 4 Data size: 388 Basic stats: COMPLETE Column stats: COMPLETE
@@ -734,6 +749,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -920,6 +936,7 @@ STAGE PLANS:
                 Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 74 Data size: 7030 Basic stats: COMPLETE Column stats: COMPLETE
@@ -947,6 +964,7 @@ STAGE PLANS:
               Statistics: Num rows: 148 Data size: 14060 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: _col0 (type: string)
                 Statistics: Num rows: 148 Data size: 14060 Basic stats: COMPLETE Column stats: COMPLETE
@@ -956,6 +974,7 @@ STAGE PLANS:
               Statistics: Num rows: 148 Data size: 14060 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: _col0 (type: string)
                 Statistics: Num rows: 148 Data size: 14060 Basic stats: COMPLETE Column stats: COMPLETE
@@ -973,6 +992,7 @@ STAGE PLANS:
                 Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1017,6 +1037,7 @@ STAGE PLANS:
                 Statistics: Num rows: 74 Data size: 13764 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 74 Data size: 13764 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1097,6 +1118,7 @@ STAGE PLANS:
                 Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1132,6 +1154,7 @@ STAGE PLANS:
                 Statistics: Num rows: 166 Data size: 3984 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col2 (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col2 (type: double)
                   Statistics: Num rows: 166 Data size: 3984 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1145,6 +1168,7 @@ STAGE PLANS:
                 Statistics: Num rows: 166 Data size: 3984 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col2 (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col2 (type: double)
                   Statistics: Num rows: 166 Data size: 3984 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1158,6 +1182,7 @@ STAGE PLANS:
               Statistics: Num rows: 25 Data size: 4575 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col2 (type: double)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: _col2 (type: double)
                 Statistics: Num rows: 25 Data size: 4575 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1202,6 +1227,7 @@ STAGE PLANS:
                 Statistics: Num rows: 83 Data size: 7885 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   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 fa8819c..0c07b3c 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer9.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer9.q.out
@@ -66,6 +66,7 @@ STAGE PLANS:
                 Statistics: Num rows: 59 Data size: 708 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 59 Data size: 708 Basic stats: COMPLETE Column stats: COMPLETE
@@ -91,6 +92,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 59 Data size: 708 Basic stats: COMPLETE Column stats: COMPLETE
@@ -98,6 +100,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 59 Data size: 708 Basic stats: COMPLETE Column stats: COMPLETE
@@ -142,6 +145,7 @@ STAGE PLANS:
                 Statistics: Num rows: 59 Data size: 708 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 59 Data size: 708 Basic stats: COMPLETE Column stats: COMPLETE
@@ -238,6 +242,7 @@ STAGE PLANS:
                 Statistics: Num rows: 59 Data size: 708 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 59 Data size: 708 Basic stats: COMPLETE Column stats: COMPLETE
@@ -258,6 +263,7 @@ STAGE PLANS:
                 Statistics: Num rows: 59 Data size: 708 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 59 Data size: 708 Basic stats: COMPLETE Column stats: COMPLETE
@@ -399,6 +405,7 @@ STAGE PLANS:
                 Statistics: Num rows: 124 Data size: 12772 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: int), _col1 (type: string)
                   Statistics: Num rows: 124 Data size: 12772 Basic stats: COMPLETE Column stats: COMPLETE
@@ -424,6 +431,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int), _col1 (type: string)
+              null sort order: aa
               sort order: ++
               Map-reduce partition columns: _col0 (type: int), _col1 (type: string)
               Statistics: Num rows: 124 Data size: 12772 Basic stats: COMPLETE Column stats: COMPLETE
@@ -431,6 +439,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int), _col1 (type: string)
+              null sort order: aa
               sort order: ++
               Map-reduce partition columns: _col0 (type: int), _col1 (type: string)
               Statistics: Num rows: 99 Data size: 10197 Basic stats: COMPLETE Column stats: COMPLETE
@@ -479,6 +488,7 @@ STAGE PLANS:
                   Statistics: Num rows: 99 Data size: 10197 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: int), _col1 (type: string)
+                    null sort order: aa
                     sort order: ++
                     Map-reduce partition columns: _col0 (type: int), _col1 (type: string)
                     Statistics: Num rows: 99 Data size: 10197 Basic stats: COMPLETE Column stats: COMPLETE
@@ -575,6 +585,7 @@ STAGE PLANS:
                 Statistics: Num rows: 124 Data size: 12772 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: int), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: int), _col1 (type: string)
                   Statistics: Num rows: 124 Data size: 12772 Basic stats: COMPLETE Column stats: COMPLETE
@@ -599,6 +610,7 @@ STAGE PLANS:
                   Statistics: Num rows: 99 Data size: 10197 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: int), _col1 (type: string)
+                    null sort order: aa
                     sort order: ++
                     Map-reduce partition columns: _col0 (type: int), _col1 (type: string)
                     Statistics: Num rows: 99 Data size: 10197 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 c882962..84ac926 100644
--- a/ql/src/test/results/clientpositive/count_dist_rewrite.q.out
+++ b/ql/src/test/results/clientpositive/count_dist_rewrite.q.out
@@ -30,6 +30,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -57,6 +58,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint)
@@ -123,6 +125,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 67750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 67750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -152,6 +155,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string), _col1 (type: bigint)
@@ -218,6 +222,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 113750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 113750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -247,6 +252,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 376 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string), _col1 (type: bigint), _col2 (type: string)
@@ -313,6 +319,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 117750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 117750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -341,6 +348,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 392 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string), _col1 (type: bigint), _col2 (type: string), _col3 (type: double), _col4 (type: bigint)
@@ -411,6 +419,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -440,6 +449,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint), _col1 (type: bigint)
@@ -518,6 +528,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 117750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 117750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -547,6 +558,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 392 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint), _col1 (type: bigint), _col2 (type: bigint), _col3 (type: string), _col4 (type: string)
@@ -625,6 +637,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 29750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 29750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -654,6 +667,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 40 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint), _col1 (type: bigint), _col2 (type: double), _col3 (type: double), _col4 (type: bigint)
@@ -751,6 +765,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 146000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 146000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -779,6 +794,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 408 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: double), _col1 (type: bigint), _col2 (type: bigint), _col3 (type: string), _col4 (type: string), _col5 (type: double), _col6 (type: double)
@@ -866,6 +882,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 142500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string)
                   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 052db9e..245d6ba 100644
--- a/ql/src/test/results/clientpositive/cp_sel.q.out
+++ b/ql/src/test/results/clientpositive/cp_sel.q.out
@@ -30,6 +30,7 @@ STAGE PLANS:
               Statistics: Num rows: 1000 Data size: 178000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: z
                 sort order: +
                 Statistics: Num rows: 1000 Data size: 178000 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -115,6 +116,7 @@ STAGE PLANS:
               Statistics: Num rows: 1000 Data size: 356000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string)
+                null sort order: a
                 sort order: +
                 Map-reduce partition columns: _col0 (type: string)
                 Statistics: Num rows: 1000 Data size: 356000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -178,6 +180,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string)
+              null sort order: aa
               sort order: ++
               Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
               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 4792a70..85d7850 100644
--- a/ql/src/test/results/clientpositive/create_genericudaf.q.out
+++ b/ql/src/test/results/clientpositive/create_genericudaf.q.out
@@ -60,6 +60,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 332 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 332 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: struct<count:bigint,sum:double,input:int>), _col1 (type: struct<count:bigint,sum:double,input:string>)
diff --git a/ql/src/test/results/clientpositive/cross_join.q.out b/ql/src/test/results/clientpositive/cross_join.q.out
index 9dbcfb2..06fa7c8 100644
--- a/ql/src/test/results/clientpositive/cross_join.q.out
+++ b/ql/src/test/results/clientpositive/cross_join.q.out
@@ -23,6 +23,7 @@ STAGE PLANS:
               outputColumnNames: _col0
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: _col0 (type: string)
@@ -32,6 +33,7 @@ STAGE PLANS:
             Select Operator
               Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
@@ -82,6 +84,7 @@ STAGE PLANS:
               outputColumnNames: _col0
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: _col0 (type: string)
@@ -91,6 +94,7 @@ STAGE PLANS:
             Select Operator
               Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
@@ -145,6 +149,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -161,6 +166,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/cross_join_merge.q.out b/ql/src/test/results/clientpositive/cross_join_merge.q.out
index b01ae26..baa7ea9 100644
--- a/ql/src/test/results/clientpositive/cross_join_merge.q.out
+++ b/ql/src/test/results/clientpositive/cross_join_merge.q.out
@@ -27,6 +27,7 @@ STAGE PLANS:
               outputColumnNames: _col0
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: _col0 (type: string)
@@ -36,6 +37,7 @@ STAGE PLANS:
             Select Operator
               Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
@@ -59,6 +61,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 250000 Data size: 21750000 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string)
@@ -68,6 +71,7 @@ STAGE PLANS:
             Select Operator
               Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
@@ -125,6 +129,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -141,6 +146,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -166,6 +172,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 791 Data size: 68817 Basic stats: COMPLETE Column stats: COMPLETE
@@ -182,6 +189,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -240,6 +248,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -256,6 +265,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -281,6 +291,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 791 Data size: 68817 Basic stats: COMPLETE Column stats: COMPLETE
@@ -297,6 +308,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -356,6 +368,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -372,6 +385,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -396,6 +410,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 791 Data size: 68817 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string)
@@ -409,6 +424,7 @@ STAGE PLANS:
               Select Operator
                 Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
@@ -463,6 +479,7 @@ STAGE PLANS:
               outputColumnNames: _col0
               Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: _col0 (type: string)
@@ -472,6 +489,7 @@ STAGE PLANS:
             Select Operator
               Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
@@ -495,6 +513,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 250000 Data size: 21750000 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string)
@@ -504,6 +523,7 @@ STAGE PLANS:
             Select Operator
               Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 2000 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
@@ -561,6 +581,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -577,6 +598,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -602,6 +624,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 791 Data size: 68817 Basic stats: COMPLETE Column stats: COMPLETE
@@ -618,6 +641,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 43500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 43500 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 723dfc9..b6c4e48 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
@@ -55,6 +55,7 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: _col0 (type: string), _col1 (type: string)
@@ -66,6 +67,7 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1
               Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: _col0 (type: string), _col1 (type: string)
@@ -125,6 +127,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
@@ -142,6 +145,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
@@ -167,6 +171,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 10 Data size: 3560 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: string), _col3 (type: string)
@@ -178,6 +183,7 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: _col0 (type: string), _col1 (type: string)
@@ -244,6 +250,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
@@ -260,6 +267,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
@@ -291,6 +299,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
@@ -319,11 +328,13 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: _col0 (type: string), _col1 (type: string)
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string)
@@ -380,6 +391,7 @@ STAGE PLANS:
               outputColumnNames: _col0
               Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: _col0 (type: string)
@@ -389,6 +401,7 @@ STAGE PLANS:
             Select Operator
               Statistics: Num rows: 10 Data size: 40 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 10 Data size: 40 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
@@ -419,6 +432,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
@@ -447,11 +461,13 @@ STAGE PLANS:
               outputColumnNames: _col0, _col1
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
+                null sort order: 
                 sort order: 
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 value expressions: _col0 (type: string), _col1 (type: string)
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string)
@@ -519,6 +535,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -541,11 +558,13 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string)
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 5 Data size: 435 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string)
@@ -582,6 +601,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
@@ -598,6 +618,7 @@ STAGE PLANS:
                 Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 10 Data size: 870 Basic stats: COMPLETE Column stats: COMPLETE
@@ -629,6 +650,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               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 f646fb6..5dcbd29 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
@@ -282,6 +282,7 @@ STAGE PLANS:
                     Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: _col0 (type: string)
                       Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
@@ -414,6 +415,7 @@ STAGE PLANS:
                   Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: string)
+                    null sort order: a
                     sort order: +
                     Map-reduce partition columns: _col0 (type: string)
                     Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
@@ -530,6 +532,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -629,11 +632,13 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 250 Data size: 21750 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string)
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: string)
@@ -708,6 +713,7 @@ STAGE PLANS:
                     Statistics: Num rows: 5 Data size: 430 Basic stats: COMPLETE Column stats: COMPLETE
                     Reduce Output Operator
                       key expressions: _col0 (type: string)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: _col0 (type: string)
                       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 4bc22a3..23cc8b9 100644
--- a/ql/src/test/results/clientpositive/ctas.q.out
+++ b/ql/src/test/results/clientpositive/ctas.q.out
@@ -45,6 +45,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string), _col1 (type: string)
+                null sort order: zz
                 sort order: ++
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -70,6 +71,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string)
+              null sort order: zz
               sort order: ++
               Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
@@ -134,6 +136,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
@@ -248,6 +251,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string), _col1 (type: string)
+                null sort order: zz
                 sort order: ++
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -273,6 +277,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string)
+              null sort order: zz
               sort order: ++
               Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
@@ -337,6 +342,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
@@ -451,6 +457,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 96000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: double), _col1 (type: string)
+                null sort order: zz
                 sort order: ++
                 Statistics: Num rows: 500 Data size: 96000 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -476,6 +483,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: double), _col1 (type: string)
+              null sort order: zz
               sort order: ++
               Statistics: Num rows: 10 Data size: 1920 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
@@ -540,6 +548,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 864 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
@@ -718,6 +727,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string), _col1 (type: string)
+                null sort order: zz
                 sort order: ++
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -743,6 +753,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string)
+              null sort order: zz
               sort order: ++
               Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
@@ -808,6 +819,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
@@ -923,6 +935,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: string), _col1 (type: string)
+                null sort order: zz
                 sort order: ++
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
@@ -948,6 +961,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string)
+              null sort order: zz
               sort order: ++
               Statistics: Num rows: 10 Data size: 1780 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
@@ -1015,6 +1029,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/ctas_colname.q.out b/ql/src/test/results/clientpositive/ctas_colname.q.out
index ebc36b0..db8afe5 100644
--- a/ql/src/test/results/clientpositive/ctas_colname.q.out
+++ b/ql/src/test/results/clientpositive/ctas_colname.q.out
@@ -32,6 +32,7 @@ STAGE PLANS:
                 Number of rows: 20
                 Statistics: Num rows: 20 Data size: 7400 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 20 Data size: 7400 Basic stats: COMPLETE Column stats: COMPLETE
                   TopN Hash Memory Usage: 0.1
@@ -97,6 +98,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 1744 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
@@ -222,6 +224,7 @@ STAGE PLANS:
             Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: key (type: string), value (type: string)
+              null sort order: az
               sort order: ++
               Map-reduce partition columns: key (type: string)
               Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -308,6 +311,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>)
@@ -437,6 +441,7 @@ STAGE PLANS:
             Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: key (type: string), value (type: string)
+              null sort order: az
               sort order: ++
               Map-reduce partition columns: key (type: string)
               Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -486,6 +491,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 20 Data size: 7240 Basic stats: COMPLETE Column stats: COMPLETE
               TopN Hash Memory Usage: 0.1
@@ -551,6 +557,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 1320 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
@@ -699,6 +706,7 @@ STAGE PLANS:
                   outputColumnNames: _col0, _col1, _col2
                   Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
                     value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvector:binary>)
@@ -898,6 +906,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -962,6 +971,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>)
@@ -1385,6 +1395,7 @@ STAGE PLANS:
                 Statistics: Num rows: 83 Data size: 15438 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 83 Data size: 15438 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1449,6 +1460,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 1304 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>)
@@ -1568,6 +1580,7 @@ STAGE PLANS:
                 Statistics: Num rows: 83 Data size: 22493 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 83 Data size: 22493 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1639,6 +1652,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
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 9f779fa..a497af6 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
@@ -65,6 +65,7 @@ STAGE PLANS:
                   outputColumnNames: _col0, _col1
                   Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 880 Basic stats: COMPLETE Column stats: COMPLETE
                     value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>)
diff --git a/ql/src/test/results/clientpositive/cte_5.q.out b/ql/src/test/results/clientpositive/cte_5.q.out
index 9264bb0..4088b84 100644
--- a/ql/src/test/results/clientpositive/cte_5.q.out
+++ b/ql/src/test/results/clientpositive/cte_5.q.out
@@ -78,6 +78,7 @@ STAGE PLANS:
               Select Operator
                 Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 4 Basic stats: COMPLETE Column stats: COMPLETE
           TableScan
@@ -90,6 +91,7 @@ STAGE PLANS:
               Select Operator
                 Statistics: Num rows: 2 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
diff --git a/ql/src/test/results/clientpositive/cte_mat_1.q.out b/ql/src/test/results/clientpositive/cte_mat_1.q.out
index 5ddcea0..b9cb6da 100644
--- a/ql/src/test/results/clientpositive/cte_mat_1.q.out
+++ b/ql/src/test/results/clientpositive/cte_mat_1.q.out
@@ -33,6 +33,7 @@ STAGE PLANS:
               Select Operator
                 Statistics: Num rows: 2 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
           TableScan
@@ -45,6 +46,7 @@ STAGE PLANS:
               Select Operator
                 Statistics: Num rows: 2 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
diff --git a/ql/src/test/results/clientpositive/cte_mat_2.q.out b/ql/src/test/results/clientpositive/cte_mat_2.q.out
index 5ddcea0..b9cb6da 100644
--- a/ql/src/test/results/clientpositive/cte_mat_2.q.out
+++ b/ql/src/test/results/clientpositive/cte_mat_2.q.out
@@ -33,6 +33,7 @@ STAGE PLANS:
               Select Operator
                 Statistics: Num rows: 2 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
           TableScan
@@ -45,6 +46,7 @@ STAGE PLANS:
               Select Operator
                 Statistics: Num rows: 2 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 2 Data size: 170 Basic stats: COMPLETE Column stats: COMPLETE
       Reduce Operator Tree:
diff --git a/ql/src/test/results/clientpositive/cte_mat_3.q.out b/ql/src/test/results/clientpositive/cte_mat_3.q.out
index a3484eb..55c6206 100644
--- a/ql/src/test/results/clientpositive/cte_mat_3.q.out
+++ b/ql/src/test/results/clientpositive/cte_mat_3.q.out
@@ -81,6 +81,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
@@ -97,6 +98,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/cte_mat_4.q.out b/ql/src/test/results/clientpositive/cte_mat_4.q.out
index 8026e6c..d77fdc6 100644
--- a/ql/src/test/results/clientpositive/cte_mat_4.q.out
+++ b/ql/src/test/results/clientpositive/cte_mat_4.q.out
@@ -106,6 +106,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
@@ -122,6 +123,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
@@ -320,6 +322,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
@@ -336,6 +339,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/cte_mat_5.q.out b/ql/src/test/results/clientpositive/cte_mat_5.q.out
index 92f25fe..101792d 100644
--- a/ql/src/test/results/clientpositive/cte_mat_5.q.out
+++ b/ql/src/test/results/clientpositive/cte_mat_5.q.out
@@ -126,6 +126,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col1 (type: double)
                   Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
@@ -143,6 +144,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: double)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: double)
                   Statistics: Num rows: 1 Data size: 184 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/decimal_join2.q.out b/ql/src/test/results/clientpositive/decimal_join2.q.out
index 053b1e6..8b37a8e 100644
--- a/ql/src/test/results/clientpositive/decimal_join2.q.out
+++ b/ql/src/test/results/clientpositive/decimal_join2.q.out
@@ -72,6 +72,7 @@ STAGE PLANS:
                 Statistics: Num rows: 37 Data size: 4292 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: decimal(38,18))
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: decimal(38,18))
                   Statistics: Num rows: 37 Data size: 4292 Basic stats: COMPLETE Column stats: COMPLETE
@@ -89,6 +90,7 @@ STAGE PLANS:
                 Statistics: Num rows: 37 Data size: 4292 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: decimal(38,18))
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: decimal(38,18))
                   Statistics: Num rows: 37 Data size: 4292 Basic stats: COMPLETE Column stats: COMPLETE
@@ -115,6 +117,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: decimal(38,18)), _col1 (type: int), _col2 (type: decimal(38,18)), _col3 (type: int)
+              null sort order: zzzz
               sort order: ++++
               Statistics: Num rows: 48 Data size: 11136 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
@@ -274,6 +277,7 @@ STAGE PLANS:
                   Statistics: Num rows: 48 Data size: 11136 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
                     key expressions: _col0 (type: decimal(38,18)), _col1 (type: int), _col2 (type: decimal(38,18)), _col3 (type: int)
+                    null sort order: zzzz
                     sort order: ++++
                     Statistics: Num rows: 48 Data size: 11136 Basic stats: COMPLETE Column stats: COMPLETE
       Execution mode: vectorized
diff --git a/ql/src/test/results/clientpositive/decimal_precision.q.out b/ql/src/test/results/clientpositive/decimal_precision.q.out
index c0d06ca..179e746 100644
--- a/ql/src/test/results/clientpositive/decimal_precision.q.out
+++ b/ql/src/test/results/clientpositive/decimal_precision.q.out
@@ -552,6 +552,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1
                 Statistics: Num rows: 1 Data size: 232 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 232 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: decimal(30,10)), _col1 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/decimal_stats.q.out b/ql/src/test/results/clientpositive/decimal_stats.q.out
index 5b73f44..0571fae 100644
--- a/ql/src/test/results/clientpositive/decimal_stats.q.out
+++ b/ql/src/test/results/clientpositive/decimal_stats.q.out
@@ -86,6 +86,7 @@ STAGE PLANS:
               Statistics: Num rows: 500 Data size: 112112 Basic stats: COMPLETE Column stats: COMPLETE
               Reduce Output Operator
                 key expressions: _col0 (type: decimal(4,2))
+                null sort order: z
                 sort order: +
                 Statistics: Num rows: 500 Data size: 112112 Basic stats: COMPLETE Column stats: COMPLETE
                 TopN Hash Memory Usage: 0.1
diff --git a/ql/src/test/results/clientpositive/decimal_udf.q.out b/ql/src/test/results/clientpositive/decimal_udf.q.out
index d46caff..429bbe1 100644
--- a/ql/src/test/results/clientpositive/decimal_udf.q.out
+++ b/ql/src/test/results/clientpositive/decimal_udf.q.out
@@ -1378,6 +1378,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
@@ -1407,6 +1408,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: z
               sort order: +
               Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
               value expressions: _col1 (type: decimal(38,18)), _col2 (type: decimal(38,28)), _col3 (type: decimal(30,10))
@@ -1984,6 +1986,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
@@ -2071,6 +2074,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: int)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: int)
                   Statistics: Num rows: 1 Data size: 116 Basic stats: COMPLETE Column stats: NONE
@@ -2156,6 +2160,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 272 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 272 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: array<double>)
@@ -2218,6 +2223,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: decimal(20,10))
@@ -2281,6 +2287,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 224 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: decimal(20,10))
@@ -2344,6 +2351,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 120 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 120 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/deleteAnalyze.q.out b/ql/src/test/results/clientpositive/deleteAnalyze.q.out
index 0b1ac31..63ed9da 100644
--- a/ql/src/test/results/clientpositive/deleteAnalyze.q.out
+++ b/ql/src/test/results/clientpositive/deleteAnalyze.q.out
@@ -183,6 +183,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 88 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col1 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col1 (type: string)
                   Statistics: Num rows: 1 Data size: 88 Basic stats: COMPLETE Column stats: COMPLETE
@@ -200,6 +201,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 308 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 1 Data size: 308 Basic stats: COMPLETE Column stats: COMPLETE
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 3107c76..ca7ce6f 100644
--- a/ql/src/test/results/clientpositive/display_colstats_tbllvl.q.out
+++ b/ql/src/test/results/clientpositive/display_colstats_tbllvl.q.out
@@ -97,6 +97,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 1480 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 1480 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvector:binary>)
@@ -397,6 +398,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2, _col3, _col4
                 Statistics: Num rows: 1 Data size: 2192 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 2192 Basic stats: COMPLETE Column stats: NONE
                   value expressions: _col0 (type: struct<columntype:string,min:bigint,max:bigint,countnulls:bigint,bitvector:binary>), _col1 (type: struct<columntype:string,min:double,max:double,countnulls:bigint,bitvector:binary>), _col2 (type: struct<columntype:string,maxlength:bigint,sumlength:bigint,count:bigint,countnulls:bigint,bitvector:binary>), _col3 (type: struct<columntype:string,counttrues:bigint,countfalses:bigint,countnulls:bigint>), _col4 (type: struct<columntype:string,ma [...]
diff --git a/ql/src/test/results/clientpositive/distinct_groupby.q.out b/ql/src/test/results/clientpositive/distinct_groupby.q.out
index 77e354d..d9e3cf9 100644
--- a/ql/src/test/results/clientpositive/distinct_groupby.q.out
+++ b/ql/src/test/results/clientpositive/distinct_groupby.q.out
@@ -29,6 +29,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
@@ -119,6 +120,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -154,6 +156,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: bigint)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: bigint)
               Statistics: Num rows: 125 Data size: 1000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -223,6 +226,7 @@ STAGE PLANS:
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     value expressions: _col0 (type: bigint)
@@ -288,6 +292,7 @@ STAGE PLANS:
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     value expressions: _col0 (type: bigint)
@@ -349,6 +354,7 @@ STAGE PLANS:
                 outputColumnNames: _col0
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: bigint)
@@ -418,6 +424,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -435,6 +442,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -466,6 +474,7 @@ STAGE PLANS:
       Map Operator Tree:
           TableScan
             Reduce Output Operator
+              null sort order: 
               sort order: 
               Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE
               value expressions: _col0 (type: bigint), _col1 (type: bigint)
@@ -534,6 +543,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 564 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 6 Data size: 564 Basic stats: COMPLETE Column stats: COMPLETE
@@ -569,6 +579,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: bigint)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: bigint)
               Statistics: Num rows: 3 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
@@ -633,6 +644,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 1032 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 12 Data size: 1032 Basic stats: COMPLETE Column stats: COMPLETE
@@ -712,6 +724,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
@@ -799,6 +812,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 564 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 6 Data size: 564 Basic stats: COMPLETE Column stats: COMPLETE
@@ -834,6 +848,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: bigint)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: bigint)
               Statistics: Num rows: 3 Data size: 24 Basic stats: COMPLETE Column stats: COMPLETE
@@ -899,6 +914,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 564 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 6 Data size: 564 Basic stats: COMPLETE Column stats: COMPLETE
@@ -967,6 +983,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1079,6 +1096,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 1050 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 6 Data size: 1050 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1145,6 +1163,7 @@ STAGE PLANS:
                 Statistics: Num rows: 6 Data size: 516 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 6 Data size: 516 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1212,6 +1231,7 @@ STAGE PLANS:
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                     value expressions: _col0 (type: bigint)
@@ -1267,6 +1287,7 @@ STAGE PLANS:
             Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: 0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: 0 (type: int)
               Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1320,6 +1341,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: double)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: double)
               Statistics: Num rows: 12 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1375,6 +1397,7 @@ STAGE PLANS:
             Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: 0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: 0 (type: int)
               Statistics: Num rows: 25 Data size: 2150 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1428,6 +1451,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: double)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: double)
               Statistics: Num rows: 12 Data size: 96 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1483,6 +1507,7 @@ STAGE PLANS:
             Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: value (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: value (type: string)
               Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1536,6 +1561,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string), _col1 (type: string), _col2 (type: bigint)
+              null sort order: aaa
               sort order: +++
               Map-reduce partition columns: _col0 (type: string), _col1 (type: string), _col2 (type: bigint)
               Statistics: Num rows: 12 Data size: 2196 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1622,6 +1648,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1645,6 +1672,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col1 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col1 (type: string)
               Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1744,6 +1772,7 @@ STAGE PLANS:
             Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
             Reduce Output Operator
               key expressions: value (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: value (type: string)
               Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1858,6 +1887,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 1128 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 12 Data size: 1128 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1893,6 +1923,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: double)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: double)
               Statistics: Num rows: 6 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1974,6 +2005,7 @@ STAGE PLANS:
                 Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 500 Data size: 89000 Basic stats: COMPLETE Column stats: COMPLETE
@@ -1991,6 +2023,7 @@ STAGE PLANS:
                 Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
@@ -2024,6 +2057,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: string)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: string)
               Statistics: Num rows: 2 Data size: 206 Basic stats: COMPLETE Column stats: COMPLETE
@@ -2059,6 +2093,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: bigint), _col1 (type: bigint)
+              null sort order: aa
               sort order: ++
               Map-reduce partition columns: _col0 (type: bigint), _col1 (type: bigint)
               Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE
@@ -2129,6 +2164,7 @@ STAGE PLANS:
                 Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string), _col1 (type: string)
                   Statistics: Num rows: 12 Data size: 2100 Basic stats: COMPLETE Column stats: COMPLETE
diff --git a/ql/src/test/results/clientpositive/distinct_stats.q.out b/ql/src/test/results/clientpositive/distinct_stats.q.out
index 24101d6..288c01a 100644
--- a/ql/src/test/results/clientpositive/distinct_stats.q.out
+++ b/ql/src/test/results/clientpositive/distinct_stats.q.out
@@ -60,6 +60,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string), _col1 (type: string)
+                  null sort order: aa
                   sort order: ++
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 46500 Basic stats: COMPLETE Column stats: COMPLETE
@@ -121,6 +122,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 22750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   Statistics: Num rows: 250 Data size: 22750 Basic stats: COMPLETE Column stats: COMPLETE
@@ -179,6 +181,7 @@ STAGE PLANS:
                 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
                   key expressions: _col0 (type: string)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: string)
                   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 8070877..7ce4b30 100644
--- a/ql/src/test/results/clientpositive/distinct_windowing.q.out
+++ b/ql/src/test/results/clientpositive/distinct_windowing.q.out
@@ -68,6 +68,7 @@ STAGE PLANS:
             Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
             Reduce Output Operator
               key expressions: si (type: smallint), i (type: int)
+              null sort order: az
               sort order: ++
               Map-reduce partition columns: si (type: smallint)
               Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -121,6 +122,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: tinyint)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: tinyint)
               Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -193,6 +195,7 @@ STAGE PLANS:
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
             Reduce Output Operator
               key expressions: si (type: smallint), i (type: int)
+              null sort order: az
               sort order: ++
               Map-reduce partition columns: si (type: smallint)
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -245,6 +248,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -321,6 +325,7 @@ STAGE PLANS:
             Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
             Reduce Output Operator
               key expressions: si (type: smallint), i (type: int)
+              null sort order: az
               sort order: ++
               Map-reduce partition columns: si (type: smallint)
               Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -380,6 +385,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int), _col1 (type: tinyint)
+              null sort order: aa
               sort order: ++
               Map-reduce partition columns: _col0 (type: int), _col1 (type: tinyint)
               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 ad4b62d..ee37ff4 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
@@ -68,6 +68,7 @@ STAGE PLANS:
             Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
             Reduce Output Operator
               key expressions: si (type: smallint), i (type: int)
+              null sort order: az
               sort order: ++
               Map-reduce partition columns: si (type: smallint)
               Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -121,6 +122,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: tinyint)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: tinyint)
               Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -193,6 +195,7 @@ STAGE PLANS:
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
             Reduce Output Operator
               key expressions: si (type: smallint), i (type: int)
+              null sort order: az
               sort order: ++
               Map-reduce partition columns: si (type: smallint)
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -245,6 +248,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int)
+              null sort order: a
               sort order: +
               Map-reduce partition columns: _col0 (type: int)
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -321,6 +325,7 @@ STAGE PLANS:
             Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
             Reduce Output Operator
               key expressions: si (type: smallint), i (type: int)
+              null sort order: az
               sort order: ++
               Map-reduce partition columns: si (type: smallint)
               Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -380,6 +385,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: int), _col1 (type: tinyint)
+              null sort order: aa
               sort order: ++
               Map-reduce partition columns: _col0 (type: int), _col1 (type: tinyint)
               Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
@@ -513,6 +519,7 @@ STAGE PLANS:
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                 Reduce Output Operator
                   key expressions: _col0 (type: smallint)
+                  null sort order: a
                   sort order: +
                   Map-reduce partition columns: _col0 (type: smallint)
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -541,6 +548,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: smallint), _col1 (type: float)
+              null sort order: az
               sort order: ++
               Map-reduce partition columns: _col0 (type: smallint)
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -686,6 +694,7 @@ STAGE PLANS:
             Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
             Reduce Output Operator
               key expressions: si (type: smallint), i (type: int)
+              null sort order: az
               sort order: ++
               Map-reduce partition columns: si (type: smallint)
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
@@ -739,6 +748,7 @@ STAGE PLANS:
           TableScan
             Reduce Output Operator
               key expressions: _col0 (type: smallint), _col1 (type: int)
+              null sort order: aa
               sort order: ++
               Map-reduce partition columns: _col0 (type: smallint), _col1 (type: int)
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
diff --git a/ql/src/test/results/clientpositive/druid/druidmini_dynamic_partition.q.out b/ql/src/test/results/clientpositive/druid/druidmini_dynamic_partition.q.out
index 41f27ad..65f8cca 100644
--- a/ql/src/test/results/clientpositive/druid/druidmini_dynamic_partition.q.out
+++ b/ql/src/test/results/clientpositive/druid/druidmini_dynamic_partition.q.out
@@ -139,6 +139,7 @@ STAGE PLANS:
                         Statistics: Num rows: 9173 Data size: 1942190 Basic stats: COMPLETE Column stats: COMPLETE
                         Reduce Output Operator
                           key expressions: __time_granularity (type: timestamp), __druid_extra_partition_key (type: bigint)
+                          null sort order: aa
                           sort order: ++
                           Map-reduce partition columns: __time_granularity (type: timestamp), __druid_extra_partition_key (type: bigint)
                           Statistics: Num rows: 9173 Data size: 1942190 Basic stats: COMPLETE Column stats: COMPLETE
@@ -378,6 +379,7 @@ STAGE PLANS:
                         Statistics: Num rows: 9174 Data size: 1942340 Basic stats: COMPLETE Column stats: COMPLETE
                         Reduce Output Operator
                           key expressions: __time_granularity (type: timestamp), __druid_extra_partition_key (type: bigint)
+                          null sort order: aa
                           sort order: ++
                           Map-reduce partition columns: __time_granularity (type: timestamp), __druid_extra_partition_key (type: bigint)
                           Statistics: Num rows: 9174 Data size: 1942340 Basic stats: COMPLETE Column stats: COMPLETE
@@ -519,6 +521,7 @@ STAGE PLANS:
                         Statistics: Num rows: 9173 Data size: 1942190 Basic stats: COMPLETE Column stats: COMPLETE
                         Reduce Output Operator
                           key expressions: __time_granularity (type: timestamp), __druid_extra_partition_key (type: bigint)
+                          null sort order: aa
                           sort order: ++
                           Map-reduce partition columns: __time_granularity (type: timestamp), __druid_extra_partition_key (type: bigint)
                           Statistics: Num rows: 9173 Data size: 1942190 Basic stats: COMPLETE Column stats: COMPLETE
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 cda99dd..3186254 100644
--- a/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out
+++ b/ql/src/test/results/clientpositive/druid/druidmini_expressions.q.out
@@ -384,6 +384,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 348640 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: timestamp with local time zone)
+                      null sort order: z
                       sort order: +
                       Statistics: Num rows: 9173 Data size: 348640 Basic stats: COMPLETE Column stats: NONE
                       TopN Hash Memory Usage: 0.1
@@ -481,6 +482,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 348640 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: timestamp with local time zone)
+                      null sort order: z
                       sort order: +
                       Statistics: Num rows: 9173 Data size: 348640 Basic stats: COMPLETE Column stats: NONE
                       TopN Hash Memory Usage: 0.1
@@ -573,6 +575,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 3625856 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: timestamp with local time zone), _col1 (type: string)
+                      null sort order: aa
                       sort order: ++
                       Map-reduce partition columns: _col0 (type: timestamp with local time zone), _col1 (type: string)
                       Statistics: Num rows: 9173 Data size: 3625856 Basic stats: COMPLETE Column stats: NONE
@@ -645,6 +648,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 2091840 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: timestamp with local time zone), _col1 (type: string)
+                      null sort order: aa
                       sort order: ++
                       Map-reduce partition columns: _col0 (type: timestamp with local time zone), _col1 (type: string)
                       Statistics: Num rows: 9173 Data size: 2091840 Basic stats: COMPLETE Column stats: NONE
@@ -717,6 +721,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 3625856 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: timestamp with local time zone), _col1 (type: string)
+                      null sort order: aa
                       sort order: ++
                       Map-reduce partition columns: _col0 (type: timestamp with local time zone), _col1 (type: string)
                       Statistics: Num rows: 9173 Data size: 3625856 Basic stats: COMPLETE Column stats: NONE
@@ -789,6 +794,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 3625856 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: timestamp with local time zone), _col1 (type: string)
+                      null sort order: aa
                       sort order: ++
                       Map-reduce partition columns: _col0 (type: timestamp with local time zone), _col1 (type: string)
                       Statistics: Num rows: 9173 Data size: 3625856 Basic stats: COMPLETE Column stats: NONE
@@ -859,6 +865,7 @@ STAGE PLANS:
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
                       value expressions: _col0 (type: bigint)
@@ -923,6 +930,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1
                     Statistics: Num rows: 1 Data size: 208 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 208 Basic stats: COMPLETE Column stats: NONE
                       value expressions: _col0 (type: bigint), _col1 (type: double)
@@ -987,6 +995,7 @@ STAGE PLANS:
                     outputColumnNames: _col0, _col1, _col2
                     Statistics: Num rows: 1 Data size: 216 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 216 Basic stats: COMPLETE Column stats: NONE
                       value expressions: _col0 (type: bigint), _col1 (type: double), _col2 (type: int)
@@ -1053,6 +1062,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
                         value expressions: _col0 (type: bigint)
@@ -1144,6 +1154,7 @@ STAGE PLANS:
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
                       value expressions: _col0 (type: bigint)
@@ -1280,6 +1291,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 348640 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: timestamp with local time zone)
+                      null sort order: z
                       sort order: +
                       Statistics: Num rows: 9173 Data size: 348640 Basic stats: COMPLETE Column stats: NONE
                       TopN Hash Memory Usage: 0.1
@@ -1297,6 +1309,7 @@ STAGE PLANS:
                   Statistics: Num rows: 10 Data size: 380 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
                     key expressions: _col0 (type: timestamp with local time zone)
+                    null sort order: z
                     sort order: +
                     Statistics: Num rows: 10 Data size: 380 Basic stats: COMPLETE Column stats: NONE
         Reducer 3 
@@ -1357,6 +1370,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 348640 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: timestamp)
+                      null sort order: z
                       sort order: +
                       Statistics: Num rows: 9173 Data size: 348640 Basic stats: COMPLETE Column stats: NONE
                       TopN Hash Memory Usage: 0.1
@@ -1374,6 +1388,7 @@ STAGE PLANS:
                   Statistics: Num rows: 10 Data size: 380 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
                     key expressions: _col0 (type: timestamp)
+                    null sort order: z
                     sort order: +
                     Statistics: Num rows: 10 Data size: 380 Basic stats: COMPLETE Column stats: NONE
         Reducer 3 
@@ -1831,6 +1846,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 1499152 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: date), _col1 (type: date)
+                      null sort order: zz
                       sort order: ++
                       Statistics: Num rows: 9173 Data size: 1499152 Basic stats: COMPLETE Column stats: NONE
                       TopN Hash Memory Usage: 0.1
@@ -2226,6 +2242,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 8 Basic stats: PARTIAL Column stats: COMPLETE
                         value expressions: _col0 (type: bigint)
@@ -2299,6 +2316,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 348640 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: timestamp with local time zone)
+                      null sort order: z
                       sort order: +
                       Statistics: Num rows: 9173 Data size: 348640 Basic stats: COMPLETE Column stats: NONE
                       TopN Hash Memory Usage: 0.1
@@ -2316,6 +2334,7 @@ STAGE PLANS:
                   Statistics: Num rows: 10 Data size: 380 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
                     key expressions: _col0 (type: timestamp with local time zone)
+                    null sort order: z
                     sort order: +
                     Statistics: Num rows: 10 Data size: 380 Basic stats: COMPLETE Column stats: NONE
         Reducer 3 
@@ -2376,6 +2395,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 348640 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: _col0 (type: timestamp)
+                      null sort order: z
                       sort order: +
                       Statistics: Num rows: 9173 Data size: 348640 Basic stats: COMPLETE Column stats: NONE
                       TopN Hash Memory Usage: 0.1
@@ -2393,6 +2413,7 @@ STAGE PLANS:
                   Statistics: Num rows: 10 Data size: 380 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
                     key expressions: _col0 (type: timestamp)
+                    null sort order: z
                     sort order: +
                     Statistics: Num rows: 10 Data size: 380 Basic stats: COMPLETE Column stats: NONE
         Reducer 3 
@@ -2507,6 +2528,7 @@ STAGE PLANS:
                     outputColumnNames: _col0
                     Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
+                      null sort order: 
                       sort order: 
                       Statistics: Num rows: 1 Data size: 192 Basic stats: COMPLETE Column stats: NONE
                       value expressions: _col0 (type: bigint)
@@ -2584,6 +2606,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col0 (type: float)
@@ -2652,6 +2675,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: NONE
                         value expressions: _col0 (type: bigint)
diff --git a/ql/src/test/results/clientpositive/druid/druidmini_mv.q.out b/ql/src/test/results/clientpositive/druid/druidmini_mv.q.out
index 4f78c6a..b203c67 100644
--- a/ql/src/test/results/clientpositive/druid/druidmini_mv.q.out
+++ b/ql/src/test/results/clientpositive/druid/druidmini_mv.q.out
@@ -243,6 +243,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: double)
@@ -259,6 +260,7 @@ STAGE PLANS:
                     druid.query.type scan
                   Statistics: Num rows: 3 Data size: 36 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 3 Data size: 36 Basic stats: COMPLETE Column stats: NONE
                     value expressions: a (type: int), c (type: double)
@@ -376,6 +378,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 2 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 2 Data size: 16 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: double)
@@ -395,6 +398,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: double)
@@ -512,6 +516,7 @@ STAGE PLANS:
                         Statistics: Num rows: 4 Data size: 1104 Basic stats: COMPLETE Column stats: PARTIAL
                         Reduce Output Operator
                           key expressions: __time_granularity (type: timestamp)
+                          null sort order: a
                           sort order: +
                           Map-reduce partition columns: __time_granularity (type: timestamp)
                           Statistics: Num rows: 4 Data size: 1104 Basic stats: COMPLETE Column stats: PARTIAL
@@ -533,6 +538,7 @@ STAGE PLANS:
                       Statistics: Num rows: 4 Data size: 1104 Basic stats: COMPLETE Column stats: PARTIAL
                       Reduce Output Operator
                         key expressions: __time_granularity (type: timestamp)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: __time_granularity (type: timestamp)
                         Statistics: Num rows: 4 Data size: 1104 Basic stats: COMPLETE Column stats: PARTIAL
@@ -634,6 +640,7 @@ STAGE PLANS:
                       outputColumnNames: _col0
                       Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
+                        null sort order: 
                         sort order: 
                         Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: COMPLETE
                         value expressions: _col0 (type: double)
@@ -650,6 +657,7 @@ STAGE PLANS:
                     druid.query.type scan
                   Statistics: Num rows: 3 Data size: 36 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 3 Data size: 36 Basic stats: COMPLETE Column stats: NONE
                     value expressions: a (type: int), c (type: double)
diff --git a/ql/src/test/results/clientpositive/druid/druidmini_semijoin_reduction_all_types.q.out b/ql/src/test/results/clientpositive/druid/druidmini_semijoin_reduction_all_types.q.out
index daf1e56..9a41cda 100644
--- a/ql/src/test/results/clientpositive/druid/druidmini_semijoin_reduction_all_types.q.out
+++ b/ql/src/test/results/clientpositive/druid/druidmini_semijoin_reduction_all_types.q.out
@@ -150,6 +150,7 @@ STAGE PLANS:
                       Statistics: Num rows: 69 Data size: 6969 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: string)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col0 (type: string)
                         Statistics: Num rows: 69 Data size: 6969 Basic stats: COMPLETE Column stats: COMPLETE
@@ -164,6 +165,7 @@ STAGE PLANS:
                           outputColumnNames: _col0, _col1, _col2
                           Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: COMPLETE
                           Reduce Output Operator
+                            null sort order: 
                             sort order: 
                             Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: COMPLETE
                             value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
@@ -185,6 +187,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 1603744 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: cstring1 (type: string)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: cstring1 (type: string)
                       Statistics: Num rows: 9173 Data size: 1603744 Basic stats: COMPLETE Column stats: NONE
@@ -207,6 +210,7 @@ STAGE PLANS:
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                     value expressions: _col0 (type: bigint)
@@ -234,6 +238,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 552 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: string), _col1 (type: string), _col2 (type: binary)
@@ -306,6 +311,7 @@ STAGE PLANS:
                       Statistics: Num rows: 69 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: tinyint)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col0 (type: tinyint)
                         Statistics: Num rows: 69 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE
@@ -320,6 +326,7 @@ STAGE PLANS:
                           outputColumnNames: _col0, _col1, _col2
                           Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
                           Reduce Output Operator
+                            null sort order: 
                             sort order: 
                             Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
                             value expressions: _col0 (type: tinyint), _col1 (type: tinyint), _col2 (type: binary)
@@ -341,6 +348,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 34864 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: ctinyint (type: tinyint)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: ctinyint (type: tinyint)
                       Statistics: Num rows: 9173 Data size: 34864 Basic stats: COMPLETE Column stats: NONE
@@ -363,6 +371,7 @@ STAGE PLANS:
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                     value expressions: _col0 (type: bigint)
@@ -390,6 +399,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2
                 Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
                 Reduce Output Operator
+                  null sort order: 
                   sort order: 
                   Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
                   value expressions: _col0 (type: tinyint), _col1 (type: tinyint), _col2 (type: binary)
@@ -462,6 +472,7 @@ STAGE PLANS:
                       Statistics: Num rows: 69 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE
                       Reduce Output Operator
                         key expressions: _col0 (type: smallint)
+                        null sort order: a
                         sort order: +
                         Map-reduce partition columns: _col0 (type: smallint)
                         Statistics: Num rows: 69 Data size: 276 Basic stats: COMPLETE Column stats: COMPLETE
@@ -476,6 +487,7 @@ STAGE PLANS:
                           outputColumnNames: _col0, _col1, _col2
                           Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
                           Reduce Output Operator
+                            null sort order: 
                             sort order: 
                             Statistics: Num rows: 1 Data size: 12 Basic stats: COMPLETE Column stats: COMPLETE
                             value expressions: _col0 (type: smallint), _col1 (type: smallint), _col2 (type: binary)
@@ -497,6 +509,7 @@ STAGE PLANS:
                     Statistics: Num rows: 9173 Data size: 34864 Basic stats: COMPLETE Column stats: NONE
                     Reduce Output Operator
                       key expressions: csmallint (type: smallint)
+                      null sort order: a
                       sort order: +
                       Map-reduce partition columns: csmallint (type: smallint)
                       Statistics: Num rows: 9173 Data size: 34864 Basic stats: COMPLETE Column stats: NONE
@@ -519,6 +532,7 @@ STAGE PLANS:
                   outputColumnNames: _col0
                   Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                   Reduce Output Operator
+                    null sort order: 
                     sort order: 
                     Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE Column stats: NONE
                     value expressions: _col0 (type: bigint)
@@ -546,6 +560,7 @@ STAGE PLANS:
                 outputColumnNames: _col0, _col1, _col2
... 163615 lines suppressed ...