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)