You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jc...@apache.org on 2017/09/20 19:38:38 UTC
[16/16] hive git commit: HIVE-17510: Make comparison of filter
predicates in q files deterministic (Jesus Camacho Rodriguez,
reviewed by Ashutosh Chauhan)
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 <jc...@apache.org>
Authored: Tue Sep 12 14:59:10 2017 -0700
Committer: Jesus Camacho Rodriguez <jc...@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)