HIVE-17510: Make comparison of filter predicates in q files deterministic 
(Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/c5b3ccc4
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/c5b3ccc4
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/c5b3ccc4

Branch: refs/heads/master
Commit: c5b3ccc41016afd94035637cb011eacbeb9e5893
Parents: 0bdc570
Author: Jesus Camacho Rodriguez <jcama...@apache.org>
Authored: Tue Sep 12 14:59:10 2017 -0700
Committer: Jesus Camacho Rodriguez <jcama...@apache.org>
Committed: Thu Sep 21 05:37:38 2017 +1000

----------------------------------------------------------------------
 .../results/positive/hbase_custom_key2.q.out    |  2 +-
 .../results/positive/hbase_custom_key3.q.out    |  2 +-
 .../results/positive/hbase_ppd_key_range.q.out  |  2 +-
 .../test/results/positive/hbase_pushdown.q.out  |  2 +-
 .../test/results/positive/hbase_queries.q.out   |  2 +-
 .../hbase_single_sourced_multi_insert.q.out     |  4 +-
 .../apache/hadoop/hive/ql/exec/ExplainTask.java | 63 +++++++-------------
 .../org/apache/hadoop/hive/ql/plan/Explain.java |  3 +
 .../hadoop/hive/ql/plan/ExprNodeDesc.java       |  5 ++
 .../hive/ql/plan/ExprNodeGenericFuncDesc.java   | 23 +++++++
 .../apache/hadoop/hive/ql/plan/FilterDesc.java  | 12 +++-
 .../apache/hadoop/hive/ql/plan/PlanUtils.java   | 17 ++++--
 .../org/apache/hadoop/hive/ql/udf/UDFType.java  |  8 +++
 .../hive/ql/udf/generic/GenericUDFOPAnd.java    |  2 +
 .../hive/ql/udf/generic/GenericUDFOPOr.java     |  2 +
 .../hadoop/hive/ql/exec/TestExplainTask.java    |  8 ++-
 .../annotate_stats_deep_filters.q.out           |  4 +-
 .../clientpositive/annotate_stats_filter.q.out  |  2 +-
 .../annotate_stats_join_pkfk.q.out              |  2 +-
 .../results/clientpositive/auto_join20.q.out    |  2 +-
 .../results/clientpositive/auto_join28.q.out    |  2 +-
 .../results/clientpositive/auto_join29.q.out    | 14 ++---
 .../results/clientpositive/auto_join4.q.out     |  4 +-
 .../results/clientpositive/auto_join5.q.out     |  2 +-
 .../results/clientpositive/auto_join6.q.out     |  4 +-
 .../results/clientpositive/auto_join7.q.out     |  6 +-
 .../results/clientpositive/auto_join8.q.out     |  4 +-
 .../auto_join_reordering_values.q.out           |  2 +-
 .../materialized_view_create_rewrite.q.out      |  4 +-
 .../clientpositive/beeline/smb_mapjoin_10.q.out |  2 +-
 .../test/results/clientpositive/cbo_const.q.out |  2 +-
 .../clientpositive/cbo_rp_outer_join_ppr.q.out  |  4 +-
 .../results/clientpositive/cbo_union_view.q.out |  6 +-
 .../clientpositive/constant_prop_1.q.out        |  2 +-
 .../clientpositive/constant_prop_3.q.out        |  2 +-
 .../clientpositive/correlated_join_keys.q.out   |  8 +--
 .../clientpositive/correlationoptimizer10.q.out |  4 +-
 .../clientpositive/correlationoptimizer13.q.out |  2 +-
 .../clientpositive/correlationoptimizer9.q.out  |  8 +--
 .../results/clientpositive/except_all.q.out     |  6 +-
 .../clientpositive/filter_cond_pushdown.q.out   |  6 +-
 .../filter_cond_pushdown_HIVE_15647.q.out       | 10 ++--
 .../results/clientpositive/flatten_and_or.q.out |  2 +-
 .../clientpositive/fold_eq_with_case_when.q.out |  2 +-
 .../clientpositive/folder_predicate.q.out       | 14 ++---
 .../clientpositive/fouter_join_ppr.q.out        |  8 +--
 .../groupby_grouping_sets_grouping.q.out        |  4 +-
 .../groupby_multi_single_reducer3.q.out         | 20 +++----
 .../clientpositive/groupby_position.q.out       |  2 +-
 .../test/results/clientpositive/having2.q.out   |  2 +-
 .../identity_project_remove_skip.q.out          |  2 +-
 .../results/clientpositive/index_auto.q.out     |  6 +-
 .../clientpositive/index_auto_mult_tables.q.out |  6 +-
 .../index_auto_mult_tables_compact.q.out        |  6 +-
 .../clientpositive/index_auto_self_join.q.out   | 12 ++--
 .../clientpositive/index_auto_unused.q.out      |  6 +-
 .../index_bitmap_compression.q.out              |  4 +-
 .../clientpositive/index_compression.q.out      |  4 +-
 .../clientpositive/infer_const_type.q.out       |  8 +--
 .../test/results/clientpositive/input12.q.out   |  2 +-
 .../test/results/clientpositive/input13.q.out   |  4 +-
 .../results/clientpositive/input_part2.q.out    |  4 +-
 .../results/clientpositive/input_part4.q.out    |  2 +-
 .../clientpositive/input_testxpath4.q.out       |  4 +-
 .../test/results/clientpositive/insert1.q.out   |  2 +-
 ql/src/test/results/clientpositive/join19.q.out |  6 +-
 ql/src/test/results/clientpositive/join20.q.out |  2 +-
 ql/src/test/results/clientpositive/join4.q.out  |  4 +-
 ql/src/test/results/clientpositive/join40.q.out |  2 +-
 ql/src/test/results/clientpositive/join45.q.out |  2 +-
 ql/src/test/results/clientpositive/join5.q.out  |  2 +-
 ql/src/test/results/clientpositive/join6.q.out  |  4 +-
 ql/src/test/results/clientpositive/join7.q.out  |  6 +-
 ql/src/test/results/clientpositive/join8.q.out  |  4 +-
 .../results/clientpositive/join_hive_626.q.out  |  2 +-
 .../results/clientpositive/join_parse.q.out     |  2 +-
 .../results/clientpositive/join_reorder2.q.out  |  4 +-
 .../results/clientpositive/join_reorder3.q.out  |  4 +-
 .../list_bucket_query_multiskew_2.q.out         |  2 +-
 .../clientpositive/llap/auto_join29.q.out       | 14 ++---
 .../clientpositive/llap/bucketpruning1.q.out    | 26 ++++----
 .../llap/bucketsortoptimize_insert_7.q.out      |  4 +-
 .../llap/constprog_semijoin.q.out               |  2 +-
 .../llap/dynamic_partition_pruning.q.out        | 10 ++--
 .../llap/dynamic_semijoin_reduction.q.out       | 22 +++----
 .../llap/dynamic_semijoin_reduction_2.q.out     |  8 +--
 .../llap/dynamic_semijoin_reduction_3.q.out     |  8 +--
 .../llap/dynamic_semijoin_reduction_sw.q.out    |  8 +--
 .../llap/dynamic_semijoin_user_level.q.out      | 14 ++---
 .../llap/dynpart_sort_opt_vectorization.q.out   | 30 +++++-----
 .../llap/dynpart_sort_optimization.q.out        | 34 +++++------
 .../llap/dynpart_sort_optimization2.q.out       | 12 ++--
 .../clientpositive/llap/except_distinct.q.out   | 10 ++--
 .../clientpositive/llap/explainuser_1.q.out     | 22 +++----
 .../clientpositive/llap/explainuser_2.q.out     | 12 ++--
 .../clientpositive/llap/explainuser_4.q.out     | 12 ++--
 .../llap/hybridgrace_hashjoin_2.q.out           |  8 +--
 .../llap/identity_project_remove_skip.q.out     |  2 +-
 .../results/clientpositive/llap/insert1.q.out   |  2 +-
 .../clientpositive/llap/join32_lessSize.q.out   |  2 +-
 .../clientpositive/llap/mapjoin_hint.q.out      |  2 +-
 .../clientpositive/llap/mapjoin_mapjoin.q.out   |  4 +-
 .../results/clientpositive/llap/mergejoin.q.out |  6 +-
 .../clientpositive/llap/multiMapJoin1.q.out     |  8 +--
 .../clientpositive/llap/multi_insert.q.out      | 32 +++++-----
 .../llap/orc_predicate_pushdown.q.out           | 20 +++----
 .../llap/parquet_predicate_pushdown.q.out       | 22 +++----
 .../clientpositive/llap/semijoin_hint.q.out     | 32 +++++-----
 .../results/clientpositive/llap/skewjoin.q.out  |  6 +-
 .../clientpositive/llap/smb_mapjoin_15.q.out    |  4 +-
 .../results/clientpositive/llap/sqlmerge.q.out  |  4 +-
 .../clientpositive/llap/subquery_in.q.out       |  4 +-
 .../clientpositive/llap/subquery_multi.q.out    |  6 +-
 .../clientpositive/llap/subquery_notin.q.out    | 12 ++--
 .../clientpositive/llap/subquery_null_agg.q.out |  2 +-
 .../clientpositive/llap/subquery_scalar.q.out   |  2 +-
 .../llap/tez_dynpart_hashjoin_1.q.out           | 12 ++--
 .../llap/tez_union_group_by.q.out               |  2 +-
 .../llap/tez_vector_dynpart_hashjoin_1.q.out    | 12 ++--
 .../clientpositive/llap/vector_date_1.q.out     |  4 +-
 .../llap/vector_decimal_cast.q.out              |  2 +-
 .../llap/vector_decimal_expressions.q.out       |  2 +-
 .../vector_groupby_grouping_sets_grouping.q.out |  4 +-
 .../clientpositive/llap/vector_interval_2.q.out | 12 ++--
 .../llap/vector_interval_mapjoin.q.out          |  4 +-
 .../llap/vector_mapjoin_reduce.q.out            |  2 +-
 .../llap/vector_mr_diff_schema_alias.q.out      |  2 +-
 .../llap/vector_multi_insert.q.out              |  2 +-
 .../clientpositive/llap/vectorization_0.q.out   |  8 +--
 .../clientpositive/llap/vectorization_1.q.out   |  2 +-
 .../clientpositive/llap/vectorization_10.q.out  |  2 +-
 .../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  |  2 +-
 .../clientpositive/llap/vectorization_17.q.out  |  2 +-
 .../clientpositive/llap/vectorization_2.q.out   |  2 +-
 .../clientpositive/llap/vectorization_3.q.out   |  2 +-
 .../clientpositive/llap/vectorization_4.q.out   |  2 +-
 .../clientpositive/llap/vectorization_5.q.out   |  2 +-
 .../clientpositive/llap/vectorization_6.q.out   |  2 +-
 .../clientpositive/llap/vectorization_7.q.out   |  4 +-
 .../clientpositive/llap/vectorization_8.q.out   |  4 +-
 .../clientpositive/llap/vectorization_9.q.out   |  2 +-
 .../llap/vectorization_decimal_date.q.out       |  2 +-
 .../llap/vectorization_short_regress.q.out      | 20 +++----
 .../clientpositive/llap/vectorized_case.q.out   |  4 +-
 .../llap/vectorized_context.q.out               |  2 +-
 .../vectorized_dynamic_partition_pruning.q.out  | 10 ++--
 .../vectorized_dynamic_semijoin_reduction.q.out | 16 ++---
 ...vectorized_dynamic_semijoin_reduction2.q.out | 16 ++---
 .../llap/vectorized_nested_mapjoin.q.out        |  2 +-
 .../llap/vectorized_string_funcs.q.out          |  2 +-
 .../clientpositive/llap_uncompressed.q.out      |  2 +-
 .../clientpositive/load_dyn_part13.q.out        |  2 +-
 .../clientpositive/louter_join_ppr.q.out        |  8 +--
 .../mapjoin_filter_on_outerjoin.q.out           |  4 +-
 .../clientpositive/mapjoin_mapjoin.q.out        |  4 +-
 .../test/results/clientpositive/masking_1.q.out |  2 +-
 .../test/results/clientpositive/masking_3.q.out |  2 +-
 .../clientpositive/masking_disablecbo_1.q.out   |  2 +-
 .../clientpositive/masking_disablecbo_3.q.out   | 12 ++--
 .../materialized_view_create_rewrite.q.out      |  4 +-
 .../clientpositive/multi_insert_gby.q.out       |  2 +-
 .../clientpositive/multi_insert_gby4.q.out      |  2 +-
 ...i_insert_move_tasks_share_dependencies.q.out | 56 ++++++++---------
 .../multi_insert_with_join2.q.out               | 14 ++---
 .../clientpositive/nested_column_pruning.q.out  |  2 +-
 .../results/clientpositive/nonmr_fetch.q.out    |  2 +-
 .../results/clientpositive/outer_join_ppr.q.out |  4 +-
 .../partition_wise_fileformat2.q.out            |  4 +-
 ql/src/test/results/clientpositive/pcr.q.out    |  2 +-
 ql/src/test/results/clientpositive/pcs.q.out    |  6 +-
 .../results/clientpositive/perf/query1.q.out    |  2 +-
 .../results/clientpositive/perf/query10.q.out   |  2 +-
 .../results/clientpositive/perf/query11.q.out   |  2 +-
 .../results/clientpositive/perf/query13.q.out   |  8 +--
 .../results/clientpositive/perf/query14.q.out   | 30 +++++-----
 .../results/clientpositive/perf/query15.q.out   |  4 +-
 .../results/clientpositive/perf/query16.q.out   |  2 +-
 .../results/clientpositive/perf/query17.q.out   |  4 +-
 .../results/clientpositive/perf/query18.q.out   |  6 +-
 .../results/clientpositive/perf/query19.q.out   |  4 +-
 .../results/clientpositive/perf/query21.q.out   |  2 +-
 .../results/clientpositive/perf/query22.q.out   |  2 +-
 .../results/clientpositive/perf/query23.q.out   |  8 +--
 .../results/clientpositive/perf/query24.q.out   |  8 +--
 .../results/clientpositive/perf/query25.q.out   |  8 +--
 .../results/clientpositive/perf/query26.q.out   |  4 +-
 .../results/clientpositive/perf/query27.q.out   |  4 +-
 .../results/clientpositive/perf/query28.q.out   | 12 ++--
 .../results/clientpositive/perf/query29.q.out   |  6 +-
 .../results/clientpositive/perf/query3.q.out    |  2 +-
 .../results/clientpositive/perf/query31.q.out   |  4 +-
 .../results/clientpositive/perf/query33.q.out   | 10 ++--
 .../results/clientpositive/perf/query34.q.out   |  4 +-
 .../results/clientpositive/perf/query35.q.out   |  2 +-
 .../results/clientpositive/perf/query36.q.out   |  2 +-
 .../results/clientpositive/perf/query37.q.out   |  2 +-
 .../results/clientpositive/perf/query38.q.out   |  8 +--
 .../results/clientpositive/perf/query39.q.out   |  6 +-
 .../results/clientpositive/perf/query4.q.out    |  2 +-
 .../results/clientpositive/perf/query40.q.out   |  2 +-
 .../results/clientpositive/perf/query42.q.out   |  2 +-
 .../results/clientpositive/perf/query45.q.out   |  4 +-
 .../results/clientpositive/perf/query46.q.out   |  4 +-
 .../results/clientpositive/perf/query47.q.out   |  6 +-
 .../results/clientpositive/perf/query48.q.out   |  6 +-
 .../results/clientpositive/perf/query49.q.out   | 14 ++---
 .../results/clientpositive/perf/query5.q.out    |  8 +--
 .../results/clientpositive/perf/query50.q.out   |  6 +-
 .../results/clientpositive/perf/query51.q.out   |  2 +-
 .../results/clientpositive/perf/query52.q.out   |  2 +-
 .../results/clientpositive/perf/query53.q.out   |  2 +-
 .../results/clientpositive/perf/query54.q.out   |  8 +--
 .../results/clientpositive/perf/query55.q.out   |  2 +-
 .../results/clientpositive/perf/query56.q.out   |  8 +--
 .../results/clientpositive/perf/query57.q.out   |  6 +-
 .../results/clientpositive/perf/query58.q.out   | 10 ++--
 .../results/clientpositive/perf/query59.q.out   |  4 +-
 .../results/clientpositive/perf/query6.q.out    |  6 +-
 .../results/clientpositive/perf/query60.q.out   |  8 +--
 .../results/clientpositive/perf/query61.q.out   |  8 +--
 .../results/clientpositive/perf/query63.q.out   |  2 +-
 .../results/clientpositive/perf/query64.q.out   |  6 +-
 .../results/clientpositive/perf/query65.q.out   |  4 +-
 .../results/clientpositive/perf/query66.q.out   |  4 +-
 .../results/clientpositive/perf/query67.q.out   |  4 +-
 .../results/clientpositive/perf/query68.q.out   |  6 +-
 .../results/clientpositive/perf/query69.q.out   |  2 +-
 .../results/clientpositive/perf/query7.q.out    |  4 +-
 .../results/clientpositive/perf/query70.q.out   |  4 +-
 .../results/clientpositive/perf/query71.q.out   |  6 +-
 .../results/clientpositive/perf/query72.q.out   |  4 +-
 .../results/clientpositive/perf/query73.q.out   |  4 +-
 .../results/clientpositive/perf/query74.q.out   |  8 +--
 .../results/clientpositive/perf/query75.q.out   |  2 +-
 .../results/clientpositive/perf/query76.q.out   |  4 +-
 .../results/clientpositive/perf/query79.q.out   |  4 +-
 .../results/clientpositive/perf/query80.q.out   |  6 +-
 .../results/clientpositive/perf/query82.q.out   |  2 +-
 .../results/clientpositive/perf/query83.q.out   |  4 +-
 .../results/clientpositive/perf/query85.q.out   | 10 ++--
 .../results/clientpositive/perf/query86.q.out   |  4 +-
 .../results/clientpositive/perf/query87.q.out   | 12 ++--
 .../results/clientpositive/perf/query89.q.out   |  2 +-
 .../results/clientpositive/perf/query91.q.out   |  6 +-
 .../results/clientpositive/perf/query93.q.out   |  2 +-
 .../results/clientpositive/perf/query94.q.out   |  2 +-
 .../results/clientpositive/perf/query95.q.out   |  2 +-
 .../results/clientpositive/perf/query97.q.out   |  2 +-
 .../results/clientpositive/perf/query99.q.out   |  4 +-
 .../results/clientpositive/pointlookup.q.out    |  2 +-
 .../results/clientpositive/ppd_clusterby.q.out  |  4 +-
 .../test/results/clientpositive/ppd_gby.q.out   |  4 +-
 .../test/results/clientpositive/ppd_gby2.q.out  |  4 +-
 .../results/clientpositive/ppd_gby_join.q.out   |  8 +--
 .../test/results/clientpositive/ppd_join.q.out  |  8 +--
 .../test/results/clientpositive/ppd_join2.q.out |  8 +--
 .../test/results/clientpositive/ppd_join3.q.out | 16 ++---
 .../test/results/clientpositive/ppd_join4.q.out |  2 +-
 .../test/results/clientpositive/ppd_join5.q.out |  2 +-
 .../clientpositive/ppd_multi_insert.q.out       |  8 +--
 .../clientpositive/ppd_outer_join1.q.out        |  4 +-
 .../clientpositive/ppd_outer_join2.q.out        |  4 +-
 .../clientpositive/ppd_outer_join3.q.out        |  4 +-
 .../clientpositive/ppd_outer_join4.q.out        |  8 +--
 .../results/clientpositive/ppd_udf_case.q.out   |  2 +-
 .../results/clientpositive/ppd_udf_col.q.out    |  4 +-
 .../clientpositive/ppr_allchildsarenull.q.out   |  2 +-
 ql/src/test/results/clientpositive/quote1.q.out |  2 +-
 .../clientpositive/rand_partitionpruner3.q.out  |  2 +-
 .../clientpositive/rcfile_null_value.q.out      |  2 +-
 .../clientpositive/router_join_ppr.q.out        |  8 +--
 .../test/results/clientpositive/sample8.q.out   |  4 +-
 .../clientpositive/select_unquote_and.q.out     |  2 +-
 .../clientpositive/select_unquote_or.q.out      |  2 +-
 .../test/results/clientpositive/semijoin2.q.out |  4 +-
 .../test/results/clientpositive/semijoin4.q.out |  2 +-
 .../test/results/clientpositive/semijoin5.q.out |  4 +-
 .../test/results/clientpositive/skewjoin.q.out  |  6 +-
 .../clientpositive/skewjoin_mapjoin1.q.out      | 16 ++---
 .../clientpositive/skewjoin_mapjoin10.q.out     | 16 ++---
 .../clientpositive/skewjoin_mapjoin11.q.out     |  8 +--
 .../clientpositive/skewjoin_mapjoin2.q.out      |  8 +--
 .../clientpositive/skewjoin_mapjoin3.q.out      |  8 +--
 .../clientpositive/skewjoin_mapjoin4.q.out      | 12 ++--
 .../clientpositive/skewjoin_mapjoin6.q.out      |  8 +--
 .../clientpositive/skewjoin_mapjoin7.q.out      | 16 ++---
 .../clientpositive/skewjoin_mapjoin9.q.out      |  8 +--
 .../skewjoin_union_remove_1.q.out               | 16 ++---
 .../skewjoin_union_remove_2.q.out               | 12 ++--
 .../results/clientpositive/skewjoinopt1.q.out   | 16 ++---
 .../results/clientpositive/skewjoinopt10.q.out  |  8 +--
 .../results/clientpositive/skewjoinopt11.q.out  | 16 ++---
 .../results/clientpositive/skewjoinopt12.q.out  |  8 +--
 .../results/clientpositive/skewjoinopt14.q.out  |  8 +--
 .../results/clientpositive/skewjoinopt16.q.out  |  8 +--
 .../results/clientpositive/skewjoinopt17.q.out  | 16 ++---
 .../results/clientpositive/skewjoinopt19.q.out  |  8 +--
 .../results/clientpositive/skewjoinopt2.q.out   | 16 ++---
 .../results/clientpositive/skewjoinopt20.q.out  |  8 +--
 .../results/clientpositive/skewjoinopt21.q.out  |  8 +--
 .../results/clientpositive/skewjoinopt3.q.out   |  8 +--
 .../results/clientpositive/skewjoinopt4.q.out   | 16 ++---
 .../results/clientpositive/skewjoinopt5.q.out   |  8 +--
 .../results/clientpositive/skewjoinopt6.q.out   |  8 +--
 .../results/clientpositive/skewjoinopt7.q.out   | 12 ++--
 .../results/clientpositive/skewjoinopt8.q.out   | 12 ++--
 .../results/clientpositive/smb_mapjoin9.q.out   |  4 +-
 .../results/clientpositive/smb_mapjoin_10.q.out |  2 +-
 .../clientpositive/sort_merge_join_desc_2.q.out |  2 +-
 .../clientpositive/sort_merge_join_desc_3.q.out |  2 +-
 .../clientpositive/sort_merge_join_desc_4.q.out |  4 +-
 .../clientpositive/sort_merge_join_desc_8.q.out |  4 +-
 .../clientpositive/spark/auto_join20.q.out      |  2 +-
 .../clientpositive/spark/auto_join28.q.out      |  2 +-
 .../clientpositive/spark/auto_join29.q.out      | 14 ++---
 .../clientpositive/spark/auto_join4.q.out       |  4 +-
 .../clientpositive/spark/auto_join5.q.out       |  2 +-
 .../clientpositive/spark/auto_join6.q.out       |  4 +-
 .../clientpositive/spark/auto_join7.q.out       |  6 +-
 .../clientpositive/spark/auto_join8.q.out       |  4 +-
 .../spark/auto_join_reordering_values.q.out     |  2 +-
 .../spark/bucketsortoptimize_insert_7.q.out     |  4 +-
 .../spark/constprog_semijoin.q.out              |  2 +-
 .../spark/dynamic_rdd_cache.q.out               |  8 +--
 .../spark/groupby_multi_single_reducer3.q.out   | 20 +++----
 .../clientpositive/spark/groupby_position.q.out |  2 +-
 .../spark/identity_project_remove_skip.q.out    |  2 +-
 .../spark/index_auto_self_join.q.out            |  8 +--
 .../results/clientpositive/spark/input12.q.out  |  2 +-
 .../results/clientpositive/spark/input13.q.out  |  4 +-
 .../clientpositive/spark/input_part2.q.out      |  4 +-
 .../results/clientpositive/spark/join19.q.out   |  6 +-
 .../results/clientpositive/spark/join20.q.out   |  2 +-
 .../clientpositive/spark/join32_lessSize.q.out  |  2 +-
 .../results/clientpositive/spark/join4.q.out    |  4 +-
 .../results/clientpositive/spark/join5.q.out    |  2 +-
 .../results/clientpositive/spark/join6.q.out    |  4 +-
 .../results/clientpositive/spark/join7.q.out    |  6 +-
 .../results/clientpositive/spark/join8.q.out    |  4 +-
 .../clientpositive/spark/join_hive_626.q.out    |  2 +-
 .../clientpositive/spark/join_reorder2.q.out    |  4 +-
 .../clientpositive/spark/join_reorder3.q.out    |  4 +-
 .../clientpositive/spark/load_dyn_part13.q.out  |  2 +-
 .../clientpositive/spark/louter_join_ppr.q.out  |  8 +--
 .../spark/mapjoin_filter_on_outerjoin.q.out     |  4 +-
 .../clientpositive/spark/mapjoin_mapjoin.q.out  |  4 +-
 .../clientpositive/spark/multi_insert.q.out     | 32 +++++-----
 .../clientpositive/spark/multi_insert_gby.q.out |  2 +-
 ...i_insert_move_tasks_share_dependencies.q.out | 56 ++++++++---------
 .../clientpositive/spark/outer_join_ppr.q.out   |  4 +-
 .../test/results/clientpositive/spark/pcr.q.out |  2 +-
 .../clientpositive/spark/ppd_gby_join.q.out     |  8 +--
 .../results/clientpositive/spark/ppd_join.q.out |  8 +--
 .../clientpositive/spark/ppd_join2.q.out        |  8 +--
 .../clientpositive/spark/ppd_join3.q.out        | 16 ++---
 .../clientpositive/spark/ppd_join5.q.out        |  2 +-
 .../clientpositive/spark/ppd_multi_insert.q.out |  8 +--
 .../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  |  8 +--
 .../clientpositive/spark/router_join_ppr.q.out  |  8 +--
 .../results/clientpositive/spark/sample8.q.out  |  4 +-
 .../results/clientpositive/spark/skewjoin.q.out |  6 +-
 .../spark/skewjoin_union_remove_1.q.out         | 16 ++---
 .../spark/skewjoin_union_remove_2.q.out         | 12 ++--
 .../clientpositive/spark/skewjoinopt1.q.out     | 16 ++---
 .../clientpositive/spark/skewjoinopt10.q.out    |  4 +-
 .../clientpositive/spark/skewjoinopt11.q.out    |  4 +-
 .../clientpositive/spark/skewjoinopt12.q.out    |  8 +--
 .../clientpositive/spark/skewjoinopt14.q.out    |  6 +-
 .../clientpositive/spark/skewjoinopt15.q.out    | 16 ++---
 .../clientpositive/spark/skewjoinopt16.q.out    |  8 +--
 .../clientpositive/spark/skewjoinopt17.q.out    | 12 ++--
 .../clientpositive/spark/skewjoinopt19.q.out    |  4 +-
 .../clientpositive/spark/skewjoinopt2.q.out     | 16 ++---
 .../clientpositive/spark/skewjoinopt20.q.out    |  4 +-
 .../clientpositive/spark/skewjoinopt3.q.out     |  8 +--
 .../clientpositive/spark/skewjoinopt4.q.out     |  8 +--
 .../clientpositive/spark/skewjoinopt5.q.out     |  8 +--
 .../clientpositive/spark/skewjoinopt6.q.out     |  8 +--
 .../clientpositive/spark/skewjoinopt7.q.out     | 12 ++--
 .../clientpositive/spark/skewjoinopt8.q.out     | 12 ++--
 .../clientpositive/spark/smb_mapjoin_10.q.out   |  2 +-
 .../clientpositive/spark/smb_mapjoin_15.q.out   |  4 +-
 .../spark/spark_dynamic_partition_pruning.q.out | 14 ++---
 .../spark_dynamic_partition_pruning_3.q.out     |  2 +-
 .../spark/spark_explainuser_1.q.out             | 32 +++++-----
 ...k_vectorized_dynamic_partition_pruning.q.out | 14 ++---
 .../clientpositive/spark/subquery_in.q.out      |  4 +-
 .../clientpositive/spark/transform_ppr1.q.out   |  2 +-
 .../clientpositive/spark/union_view.q.out       | 22 +++----
 .../spark/vector_mapjoin_reduce.q.out           |  2 +-
 .../clientpositive/spark/vectorization_0.q.out  |  8 +--
 .../clientpositive/spark/vectorization_1.q.out  |  2 +-
 .../clientpositive/spark/vectorization_10.q.out |  2 +-
 .../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 |  2 +-
 .../clientpositive/spark/vectorization_17.q.out |  2 +-
 .../clientpositive/spark/vectorization_2.q.out  |  2 +-
 .../clientpositive/spark/vectorization_3.q.out  |  2 +-
 .../clientpositive/spark/vectorization_4.q.out  |  2 +-
 .../clientpositive/spark/vectorization_5.q.out  |  2 +-
 .../clientpositive/spark/vectorization_6.q.out  |  2 +-
 .../clientpositive/spark/vectorization_9.q.out  |  2 +-
 .../spark/vectorization_decimal_date.q.out      |  2 +-
 .../spark/vectorization_div0.q.out              |  4 +-
 .../spark/vectorization_short_regress.q.out     | 20 +++----
 .../clientpositive/spark/vectorized_case.q.out  |  4 +-
 .../spark/vectorized_nested_mapjoin.q.out       |  2 +-
 .../spark/vectorized_string_funcs.q.out         |  2 +-
 .../special_character_in_tabnames_2.q.out       |  6 +-
 .../clientpositive/tez/explainanalyze_4.q.out   | 12 ++--
 .../tez/hybridgrace_hashjoin_2.q.out            |  8 +--
 .../clientpositive/tez/vectorization_div0.q.out |  4 +-
 .../results/clientpositive/transform_ppr1.q.out |  2 +-
 .../results/clientpositive/union_view.q.out     | 16 ++---
 .../results/clientpositive/vector_date_1.q.out  |  4 +-
 .../clientpositive/vector_decimal_cast.q.out    |  2 +-
 .../vector_decimal_expressions.q.out            |  2 +-
 .../vector_interval_mapjoin.q.out               |  4 +-
 .../clientpositive/vector_mapjoin_reduce.q.out  |  2 +-
 .../vector_mr_diff_schema_alias.q.out           |  2 +-
 .../clientpositive/vector_multi_insert.q.out    |  2 +-
 .../vector_windowing_multipartitioning.q.out    | 10 ++--
 .../clientpositive/vectorization_1.q.out        |  2 +-
 .../clientpositive/vectorization_10.q.out       |  2 +-
 .../clientpositive/vectorization_12.q.out       |  2 +-
 .../clientpositive/vectorization_13.q.out       |  4 +-
 .../clientpositive/vectorization_14.q.out       |  2 +-
 .../clientpositive/vectorization_15.q.out       |  2 +-
 .../clientpositive/vectorization_16.q.out       |  2 +-
 .../clientpositive/vectorization_17.q.out       |  2 +-
 .../clientpositive/vectorization_2.q.out        |  2 +-
 .../clientpositive/vectorization_3.q.out        |  2 +-
 .../clientpositive/vectorization_4.q.out        |  2 +-
 .../clientpositive/vectorization_5.q.out        |  2 +-
 .../clientpositive/vectorization_6.q.out        |  2 +-
 .../clientpositive/vectorization_7.q.out        |  4 +-
 .../clientpositive/vectorization_8.q.out        |  4 +-
 .../clientpositive/vectorization_9.q.out        |  2 +-
 .../vectorization_decimal_date.q.out            |  2 +-
 .../clientpositive/vectorization_div0.q.out     |  4 +-
 .../clientpositive/vectorized_case.q.out        |  4 +-
 .../clientpositive/vectorized_context.q.out     |  2 +-
 .../vectorized_string_funcs.q.out               |  2 +-
 .../test/results/clientpositive/view_cbo.q.out  |  2 +-
 454 files changed, 1461 insertions(+), 1412 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/hbase-handler/src/test/results/positive/hbase_custom_key2.q.out
----------------------------------------------------------------------
diff --git a/hbase-handler/src/test/results/positive/hbase_custom_key2.q.out 
b/hbase-handler/src/test/results/positive/hbase_custom_key2.q.out
index b1258e3..5d381e7 100644
--- a/hbase-handler/src/test/results/positive/hbase_custom_key2.q.out
+++ b/hbase-handler/src/test/results/positive/hbase_custom_key2.q.out
@@ -104,7 +104,7 @@ STAGE PLANS:
           filterExpr: ((key.col1 >= '165') and (key.col1 < '27')) (type: 
boolean)
           Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
           Filter Operator
-            predicate: ((key.col1 >= '165') and (key.col1 < '27')) (type: 
boolean)
+            predicate: ((key.col1 < '27') and (key.col1 >= '165')) (type: 
boolean)
             Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Select Operator
               expressions: key (type: 
struct<col1:string,col2:string,col3:string>), value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/hbase-handler/src/test/results/positive/hbase_custom_key3.q.out
----------------------------------------------------------------------
diff --git a/hbase-handler/src/test/results/positive/hbase_custom_key3.q.out 
b/hbase-handler/src/test/results/positive/hbase_custom_key3.q.out
index b573d4b..60721cb 100644
--- a/hbase-handler/src/test/results/positive/hbase_custom_key3.q.out
+++ b/hbase-handler/src/test/results/positive/hbase_custom_key3.q.out
@@ -103,7 +103,7 @@ STAGE PLANS:
           alias: hbase_ck_5
           Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
           Filter Operator
-            predicate: ((key.col1 >= '165') and (key.col1 < '27')) (type: 
boolean)
+            predicate: ((key.col1 < '27') and (key.col1 >= '165')) (type: 
boolean)
             Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Select Operator
               expressions: key (type: 
struct<col1:string,col2:string,col3:string>), value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/hbase-handler/src/test/results/positive/hbase_ppd_key_range.q.out
----------------------------------------------------------------------
diff --git a/hbase-handler/src/test/results/positive/hbase_ppd_key_range.q.out 
b/hbase-handler/src/test/results/positive/hbase_ppd_key_range.q.out
index d3c4a99..87a01aa 100644
--- a/hbase-handler/src/test/results/positive/hbase_ppd_key_range.q.out
+++ b/hbase-handler/src/test/results/positive/hbase_ppd_key_range.q.out
@@ -266,7 +266,7 @@ STAGE PLANS:
             filterExpr: (key >= '90') (type: boolean)
             Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Filter Operator
-              predicate: ((value like '%9%') and (UDFToDouble(key) = 
UDFToDouble(UDFToInteger(value)))) (type: boolean)
+              predicate: ((UDFToDouble(key) = 
UDFToDouble(UDFToInteger(value))) and (value like '%9%')) (type: boolean)
               Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/hbase-handler/src/test/results/positive/hbase_pushdown.q.out
----------------------------------------------------------------------
diff --git a/hbase-handler/src/test/results/positive/hbase_pushdown.q.out 
b/hbase-handler/src/test/results/positive/hbase_pushdown.q.out
index 5fac123..f99ff29 100644
--- a/hbase-handler/src/test/results/positive/hbase_pushdown.q.out
+++ b/hbase-handler/src/test/results/positive/hbase_pushdown.q.out
@@ -164,7 +164,7 @@ STAGE PLANS:
             filterExpr: (key = 90) (type: boolean)
             Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Filter Operator
-              predicate: ((value like '%90%') and (key = UDFToInteger(value))) 
(type: boolean)
+              predicate: ((key = UDFToInteger(value)) and (value like '%90%')) 
(type: boolean)
               Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
               Select Operator
                 expressions: 90 (type: int), value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/hbase-handler/src/test/results/positive/hbase_queries.q.out
----------------------------------------------------------------------
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 43a5a25..b2eda12 100644
--- a/hbase-handler/src/test/results/positive/hbase_queries.q.out
+++ b/hbase-handler/src/test/results/positive/hbase_queries.q.out
@@ -306,7 +306,7 @@ STAGE PLANS:
             alias: hbase_table_2
             Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Filter Operator
-              predicate: ((key < 120) and (100 < key)) (type: boolean)
+              predicate: ((100 < key) and (key < 120)) (type: boolean)
               Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
               Select Operator
                 expressions: key (type: int), value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/hbase-handler/src/test/results/positive/hbase_single_sourced_multi_insert.q.out
----------------------------------------------------------------------
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 68a417d..e8927e9 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
@@ -69,7 +69,7 @@ STAGE PLANS:
             alias: a
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((key > 0) and (key < 50)) (type: boolean)
+              predicate: ((key < 50) and (key > 0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), '' (type: string)
@@ -84,7 +84,7 @@ STAGE PLANS:
                       serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
                       name: default.src_x1
             Filter Operator
-              predicate: ((key > 50) and (key < 100)) (type: boolean)
+              predicate: ((key < 100) and (key > 50)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: value (type: string), '' (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java 
b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java
index 2dc681e..c25a783 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/ExplainTask.java
@@ -20,8 +20,6 @@ package org.apache.hadoop.hive.ql.exec;
 
 import static org.apache.hadoop.hive.serde.serdeConstants.STRING_TYPE_NAME;
 
-import org.apache.commons.lang3.tuple.ImmutablePair;
-
 import java.io.OutputStream;
 import java.io.PrintStream;
 import java.io.Serializable;
@@ -32,74 +30,40 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Comparator;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Stack;
 import java.util.Map.Entry;
 import java.util.Set;
 import java.util.TreeMap;
 
-import com.google.common.annotations.VisibleForTesting;
+import org.apache.commons.lang3.tuple.ImmutablePair;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hive.common.ObjectPair;
 import org.apache.hadoop.hive.common.jsonexplain.JsonParser;
 import org.apache.hadoop.hive.common.jsonexplain.JsonParserFactory;
 import org.apache.hadoop.hive.conf.HiveConf;
-import org.apache.hadoop.hive.conf.Validator.StringSet;
+import org.apache.hadoop.hive.conf.HiveConf.ConfVars;
 import org.apache.hadoop.hive.metastore.api.FieldSchema;
 import org.apache.hadoop.hive.ql.Driver;
 import org.apache.hadoop.hive.ql.DriverContext;
-import org.apache.hadoop.hive.ql.exec.spark.SparkTask;
-import org.apache.hadoop.hive.ql.exec.tez.TezTask;
-import org.apache.hadoop.hive.ql.exec.vector.VectorGroupByOperator;
-import org.apache.hadoop.hive.ql.exec.vector.VectorizationContext;
-import org.apache.hadoop.hive.ql.exec.vector.expressions.VectorExpression;
-import 
org.apache.hadoop.hive.ql.exec.vector.expressions.aggregates.VectorAggregateExpression;
-import org.apache.hadoop.hive.ql.plan.MapJoinDesc;
-import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc;
 import org.apache.hadoop.hive.ql.hooks.ReadEntity;
-import org.apache.hadoop.hive.ql.io.AcidUtils;
-import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
-import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
-import org.apache.hadoop.hive.ql.lib.Dispatcher;
-import org.apache.hadoop.hive.ql.lib.GraphWalker;
-import org.apache.hadoop.hive.ql.lib.Node;
-import org.apache.hadoop.hive.ql.lib.NodeProcessor;
-import org.apache.hadoop.hive.ql.lib.NodeProcessorCtx;
-import org.apache.hadoop.hive.ql.lib.Rule;
 import org.apache.hadoop.hive.ql.metadata.Table;
 import org.apache.hadoop.hive.ql.optimizer.physical.StageIDsRearranger;
-import org.apache.hadoop.hive.ql.optimizer.physical.Vectorizer;
-import org.apache.hadoop.hive.ql.optimizer.physical.VectorizerReason;
 import org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer;
 import 
org.apache.hadoop.hive.ql.parse.ExplainConfiguration.VectorizationDetailLevel;
-import org.apache.hadoop.hive.ql.parse.SemanticException;
-import org.apache.hadoop.hive.ql.plan.BaseWork;
 import org.apache.hadoop.hive.ql.plan.Explain;
 import org.apache.hadoop.hive.ql.plan.Explain.Level;
 import org.apache.hadoop.hive.ql.plan.Explain.Vectorization;
-import org.apache.hadoop.hive.ql.plan.AggregationDesc;
 import org.apache.hadoop.hive.ql.plan.ExplainWork;
-import org.apache.hadoop.hive.ql.plan.GroupByDesc;
 import org.apache.hadoop.hive.ql.plan.HiveOperation;
-import org.apache.hadoop.hive.ql.plan.MapredWork;
-import org.apache.hadoop.hive.ql.plan.MapWork;
-import org.apache.hadoop.hive.ql.plan.ReduceWork;
 import org.apache.hadoop.hive.ql.plan.OperatorDesc;
+import org.apache.hadoop.hive.ql.plan.ReduceSinkDesc;
 import org.apache.hadoop.hive.ql.plan.SparkWork;
-import org.apache.hadoop.hive.ql.plan.TableDesc;
 import org.apache.hadoop.hive.ql.plan.TezWork;
-import org.apache.hadoop.hive.ql.plan.VectorReduceSinkInfo;
-import org.apache.hadoop.hive.ql.plan.VectorReduceSinkDesc;
-import org.apache.hadoop.hive.ql.plan.VectorGroupByDesc;
 import org.apache.hadoop.hive.ql.plan.api.StageType;
 import org.apache.hadoop.hive.ql.security.authorization.AuthorizationFactory;
 import org.apache.hadoop.hive.ql.session.SessionState;
-import org.apache.hadoop.hive.serde2.Deserializer;
-import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import org.apache.hadoop.io.IOUtils;
 import org.apache.hadoop.util.StringUtils;
 import org.apache.hive.common.util.AnnotationUtils;
@@ -109,6 +73,8 @@ import org.json.JSONObject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.annotations.VisibleForTesting;
+
 /**
  * ExplainTask implementation.
  *
@@ -705,6 +671,10 @@ public class ExplainTask extends Task<ExplainWork> 
implements Serializable {
   @VisibleForTesting
   JSONObject outputPlan(Object work, PrintStream out,
       boolean extended, boolean jsonOutput, int indent, String appendToHeader) 
throws Exception {
+
+    // Are we running tests?
+    final boolean inTest = 
queryState.getConf().getBoolVar(ConfVars.HIVE_IN_TEST);
+
     // Check if work has an explain annotation
     Annotation note = AnnotationUtils.getAnnotation(work.getClass(), 
Explain.class);
 
@@ -920,7 +890,11 @@ public class ExplainTask extends Task<ExplainWork> 
implements Serializable {
 
           Object val = null;
           try {
-            val = m.invoke(work);
+            if (inTest && postProcess(xpl_note)) {
+              val = m.invoke(work, true);
+            } else {
+              val = m.invoke(work);
+            }
           }
           catch (InvocationTargetException ex) {
             // Ignore the exception, this may be caused by external jars
@@ -1037,6 +1011,15 @@ public class ExplainTask extends Task<ExplainWork> 
implements Serializable {
   }
 
   /**
+   * use case: this is only use for testing purposes. For instance, we might
+   * want to sort the expressions in a filter so we get deterministic 
comparable
+   * golden files
+   */
+  private boolean postProcess(Explain exp) {
+    return exp.postProcess();
+  }
+
+  /**
    * use case: we want to print the object in explain only if it is true
    * how to do : print it unless the following 3 are all true:
    * 1. displayOnlyOnTrue tag is on

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/java/org/apache/hadoop/hive/ql/plan/Explain.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/Explain.java 
b/ql/src/java/org/apache/hadoop/hive/ql/plan/Explain.java
index 7b16ad7..fbda0ea 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/Explain.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/Explain.java
@@ -74,4 +74,7 @@ public @interface Explain {
     }
   };
   Vectorization vectorization() default Vectorization.NON_VECTORIZED;
+
+  boolean postProcess() default false;
+
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java 
b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java
index 328bd86..d2bd3d7 100755
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeDesc.java
@@ -81,6 +81,10 @@ public abstract class ExprNodeDesc implements Serializable, 
Node {
     return null;
   }
 
+  public String getExprString(boolean sortChildren) {
+    return getExprString();
+  }
+
   public ObjectInspector getWritableObjectInspector() {
     return TypeInfoUtils
       .getStandardWritableObjectInspectorFromTypeInfo(typeInfo);
@@ -151,4 +155,5 @@ public abstract class ExprNodeDesc implements Serializable, 
Node {
       return wrapped;
     }
   }
+
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeGenericFuncDesc.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeGenericFuncDesc.java 
b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeGenericFuncDesc.java
index aef46da..8dffd0c 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeGenericFuncDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeGenericFuncDesc.java
@@ -23,9 +23,14 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.commons.collections.Bag;
+import org.apache.commons.collections.bag.TreeBag;
 import org.apache.commons.lang.builder.HashCodeBuilder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+
+import com.google.common.collect.ImmutableSortedMultiset;
+
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hive.conf.HiveConf.StrictChecks;
 import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
@@ -33,6 +38,7 @@ import org.apache.hadoop.hive.ql.exec.UDFArgumentException;
 import org.apache.hadoop.hive.ql.exec.Utilities;
 import org.apache.hadoop.hive.ql.session.SessionState;
 import org.apache.hadoop.hive.ql.session.SessionState.LogHelper;
+import org.apache.hadoop.hive.ql.udf.UDFType;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDF;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBaseCompare;
 import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge;
@@ -166,6 +172,23 @@ public class ExprNodeGenericFuncDesc extends ExprNodeDesc 
implements
   }
 
   @Override
+  public String getExprString(boolean sortChildren) {
+    if (sortChildren) {
+      UDFType udfType = genericUDF.getClass().getAnnotation(UDFType.class);
+      if (udfType.commutative()) {
+        // Get the sorted children expr strings
+        String[] childrenExprStrings = new String[chidren.size()];
+        for (int i = 0; i < childrenExprStrings.length; i++) {
+          childrenExprStrings[i] = chidren.get(i).getExprString();
+        }
+        return genericUDF.getDisplayString(
+            ImmutableSortedMultiset.copyOf(childrenExprStrings).toArray(new 
String[childrenExprStrings.length]));
+      }
+    }
+    return getExprString();
+  }
+
+  @Override
   public List<String> getCols() {
     List<String> colList = new ArrayList<String>();
     if (chidren != null) {

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/java/org/apache/hadoop/hive/ql/plan/FilterDesc.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/FilterDesc.java 
b/ql/src/java/org/apache/hadoop/hive/ql/plan/FilterDesc.java
index 3de310c..4b69380 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/FilterDesc.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/FilterDesc.java
@@ -109,16 +109,24 @@ public class FilterDesc extends AbstractOperatorDesc {
     this.sampleDescr = sampleDescr;
   }
 
-  @Explain(displayName = "predicate")
   public String getPredicateString() {
     return PlanUtils.getExprListString(Arrays.asList(predicate));
   }
 
-  @Explain(displayName = "predicate", explainLevels = { Level.USER })
   public String getUserLevelExplainPredicateString() {
     return PlanUtils.getExprListString(Arrays.asList(predicate), true);
   }
 
+  @Explain(displayName = "predicate", postProcess = true)
+  public String getPredicateString(boolean postProcess) {
+    return PlanUtils.getExprListString(Arrays.asList(predicate), false, 
postProcess);
+  }
+
+  @Explain(displayName = "predicate", explainLevels = { Level.USER }, 
postProcess = true)
+  public String getUserLevelExplainPredicateString(boolean postProcess) {
+    return PlanUtils.getExprListString(Arrays.asList(predicate), true, 
postProcess);
+  }
+
   public org.apache.hadoop.hive.ql.plan.ExprNodeDesc getPredicate() {
     return predicate;
   }

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java 
b/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
index d82973c..8211c13 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java
@@ -1038,10 +1038,15 @@ public final class PlanUtils {
   }
 
   public static String getExprListString(Collection<? extends ExprNodeDesc> 
exprs) {
-    return getExprListString(exprs, false);
+    return getExprListString(exprs, false, false);
   }
 
   public static String getExprListString(Collection<?  extends ExprNodeDesc> 
exprs, boolean userLevelExplain) {
+    return getExprListString(exprs, userLevelExplain, false);
+  }
+
+  public static String getExprListString(Collection<?  extends ExprNodeDesc> 
exprs,
+          boolean userLevelExplain, boolean sortExpressions) {
     StringBuilder sb = new StringBuilder();
     boolean first = true;
     for (ExprNodeDesc expr: exprs) {
@@ -1050,15 +1055,19 @@ public final class PlanUtils {
       } else {
         first = false;
       }
-      addExprToStringBuffer(expr, sb, userLevelExplain);
+      addExprToStringBuffer(expr, sb, userLevelExplain, sortExpressions);
     }
-
     return sb.length() == 0 ? null : sb.toString();
   }
 
   public static void addExprToStringBuffer(ExprNodeDesc expr, Appendable sb, 
boolean userLevelExplain) {
+    addExprToStringBuffer(expr, sb, userLevelExplain, false);
+  }
+
+  public static void addExprToStringBuffer(ExprNodeDesc expr, Appendable sb,
+          boolean userLevelExplain, boolean sortExpressions) {
     try {
-      sb.append(expr.getExprString());
+      sb.append(expr.getExprString(sortExpressions));
       if (!userLevelExplain) {
         sb.append(" (type: ");
         sb.append(expr.getTypeString());

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFType.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFType.java 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFType.java
index fe9370f..ac3ec58 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFType.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/UDFType.java
@@ -76,4 +76,12 @@ public @interface UDFType {
    * @return true if the function implies order
    */
   boolean impliesOrder() default false;
+
+  /**
+   * Whether result of this operation will be altered by reordering its
+   * children.
+   *
+   * @return true if commutative law applies to this function
+   */
+  boolean commutative() default false;
 }

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPAnd.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPAnd.java 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPAnd.java
index fa0cda8..06d7214 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPAnd.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPAnd.java
@@ -27,6 +27,7 @@ import 
org.apache.hadoop.hive.ql.exec.vector.expressions.FilterColAndScalar;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.FilterExprAndExpr;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.FilterScalarAndColumn;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.udf.UDFType;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
@@ -39,6 +40,7 @@ import org.apache.hadoop.io.BooleanWritable;
 @VectorizedExpressions({ColAndCol.class, FilterExprAndExpr.class, 
FilterColAndScalar.class,
     FilterScalarAndColumn.class})
 @NDV(maxNdv = 2)
+@UDFType(deterministic = true, commutative = true)
 public class GenericUDFOPAnd extends GenericUDF {
   private final BooleanWritable result = new BooleanWritable();
   private transient BooleanObjectInspector boi[];

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPOr.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPOr.java 
b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPOr.java
index af38c97..c189913 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPOr.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPOr.java
@@ -27,6 +27,7 @@ import 
org.apache.hadoop.hive.ql.exec.vector.expressions.FilterColOrScalar;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.FilterExprOrExpr;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.FilterScalarOrColumn;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
+import org.apache.hadoop.hive.ql.udf.UDFType;
 import org.apache.hadoop.hive.serde2.objectinspector.ObjectInspector;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.BooleanObjectInspector;
 import 
org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorFactory;
@@ -39,6 +40,7 @@ import org.apache.hadoop.io.BooleanWritable;
 @VectorizedExpressions({ColOrCol.class, FilterExprOrExpr.class, 
FilterColOrScalar.class,
     FilterScalarOrColumn.class})
 @NDV(maxNdv = 2)
+@UDFType(deterministic = true, commutative = true)
 public class GenericUDFOPOr extends GenericUDF {
   private final BooleanWritable result = new BooleanWritable();
   private transient BooleanObjectInspector[] boi;

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/org/apache/hadoop/hive/ql/exec/TestExplainTask.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestExplainTask.java 
b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestExplainTask.java
index cac1fad..9f913ce 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/exec/TestExplainTask.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/exec/TestExplainTask.java
@@ -62,6 +62,10 @@ public class TestExplainTask {
     uut = new ExplainTask();
     uut.conf = mock(HiveConf.class);
     out = mock(PrintStream.class);
+    QueryState qs = mock(QueryState.class);
+    HiveConf hiveConf = new HiveConf();
+    when(qs.getConf()).thenReturn(hiveConf);
+    uut.queryState = qs;
   }
 
   public static class DummyExplainDesc<K, V> extends TableScanDesc {
@@ -160,7 +164,9 @@ public class TestExplainTask {
     work.setParseContext(pCtx);
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     work.setConfig(new ExplainConfiguration());
-    new ExplainTask().getJSONLogicalPlan(new PrintStream(baos), work);
+    ExplainTask newExplainTask = new ExplainTask();
+    newExplainTask.queryState = uut.queryState;
+    newExplainTask.getJSONLogicalPlan(new PrintStream(baos), work);
     baos.close();
     return baos.toString();
   }

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/annotate_stats_deep_filters.q.out
----------------------------------------------------------------------
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 da1d03c..da59211 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
@@ -120,7 +120,7 @@ STAGE PLANS:
             alias: over1k
             Statistics: Num rows: 2098 Data size: 16744 Basic stats: COMPLETE 
Column stats: COMPLETE
             Filter Operator
-              predicate: (((t = 1) and (si = 2)) or ((t = 2) and (si = 3)) or 
((t = 3) and (si = 4)) or ((t = 4) and (si = 5)) or ((t = 5) and (si = 6)) or 
((t = 6) and (si = 7)) or ((t = 7) and (si = 8)) or ((t = 9) and (si = 10)) or 
((t = 10) and (si = 11)) or ((t = 11) and (si = 12)) or ((t = 12) and (si = 
13)) or ((t = 13) and (si = 14)) or ((t = 14) and (si = 15)) or ((t = 15) and 
(si = 16)) or ((t = 16) and (si = 17)) or ((t = 17) and (si = 18)) or ((t = 27) 
and (si = 28)) or ((t = 37) and (si = 38)) or ((t = 47) and (si = 48)) or ((t = 
52) and (si = 53))) (type: boolean)
+              predicate: (((t = 1) and (si = 2)) or ((t = 10) and (si = 11)) 
or ((t = 11) and (si = 12)) or ((t = 12) and (si = 13)) or ((t = 13) and (si = 
14)) or ((t = 14) and (si = 15)) or ((t = 15) and (si = 16)) or ((t = 16) and 
(si = 17)) or ((t = 17) and (si = 18)) or ((t = 2) and (si = 3)) or ((t = 27) 
and (si = 28)) or ((t = 3) and (si = 4)) or ((t = 37) and (si = 38)) or ((t = 
4) and (si = 5)) or ((t = 47) and (si = 48)) or ((t = 5) and (si = 6)) or ((t = 
52) and (si = 53)) or ((t = 6) and (si = 7)) or ((t = 7) and (si = 8)) or ((t = 
9) and (si = 10))) (type: boolean)
               Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
               Select Operator
                 Statistics: Num rows: 1 Data size: 8 Basic stats: COMPLETE 
Column stats: COMPLETE
@@ -209,7 +209,7 @@ STAGE PLANS:
             alias: over1k
             Statistics: Num rows: 2098 Data size: 211174 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: (((t = 1) and (si = 2)) or ((t = 2) and (si = 3)) or 
((t = 3) and (si = 4)) or ((t = 4) and (si = 5)) or ((t = 5) and (si = 6)) or 
((t = 6) and (si = 7)) or ((t = 7) and (si = 8)) or ((t = 9) and (si = 10)) or 
((t = 10) and (si = 11)) or ((t = 11) and (si = 12)) or ((t = 12) and (si = 
13)) or ((t = 13) and (si = 14)) or ((t = 14) and (si = 15)) or ((t = 15) and 
(si = 16)) or ((t = 16) and (si = 17)) or ((t = 17) and (si = 18)) or ((t = 27) 
and (si = 28)) or ((t = 37) and (si = 38)) or ((t = 47) and (si = 48)) or ((t = 
52) and (si = 53))) (type: boolean)
+              predicate: (((t = 1) and (si = 2)) or ((t = 10) and (si = 11)) 
or ((t = 11) and (si = 12)) or ((t = 12) and (si = 13)) or ((t = 13) and (si = 
14)) or ((t = 14) and (si = 15)) or ((t = 15) and (si = 16)) or ((t = 16) and 
(si = 17)) or ((t = 17) and (si = 18)) or ((t = 2) and (si = 3)) or ((t = 27) 
and (si = 28)) or ((t = 3) and (si = 4)) or ((t = 37) and (si = 38)) or ((t = 
4) and (si = 5)) or ((t = 47) and (si = 48)) or ((t = 5) and (si = 6)) or ((t = 
52) and (si = 53)) or ((t = 6) and (si = 7)) or ((t = 7) and (si = 8)) or ((t = 
9) and (si = 10))) (type: boolean)
               Statistics: Num rows: 2098 Data size: 211174 Basic stats: 
COMPLETE Column stats: NONE
               Select Operator
                 Statistics: Num rows: 2098 Data size: 211174 Basic stats: 
COMPLETE Column stats: NONE

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/annotate_stats_filter.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/annotate_stats_filter.q.out 
b/ql/src/test/results/clientpositive/annotate_stats_filter.q.out
index b2f9836..defb088 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_filter.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_filter.q.out
@@ -628,7 +628,7 @@ STAGE PLANS:
             alias: loc_orc
             Statistics: Num rows: 8 Data size: 816 Basic stats: COMPLETE 
Column stats: COMPLETE
             Filter Operator
-              predicate: ((state = 'OH') or (state = 'CA')) (type: boolean)
+              predicate: ((state = 'CA') or (state = 'OH')) (type: boolean)
               Statistics: Num rows: 2 Data size: 204 Basic stats: COMPLETE 
Column stats: COMPLETE
               Select Operator
                 expressions: state (type: string), locid (type: int), zip 
(type: bigint), year (type: int)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/annotate_stats_join_pkfk.q.out
----------------------------------------------------------------------
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 d88819a..cdb9cea 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
@@ -1101,7 +1101,7 @@ STAGE PLANS:
             alias: ss
             Statistics: Num rows: 1000 Data size: 7664 Basic stats: COMPLETE 
Column stats: COMPLETE
             Filter Operator
-              predicate: (ss_store_sk is not null and ss_addr_sk is not null) 
(type: boolean)
+              predicate: (ss_addr_sk is not null and ss_store_sk is not null) 
(type: boolean)
               Statistics: Num rows: 914 Data size: 7004 Basic stats: COMPLETE 
Column stats: COMPLETE
               Select Operator
                 expressions: ss_addr_sk (type: int), ss_store_sk (type: int)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/auto_join20.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/auto_join20.q.out 
b/ql/src/test/results/clientpositive/auto_join20.q.out
index 8aa2f9a..0d7558a 100644
--- a/ql/src/test/results/clientpositive/auto_join20.q.out
+++ b/ql/src/test/results/clientpositive/auto_join20.q.out
@@ -174,7 +174,7 @@ STAGE PLANS:
             alias: src1
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((key < 15) and (key < 10)) (type: boolean)
+              predicate: ((key < 10) and (key < 15)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               HashTable Sink Operator
                 filter predicates:

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/auto_join28.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/auto_join28.q.out 
b/ql/src/test/results/clientpositive/auto_join28.q.out
index e1543b3..b191ba4 100644
--- a/ql/src/test/results/clientpositive/auto_join28.q.out
+++ b/ql/src/test/results/clientpositive/auto_join28.q.out
@@ -142,7 +142,7 @@ STAGE PLANS:
             alias: src3
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((key > 10) and (key < 10)) (type: boolean)
+              predicate: ((key < 10) and (key > 10)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               HashTable Sink Operator
                 filter predicates:

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/auto_join29.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/auto_join29.q.out 
b/ql/src/test/results/clientpositive/auto_join29.q.out
index a799b04..df59378 100644
--- a/ql/src/test/results/clientpositive/auto_join29.q.out
+++ b/ql/src/test/results/clientpositive/auto_join29.q.out
@@ -650,7 +650,7 @@ STAGE PLANS:
             alias: src3
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((key > 10) and (key < 10)) (type: boolean)
+              predicate: ((key < 10) and (key > 10)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               HashTable Sink Operator
                 filter predicates:
@@ -2491,7 +2491,7 @@ STAGE PLANS:
             alias: src1
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((key > 10) and (key < 10)) (type: boolean)
+              predicate: ((key < 10) and (key > 10)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               HashTable Sink Operator
                 keys:
@@ -2503,7 +2503,7 @@ STAGE PLANS:
             alias: src3
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((key > 10) and (key < 10)) (type: boolean)
+              predicate: ((key < 10) and (key > 10)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               HashTable Sink Operator
                 keys:
@@ -2594,7 +2594,7 @@ STAGE PLANS:
             alias: src1
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((key > 10) and (key < 10)) (type: boolean)
+              predicate: ((key < 10) and (key > 10)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               HashTable Sink Operator
                 filter predicates:
@@ -3222,7 +3222,7 @@ STAGE PLANS:
             alias: src3
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((key > 10) and (key < 10)) (type: boolean)
+              predicate: ((key < 10) and (key > 10)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               HashTable Sink Operator
                 filter predicates:
@@ -3455,7 +3455,7 @@ STAGE PLANS:
             alias: src1
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((key > 10) and (key < 10)) (type: boolean)
+              predicate: ((key < 10) and (key > 10)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               HashTable Sink Operator
                 keys:
@@ -3482,7 +3482,7 @@ STAGE PLANS:
             alias: src3
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((key > 10) and (key < 10)) (type: boolean)
+              predicate: ((key < 10) and (key > 10)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Map Join Operator
                 condition map:

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/auto_join4.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/auto_join4.q.out 
b/ql/src/test/results/clientpositive/auto_join4.q.out
index 6c0fccd..3c0ab85 100644
--- a/ql/src/test/results/clientpositive/auto_join4.q.out
+++ b/ql/src/test/results/clientpositive/auto_join4.q.out
@@ -55,7 +55,7 @@ STAGE PLANS:
             alias: src2
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((UDFToDouble(key) > 15.0) and (UDFToDouble(key) < 
20.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 20.0) and (UDFToDouble(key) > 
15.0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)
@@ -73,7 +73,7 @@ STAGE PLANS:
             alias: src1
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((UDFToDouble(key) > 10.0) and (UDFToDouble(key) < 
20.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 20.0) and (UDFToDouble(key) > 
10.0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/auto_join5.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/auto_join5.q.out 
b/ql/src/test/results/clientpositive/auto_join5.q.out
index 4103061..8da15a5 100644
--- a/ql/src/test/results/clientpositive/auto_join5.q.out
+++ b/ql/src/test/results/clientpositive/auto_join5.q.out
@@ -73,7 +73,7 @@ STAGE PLANS:
             alias: src2
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((UDFToDouble(key) > 15.0) and (UDFToDouble(key) < 
25.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 25.0) and (UDFToDouble(key) > 
15.0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/auto_join6.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/auto_join6.q.out 
b/ql/src/test/results/clientpositive/auto_join6.q.out
index 53caf7d..00bbb1b 100644
--- a/ql/src/test/results/clientpositive/auto_join6.q.out
+++ b/ql/src/test/results/clientpositive/auto_join6.q.out
@@ -49,7 +49,7 @@ STAGE PLANS:
             alias: src1
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((UDFToDouble(key) > 10.0) and (UDFToDouble(key) < 
20.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 20.0) and (UDFToDouble(key) > 
10.0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)
@@ -65,7 +65,7 @@ STAGE PLANS:
             alias: src2
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((UDFToDouble(key) > 15.0) and (UDFToDouble(key) < 
25.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 25.0) and (UDFToDouble(key) > 
15.0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/auto_join7.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/auto_join7.q.out 
b/ql/src/test/results/clientpositive/auto_join7.q.out
index a657c30..339ea70 100644
--- a/ql/src/test/results/clientpositive/auto_join7.q.out
+++ b/ql/src/test/results/clientpositive/auto_join7.q.out
@@ -59,7 +59,7 @@ STAGE PLANS:
             alias: src1
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((UDFToDouble(key) > 10.0) and (UDFToDouble(key) < 
20.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 20.0) and (UDFToDouble(key) > 
10.0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)
@@ -75,7 +75,7 @@ STAGE PLANS:
             alias: src2
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((UDFToDouble(key) > 15.0) and (UDFToDouble(key) < 
25.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 25.0) and (UDFToDouble(key) > 
15.0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)
@@ -91,7 +91,7 @@ STAGE PLANS:
             alias: src3
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((UDFToDouble(key) > 20.0) and (UDFToDouble(key) < 
25.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 25.0) and (UDFToDouble(key) > 
20.0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/auto_join8.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/auto_join8.q.out 
b/ql/src/test/results/clientpositive/auto_join8.q.out
index 2689578..4cc3d59 100644
--- a/ql/src/test/results/clientpositive/auto_join8.q.out
+++ b/ql/src/test/results/clientpositive/auto_join8.q.out
@@ -55,7 +55,7 @@ STAGE PLANS:
             alias: src2
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((UDFToDouble(key) > 15.0) and (UDFToDouble(key) < 
20.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 20.0) and (UDFToDouble(key) > 
15.0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)
@@ -73,7 +73,7 @@ STAGE PLANS:
             alias: src1
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((UDFToDouble(key) > 10.0) and (UDFToDouble(key) < 
20.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 20.0) and (UDFToDouble(key) > 
10.0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/auto_join_reordering_values.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/auto_join_reordering_values.q.out 
b/ql/src/test/results/clientpositive/auto_join_reordering_values.q.out
index ba8d16c..9182127 100644
--- a/ql/src/test/results/clientpositive/auto_join_reordering_values.q.out
+++ b/ql/src/test/results/clientpositive/auto_join_reordering_values.q.out
@@ -97,7 +97,7 @@ STAGE PLANS:
             GatherStats: false
             Filter Operator
               isSamplingPred: false
-              predicate: (date is not null and dealid is not null and cityid 
is not null and userid is not null) (type: boolean)
+              predicate: (cityid is not null and date is not null and dealid 
is not null and userid is not null) (type: boolean)
               Statistics: Num rows: 1 Data size: 36 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: dealid (type: int), date (type: string), cityid 
(type: int), userid (type: int)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/beeline/materialized_view_create_rewrite.q.out
----------------------------------------------------------------------
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 35e9a5d..f6b161b 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
@@ -157,7 +157,7 @@ STAGE PLANS:
             alias: cmv_basetable
             Statistics: Num rows: 5 Data size: 81 Basic stats: COMPLETE Column 
stats: NONE
             Filter Operator
-              predicate: ((d = 3) and (3 = a)) (type: boolean)
+              predicate: ((3 = a) and (d = 3)) (type: boolean)
               Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: c (type: decimal(10,2))
@@ -264,7 +264,7 @@ STAGE PLANS:
             alias: cmv_basetable
             Statistics: Num rows: 5 Data size: 81 Basic stats: COMPLETE Column 
stats: NONE
             Filter Operator
-              predicate: ((d = 3) and (3 = a)) (type: boolean)
+              predicate: ((3 = a) and (d = 3)) (type: boolean)
               Statistics: Num rows: 1 Data size: 16 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: c (type: decimal(10,2))

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/beeline/smb_mapjoin_10.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/beeline/smb_mapjoin_10.q.out 
b/ql/src/test/results/clientpositive/beeline/smb_mapjoin_10.q.out
index 50706f4..379906e 100644
--- a/ql/src/test/results/clientpositive/beeline/smb_mapjoin_10.q.out
+++ b/ql/src/test/results/clientpositive/beeline/smb_mapjoin_10.q.out
@@ -80,7 +80,7 @@ STAGE PLANS:
             alias: b
             Statistics: Num rows: 3 Data size: 414 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: (userid is not null and pageid is not null and postid 
is not null and type is not null) (type: boolean)
+              predicate: (pageid is not null and postid is not null and type 
is not null and userid is not null) (type: boolean)
               Statistics: Num rows: 3 Data size: 414 Basic stats: COMPLETE 
Column stats: NONE
               Sorted Merge Bucket Map Join Operator
                 condition map:

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/cbo_const.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_const.q.out 
b/ql/src/test/results/clientpositive/cbo_const.q.out
index 07a89e5..e9f885b 100644
--- a/ql/src/test/results/clientpositive/cbo_const.q.out
+++ b/ql/src/test/results/clientpositive/cbo_const.q.out
@@ -293,7 +293,7 @@ STAGE PLANS:
             alias: z
             Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Filter Operator
-              predicate: ((ds = '2008-04-08') and (UDFToDouble(hr) = 14.0) and 
value is not null) (type: boolean)
+              predicate: ((UDFToDouble(hr) = 14.0) and (ds = '2008-04-08') and 
value is not null) (type: boolean)
               Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
               Select Operator
                 expressions: value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/cbo_rp_outer_join_ppr.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_rp_outer_join_ppr.q.out 
b/ql/src/test/results/clientpositive/cbo_rp_outer_join_ppr.q.out
index a4c7f77..0bc7d87 100644
--- a/ql/src/test/results/clientpositive/cbo_rp_outer_join_ppr.q.out
+++ b/ql/src/test/results/clientpositive/cbo_rp_outer_join_ppr.q.out
@@ -51,7 +51,7 @@ STAGE PLANS:
             GatherStats: false
             Filter Operator
               isSamplingPred: false
-              predicate: ((UDFToDouble(key) > 15.0) and (UDFToDouble(key) < 
20.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 20.0) and (UDFToDouble(key) > 
15.0)) (type: boolean)
               Statistics: Num rows: 111 Data size: 1179 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)
@@ -349,7 +349,7 @@ STAGE PLANS:
             GatherStats: false
             Filter Operator
               isSamplingPred: false
-              predicate: ((UDFToDouble(key) > 15.0) and (UDFToDouble(key) < 
20.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 20.0) and (UDFToDouble(key) > 
15.0)) (type: boolean)
               Statistics: Num rows: 111 Data size: 1179 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string), value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/cbo_union_view.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/cbo_union_view.q.out 
b/ql/src/test/results/clientpositive/cbo_union_view.q.out
index c8504a1..5552cfe 100644
--- a/ql/src/test/results/clientpositive/cbo_union_view.q.out
+++ b/ql/src/test/results/clientpositive/cbo_union_view.q.out
@@ -164,7 +164,7 @@ STAGE PLANS:
               insideView TRUE
             Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Filter Operator
-              predicate: ((key = 86) and (ds = '1')) (type: boolean)
+              predicate: ((ds = '1') and (key = 86)) (type: boolean)
               Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
               Select Operator
                 expressions: value (type: string)
@@ -189,7 +189,7 @@ STAGE PLANS:
               insideView TRUE
             Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Filter Operator
-              predicate: ((key = 86) and (ds = '1')) (type: boolean)
+              predicate: ((ds = '1') and (key = 86)) (type: boolean)
               Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
               Select Operator
                 expressions: value (type: string)
@@ -214,7 +214,7 @@ STAGE PLANS:
               insideView TRUE
             Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Filter Operator
-              predicate: ((key = 86) and (ds = '1')) (type: boolean)
+              predicate: ((ds = '1') and (key = 86)) (type: boolean)
               Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
               Select Operator
                 expressions: value (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/constant_prop_1.q.out
----------------------------------------------------------------------
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 3ba1f15..a5f5807 100644
--- a/ql/src/test/results/clientpositive/constant_prop_1.q.out
+++ b/ql/src/test/results/clientpositive/constant_prop_1.q.out
@@ -449,7 +449,7 @@ STAGE PLANS:
             alias: b
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: (key is not null and (value = '234')) (type: boolean)
+              predicate: ((value = '234') and key is not null) (type: boolean)
               Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE 
Column stats: NONE
               Reduce Output Operator
                 key expressions: key (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/constant_prop_3.q.out
----------------------------------------------------------------------
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 8119ccf..4b3de33 100644
--- a/ql/src/test/results/clientpositive/constant_prop_3.q.out
+++ b/ql/src/test/results/clientpositive/constant_prop_3.q.out
@@ -185,7 +185,7 @@ STAGE PLANS:
             alias: part_hive
             Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
             Filter Operator
-              predicate: ((p_size) IN (22, 14, 27, 49, 21, 33, 35, 28) and 
(p_brand <> 'Brand#34') and p_partkey is not null and (not (p_type like 
'ECONOMY BRUSHED%'))) (type: boolean)
+              predicate: ((not (p_type like 'ECONOMY BRUSHED%')) and (p_brand 
<> 'Brand#34') and (p_size) IN (22, 14, 27, 49, 21, 33, 35, 28) and p_partkey 
is not null) (type: boolean)
               Statistics: Num rows: 1 Data size: 0 Basic stats: PARTIAL Column 
stats: NONE
               Select Operator
                 expressions: p_partkey (type: int), p_brand (type: string), 
p_type (type: string), p_size (type: int)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/correlated_join_keys.q.out
----------------------------------------------------------------------
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 5464cd3..b81a561 100644
--- a/ql/src/test/results/clientpositive/correlated_join_keys.q.out
+++ b/ql/src/test/results/clientpositive/correlated_join_keys.q.out
@@ -83,7 +83,7 @@ STAGE PLANS:
             alias: a
             Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE 
Column stats: COMPLETE
             Filter Operator
-              predicate: (ca_zip is not null and ca_state is not null) (type: 
boolean)
+              predicate: (ca_state is not null and ca_zip is not null) (type: 
boolean)
               Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE 
Column stats: COMPLETE
               Select Operator
                 expressions: ca_state (type: string), ca_zip (type: string)
@@ -98,7 +98,7 @@ STAGE PLANS:
             alias: b
             Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE 
Column stats: COMPLETE
             Filter Operator
-              predicate: (ca_zip is not null and ca_state is not null) (type: 
boolean)
+              predicate: (ca_state is not null and ca_zip is not null) (type: 
boolean)
               Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE 
Column stats: COMPLETE
               Select Operator
                 expressions: ca_state (type: string), ca_zip (type: string)
@@ -174,7 +174,7 @@ STAGE PLANS:
             alias: a
             Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE 
Column stats: COMPLETE
             Filter Operator
-              predicate: (ca_zip is not null and ca_state is not null) (type: 
boolean)
+              predicate: (ca_state is not null and ca_zip is not null) (type: 
boolean)
               Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE 
Column stats: COMPLETE
               Select Operator
                 expressions: ca_state (type: string), ca_zip (type: string)
@@ -189,7 +189,7 @@ STAGE PLANS:
             alias: b
             Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE 
Column stats: COMPLETE
             Filter Operator
-              predicate: (ca_zip is not null and ca_state is not null) (type: 
boolean)
+              predicate: (ca_state is not null and ca_zip is not null) (type: 
boolean)
               Statistics: Num rows: 20 Data size: 3500 Basic stats: COMPLETE 
Column stats: COMPLETE
               Select Operator
                 expressions: ca_state (type: string), ca_zip (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/correlationoptimizer10.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer10.q.out 
b/ql/src/test/results/clientpositive/correlationoptimizer10.q.out
index 8a8920e..a03acd3 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer10.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer10.q.out
@@ -401,7 +401,7 @@ STAGE PLANS:
             alias: y
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((UDFToDouble(key) > 20.0) and (UDFToDouble(key) < 
200.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 200.0) and (UDFToDouble(key) > 
20.0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string)
@@ -578,7 +578,7 @@ STAGE PLANS:
             alias: y
             Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((UDFToDouble(key) > 20.0) and (UDFToDouble(key) < 
200.0)) (type: boolean)
+              predicate: ((UDFToDouble(key) < 200.0) and (UDFToDouble(key) > 
20.0)) (type: boolean)
               Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: key (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/c5b3ccc4/ql/src/test/results/clientpositive/correlationoptimizer13.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/correlationoptimizer13.q.out 
b/ql/src/test/results/clientpositive/correlationoptimizer13.q.out
index 6a8fe70..6d4f931 100644
--- a/ql/src/test/results/clientpositive/correlationoptimizer13.q.out
+++ b/ql/src/test/results/clientpositive/correlationoptimizer13.q.out
@@ -67,7 +67,7 @@ STAGE PLANS:
             alias: x1
             Statistics: Num rows: 1028 Data size: 22964 Basic stats: COMPLETE 
Column stats: NONE
             Filter Operator
-              predicate: ((c2 > 100) and (c1 < 120) and c3 is not null) (type: 
boolean)
+              predicate: ((c1 < 120) and (c2 > 100) and c3 is not null) (type: 
boolean)
               Statistics: Num rows: 114 Data size: 2546 Basic stats: COMPLETE 
Column stats: NONE
               Select Operator
                 expressions: c1 (type: int), c3 (type: string)

Reply via email to