diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelFactories.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelFactories.java index d50c517..f71d3f0 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelFactories.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelFactories.java @@ -19,10 +19,8 @@ import java.util.Collections; import java.util.List; -import java.util.Optional; import java.util.Set; -import org.apache.calcite.plan.Context; import org.apache.calcite.plan.Contexts; import org.apache.calcite.plan.RelOptCluster; import org.apache.calcite.plan.RelTraitSet; @@ -30,7 +28,6 @@ import org.apache.calcite.rel.RelNode; import org.apache.calcite.rel.core.AggregateCall; import org.apache.calcite.rel.core.CorrelationId; -import org.apache.calcite.rel.core.JoinInfo; import org.apache.calcite.rel.core.JoinRelType; import org.apache.calcite.rel.core.RelFactories.AggregateFactory; import org.apache.calcite.rel.core.RelFactories.FilterFactory; @@ -55,10 +52,6 @@ import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSemiJoin; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveSortLimit; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveUnion; -import org.apache.hadoop.hive.ql.optimizer.signature.RelTreeSignature; -import org.apache.hadoop.hive.ql.plan.mapper.StatsSource; -import org.apache.hadoop.hive.ql.stats.OperatorStats; - import com.google.common.collect.ImmutableList; public class HiveRelFactories { @@ -154,7 +147,6 @@ public RelNode createJoin(RelNode left, RelNode right, RexNode condition, JoinRelType joinType, Set variablesStopped, boolean semiJoinDone) { if (joinType == JoinRelType.SEMI) { - final JoinInfo joinInfo = JoinInfo.of(left, right, condition); final RelOptCluster cluster = left.getCluster(); return HiveSemiJoin.getSemiJoin(cluster, left.getTraitSet(), left, right, condition); } @@ -167,7 +159,6 @@ // According to calcite, it is going to be removed before Calcite-2.0 // TODO: to handle CorrelationId if (joinType == JoinRelType.SEMI) { - final JoinInfo joinInfo = JoinInfo.of(left, right, condition); final RelOptCluster cluster = left.getCluster(); return HiveSemiJoin.getSemiJoin(cluster, left.getTraitSet(), left, right, condition); } @@ -184,7 +175,6 @@ @Override public RelNode createSemiJoin(RelNode left, RelNode right, RexNode condition) { - final JoinInfo joinInfo = JoinInfo.of(left, right, condition); final RelOptCluster cluster = left.getCluster(); return HiveSemiJoin.getSemiJoin(cluster, left.getTraitSet(), left, right, condition); } diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelOptUtil.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelOptUtil.java index d215736a..e647b88 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelOptUtil.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveRelOptUtil.java @@ -55,7 +55,6 @@ import org.apache.calcite.rex.RexFieldAccess; import org.apache.calcite.rex.RexInputRef; import org.apache.calcite.rex.RexNode; -import org.apache.calcite.rex.RexOver; import org.apache.calcite.rex.RexTableInputRef; import org.apache.calcite.rex.RexTableInputRef.RelTableRef; import org.apache.calcite.rex.RexUtil; diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveSubQRemoveRelBuilder.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveSubQRemoveRelBuilder.java index dfe2913..a1d617b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveSubQRemoveRelBuilder.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/HiveSubQRemoveRelBuilder.java @@ -505,7 +505,7 @@ * {@code e AND TRUE} becomes {@code e}; * {@code e AND e2 AND NOT e} becomes {@code e2}. */ public RexNode and(Iterable operands) { - return RexUtil.simplifyAnds(cluster.getRexBuilder(), operands); + return RexUtil.composeConjunction(cluster.getRexBuilder(), operands); } /** Creates an OR. */ @@ -756,13 +756,13 @@ * and optimized in a similar way to the {@link #and} method. * If the result is TRUE no filter is created. */ public HiveSubQRemoveRelBuilder filter(Iterable predicates) { - final RexNode x = RexUtil.simplifyAnds(cluster.getRexBuilder(), predicates, true); + final RexNode x = RexUtil.composeConjunction(cluster.getRexBuilder(), predicates); if (x.isAlwaysFalse()) { return empty(); } if (!x.isAlwaysTrue()) { final Frame frame = stack.pop(); - final RelNode filter = filterFactory.createFilter(frame.rel, x); + final RelNode filter = filterFactory.createFilter(frame.rel, x, ImmutableSet.of()); stack.push(new Frame(filter, frame.right)); } return this; diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java index 8edd0b0..76ca54b 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveAggregateJoinTransposeRule.java @@ -45,7 +45,6 @@ import org.apache.calcite.sql.SqlAggFunction; import org.apache.calcite.sql.SqlSplittableAggFunction; import org.apache.calcite.tools.RelBuilder; -import org.apache.calcite.tools.RelBuilderFactory; import org.apache.calcite.util.ImmutableBitSet; import org.apache.calcite.util.mapping.Mapping; import org.apache.calcite.util.mapping.Mappings; @@ -337,6 +336,8 @@ populateEquivalence(equivalence, ref1.getIndex(), ref0.getIndex()); } } + default: + break; } } diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java index 7ea8154..930979d 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveFilterSetOpTransposeRule.java @@ -34,6 +34,7 @@ import org.apache.calcite.rex.RexExecutor; import org.apache.calcite.rex.RexNode; import org.apache.calcite.rex.RexSimplify; +import org.apache.calcite.rex.RexUnknownAs; import org.apache.calcite.rex.RexUtil; import org.apache.calcite.tools.RelBuilder; import org.apache.calcite.tools.RelBuilderFactory; @@ -49,22 +50,22 @@ new HiveFilterSetOpTransposeRule(HiveRelFactories.HIVE_BUILDER); /** - * Creates a HiveFilterSetOpTransposeRule. - * This rule rewrites - * Fil - * | - * Union + * Creates a HiveFilterSetOpTransposeRule. + * This rule rewrites + * Fil + * | + * Union * / \ * Op1 Op2 - * - * to - * Union - * /\ - * FIL - * | | + * + * to + * Union + * /\ + * FIL + * | | * Op1 Op2 - * - * + * + * * It additionally can remove branch(es) of filter if its able to determine * that they are going to generate empty result set. */ @@ -115,9 +116,9 @@ listBuilder.add(newCondition); RexExecutor executor = Util.first(filterRel.getCluster().getPlanner().getExecutor(), RexUtil.EXECUTOR); - final RexSimplify simplify = - new RexSimplify(rexBuilder, true, executor); - final RexNode x = simplify.simplifyAnds(listBuilder.build()); + final RexSimplify simplify = new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, executor); + final RexNode cond = RexUtil.composeConjunction(rexBuilder, listBuilder.build()); + final RexNode x = simplify.simplifyUnknownAs(cond, RexUnknownAs.FALSE); if (x.isAlwaysFalse()) { // this is the last branch, and it is always false // We assume alwaysFalse filter will get pushed down to TS so this diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveJoinConstraintsRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveJoinConstraintsRule.java index a657d13..05c7368 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveJoinConstraintsRule.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveJoinConstraintsRule.java @@ -16,44 +16,26 @@ */ package org.apache.hadoop.hive.ql.optimizer.calcite.rules; -import com.google.common.collect.Multimap; -import com.google.common.collect.Sets; import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.LinkedHashSet; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; import java.util.stream.Collectors; import org.apache.calcite.plan.RelOptRule; import org.apache.calcite.plan.RelOptRuleCall; import org.apache.calcite.plan.RelOptUtil; import org.apache.calcite.rel.RelNode; -import org.apache.calcite.rel.RelReferentialConstraint; -import org.apache.calcite.rel.core.Aggregate; -import org.apache.calcite.rel.core.Aggregate.Group; import org.apache.calcite.rel.core.Join; import org.apache.calcite.rel.core.JoinRelType; import org.apache.calcite.rel.core.Project; -import org.apache.calcite.rel.core.TableScan; -import org.apache.calcite.rel.metadata.RelMetadataQuery; -import org.apache.calcite.rel.type.RelDataType; import org.apache.calcite.rex.RexBuilder; import org.apache.calcite.rex.RexCall; import org.apache.calcite.rex.RexInputRef; import org.apache.calcite.rex.RexNode; -import org.apache.calcite.rex.RexOver; import org.apache.calcite.rex.RexPermuteInputsShuttle; -import org.apache.calcite.rex.RexTableInputRef; -import org.apache.calcite.rex.RexTableInputRef.RelTableRef; import org.apache.calcite.rex.RexUtil; import org.apache.calcite.sql.SqlKind; import org.apache.calcite.sql.fun.SqlStdOperatorTable; import org.apache.calcite.tools.RelBuilderFactory; import org.apache.calcite.util.ImmutableBitSet; -import org.apache.calcite.util.Pair; import org.apache.calcite.util.mapping.Mapping; import org.apache.calcite.util.mapping.MappingType; import org.apache.calcite.util.mapping.Mappings; diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveJoinPushTransitivePredicatesRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveJoinPushTransitivePredicatesRule.java index 48b7765..3569265 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveJoinPushTransitivePredicatesRule.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveJoinPushTransitivePredicatesRule.java @@ -48,6 +48,7 @@ import org.apache.hive.common.util.AnnotationUtils; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; /** @@ -104,15 +105,13 @@ if (!newLeftPredicate.isAlwaysTrue()) { RelNode curr = lChild; - lChild = filterFactory.createFilter( - lChild, newLeftPredicate.accept(new RexReplacer(lChild))); + lChild = filterFactory.createFilter(lChild, newLeftPredicate.accept(new RexReplacer(lChild)), ImmutableSet.of()); call.getPlanner().onCopy(curr, lChild); } if (!newRightPredicate.isAlwaysTrue()) { RelNode curr = rChild; - rChild = filterFactory.createFilter( - rChild, newRightPredicate.accept(new RexReplacer(rChild))); + rChild = filterFactory.createFilter(rChild, newRightPredicate.accept(new RexReplacer(rChild)), ImmutableSet.of()); call.getPlanner().onCopy(curr, rChild); } diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveProjectOverIntersectRemoveRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveProjectOverIntersectRemoveRule.java index 4d1347a..4a7a69f 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveProjectOverIntersectRemoveRule.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveProjectOverIntersectRemoveRule.java @@ -19,16 +19,12 @@ import org.apache.calcite.plan.RelOptRule; import org.apache.calcite.plan.RelOptRuleCall; -import org.apache.calcite.rel.RelNode; -import org.apache.calcite.rel.core.Aggregate; import org.apache.calcite.rel.core.Intersect; import org.apache.calcite.rel.core.Project; import org.apache.calcite.rex.RexUtil; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveIntersect; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveProject; -import com.google.common.base.Predicate; - /** * HiveProjectOverIntersectRemoveRule removes a HiveProject over another * HiveIntersect, provided the projects aren't projecting identical sets of diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveReduceExpressionsWithStatsRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveReduceExpressionsWithStatsRule.java index cdc94d5..4078968 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveReduceExpressionsWithStatsRule.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveReduceExpressionsWithStatsRule.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.Set; +import org.apache.calcite.plan.RelOptPredicateList; import org.apache.calcite.plan.RelOptRule; import org.apache.calcite.plan.RelOptRuleCall; import org.apache.calcite.rel.RelNode; @@ -34,10 +35,11 @@ import org.apache.calcite.rex.RexLiteral; import org.apache.calcite.rex.RexNode; import org.apache.calcite.rex.RexShuttle; +import org.apache.calcite.rex.RexSimplify; +import org.apache.calcite.rex.RexUnknownAs; import org.apache.calcite.rex.RexUtil; import org.apache.calcite.sql.SqlKind; import org.apache.calcite.util.Pair; -import org.apache.hadoop.hive.common.StatsSetupConst; import org.apache.hadoop.hive.ql.optimizer.calcite.RelOptHiveTable; import org.apache.hadoop.hive.ql.optimizer.calcite.reloperators.HiveIn; import org.apache.hadoop.hive.ql.plan.ColStatistics; @@ -272,7 +274,11 @@ // If we did not reduce, check the children nodes RexNode node = super.visitCall(call); if (node != call) { - node = RexUtil.simplify(rexBuilder, node); + // FIXME if this rule will make some changes; then it will invoke simplify on all subtrees during exiting the recursion + RexSimplify simplify = + new RexSimplify(rexBuilder, RelOptPredicateList.EMPTY, filterOp.getCluster().getPlanner().getExecutor()); + node = simplify.simplifyUnknownAs(node,RexUnknownAs.UNKNOWN); + } return node; } diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelDecorrelator.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelDecorrelator.java index 068b687..4526fc6 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelDecorrelator.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveRelDecorrelator.java @@ -87,7 +87,6 @@ import org.apache.calcite.util.Bug; import org.apache.calcite.util.Holder; import org.apache.calcite.util.ImmutableBitSet; -import org.apache.calcite.util.ImmutableIntList; import org.apache.calcite.util.Litmus; import org.apache.calcite.util.Pair; import org.apache.calcite.util.ReflectUtil; @@ -1907,7 +1906,7 @@ o1 = decorrFieldAccess((RexFieldAccess) o1); isCorrelated = true; } - if (isCorrelated && RexUtil.eq(o0, o1)) { + if (isCorrelated && o0.equals(o1)) { return rexBuilder.makeCall(SqlStdOperatorTable.IS_NOT_NULL, o0); } diff --git ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSubQueryRemoveRule.java ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSubQueryRemoveRule.java index 2a2c384..04d688c 100644 --- ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSubQueryRemoveRule.java +++ ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/rules/HiveSubQueryRemoveRule.java @@ -577,7 +577,7 @@ } @Override public RexNode visitSubQuery(RexSubQuery subQuery) { - return RexUtil.eq(subQuery, this.subQuery) ? replacement : subQuery; + return subQuery.equals(this.subQuery) ? replacement : subQuery; } } diff --git ql/src/test/results/clientpositive/constant_prop_3.q.out ql/src/test/results/clientpositive/constant_prop_3.q.out index 9742836..6c47f61 100644 --- ql/src/test/results/clientpositive/constant_prop_3.q.out +++ ql/src/test/results/clientpositive/constant_prop_3.q.out @@ -289,7 +289,7 @@ outputColumnNames: _col1, _col3, _col4, _col5, _col6, _col7, _col9 Statistics: Num rows: 1 Data size: 196 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col9 is null or (_col6 = 0L)) and (_col1 is not null or (_col6 = 0L) or _col9 is not null) and ((_col7 >= _col6) or (_col6 = 0L) or _col9 is not null or _col1 is null)) (type: boolean) + predicate: ((_col6 = 0L) or (_col9 is null and (_col7 >= _col6) and _col1 is not null)) (type: boolean) Statistics: Num rows: 1 Data size: 196 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col1 (type: int), _col3 (type: string), _col4 (type: string), _col5 (type: int) diff --git ql/src/test/results/clientpositive/llap/explainuser_1.q.out ql/src/test/results/clientpositive/llap/explainuser_1.q.out index e827cc2..b82a055 100644 --- ql/src/test/results/clientpositive/llap/explainuser_1.q.out +++ ql/src/test/results/clientpositive/llap/explainuser_1.q.out @@ -2625,7 +2625,7 @@ Select Operator [SEL_24] (rows=631 width=178) Output:["_col0","_col1"] Filter Operator [FIL_23] (rows=631 width=194) - predicate:((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col0 is null) and (_col0 is not null or (_col2 = 0L) or _col5 is not null)) + predicate:((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col0 is not null)) Select Operator [SEL_22] (rows=631 width=194) Output:["_col0","_col1","_col2","_col3","_col5"] Merge Join Operator [MERGEJOIN_37] (rows=631 width=194) @@ -2706,7 +2706,7 @@ Select Operator [SEL_23] (rows=38 width=223) Output:["_col0","_col1","_col2"] Filter Operator [FIL_22] (rows=38 width=228) - predicate:((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col0 is null) and (_col0 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null)) + predicate:(_col4 is null or (_col4 = 0L) or (_col7 is not null or _col0 is null or (_col5 < _col4)) is not true) Merge Join Operator [MERGEJOIN_45] (rows=38 width=228) Conds:RS_19._col0, _col1=RS_20._col0, _col2(Left Outer),Output:["_col0","_col1","_col2","_col4","_col5","_col7"] <-Reducer 2 [SIMPLE_EDGE] llap @@ -2795,7 +2795,7 @@ Select Operator [SEL_31] (rows=27 width=125) Output:["_col0","_col1"] Filter Operator [FIL_30] (rows=27 width=141) - predicate:((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col1 is null) and (_col1 is not null or (_col2 = 0L) or _col5 is not null)) + predicate:((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col1 is not null)) Select Operator [SEL_29] (rows=27 width=141) Output:["_col0","_col1","_col2","_col3","_col5"] Merge Join Operator [MERGEJOIN_40] (rows=27 width=141) @@ -2884,7 +2884,7 @@ Select Operator [SEL_33] (rows=7 width=106) Output:["_col0","_col1"] Filter Operator [FIL_32] (rows=7 width=114) - predicate:((_col6 is null or (_col3 = 0L) or _col3 is null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col0 is null) and (_col0 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null)) + predicate:(_col3 is null or (_col3 = 0L) or (_col6 is not null or _col0 is null or (_col4 < _col3)) is not true) Merge Join Operator [MERGEJOIN_48] (rows=7 width=114) Conds:RS_29._col0, _col1=RS_30._col0, _col2(Left Outer),Output:["_col0","_col1","_col3","_col4","_col6"] <-Reducer 3 [SIMPLE_EDGE] llap diff --git ql/src/test/results/clientpositive/llap/lineage3.q.out ql/src/test/results/clientpositive/llap/lineage3.q.out index c14b32a..b694bf1b 100644 --- ql/src/test/results/clientpositive/llap/lineage3.q.out +++ ql/src/test/results/clientpositive/llap/lineage3.q.out @@ -186,7 +186,7 @@ PREHOOK: type: QUERY PREHOOK: Input: default@src1 #### A masked pattern was here #### -{"version":"1.0","engine":"tez","database":"default","hash":"cbc4367150807328dda0f1cf4c74b811","queryText":"select key, value from src1\nwhere key not in (select key+18 from src1) order by key","edges":[{"sources":[2],"targets":[0],"edgeType":"PROJECTION"},{"sources":[3],"targets":[1],"edgeType":"PROJECTION"},{"sources":[2],"targets":[0,1],"expression":"(UDFToDouble(src1.key) = (UDFToDouble(src1.key) + 18.0D))","edgeType":"PREDICATE"},{"sources":[2],"targets":[0,1],"expression":"UDFToDouble(src1.key) is not null","edgeType":"PREDICATE"},{"sources":[4,2],"targets":[0,1],"expression":"((true is null or (count(*) = 0L)) and ((count((UDFToDouble(src1.key) + 18.0D)) >= count(*)) or (count(*) = 0L) or true is not null or src1.key is null) and (src1.key is not null or (count(*) = 0L) or true is not null))","edgeType":"PREDICATE"}],"vertices":[{"id":0,"vertexType":"COLUMN","vertexId":"key"},{"id":1,"vertexType":"COLUMN","vertexId":"value"},{"id":2,"vertexType":"COLUMN","vertexId":"default.src1.key"},{"id":3,"vertexType":"COLUMN","vertexId":"default.src1.value"},{"id":4,"vertexType":"TABLE","vertexId":"default.src1"}]} +{"version":"1.0","engine":"tez","database":"default","hash":"cbc4367150807328dda0f1cf4c74b811","queryText":"select key, value from src1\nwhere key not in (select key+18 from src1) order by key","edges":[{"sources":[2],"targets":[0],"edgeType":"PROJECTION"},{"sources":[3],"targets":[1],"edgeType":"PROJECTION"},{"sources":[2],"targets":[0,1],"expression":"(UDFToDouble(src1.key) = (UDFToDouble(src1.key) + 18.0D))","edgeType":"PREDICATE"},{"sources":[2],"targets":[0,1],"expression":"UDFToDouble(src1.key) is not null","edgeType":"PREDICATE"},{"sources":[4,2],"targets":[0,1],"expression":"((count(*) = 0L) or (true is null and (count((UDFToDouble(src1.key) + 18.0D)) >= count(*)) and src1.key is not null))","edgeType":"PREDICATE"}],"vertices":[{"id":0,"vertexType":"COLUMN","vertexId":"key"},{"id":1,"vertexType":"COLUMN","vertexId":"value"},{"id":2,"vertexType":"COLUMN","vertexId":"default.src1.key"},{"id":3,"vertexType":"COLUMN","vertexId":"default.src1.value"},{"id":4,"vertexType":"TABLE","vertexId":"default.src1"}]} PREHOOK: query: select * from src1 a where not exists (select cint from alltypesorc b diff --git ql/src/test/results/clientpositive/llap/subquery_ALL.q.out ql/src/test/results/clientpositive/llap/subquery_ALL.q.out index 48c9eea..773ed80 100644 --- ql/src/test/results/clientpositive/llap/subquery_ALL.q.out +++ ql/src/test/results/clientpositive/llap/subquery_ALL.q.out @@ -146,7 +146,7 @@ outputColumnNames: _col0, _col1, _col2, _col4 Statistics: Num rows: 39 Data size: 836 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col4 is null or (_col1 = 0L)) and ((_col2 >= _col1) or (_col1 = 0L) or _col4 is not null or _col0 is null) and (_col0 is not null or (_col1 = 0L) or _col4 is not null)) (type: boolean) + predicate: ((_col1 = 0L) or (_col4 is null and (_col2 >= _col1) and _col0 is not null)) (type: boolean) Statistics: Num rows: 39 Data size: 836 Basic stats: COMPLETE Column stats: COMPLETE Select Operator Statistics: Num rows: 39 Data size: 836 Basic stats: COMPLETE Column stats: COMPLETE @@ -236,10 +236,10 @@ #### A masked pattern was here #### CBO PLAN: HiveAggregate(group=[{}], agg#0=[count()]) - HiveJoin(condition=[AND(OR(IS NOT TRUE(<=($0, $1)), $2), OR($3, $2, <=($0, $1)), OR(>($0, $1), $2, <=($0, $1), $4))], joinType=[inner], algorithm=[none], cost=[not available]) + HiveJoin(condition=[OR($2, AND(>($0, $1), $3, IS NOT TRUE(OR(<=($0, $1), $4))))], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(p_partkey=[$0]) HiveTableScan(table=[[default, part]], table:alias=[part]) - HiveProject(m=[$0], ==[=($1, 0)], <==[<=($1, $2)], >=[>($1, $2)]) + HiveProject(m=[$0], ==[=($1, 0)], <>=[<>($1, 0)], >=[>($1, $2)]) HiveAggregate(group=[{}], m=[MAX($0)], c=[COUNT()], d=[COUNT($0)]) HiveTableScan(table=[[default, part]], table:alias=[part]) @@ -264,10 +264,10 @@ #### A masked pattern was here #### CBO PLAN: HiveAggregate(group=[{}], agg#0=[count()]) - HiveJoin(condition=[AND(OR(IS NOT TRUE(>=($0, $1)), $2), OR($3, $2, >=($0, $1)), OR(<($0, $1), $2, >=($0, $1), $4))], joinType=[inner], algorithm=[none], cost=[not available]) + HiveJoin(condition=[OR($2, AND(<($0, $1), $3, IS NOT TRUE(OR(>=($0, $1), $4))))], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(p_partkey=[$0]) HiveTableScan(table=[[default, part]], table:alias=[part]) - HiveProject(m=[$0], ==[=($1, 0)], <==[<=($1, $2)], >=[>($1, $2)]) + HiveProject(m=[$0], ==[=($1, 0)], <>=[<>($1, 0)], >=[>($1, $2)]) HiveAggregate(group=[{}], m=[MIN($0)], c=[COUNT()], d=[COUNT($0)]) HiveTableScan(table=[[default, part]], table:alias=[part]) @@ -292,10 +292,10 @@ #### A masked pattern was here #### CBO PLAN: HiveAggregate(group=[{}], agg#0=[count()]) - HiveJoin(condition=[AND(OR(IS NOT TRUE(<($0, $1)), $2), OR($3, $2, <($0, $1)), OR(>=($0, $1), $2, <($0, $1), $4))], joinType=[inner], algorithm=[none], cost=[not available]) + HiveJoin(condition=[OR($2, AND(>=($0, $1), $3, IS NOT TRUE(OR(<($0, $1), $4))))], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(p_partkey=[$0]) HiveTableScan(table=[[default, part]], table:alias=[part]) - HiveProject(m=[$0], ==[=($1, 0)], <==[<=($1, $2)], >=[>($1, $2)]) + HiveProject(m=[$0], ==[=($1, 0)], <>=[<>($1, 0)], >=[>($1, $2)]) HiveAggregate(group=[{}], m=[MAX($0)], c=[COUNT()], d=[COUNT($0)]) HiveTableScan(table=[[default, part]], table:alias=[part]) @@ -320,10 +320,10 @@ #### A masked pattern was here #### CBO PLAN: HiveAggregate(group=[{}], agg#0=[count()]) - HiveJoin(condition=[AND(OR(IS NOT TRUE(>($0, $1)), $2), OR($3, $2, >($0, $1)), OR(<=($0, $1), $2, >($0, $1), $4))], joinType=[inner], algorithm=[none], cost=[not available]) + HiveJoin(condition=[OR($2, AND(<=($0, $1), $3, IS NOT TRUE(OR(>($0, $1), $4))))], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(p_partkey=[$0]) HiveTableScan(table=[[default, part]], table:alias=[part]) - HiveProject(m=[$0], ==[=($1, 0)], <==[<=($1, $2)], >=[>($1, $2)]) + HiveProject(m=[$0], ==[=($1, 0)], <>=[<>($1, 0)], >=[>($1, $2)]) HiveAggregate(group=[{}], m=[MIN($0)], c=[COUNT()], d=[COUNT($0)]) HiveTableScan(table=[[default, part]], table:alias=[part]) @@ -348,10 +348,10 @@ #### A masked pattern was here #### CBO PLAN: HiveAggregate(group=[{}], agg#0=[count()]) - HiveJoin(condition=[AND(OR(IS NOT TRUE(>=($0, $1)), $2), OR($3, $2, >=($0, $1)), OR(<($0, $1), $2, >=($0, $1), $4))], joinType=[inner], algorithm=[none], cost=[not available]) + HiveJoin(condition=[OR($2, AND(<($0, $1), $3, IS NOT TRUE(OR(>=($0, $1), $4))))], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(p_size=[$5]) HiveTableScan(table=[[default, part]], table:alias=[part]) - HiveProject(m=[$0], ==[=($1, 0)], <==[<=($1, $2)], >=[>($1, $2)]) + HiveProject(m=[$0], ==[=($1, 0)], <>=[<>($1, 0)], >=[>($1, $2)]) HiveAggregate(group=[{}], m=[MIN($1)], c=[COUNT()], d=[COUNT($1)]) HiveProject(p_partkey=[$0], $f1=[$1]) HiveAggregate(group=[{0}], agg#0=[max($5)]) @@ -401,7 +401,7 @@ POSTHOOK: Input: default@part_null_n0 #### A masked pattern was here #### 0 -Warning: Shuffle Join MERGEJOIN[39][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product +Warning: Shuffle Join MERGEJOIN[45][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product PREHOOK: query: select count(*) from part where ((p_partkey <> ALL (select p_partkey from part_null_n0)) == false) PREHOOK: type: QUERY PREHOOK: Input: default@part @@ -413,8 +413,8 @@ POSTHOOK: Input: default@part_null_n0 #### A masked pattern was here #### 26 -Warning: Shuffle Join MERGEJOIN[37][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product -Warning: Shuffle Join MERGEJOIN[38][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 4' is a cross product +Warning: Shuffle Join MERGEJOIN[39][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product +Warning: Shuffle Join MERGEJOIN[40][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 4' is a cross product PREHOOK: query: select count(*) from part where (p_partkey <> ALL (select p_partkey from part_null_n0 where p_partkey is null)) is null PREHOOK: type: QUERY PREHOOK: Input: default@part @@ -449,8 +449,8 @@ #### A masked pattern was here #### CBO PLAN: HiveProject($f0=[$4]) - HiveJoin(condition=[AND(OR(IS NOT TRUE(<=($4, $0)), $1), OR($2, $1, <=($4, $0)), OR(>($4, $0), $1, <=($4, $0), $3))], joinType=[inner], algorithm=[none], cost=[not available]) - HiveProject(m=[$0], ==[=($1, 0)], <==[<=($1, $2)], >=[>($1, $2)]) + HiveJoin(condition=[OR($1, AND(>($4, $0), $2, IS NOT TRUE(OR(<=($4, $0), $3))))], joinType=[inner], algorithm=[none], cost=[not available]) + HiveProject(m=[$0], ==[=($1, 0)], <>=[<>($1, 0)], >=[>($1, $2)]) HiveAggregate(group=[{}], m=[MAX($1)], c=[COUNT()], d=[COUNT($1)]) HiveProject(p_partkey=[$0], $f1=[$1]) HiveAggregate(group=[{0}], agg#0=[count()]) @@ -617,14 +617,14 @@ 0 1 outputColumnNames: _col0, _col1, _col3, _col4, _col5, _col6, _col7, _col8 - residual filter predicates: {((_col0 < _col4) is not true or (_col5 = 0L))} {((_col5 <= _col6) or (_col5 = 0L) or (_col0 < _col4))} {((_col0 >= _col4) or (_col5 = 0L) or (_col0 < _col4) or (_col5 > _col6))} + residual filter predicates: {((_col5 = 0L) or ((_col0 >= _col4) and (_col5 <> 0L) and ((_col0 < _col4) or (_col5 > _col6)) is not true))} Statistics: Num rows: 42 Data size: 1916 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col1 (type: int), _col7 (type: bigint), _col8 (type: bigint), _col3 (type: boolean) outputColumnNames: _col1, _col5, _col6, _col8 Statistics: Num rows: 42 Data size: 1916 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col8 is null or (_col5 = 0L)) and ((_col6 >= _col5) or (_col5 = 0L) or _col8 is not null or _col1 is null) and (_col1 is not null or (_col5 = 0L) or _col8 is not null)) (type: boolean) + predicate: ((_col5 = 0L) or (_col8 is null and (_col6 >= _col5) and _col1 is not null)) (type: boolean) Statistics: Num rows: 42 Data size: 1916 Basic stats: COMPLETE Column stats: COMPLETE Select Operator Statistics: Num rows: 42 Data size: 1916 Basic stats: COMPLETE Column stats: COMPLETE @@ -757,15 +757,15 @@ #### A masked pattern was here #### CBO PLAN: HiveAggregate(group=[{}], agg#0=[count()]) - HiveJoin(condition=[AND(OR(IS NOT TRUE(<($0, $1)), $2), OR($3, $2, <($0, $1)), OR(>=($0, $1), $2, <($0, $1), $4))], joinType=[inner], algorithm=[none], cost=[not available]) + HiveJoin(condition=[OR($2, AND(>=($0, $1), $3, IS NOT TRUE(OR(<($0, $1), $4))))], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(p_partkey=[$0]) HiveTableScan(table=[[default, part]], table:alias=[part]) - HiveProject(m=[$0], ==[=($1, 0)], <==[<=($1, $2)], >=[>($1, $2)]) + HiveProject(m=[$0], ==[=($1, 0)], <>=[<>($1, 0)], >=[>($1, $2)]) HiveAggregate(group=[{}], m=[MAX($0)], c=[COUNT()], d=[COUNT($0)]) - HiveJoin(condition=[AND(OR(IS NOT TRUE(<($1, $2)), $3), OR($4, $3, <($1, $2)), OR(>=($1, $2), $3, <($1, $2), $5))], joinType=[inner], algorithm=[none], cost=[not available]) + HiveJoin(condition=[OR($3, AND(>=($1, $2), $4, IS NOT TRUE(OR(<($1, $2), $5))))], joinType=[inner], algorithm=[none], cost=[not available]) HiveProject(p_partkey=[$0], p_size=[$5]) HiveTableScan(table=[[default, part]], table:alias=[part]) - HiveProject(m=[$0], ==[=($1, 0)], <==[<=($1, $2)], >=[>($1, $2)]) + HiveProject(m=[$0], ==[=($1, 0)], <>=[<>($1, 0)], >=[>($1, $2)]) HiveAggregate(group=[{}], m=[MAX($0)], c=[COUNT()], d=[COUNT($0)]) HiveProject(p_size=[$0]) HiveAggregate(group=[{5}]) diff --git ql/src/test/results/clientpositive/llap/subquery_ANY.q.out ql/src/test/results/clientpositive/llap/subquery_ANY.q.out index 74b0d74..96ca2d9 100644 --- ql/src/test/results/clientpositive/llap/subquery_ANY.q.out +++ ql/src/test/results/clientpositive/llap/subquery_ANY.q.out @@ -308,7 +308,7 @@ POSTHOOK: Input: default@part_null_n0 #### A masked pattern was here #### 26 -Warning: Shuffle Join MERGEJOIN[37][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product +Warning: Shuffle Join MERGEJOIN[39][tables = [$hdt$_0, $hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product PREHOOK: query: select count(*) from part where (p_size= ANY (select p_partkey from part_null_n0)) is null PREHOOK: type: QUERY PREHOOK: Input: default@part @@ -320,8 +320,8 @@ POSTHOOK: Input: default@part_null_n0 #### A masked pattern was here #### 26 -Warning: Shuffle Join MERGEJOIN[37][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product -Warning: Shuffle Join MERGEJOIN[38][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 4' is a cross product +Warning: Shuffle Join MERGEJOIN[39][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 3' is a cross product +Warning: Shuffle Join MERGEJOIN[40][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 4' is a cross product PREHOOK: query: select count(*) from part where (p_partkey = ANY (select p_partkey from part_null_n0 where p_partkey is null)) is null PREHOOK: type: QUERY PREHOOK: Input: default@part diff --git ql/src/test/results/clientpositive/llap/subquery_in.q.out ql/src/test/results/clientpositive/llap/subquery_in.q.out index ea8fe5e..1dc34be 100644 --- ql/src/test/results/clientpositive/llap/subquery_in.q.out +++ ql/src/test/results/clientpositive/llap/subquery_in.q.out @@ -5131,15 +5131,15 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 13 Data size: 8307 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col5 is null) and (_col5 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null)) (type: boolean) - Statistics: Num rows: 1 Data size: 639 Basic stats: COMPLETE Column stats: COMPLETE + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col5 is null or (_col11 < _col10)) is not true) (type: boolean) + Statistics: Num rows: 7 Data size: 4473 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 1 Data size: 619 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 7 Data size: 4333 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 619 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 7 Data size: 4333 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -5393,15 +5393,15 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 13 Data size: 8307 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col5 is null) and (_col5 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null)) (type: boolean) - Statistics: Num rows: 1 Data size: 639 Basic stats: COMPLETE Column stats: COMPLETE + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col5 is null or (_col11 < _col10)) is not true) (type: boolean) + Statistics: Num rows: 7 Data size: 4473 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 1 Data size: 619 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 7 Data size: 4333 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 619 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 7 Data size: 4333 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat diff --git ql/src/test/results/clientpositive/llap/subquery_in_having.q.out ql/src/test/results/clientpositive/llap/subquery_in_having.q.out index 4b738fa..fc3c6b0 100644 --- ql/src/test/results/clientpositive/llap/subquery_in_having.q.out +++ ql/src/test/results/clientpositive/llap/subquery_in_having.q.out @@ -1862,7 +1862,7 @@ 1 Reducer 9 Statistics: Num rows: 1 Data size: 668 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and (_col2 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col2 is null)) (type: boolean) + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col2 is null or (_col5 < _col4)) is not true) (type: boolean) Statistics: Num rows: 1 Data size: 668 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string), _col2 (type: bigint) diff --git ql/src/test/results/clientpositive/llap/subquery_multi.q.out ql/src/test/results/clientpositive/llap/subquery_multi.q.out index 9ffb915..af25663 100644 --- ql/src/test/results/clientpositive/llap/subquery_multi.q.out +++ ql/src/test/results/clientpositive/llap/subquery_multi.q.out @@ -399,7 +399,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 1 Data size: 1355 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L)) and (_col3 is not null or (_col10 = 0L) or _col13 is not null) and ((_col11 >= _col10) or (_col10 = 0L) or _col13 is not null or _col3 is null)) (type: boolean) + predicate: ((_col10 = 0L) or (_col13 is null and (_col11 >= _col10) and _col3 is not null)) (type: boolean) Statistics: Num rows: 1 Data size: 1355 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -633,7 +633,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 1 Data size: 1355 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L)) and (_col3 is not null or (_col10 = 0L) or _col13 is not null) and ((_col11 >= _col10) or (_col10 = 0L) or _col13 is not null or _col3 is null)) (type: boolean) + predicate: ((_col10 = 0L) or (_col13 is null and (_col11 >= _col10) and _col3 is not null)) (type: boolean) Statistics: Num rows: 1 Data size: 1355 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -893,7 +893,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 1 Data size: 1355 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L)) and ((_col11 >= _col10) or (_col10 = 0L) or _col13 is not null or _col3 is null)) (type: boolean) + predicate: ((_col10 = 0L) or (_col13 is null and (_col11 >= _col10))) (type: boolean) Statistics: Num rows: 1 Data size: 1355 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -1130,7 +1130,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 1 Data size: 1335 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and (_col1 is not null or (_col9 = 0L) or _col12 is not null) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col1 is null)) (type: boolean) + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col1 is not null)) (type: boolean) Statistics: Num rows: 1 Data size: 1335 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -1828,7 +1828,7 @@ #### A masked pattern was here #### CBO PLAN: HiveProject(p_partkey=[$0], p_name=[$1], p_mfgr=[$2], p_brand=[$3], p_type=[$4], p_size=[$5], p_container=[$6], p_retailprice=[$7], p_comment=[$8]) - HiveFilter(condition=[AND(OR(IS NULL($13), =($10, 0), IS NULL($10)), OR(IS NOT NULL($3), =($10, 0), IS NULL($10), IS NOT NULL($13)), OR(IS NOT TRUE(<($11, $10)), =($10, 0), IS NULL($10), IS NOT NULL($13), IS NULL($3)))]) + HiveFilter(condition=[OR(IS NULL($10), =($10, 0), IS NOT TRUE(OR(IS NOT NULL($13), IS NULL($3), <($11, $10))))]) HiveJoin(condition=[AND(=($3, $12), =($14, $4))], joinType=[left], algorithm=[none], cost=[not available]) HiveJoin(condition=[=($9, $4)], joinType=[left], algorithm=[none], cost=[not available]) HiveProject(p_partkey=[$0], p_name=[$1], p_mfgr=[$2], p_brand=[$3], p_type=[$4], p_size=[$5], p_container=[$6], p_retailprice=[$7], p_comment=[$8]) @@ -2069,7 +2069,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 16 Data size: 3891 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and (_col3 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col3 is null)) (type: boolean) + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col3 is null or (_col11 < _col10)) is not true) (type: boolean) Statistics: Num rows: 16 Data size: 3891 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -2595,7 +2595,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 16 Data size: 5484 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and (_col3 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col3 is null)) (type: boolean) + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col3 is null or (_col11 < _col10)) is not true) (type: boolean) Statistics: Num rows: 16 Data size: 5484 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -2878,7 +2878,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 16 Data size: 3891 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and (_col3 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col3 is null)) (type: boolean) + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col3 is null or (_col11 < _col10)) is not true) (type: boolean) Statistics: Num rows: 16 Data size: 3891 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -3351,7 +3351,7 @@ outputColumnNames: _col0, _col2, _col4, _col5, _col7 Statistics: Num rows: 2 Data size: 64 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L)) and (_col2 is not null or (_col4 = 0L) or _col7 is not null) and ((_col5 >= _col4) or (_col4 = 0L) or _col7 is not null or _col2 is null)) (type: boolean) + predicate: ((_col4 = 0L) or (_col7 is null and (_col5 >= _col4) and _col2 is not null)) (type: boolean) Statistics: Num rows: 2 Data size: 64 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), 1 (type: int) @@ -4300,7 +4300,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 27 Data size: 17153 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col9 = 0L) or (_col0 = 3) or ((_col9 <> 0L) and _col12 is null and (_col10 >= _col9) and _col5 is not null)) (type: boolean) + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col5 is not null) or (_col0 = 3)) (type: boolean) Statistics: Num rows: 27 Data size: 17153 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) diff --git ql/src/test/results/clientpositive/llap/subquery_notin.q.out ql/src/test/results/clientpositive/llap/subquery_notin.q.out index c24b79d..1685203 100644 --- ql/src/test/results/clientpositive/llap/subquery_notin.q.out +++ ql/src/test/results/clientpositive/llap/subquery_notin.q.out @@ -121,7 +121,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 631 Data size: 122942 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col0 is null) and (_col0 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col0 is not null)) (type: boolean) Statistics: Num rows: 631 Data size: 122942 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: string) @@ -416,7 +416,7 @@ outputColumnNames: _col0, _col1, _col2, _col4, _col5, _col7 Statistics: Num rows: 38 Data size: 8914 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col0 is null) and (_col0 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null)) (type: boolean) + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col0 is null or (_col5 < _col4)) is not true) (type: boolean) Statistics: Num rows: 38 Data size: 8914 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col1 (type: string), _col0 (type: string), _col2 (type: int) @@ -708,7 +708,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 27 Data size: 3815 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col1 is null) and (_col1 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col1 is not null)) (type: boolean) Statistics: Num rows: 27 Data size: 3815 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: int) @@ -1033,15 +1033,15 @@ outputColumnNames: _col0, _col1, _col2, _col4, _col5, _col7 Statistics: Num rows: 15 Data size: 3605 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col2 is null) and (_col2 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null)) (type: boolean) - Statistics: Num rows: 15 Data size: 3605 Basic stats: COMPLETE Column stats: COMPLETE + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col2 is null or (_col5 < _col4)) is not true) (type: boolean) + Statistics: Num rows: 11 Data size: 2645 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col1 (type: string), _col0 (type: string), _col2 (type: int) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 15 Data size: 3345 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 11 Data size: 2453 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 15 Data size: 3345 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 11 Data size: 2453 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -1607,7 +1607,7 @@ outputColumnNames: _col0, _col1, _col2, _col4 Statistics: Num rows: 230 Data size: 23950 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col4 is null or (_col1 = 0L)) and ((_col2 >= _col1) or (_col1 = 0L) or _col4 is not null or _col0 is null) and (_col0 is not null or (_col1 = 0L) or _col4 is not null)) (type: boolean) + predicate: ((_col1 = 0L) or (_col4 is null and (_col2 >= _col1) and _col0 is not null)) (type: boolean) Statistics: Num rows: 230 Data size: 23950 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string) @@ -1797,15 +1797,15 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 64 Data size: 40340 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col5 is null) and (_col5 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null)) (type: boolean) - Statistics: Num rows: 64 Data size: 40340 Basic stats: COMPLETE Column stats: COMPLETE + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col5 is null or (_col11 < _col10)) is not true) (type: boolean) + Statistics: Num rows: 63 Data size: 39705 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 64 Data size: 39616 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 63 Data size: 38997 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 64 Data size: 39616 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 63 Data size: 38997 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -1984,7 +1984,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 33 Data size: 20987 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col5 is null) and (_col5 is not null or (_col9 = 0L) or _col12 is not null)) (type: boolean) + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col5 is not null)) (type: boolean) Statistics: Num rows: 33 Data size: 20987 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -2213,7 +2213,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 32 Data size: 20348 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col0 is null or _col5 is null) and ((_col0 is not null and _col5 is not null) or (_col9 = 0L) or _col12 is not null)) (type: boolean) + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col0 is not null and _col5 is not null)) (type: boolean) Statistics: Num rows: 32 Data size: 20348 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -2490,7 +2490,7 @@ outputColumnNames: _col1, _col3, _col4, _col6 Statistics: Num rows: 48 Data size: 660 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col1 is null) and (_col1 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col1 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 48 Data size: 660 Basic stats: COMPLETE Column stats: COMPLETE Select Operator Statistics: Num rows: 48 Data size: 660 Basic stats: COMPLETE Column stats: COMPLETE @@ -2689,7 +2689,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 32 Data size: 20348 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col7 is null) and (_col7 is not null or (_col9 = 0L) or _col12 is not null)) (type: boolean) + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col7 is not null)) (type: boolean) Statistics: Num rows: 32 Data size: 20348 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -2917,7 +2917,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 40 Data size: 25032 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col1 is null) and (_col1 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null)) (type: boolean) + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col1 is null or (_col11 < _col10)) is not true) (type: boolean) Statistics: Num rows: 40 Data size: 25032 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -3115,7 +3115,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col11, _col12, _col14 Statistics: Num rows: 59 Data size: 37149 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col14 is null or (_col11 = 0L) or _col11 is null) and ((_col12 < _col11) is not true or (_col11 = 0L) or _col11 is null or _col14 is not null or _col1 is null) and (_col1 is not null or (_col11 = 0L) or _col11 is null or _col14 is not null)) (type: boolean) + predicate: (_col11 is null or (_col11 = 0L) or (_col14 is not null or _col1 is null or (_col12 < _col11)) is not true) (type: boolean) Statistics: Num rows: 59 Data size: 37149 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -3297,7 +3297,7 @@ outputColumnNames: _col0, _col1, _col4, _col5, _col7 Statistics: Num rows: 58 Data size: 13682 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col1 is null) and (_col1 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null)) (type: boolean) + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col1 is null or (_col5 < _col4)) is not true) (type: boolean) Statistics: Num rows: 58 Data size: 13682 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string) @@ -3545,7 +3545,7 @@ outputColumnNames: _col0, _col1, _col4, _col5, _col7 Statistics: Num rows: 46 Data size: 10734 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col1 is null) and (_col1 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null)) (type: boolean) + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col1 is null or (_col5 < _col4)) is not true) (type: boolean) Statistics: Num rows: 46 Data size: 10734 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string) @@ -3815,7 +3815,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 907 Data size: 177590 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col1 is null) and (_col1 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col1 is not null)) (type: boolean) Statistics: Num rows: 907 Data size: 177590 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string) @@ -4118,16 +4118,16 @@ outputColumnNames: _col0, _col1, _col3, _col4, _col6 Statistics: Num rows: 1623 Data size: 309794 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col1 is null) and (_col1 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null)) (type: boolean) - Statistics: Num rows: 1401 Data size: 267414 Basic stats: COMPLETE Column stats: COMPLETE + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col1 is null or (_col4 < _col3)) is not true) (type: boolean) + Statistics: Num rows: 1317 Data size: 251386 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 1401 Data size: 267414 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1317 Data size: 251386 Basic stats: COMPLETE Column stats: COMPLETE Group By Operator aggregations: count() keys: _col0 (type: string) - minReductionHashAggr: 0.82155603 + minReductionHashAggr: 0.81017464 mode: hash outputColumnNames: _col0, _col1 Statistics: Num rows: 250 Data size: 23750 Basic stats: COMPLETE Column stats: COMPLETE @@ -4383,7 +4383,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 33 Data size: 20987 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col5 is null) and (_col5 is not null or (_col9 = 0L) or _col12 is not null)) (type: boolean) + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col5 is not null)) (type: boolean) Statistics: Num rows: 33 Data size: 20987 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -4613,7 +4613,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 33 Data size: 20987 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col5 is null) and (_col5 is not null or (_col9 = 0L) or _col12 is not null)) (type: boolean) + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col5 is not null)) (type: boolean) Statistics: Num rows: 33 Data size: 20987 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -4925,7 +4925,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 539 Data size: 104726 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col0 is null) and (_col0 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col0 is not null)) (type: boolean) Statistics: Num rows: 539 Data size: 104726 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: string) @@ -5631,7 +5631,7 @@ outputColumnNames: _col1, _col3, _col4, _col6 Statistics: Num rows: 53 Data size: 780 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col1 is null) and (_col1 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col1 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 53 Data size: 780 Basic stats: COMPLETE Column stats: COMPLETE Select Operator Statistics: Num rows: 53 Data size: 780 Basic stats: COMPLETE Column stats: COMPLETE @@ -5877,7 +5877,7 @@ outputColumnNames: _col0, _col1, _col2, _col4 Statistics: Num rows: 5 Data size: 108 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col4 is null or (_col1 = 0L)) and (_col0 is not null or (_col1 = 0L) or _col4 is not null) and ((_col2 >= _col1) or (_col1 = 0L) or _col4 is not null or _col0 is null)) (type: boolean) + predicate: ((_col1 = 0L) or (_col4 is null and (_col2 >= _col1) and _col0 is not null)) (type: boolean) Statistics: Num rows: 5 Data size: 108 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) @@ -6075,7 +6075,7 @@ outputColumnNames: _col0, _col3, _col4, _col6 Statistics: Num rows: 6 Data size: 80 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and (_col0 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col0 is null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col0 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 6 Data size: 80 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) @@ -6383,7 +6383,7 @@ outputColumnNames: _col0, _col1, _col3, _col4, _col6 Statistics: Num rows: 3 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and (_col1 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col1 is null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col1 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 3 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) @@ -6638,7 +6638,7 @@ outputColumnNames: _col0, _col1, _col3, _col4, _col6 Statistics: Num rows: 2 Data size: 56 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and (_col1 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col1 is null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col1 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 2 Data size: 56 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int), _col1 (type: int) @@ -6898,7 +6898,7 @@ outputColumnNames: _col0, _col1, _col3, _col4, _col6 Statistics: Num rows: 3 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and (_col1 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col1 is null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col1 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 3 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) @@ -7099,7 +7099,7 @@ outputColumnNames: _col0, _col3, _col4, _col6 Statistics: Num rows: 4 Data size: 88 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and (_col0 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col0 is null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col0 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 4 Data size: 88 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) @@ -7274,7 +7274,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 3 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and (_col1 is not null or (_col2 = 0L) or _col5 is not null) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col1 is null)) (type: boolean) + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col1 is not null)) (type: boolean) Statistics: Num rows: 3 Data size: 84 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) @@ -7459,7 +7459,7 @@ outputColumnNames: _col0, _col1, _col2, _col4 Statistics: Num rows: 4 Data size: 88 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col4 is null or (_col1 = 0L)) and (_col0 is not null or (_col1 = 0L) or _col4 is not null) and ((_col2 >= _col1) or (_col1 = 0L) or _col4 is not null or _col0 is null)) (type: boolean) + predicate: ((_col1 = 0L) or (_col4 is null and (_col2 >= _col1) and _col0 is not null)) (type: boolean) Statistics: Num rows: 4 Data size: 88 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) @@ -7642,15 +7642,15 @@ residual filter predicates: {(_col1 > _col7)} Statistics: Num rows: 1145 Data size: 236851 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col0 is null) and (_col0 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null)) (type: boolean) - Statistics: Num rows: 1145 Data size: 236851 Basic stats: COMPLETE Column stats: COMPLETE + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col0 is null or (_col4 < _col3)) is not true) (type: boolean) + Statistics: Num rows: 1077 Data size: 222809 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 1145 Data size: 203810 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1077 Data size: 191706 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1145 Data size: 203810 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1077 Data size: 191706 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat diff --git ql/src/test/results/clientpositive/llap/subquery_scalar.q.out ql/src/test/results/clientpositive/llap/subquery_scalar.q.out index 47e098d..4238470 100644 --- ql/src/test/results/clientpositive/llap/subquery_scalar.q.out +++ ql/src/test/results/clientpositive/llap/subquery_scalar.q.out @@ -3509,15 +3509,15 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 7 Data size: 3595 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L)) and (_col3 is not null or (_col10 = 0L) or _col13 is not null) and ((_col11 >= _col10) or (_col10 = 0L) or _col13 is not null or _col3 is null)) (type: boolean) - Statistics: Num rows: 6 Data size: 3081 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col10 = 0L) or (_col13 is null and (_col11 >= _col10) and _col3 is not null)) (type: boolean) + Statistics: Num rows: 4 Data size: 2054 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 6 Data size: 3081 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4 Data size: 2054 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 6 Data size: 3081 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4 Data size: 2054 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -3771,18 +3771,18 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 14 Data size: 2025 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and (_col3 is not null or (_col9 = 0L) or _col12 is not null) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col3 is null)) (type: boolean) - Statistics: Num rows: 14 Data size: 2025 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col3 is not null)) (type: boolean) + Statistics: Num rows: 9 Data size: 1301 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 14 Data size: 2025 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 9 Data size: 1301 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col4 (type: string) null sort order: z sort order: + Map-reduce partition columns: _col4 (type: string) - Statistics: Num rows: 14 Data size: 2025 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 9 Data size: 1301 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) Reducer 5 Execution mode: llap @@ -3795,14 +3795,14 @@ 1 _col1 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9 residual filter predicates: {(not (_col1 like _col9))} - Statistics: Num rows: 8 Data size: 1187 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 795 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 8 Data size: 1187 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 795 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 8 Data size: 1187 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 795 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat diff --git ql/src/test/results/clientpositive/llap/subquery_views.q.out ql/src/test/results/clientpositive/llap/subquery_views.q.out index 9948155..a00813c 100644 --- ql/src/test/results/clientpositive/llap/subquery_views.q.out +++ ql/src/test/results/clientpositive/llap/subquery_views.q.out @@ -290,7 +290,7 @@ outputColumnNames: _col0, _col1, _col4, _col5, _col7 Statistics: Num rows: 386 Data size: 73020 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col0 is null)) (type: boolean) + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col0 is null or (_col5 < _col4)) is not true) (type: boolean) Statistics: Num rows: 373 Data size: 70566 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: string) @@ -393,15 +393,15 @@ outputColumnNames: _col0, _col4, _col5, _col7 Statistics: Num rows: 319 Data size: 30993 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col0 is null) and (_col0 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null)) (type: boolean) - Statistics: Num rows: 304 Data size: 29540 Basic stats: COMPLETE Column stats: COMPLETE + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col0 is null or (_col5 < _col4)) is not true) (type: boolean) + Statistics: Num rows: 319 Data size: 30993 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 304 Data size: 26448 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 319 Data size: 27753 Basic stats: COMPLETE Column stats: COMPLETE Group By Operator keys: _col0 (type: string) - minReductionHashAggr: 0.97039473 + minReductionHashAggr: 0.97178686 mode: hash outputColumnNames: _col0 Statistics: Num rows: 9 Data size: 783 Basic stats: COMPLETE Column stats: COMPLETE diff --git ql/src/test/results/clientpositive/llap/sysdb.q.out ql/src/test/results/clientpositive/llap/sysdb.q.out index 38cadf3..e0b3b2a 100644 --- ql/src/test/results/clientpositive/llap/sysdb.q.out +++ ql/src/test/results/clientpositive/llap/sysdb.q.out @@ -1382,7 +1382,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: sys@skewed_string_list #### A masked pattern was here #### -3 +6 PREHOOK: query: select count(*) from skewed_string_list_values PREHOOK: type: QUERY PREHOOK: Input: sys@skewed_string_list_values @@ -1391,7 +1391,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: sys@skewed_string_list_values #### A masked pattern was here #### -3 +6 PREHOOK: query: select count(*) from skewed_values PREHOOK: type: QUERY PREHOOK: Input: sys@skewed_values diff --git ql/src/test/results/clientpositive/llap/sysdb_schq.q.out ql/src/test/results/clientpositive/llap/sysdb_schq.q.out index 8745e3b..35956d1 100644 --- ql/src/test/results/clientpositive/llap/sysdb_schq.q.out +++ ql/src/test/results/clientpositive/llap/sysdb_schq.q.out @@ -100,7 +100,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: sys@scheduled_queries #### A masked pattern was here #### -1 asd true hive * * * * * ? * hive_admin_user select 1 true +2 asd true hive * * * * * ? * hive_admin_user select 1 true PREHOOK: query: select scheduled_execution_id, scheduled_query_id, state, @@ -123,7 +123,7 @@ POSTHOOK: type: QUERY POSTHOOK: Input: sys@scheduled_executions #### A masked pattern was here #### -1 1 FINISHED true true NULL NULL +1 2 FINISHED true true NULL NULL PREHOOK: query: alter scheduled query asd disable PREHOOK: type: ALTER SCHEDULED QUERY POSTHOOK: query: alter scheduled query asd disable diff --git ql/src/test/results/clientpositive/llap/tez_smb_reduce_side.q.out ql/src/test/results/clientpositive/llap/tez_smb_reduce_side.q.out index 81e89d7..faab30a 100644 --- ql/src/test/results/clientpositive/llap/tez_smb_reduce_side.q.out +++ ql/src/test/results/clientpositive/llap/tez_smb_reduce_side.q.out @@ -709,7 +709,7 @@ outputColumnNames: _col0, _col2, _col3, _col5 Statistics: Num rows: 5 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L) or _col2 is null) and (_col0 is not null or (_col2 = 0L) or _col2 is null or _col5 is not null) and ((_col3 < _col2) is not true or (_col2 = 0L) or _col2 is null or _col5 is not null or _col0 is null)) (type: boolean) + predicate: (_col2 is null or (_col2 = 0L) or (_col5 is not null or _col0 is null or (_col3 < _col2)) is not true) (type: boolean) Statistics: Num rows: 5 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) @@ -939,7 +939,7 @@ outputColumnNames: _col0, _col2, _col3, _col5 Statistics: Num rows: 5 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L) or _col2 is null) and (_col0 is not null or (_col2 = 0L) or _col2 is null or _col5 is not null) and ((_col3 < _col2) is not true or (_col2 = 0L) or _col2 is null or _col5 is not null or _col0 is null)) (type: boolean) + predicate: (_col2 is null or (_col2 = 0L) or (_col5 is not null or _col0 is null or (_col3 < _col2)) is not true) (type: boolean) Statistics: Num rows: 5 Data size: 72 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) diff --git ql/src/test/results/clientpositive/llap/vector_groupby_mapjoin.q.out ql/src/test/results/clientpositive/llap/vector_groupby_mapjoin.q.out index 1fda1bc..5159a70 100644 --- ql/src/test/results/clientpositive/llap/vector_groupby_mapjoin.q.out +++ ql/src/test/results/clientpositive/llap/vector_groupby_mapjoin.q.out @@ -93,8 +93,8 @@ Filter Vectorization: className: VectorFilterOperator native: true - predicateExpression: FilterExprAndExpr(children: FilterExprOrExpr(children: SelectColumnIsNull(col 3:boolean), FilterLongColEqualLongScalar(col 4:bigint, val 0)), FilterExprOrExpr(children: FilterLongColGreaterEqualLongColumn(col 5:bigint, col 4:bigint), FilterLongColEqualLongScalar(col 4:bigint, val 0), SelectColumnIsNotNull(col 3:boolean), SelectColumnIsNull(col 0:string)), FilterExprOrExpr(children: SelectColumnIsNotNull(col 0:string), FilterLongColEqualLongScalar(col 4:bigint, val 0), SelectColumnIsNotNull(col 3:boolean))) - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col0 is null) and (_col0 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) + predicateExpression: FilterExprOrExpr(children: FilterLongColEqualLongScalar(col 4:bigint, val 0), FilterExprAndExpr(children: SelectColumnIsNull(col 3:boolean), FilterLongColGreaterEqualLongColumn(col 5:bigint, col 4:bigint), SelectColumnIsNotNull(col 0:string))) + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col0 is not null)) (type: boolean) Statistics: Num rows: 895 Data size: 175214 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: string) diff --git ql/src/test/results/clientpositive/spark/subquery_in.q.out ql/src/test/results/clientpositive/spark/subquery_in.q.out index ae56626..fa15abb 100644 --- ql/src/test/results/clientpositive/spark/subquery_in.q.out +++ ql/src/test/results/clientpositive/spark/subquery_in.q.out @@ -5017,7 +5017,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 14 Data size: 1730 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col5 is null) and (_col5 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null)) (type: boolean) + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col5 is null or (_col11 < _col10)) is not true) (type: boolean) Statistics: Num rows: 14 Data size: 1730 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -5273,7 +5273,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 14 Data size: 1730 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col5 is null) and (_col5 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null)) (type: boolean) + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col5 is null or (_col11 < _col10)) is not true) (type: boolean) Statistics: Num rows: 14 Data size: 1730 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) diff --git ql/src/test/results/clientpositive/spark/subquery_multi.q.out ql/src/test/results/clientpositive/spark/subquery_multi.q.out index 964552d..f6a58c7 100644 --- ql/src/test/results/clientpositive/spark/subquery_multi.q.out +++ ql/src/test/results/clientpositive/spark/subquery_multi.q.out @@ -393,7 +393,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 1 Data size: 39397 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L)) and (_col3 is not null or (_col10 = 0L) or _col13 is not null) and ((_col11 >= _col10) or (_col10 = 0L) or _col13 is not null or _col3 is null)) (type: boolean) + predicate: ((_col10 = 0L) or (_col13 is null and (_col11 >= _col10) and _col3 is not null)) (type: boolean) Statistics: Num rows: 1 Data size: 39397 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -627,7 +627,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 1 Data size: 39397 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L)) and (_col3 is not null or (_col10 = 0L) or _col13 is not null) and ((_col11 >= _col10) or (_col10 = 0L) or _col13 is not null or _col3 is null)) (type: boolean) + predicate: ((_col10 = 0L) or (_col13 is null and (_col11 >= _col10) and _col3 is not null)) (type: boolean) Statistics: Num rows: 1 Data size: 39397 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -858,15 +858,15 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 2 Data size: 71632 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L)) and ((_col11 >= _col10) or (_col10 = 0L) or _col13 is not null or _col3 is null)) (type: boolean) - Statistics: Num rows: 2 Data size: 71632 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col10 = 0L) or (_col13 is null and (_col11 >= _col10))) (type: boolean) + Statistics: Num rows: 1 Data size: 35816 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 2 Data size: 71632 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 35816 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 71632 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 35816 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -1095,7 +1095,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 1 Data size: 35833 Basic stats: PARTIAL Column stats: NONE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and (_col1 is not null or (_col9 = 0L) or _col12 is not null) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col1 is null)) (type: boolean) + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col1 is not null)) (type: boolean) Statistics: Num rows: 1 Data size: 35833 Basic stats: PARTIAL Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -1774,7 +1774,7 @@ #### A masked pattern was here #### CBO PLAN: HiveProject(p_partkey=[$0], p_name=[$1], p_mfgr=[$2], p_brand=[$3], p_type=[$4], p_size=[$5], p_container=[$6], p_retailprice=[$7], p_comment=[$8]) - HiveFilter(condition=[AND(OR(IS NULL($13), =($10, 0), IS NULL($10)), OR(IS NOT NULL($3), =($10, 0), IS NULL($10), IS NOT NULL($13)), OR(IS NOT TRUE(<($11, $10)), =($10, 0), IS NULL($10), IS NOT NULL($13), IS NULL($3)))]) + HiveFilter(condition=[OR(IS NULL($10), =($10, 0), IS NOT TRUE(OR(IS NOT NULL($13), IS NULL($3), <($11, $10))))]) HiveJoin(condition=[AND(=($3, $12), =($14, $4))], joinType=[left], algorithm=[none], cost=[not available]) HiveJoin(condition=[=($9, $4)], joinType=[left], algorithm=[none], cost=[not available]) HiveProject(p_partkey=[$0], p_name=[$1], p_mfgr=[$2], p_brand=[$3], p_type=[$4], p_size=[$5], p_container=[$6], p_retailprice=[$7], p_comment=[$8]) @@ -2056,7 +2056,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and (_col3 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col3 is null)) (type: boolean) + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col3 is null or (_col11 < _col10)) is not true) (type: boolean) Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -2593,7 +2593,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and (_col3 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col3 is null)) (type: boolean) + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col3 is null or (_col11 < _col10)) is not true) (type: boolean) Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -2852,7 +2852,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and (_col3 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col3 is null)) (type: boolean) + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col3 is null or (_col11 < _col10)) is not true) (type: boolean) Statistics: Num rows: 33 Data size: 4187 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -3333,24 +3333,24 @@ outputColumnNames: _col0, _col2, _col4, _col5, _col7 Statistics: Num rows: 27 Data size: 3757 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L)) and (_col2 is not null or (_col4 = 0L) or _col7 is not null) and ((_col5 >= _col4) or (_col4 = 0L) or _col7 is not null or _col2 is null)) (type: boolean) - Statistics: Num rows: 26 Data size: 3617 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col4 = 0L) or (_col7 is null and (_col5 >= _col4) and _col2 is not null)) (type: boolean) + Statistics: Num rows: 17 Data size: 2365 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), 1 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 26 Data size: 3617 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 17 Data size: 2365 Basic stats: COMPLETE Column stats: NONE Group By Operator keys: _col0 (type: int), _col1 (type: int) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 26 Data size: 3617 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 17 Data size: 2365 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int), _col1 (type: int) null sort order: zz sort order: ++ Map-reduce partition columns: _col0 (type: int), _col1 (type: int) - Statistics: Num rows: 26 Data size: 3617 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 17 Data size: 2365 Basic stats: COMPLETE Column stats: NONE Reducer 9 Execution mode: vectorized Reduce Operator Tree: @@ -4264,7 +4264,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col9 = 0L) or (_col0 = 3) or ((_col9 <> 0L) and _col12 is null and (_col10 >= _col9) and _col5 is not null)) (type: boolean) + predicate: ((_col9 = 0L) or (_col0 = 3) or (_col12 is null and (_col10 >= _col9) and _col5 is not null)) (type: boolean) Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) diff --git ql/src/test/results/clientpositive/spark/subquery_notin.q.out ql/src/test/results/clientpositive/spark/subquery_notin.q.out index 08930cc..8ba738c 100644 --- ql/src/test/results/clientpositive/spark/subquery_notin.q.out +++ ql/src/test/results/clientpositive/spark/subquery_notin.q.out @@ -123,15 +123,15 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col0 is null) and (_col0 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) - Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col0 is not null)) (type: boolean) + Statistics: Num rows: 366 Data size: 10110 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 366 Data size: 10110 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 366 Data size: 10110 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -410,7 +410,7 @@ outputColumnNames: _col0, _col1, _col2, _col4, _col5, _col7 Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col0 is null) and (_col0 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null)) (type: boolean) + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col0 is null or (_col5 < _col4)) is not true) (type: boolean) Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: string), _col0 (type: string), _col2 (type: int) @@ -698,15 +698,15 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col1 is null) and (_col1 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col1 is not null)) (type: boolean) + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: int) outputColumnNames: _col0, _col1 - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -1120,7 +1120,7 @@ outputColumnNames: _col0, _col1, _col2, _col4, _col5, _col7 Statistics: Num rows: 9 Data size: 1345 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col2 is null) and (_col2 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null)) (type: boolean) + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col2 is null or (_col5 < _col4)) is not true) (type: boolean) Statistics: Num rows: 9 Data size: 1345 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col1 (type: string), _col0 (type: string), _col2 (type: int) @@ -1628,15 +1628,15 @@ outputColumnNames: _col0, _col1, _col2, _col4 Statistics: Num rows: 182 Data size: 5033 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col4 is null or (_col1 = 0L)) and ((_col2 >= _col1) or (_col1 = 0L) or _col4 is not null or _col0 is null) and (_col0 is not null or (_col1 = 0L) or _col4 is not null)) (type: boolean) - Statistics: Num rows: 182 Data size: 5033 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col1 = 0L) or (_col4 is null and (_col2 >= _col1) and _col0 is not null)) (type: boolean) + Statistics: Num rows: 121 Data size: 3346 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 182 Data size: 5033 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 3346 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 182 Data size: 5033 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 121 Data size: 3346 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -1820,7 +1820,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col5 is null) and (_col5 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null)) (type: boolean) + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col5 is null or (_col11 < _col10)) is not true) (type: boolean) Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -2016,17 +2016,17 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col5 is null) and (_col5 is not null or (_col9 = 0L) or _col12 is not null)) (type: boolean) - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col5 is not null)) (type: boolean) + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: int) null sort order: z sort order: + - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) Reducer 4 Execution mode: vectorized @@ -2034,10 +2034,10 @@ Select Operator expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: string), VALUE._col1 (type: string), VALUE._col2 (type: string), VALUE._col3 (type: string), VALUE._col4 (type: int), VALUE._col5 (type: string), VALUE._col6 (type: double), VALUE._col7 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -2241,15 +2241,15 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and ((_col0 is not null and _col5 is not null) or (_col9 = 0L) or _col12 is not null) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col0 is null or _col5 is null)) (type: boolean) - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col0 is not null and _col5 is not null)) (type: boolean) + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -2532,7 +2532,7 @@ outputColumnNames: _col1, _col3, _col4, _col6 Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col1 is null) and (_col1 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col1 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Select Operator Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE @@ -2726,15 +2726,15 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col7 is null) and (_col7 is not null or (_col9 = 0L) or _col12 is not null)) (type: boolean) - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col7 is not null)) (type: boolean) + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -2965,7 +2965,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L) or _col10 is null) and ((_col11 < _col10) is not true or (_col10 = 0L) or _col10 is null or _col13 is not null or _col1 is null) and (_col1 is not null or (_col10 = 0L) or _col10 is null or _col13 is not null)) (type: boolean) + predicate: (_col10 is null or (_col10 = 0L) or (_col13 is not null or _col1 is null or (_col11 < _col10)) is not true) (type: boolean) Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -3165,7 +3165,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col11, _col12, _col14 Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col14 is null or (_col11 = 0L) or _col11 is null) and ((_col12 < _col11) is not true or (_col11 = 0L) or _col11 is null or _col14 is not null or _col1 is null) and (_col1 is not null or (_col11 = 0L) or _col11 is null or _col14 is not null)) (type: boolean) + predicate: (_col11 is null or (_col11 = 0L) or (_col14 is not null or _col1 is null or (_col12 < _col11)) is not true) (type: boolean) Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) @@ -3349,7 +3349,7 @@ outputColumnNames: _col0, _col1, _col4, _col5, _col7 Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col1 is null) and (_col1 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null)) (type: boolean) + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col1 is null or (_col5 < _col4)) is not true) (type: boolean) Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) @@ -3606,7 +3606,7 @@ outputColumnNames: _col0, _col1, _col4, _col5, _col7 Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col1 is null) and (_col1 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null)) (type: boolean) + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col1 is null or (_col5 < _col4)) is not true) (type: boolean) Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) @@ -3882,25 +3882,25 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col1 is null) and (_col1 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) - Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col1 is not null)) (type: boolean) + Statistics: Num rows: 366 Data size: 10110 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) outputColumnNames: _col0 - Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 366 Data size: 10110 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count() keys: _col0 (type: string) minReductionHashAggr: 0.99 mode: hash outputColumnNames: _col0, _col1 - Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 366 Data size: 10110 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) null sort order: z sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 366 Data size: 10110 Basic stats: COMPLETE Column stats: NONE value expressions: _col1 (type: bigint) Reducer 4 Execution mode: vectorized @@ -3910,16 +3910,16 @@ keys: KEY._col0 (type: string) mode: mergepartial outputColumnNames: _col0, _col1 - Statistics: Num rows: 275 Data size: 7596 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 183 Data size: 5055 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: _col1 is not null (type: boolean) - Statistics: Num rows: 275 Data size: 7596 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 183 Data size: 5055 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col1 (type: bigint) null sort order: z sort order: + Map-reduce partition columns: _col1 (type: bigint) - Statistics: Num rows: 275 Data size: 7596 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 183 Data size: 5055 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: string) Reducer 5 Reduce Operator Tree: @@ -3930,10 +3930,10 @@ 0 _col1 (type: bigint) 1 _col0 (type: bigint) outputColumnNames: _col0, _col1 - Statistics: Num rows: 302 Data size: 8355 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 201 Data size: 5560 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 302 Data size: 8355 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 201 Data size: 5560 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -4193,7 +4193,7 @@ outputColumnNames: _col0, _col1, _col3, _col4, _col6 Statistics: Num rows: 605 Data size: 6427 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col1 is null) and (_col1 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col1 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 605 Data size: 6427 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) @@ -4440,17 +4440,17 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col5 is null) and (_col5 is not null or (_col9 = 0L) or _col12 is not null)) (type: boolean) - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col5 is not null)) (type: boolean) + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col3 (type: string) null sort order: z sort order: + - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) Reducer 4 Execution mode: vectorized @@ -4458,10 +4458,10 @@ Select Operator expressions: VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: string), KEY.reducesinkkey0 (type: string), VALUE._col3 (type: string), VALUE._col4 (type: int), VALUE._col5 (type: string), VALUE._col6 (type: double), VALUE._col7 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -4679,17 +4679,17 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col5 is null) and (_col5 is not null or (_col9 = 0L) or _col12 is not null)) (type: boolean) - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col5 is not null)) (type: boolean) + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col3 (type: string), _col0 (type: int) null sort order: zz sort order: ++ - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE TopN Hash Memory Usage: 0.1 value expressions: _col1 (type: string), _col2 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) Reducer 4 @@ -4698,7 +4698,7 @@ Select Operator expressions: KEY.reducesinkkey1 (type: int), VALUE._col0 (type: string), VALUE._col1 (type: string), KEY.reducesinkkey0 (type: string), VALUE._col2 (type: string), VALUE._col3 (type: int), VALUE._col4 (type: string), VALUE._col5 (type: double), VALUE._col6 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 28 Data size: 3937 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 2530 Basic stats: COMPLETE Column stats: NONE Limit Number of rows: 4 Statistics: Num rows: 4 Data size: 560 Basic stats: COMPLETE Column stats: NONE @@ -4966,15 +4966,15 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col0 is null) and (_col0 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) - Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col0 is not null)) (type: boolean) + Statistics: Num rows: 366 Data size: 10110 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 366 Data size: 10110 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 550 Data size: 15193 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 366 Data size: 10110 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -5682,7 +5682,7 @@ outputColumnNames: _col1, _col3, _col4, _col6 Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col1 is null) and (_col1 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col1 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE Select Operator Statistics: Num rows: 30 Data size: 3807 Basic stats: COMPLETE Column stats: NONE @@ -5929,15 +5929,15 @@ outputColumnNames: _col0, _col1, _col2, _col4 Statistics: Num rows: 4 Data size: 412 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col4 is null or (_col1 = 0L)) and (_col0 is not null or (_col1 = 0L) or _col4 is not null) and ((_col2 >= _col1) or (_col1 = 0L) or _col4 is not null or _col0 is null)) (type: boolean) - Statistics: Num rows: 4 Data size: 412 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col1 = 0L) or (_col4 is null and (_col2 >= _col1) and _col0 is not null)) (type: boolean) + Statistics: Num rows: 2 Data size: 206 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 4 Data size: 412 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 206 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 4 Data size: 412 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 206 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -6189,7 +6189,7 @@ outputColumnNames: _col0, _col3, _col4, _col6 Statistics: Num rows: 4 Data size: 378 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and (_col0 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col0 is null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col0 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 4 Data size: 378 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int) @@ -6449,7 +6449,7 @@ outputColumnNames: _col0, _col1, _col3, _col4, _col6 Statistics: Num rows: 3 Data size: 9 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and (_col1 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col1 is null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col1 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 3 Data size: 9 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int) @@ -6689,7 +6689,7 @@ outputColumnNames: _col0, _col1, _col3, _col4, _col6 Statistics: Num rows: 4 Data size: 19 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and (_col1 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col1 is null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col1 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 4 Data size: 19 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: int) @@ -6941,7 +6941,7 @@ outputColumnNames: _col0, _col1, _col3, _col4, _col6 Statistics: Num rows: 6 Data size: 22 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and (_col1 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col1 is null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col1 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 6 Data size: 22 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int) @@ -7151,7 +7151,7 @@ outputColumnNames: _col0, _col3, _col4, _col6 Statistics: Num rows: 3 Data size: 12 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and (_col0 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col0 is null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col0 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 3 Data size: 12 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int) @@ -7328,15 +7328,15 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 3 Data size: 62 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and (_col1 is not null or (_col2 = 0L) or _col5 is not null) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col1 is null)) (type: boolean) - Statistics: Num rows: 2 Data size: 41 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col1 is not null)) (type: boolean) + Statistics: Num rows: 1 Data size: 20 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 41 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 20 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 41 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 20 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -7503,15 +7503,15 @@ outputColumnNames: _col0, _col1, _col2, _col4 Statistics: Num rows: 3 Data size: 62 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col4 is null or (_col1 = 0L)) and (_col0 is not null or (_col1 = 0L) or _col4 is not null) and ((_col2 >= _col1) or (_col1 = 0L) or _col4 is not null or _col0 is null)) (type: boolean) - Statistics: Num rows: 2 Data size: 41 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col1 = 0L) or (_col4 is null and (_col2 >= _col1) and _col0 is not null)) (type: boolean) + Statistics: Num rows: 1 Data size: 20 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int) outputColumnNames: _col0 - Statistics: Num rows: 2 Data size: 41 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 20 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 2 Data size: 41 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 1 Data size: 20 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -7733,7 +7733,7 @@ residual filter predicates: {(_col1 > _col7)} Statistics: Num rows: 8367 Data size: 186148 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col0 is null) and (_col0 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col0 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 8367 Data size: 186148 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) diff --git ql/src/test/results/clientpositive/spark/subquery_scalar.q.out ql/src/test/results/clientpositive/spark/subquery_scalar.q.out index fb30e4f..35a96b7 100644 --- ql/src/test/results/clientpositive/spark/subquery_scalar.q.out +++ ql/src/test/results/clientpositive/spark/subquery_scalar.q.out @@ -3420,15 +3420,15 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col10, _col11, _col13 Statistics: Num rows: 7 Data size: 2279 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col13 is null or (_col10 = 0L)) and (_col3 is not null or (_col10 = 0L) or _col13 is not null) and ((_col11 >= _col10) or (_col10 = 0L) or _col13 is not null or _col3 is null)) (type: boolean) - Statistics: Num rows: 6 Data size: 1953 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col10 = 0L) or (_col13 is null and (_col11 >= _col10) and _col3 is not null)) (type: boolean) + Statistics: Num rows: 4 Data size: 1302 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 6 Data size: 1953 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4 Data size: 1302 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 6 Data size: 1953 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 4 Data size: 1302 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat @@ -3689,18 +3689,18 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9, _col10, _col12 Statistics: Num rows: 14 Data size: 1968 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col12 is null or (_col9 = 0L)) and (_col3 is not null or (_col9 = 0L) or _col12 is not null) and ((_col10 >= _col9) or (_col9 = 0L) or _col12 is not null or _col3 is null)) (type: boolean) - Statistics: Num rows: 14 Data size: 1968 Basic stats: COMPLETE Column stats: NONE + predicate: ((_col9 = 0L) or (_col12 is null and (_col10 >= _col9) and _col3 is not null)) (type: boolean) + Statistics: Num rows: 9 Data size: 1265 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 14 Data size: 1968 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 9 Data size: 1265 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col4 (type: string) null sort order: z sort order: + Map-reduce partition columns: _col4 (type: string) - Statistics: Num rows: 14 Data size: 1968 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 9 Data size: 1265 Basic stats: COMPLETE Column stats: NONE value expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) Reducer 5 Reduce Operator Tree: @@ -3711,17 +3711,17 @@ 0 _col4 (type: string) 1 _col1 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8, _col9 - Statistics: Num rows: 15 Data size: 2164 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 9 Data size: 1391 Basic stats: COMPLETE Column stats: NONE Filter Operator predicate: (not (_col1 like _col9)) (type: boolean) - Statistics: Num rows: 8 Data size: 1154 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 772 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col1 (type: string), _col2 (type: string), _col3 (type: string), _col4 (type: string), _col5 (type: int), _col6 (type: string), _col7 (type: double), _col8 (type: string) outputColumnNames: _col0, _col1, _col2, _col3, _col4, _col5, _col6, _col7, _col8 - Statistics: Num rows: 8 Data size: 1154 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 772 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 8 Data size: 1154 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 5 Data size: 772 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.SequenceFileInputFormat output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat diff --git ql/src/test/results/clientpositive/spark/subquery_views.q.out ql/src/test/results/clientpositive/spark/subquery_views.q.out index 6fbccf8..2d4aae2 100644 --- ql/src/test/results/clientpositive/spark/subquery_views.q.out +++ ql/src/test/results/clientpositive/spark/subquery_views.q.out @@ -265,7 +265,7 @@ outputColumnNames: _col0, _col4, _col5, _col7 Statistics: Num rows: 365 Data size: 3878 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col0 is null) and (_col0 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null)) (type: boolean) + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col0 is null or (_col5 < _col4)) is not true) (type: boolean) Statistics: Num rows: 365 Data size: 3878 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string) @@ -362,7 +362,7 @@ outputColumnNames: _col0, _col1, _col4, _col5, _col7 Statistics: Num rows: 365 Data size: 3878 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col0 is null)) (type: boolean) + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col0 is null or (_col5 < _col4)) is not true) (type: boolean) Statistics: Num rows: 365 Data size: 3878 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col1 (type: string) diff --git ql/src/test/results/clientpositive/spark/union_view.q.out ql/src/test/results/clientpositive/spark/union_view.q.out index 6423ea4..9b722d7 100644 --- ql/src/test/results/clientpositive/spark/union_view.q.out +++ ql/src/test/results/clientpositive/spark/union_view.q.out @@ -483,10 +483,10 @@ 86 val_86 2 86 val_86 3 86 val_86 3 -86 val_86 2 -86 val_86 2 86 val_86 3 86 val_86 3 +86 val_86 2 +86 val_86 2 86 val_86 1 STAGE DEPENDENCIES: Stage-1 is a root stage diff --git ql/src/test/results/clientpositive/subquery_notin_having.q.out ql/src/test/results/clientpositive/subquery_notin_having.q.out index fcf806a..8c2c09a 100644 --- ql/src/test/results/clientpositive/subquery_notin_having.q.out +++ ql/src/test/results/clientpositive/subquery_notin_having.q.out @@ -133,7 +133,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 333 Data size: 37299 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col0 is null) and (_col0 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col0 is not null)) (type: boolean) Statistics: Num rows: 333 Data size: 37299 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: bigint) @@ -365,7 +365,7 @@ outputColumnNames: _col0, _col1, _col3, _col4, _col6 Statistics: Num rows: 7 Data size: 798 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col6 is null or (_col3 = 0L) or _col3 is null) and ((_col4 < _col3) is not true or (_col3 = 0L) or _col3 is null or _col6 is not null or _col0 is null) and (_col0 is not null or (_col3 = 0L) or _col3 is null or _col6 is not null)) (type: boolean) + predicate: (_col3 is null or (_col3 = 0L) or (_col6 is not null or _col0 is null or (_col4 < _col3)) is not true) (type: boolean) Statistics: Num rows: 7 Data size: 798 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: double) @@ -674,7 +674,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 6 Data size: 740 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col0 is null) and (_col0 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col0 is not null)) (type: boolean) Statistics: Num rows: 6 Data size: 740 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: double) @@ -996,7 +996,7 @@ outputColumnNames: _col0, _col1, _col2, _col4 Statistics: Num rows: 2 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col4 is null or (_col1 = 0L)) and (_col0 is not null or (_col1 = 0L) or _col4 is not null) and ((_col2 >= _col1) or (_col1 = 0L) or _col4 is not null or _col0 is null)) (type: boolean) + predicate: ((_col1 = 0L) or (_col4 is null and (_col2 >= _col1) and _col0 is not null)) (type: boolean) Statistics: Num rows: 2 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) @@ -1222,7 +1222,7 @@ outputColumnNames: _col0, _col2, _col3, _col5 Statistics: Num rows: 2 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L) or _col2 is null) and (_col0 is not null or (_col2 = 0L) or _col2 is null or _col5 is not null) and ((_col3 < _col2) is not true or (_col2 = 0L) or _col2 is null or _col5 is not null or _col0 is null)) (type: boolean) + predicate: (_col2 is null or (_col2 = 0L) or (_col5 is not null or _col0 is null or (_col3 < _col2)) is not true) (type: boolean) Statistics: Num rows: 2 Data size: 48 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: int) diff --git ql/src/test/results/clientpositive/subquery_unqualcolumnrefs.q.out ql/src/test/results/clientpositive/subquery_unqualcolumnrefs.q.out index 587e118c..a26e3fd 100644 --- ql/src/test/results/clientpositive/subquery_unqualcolumnrefs.q.out +++ ql/src/test/results/clientpositive/subquery_unqualcolumnrefs.q.out @@ -481,7 +481,7 @@ outputColumnNames: _col0, _col1, _col2, _col4, _col5, _col7 Statistics: Num rows: 38 Data size: 8914 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col7 is null or (_col4 = 0L) or _col4 is null) and ((_col5 < _col4) is not true or (_col4 = 0L) or _col4 is null or _col7 is not null or _col0 is null) and (_col0 is not null or (_col4 = 0L) or _col4 is null or _col7 is not null)) (type: boolean) + predicate: (_col4 is null or (_col4 = 0L) or (_col7 is not null or _col0 is null or (_col5 < _col4)) is not true) (type: boolean) Statistics: Num rows: 38 Data size: 8914 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col1 (type: string), _col0 (type: string), _col2 (type: int) diff --git ql/src/test/results/clientpositive/vector_groupby_mapjoin.q.out ql/src/test/results/clientpositive/vector_groupby_mapjoin.q.out index ff60103..666627d 100644 --- ql/src/test/results/clientpositive/vector_groupby_mapjoin.q.out +++ ql/src/test/results/clientpositive/vector_groupby_mapjoin.q.out @@ -230,8 +230,8 @@ Filter Vectorization: className: VectorFilterOperator native: true - predicateExpression: FilterExprAndExpr(children: FilterExprOrExpr(children: SelectColumnIsNull(col 2:boolean), FilterLongColEqualLongScalar(col 3:bigint, val 0)), FilterExprOrExpr(children: FilterLongColGreaterEqualLongColumn(col 4:bigint, col 3:bigint), FilterLongColEqualLongScalar(col 3:bigint, val 0), SelectColumnIsNotNull(col 2:boolean), SelectColumnIsNull(col 0:string)), FilterExprOrExpr(children: SelectColumnIsNotNull(col 0:string), FilterLongColEqualLongScalar(col 3:bigint, val 0), SelectColumnIsNotNull(col 2:boolean))) - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col0 is null) and (_col0 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) + predicateExpression: FilterExprOrExpr(children: FilterLongColEqualLongScalar(col 3:bigint, val 0), FilterExprAndExpr(children: SelectColumnIsNull(col 2:boolean), FilterLongColGreaterEqualLongColumn(col 4:bigint, col 3:bigint), SelectColumnIsNotNull(col 0:string))) + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col0 is not null)) (type: boolean) Statistics: Num rows: 895 Data size: 175214 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: string) @@ -353,8 +353,8 @@ Filter Vectorization: className: VectorFilterOperator native: true - predicateExpression: FilterExprAndExpr(children: FilterExprOrExpr(children: SelectColumnIsNull(col 2:boolean), FilterLongColEqualLongScalar(col 3:bigint, val 0)), FilterExprOrExpr(children: FilterLongColGreaterEqualLongColumn(col 4:bigint, col 3:bigint), FilterLongColEqualLongScalar(col 3:bigint, val 0), SelectColumnIsNotNull(col 2:boolean), SelectColumnIsNull(col 0:string)), FilterExprOrExpr(children: SelectColumnIsNotNull(col 0:string), FilterLongColEqualLongScalar(col 3:bigint, val 0), SelectColumnIsNotNull(col 2:boolean))) - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col0 is null) and (_col0 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) + predicateExpression: FilterExprOrExpr(children: FilterLongColEqualLongScalar(col 3:bigint, val 0), FilterExprAndExpr(children: SelectColumnIsNull(col 2:boolean), FilterLongColGreaterEqualLongColumn(col 4:bigint, col 3:bigint), SelectColumnIsNotNull(col 0:string))) + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col0 is not null)) (type: boolean) Statistics: Num rows: 895 Data size: 175214 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: string) @@ -415,7 +415,7 @@ outputColumnNames: _col0, _col1, _col2, _col3, _col5 Statistics: Num rows: 895 Data size: 175214 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: ((_col5 is null or (_col2 = 0L)) and ((_col3 >= _col2) or (_col2 = 0L) or _col5 is not null or _col0 is null) and (_col0 is not null or (_col2 = 0L) or _col5 is not null)) (type: boolean) + predicate: ((_col2 = 0L) or (_col5 is null and (_col3 >= _col2) and _col0 is not null)) (type: boolean) Statistics: Num rows: 895 Data size: 175214 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: _col0 (type: string), _col1 (type: string)