HIVE-11375: Broken processing of queries containing NOT (x IS NOT NULL and x <> 0) (Aihua Xu, reviewed by Ashutosh Chauhan)
Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/a1626749 Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/a1626749 Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/a1626749 Branch: refs/heads/llap Commit: a16267491978a35f4dd0478405b88a74725050a5 Parents: e3664e2 Author: Aihua Xu <aihu...@gmail.com> Authored: Fri Aug 21 10:39:21 2015 -0700 Committer: Chao Sun <sunc...@apache.org> Committed: Fri Aug 21 10:39:21 2015 -0700 ---------------------------------------------------------------------- .../optimizer/ConstantPropagateProcFactory.java | 100 ++++- .../hadoop/hive/ql/udf/generic/GenericUDF.java | 14 +- .../hive/ql/udf/generic/GenericUDFOPAnd.java | 4 + .../hive/ql/udf/generic/GenericUDFOPEqual.java | 4 + .../generic/GenericUDFOPEqualOrGreaterThan.java | 4 + .../generic/GenericUDFOPEqualOrLessThan.java | 4 + .../ql/udf/generic/GenericUDFOPGreaterThan.java | 4 + .../ql/udf/generic/GenericUDFOPLessThan.java | 4 + .../ql/udf/generic/GenericUDFOPNotEqual.java | 5 + .../ql/udf/generic/GenericUDFOPNotNull.java | 4 + .../hive/ql/udf/generic/GenericUDFOPNull.java | 4 + .../hive/ql/udf/generic/GenericUDFOPOr.java | 4 + .../queries/clientpositive/folder_predicate.q | 32 ++ .../clientpositive/annotate_stats_filter.q.out | 10 +- .../results/clientpositive/decimal_udf.q.out | 18 +- .../clientpositive/filter_cond_pushdown.q.out | 32 +- .../clientpositive/filter_join_breaktask.q.out | 12 +- .../test/results/clientpositive/fold_when.q.out | 16 +- .../clientpositive/folder_predicate.q.out | 368 +++++++++++++++++++ .../clientpositive/input_testxpath2.q.out | 2 +- .../list_bucket_query_oneskew_3.q.out | 6 +- .../clientpositive/rand_partitionpruner3.q.out | 12 +- .../clientpositive/select_unquote_not.q.out | 8 +- .../spark/filter_join_breaktask.q.out | 12 +- .../tez/filter_join_breaktask.q.out | 12 +- .../clientpositive/tez/vector_decimal_udf.q.out | 24 +- .../clientpositive/udf_isnull_isnotnull.q.out | 2 +- .../test/results/clientpositive/udf_size.q.out | 2 +- .../clientpositive/vector_decimal_udf.q.out | 24 +- 29 files changed, 640 insertions(+), 107 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java index 55ad0ce..5c6a6df 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ConstantPropagateProcFactory.java @@ -18,6 +18,7 @@ package org.apache.hadoop.hive.ql.optimizer; import java.io.Serializable; import java.util.ArrayList; import java.util.BitSet; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -70,6 +71,10 @@ import org.apache.hadoop.hive.ql.udf.generic.GenericUDFBridge; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFCase; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPAnd; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqual; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqualOrGreaterThan; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPEqualOrLessThan; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPGreaterThan; +import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPLessThan; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNot; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNotEqual; import org.apache.hadoop.hive.ql.udf.generic.GenericUDFOPNotNull; @@ -94,6 +99,7 @@ import org.apache.hadoop.hive.serde2.typeinfo.TypeInfo; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoFactory; import org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; @@ -223,6 +229,65 @@ public final class ConstantPropagateProcFactory { } /** + * Combines the logical not() operator with the child operator if possible. + * @param desc the expression to be evaluated + * @return the new expression to be replaced + * @throws UDFArgumentException + */ + private static ExprNodeDesc foldNegative(ExprNodeDesc desc) throws UDFArgumentException { + if (desc instanceof ExprNodeGenericFuncDesc) { + ExprNodeGenericFuncDesc funcDesc = (ExprNodeGenericFuncDesc) desc; + + GenericUDF udf = funcDesc.getGenericUDF(); + if (udf instanceof GenericUDFOPNot) { + ExprNodeDesc child = funcDesc.getChildren().get(0); + if (child instanceof ExprNodeGenericFuncDesc) { + ExprNodeGenericFuncDesc childDesc = (ExprNodeGenericFuncDesc)child; + GenericUDF childUDF = childDesc.getGenericUDF(); + List<ExprNodeDesc> grandChildren = child.getChildren(); + + if (childUDF instanceof GenericUDFBaseCompare || + childUDF instanceof GenericUDFOPNull || + childUDF instanceof GenericUDFOPNotNull) { + List<ExprNodeDesc> newGrandChildren = new ArrayList<ExprNodeDesc>(); + for(ExprNodeDesc grandChild : grandChildren) { + newGrandChildren.add(foldNegative(grandChild)); + } + + return ExprNodeGenericFuncDesc.newInstance( + childUDF.negative(), + newGrandChildren); + } else if (childUDF instanceof GenericUDFOPAnd || + childUDF instanceof GenericUDFOPOr) { + List<ExprNodeDesc> newGrandChildren = new ArrayList<ExprNodeDesc>(); + for(ExprNodeDesc grandChild : grandChildren) { + newGrandChildren.add(foldNegative( + ExprNodeGenericFuncDesc.newInstance(new GenericUDFOPNot(), + Arrays.asList(grandChild)))); + } + + return ExprNodeGenericFuncDesc.newInstance( + childUDF.negative(), + newGrandChildren); + }else if (childUDF instanceof GenericUDFOPNot) { + return foldNegative(child.getChildren().get(0)); + } else { + // For operator like if() that cannot be handled, leave not() as it + // is and continue processing the children + List<ExprNodeDesc> newGrandChildren = new ArrayList<ExprNodeDesc>(); + for(ExprNodeDesc grandChild : grandChildren) { + newGrandChildren.add(foldNegative(grandChild)); + } + childDesc.setChildren(newGrandChildren); + return funcDesc; + } + } + } + } + return desc; + } + + /** * Fold input expression desc, only performing short-cutting. * * Unnecessary AND/OR operations involving a constant true/false value will be eliminated. @@ -238,6 +303,11 @@ public final class ConstantPropagateProcFactory { private static ExprNodeDesc foldExprShortcut(ExprNodeDesc desc, Map<ColumnInfo, ExprNodeDesc> constants, ConstantPropagateProcCtx cppCtx, Operator<? extends Serializable> op, int tag, boolean propagate) throws UDFArgumentException { + // Combine NOT operator with the child operator. Otherwise, the following optimization + // from bottom up could lead to incorrect result, such as not(x > 3 and x is not null), + // should not be optimized to not(x > 3), but (x <=3 or x is null). + desc = foldNegative(desc); + if (desc instanceof ExprNodeGenericFuncDesc) { ExprNodeGenericFuncDesc funcDesc = (ExprNodeGenericFuncDesc) desc; @@ -249,10 +319,10 @@ public final class ConstantPropagateProcFactory { newExprs.add(foldExpr(childExpr, constants, cppCtx, op, tag, propagateNext)); } - // Don't evalulate nondeterministic function since the value can only calculate during runtime. + // Don't evaluate nondeterministic function since the value can only calculate during runtime. if (!isDeterministicUdf(udf)) { if (LOG.isDebugEnabled()) { - LOG.debug("Function " + udf.getClass() + " is undeterministic. Don't evalulating immediately."); + LOG.debug("Function " + udf.getClass() + " is undeterministic. Don't evalulate immediately."); } ((ExprNodeGenericFuncDesc) desc).setChildren(newExprs); return desc; @@ -276,11 +346,11 @@ public final class ConstantPropagateProcFactory { * * This function recursively checks if any subexpression of a specified expression * can be evaluated to be constant and replaces such subexpression with the constant. - * If the expression is a derterministic UDF and all the subexpressions are constants, + * If the expression is a deterministic UDF and all the subexpressions are constants, * the value will be calculated immediately (during compilation time vs. runtime). * e.g.: * concat(year, month) => 200112 for year=2001, month=12 since concat is deterministic UDF - * unix_timestamp(time) => unix_timestamp(123) for time=123 since unix_timestamp is nonderministic UDF + * unix_timestamp(time) => unix_timestamp(123) for time=123 since unix_timestamp is nondeterministic UDF * @param desc folding expression * @param constants current propagated constant map * @param cppCtx @@ -292,6 +362,11 @@ public final class ConstantPropagateProcFactory { private static ExprNodeDesc foldExprFull(ExprNodeDesc desc, Map<ColumnInfo, ExprNodeDesc> constants, ConstantPropagateProcCtx cppCtx, Operator<? extends Serializable> op, int tag, boolean propagate) throws UDFArgumentException { + // Combine NOT operator with the child operator. Otherwise, the following optimization + // from bottom up could lead to incorrect result, such as not(x > 3 and x is not null), + // should not be optimized to not(x > 3), but (x <=3 or x is null). + desc = foldNegative(desc); + if (desc instanceof ExprNodeGenericFuncDesc) { ExprNodeGenericFuncDesc funcDesc = (ExprNodeGenericFuncDesc) desc; @@ -303,10 +378,10 @@ public final class ConstantPropagateProcFactory { newExprs.add(foldExpr(childExpr, constants, cppCtx, op, tag, propagateNext)); } - // Don't evalulate nondeterministic function since the value can only calculate during runtime. + // Don't evaluate nondeterministic function since the value can only calculate during runtime. if (!isDeterministicUdf(udf)) { if (LOG.isDebugEnabled()) { - LOG.debug("Function " + udf.getClass() + " is undeterministic. Don't evalulating immediately."); + LOG.debug("Function " + udf.getClass() + " is undeterministic. Don't evaluate immediately."); } ((ExprNodeGenericFuncDesc) desc).setChildren(newExprs); return desc; @@ -460,7 +535,6 @@ public final class ConstantPropagateProcFactory { private static ExprNodeDesc shortcutFunction(GenericUDF udf, List<ExprNodeDesc> newExprs, Operator<? extends Serializable> op) throws UDFArgumentException { - if (udf instanceof GenericUDFOPEqual) { assert newExprs.size() == 2; boolean foundUDFInFirst = false; @@ -511,6 +585,7 @@ public final class ConstantPropagateProcFactory { return null; } } + if (udf instanceof GenericUDFOPAnd) { final BitSet positionsToRemove = new BitSet(); final List<ExprNodeDesc> notNullExprs = new ArrayList<ExprNodeDesc>(); @@ -532,9 +607,13 @@ public final class ConstantPropagateProcFactory { childExpr.getChildren().get(0) instanceof ExprNodeColumnDesc) { notNullExprs.add(childExpr.getChildren().get(0)); notNullExprsPositions.add(i); - } else if (childExpr instanceof ExprNodeGenericFuncDesc - && ((ExprNodeGenericFuncDesc)childExpr).getGenericUDF() instanceof GenericUDFBaseCompare - && childExpr.getChildren().size() == 2) { + } else if (childExpr instanceof ExprNodeGenericFuncDesc && + ((ExprNodeGenericFuncDesc)childExpr).getGenericUDF() instanceof GenericUDFBaseCompare && + !(((ExprNodeGenericFuncDesc)childExpr).getGenericUDF() instanceof GenericUDFOPNotEqual) && + childExpr.getChildren().size() == 2) { + // Try to fold (key <op> 86) and (key is not null) to (key <op> 86) + // where <op> can be "=", ">=", "<=", ">", "<". + // Note: (key <> 86) and (key is not null) cannot be folded ExprNodeColumnDesc colDesc = getColumnExpr(childExpr.getChildren().get(0)); if (null == colDesc) { colDesc = getColumnExpr(childExpr.getChildren().get(1)); @@ -646,6 +725,7 @@ public final class ConstantPropagateProcFactory { } } } + if (udf instanceof GenericUDFCase) { // HIVE-9644 Attempt to fold expression like : // where (case ss_sold_date when '1998-01-01' then 1=1 else null=1 end); http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDF.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDF.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDF.java index e8df5d3..259fde8 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDF.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDF.java @@ -213,12 +213,24 @@ public abstract class GenericUDF implements Closeable { } /** - * Some functions are affected by appearing order of arguments (comparisons, for example) + * Some functions like comparisons may be affected by appearing order of arguments. + * This is to convert a function, such as 3 > x to x < 3. The flip function of + * GenericUDFOPGreaterThan is GenericUDFOPLessThan. */ public GenericUDF flip() { return this; } + /** + * Gets the negative function of the current one. E.g., GenericUDFOPNotEqual for + * GenericUDFOPEqual, or GenericUDFOPNull for GenericUDFOPNotNull. + * @return Negative function + * @throws UDFArgumentException + */ + public GenericUDF negative() { + throw new UnsupportedOperationException("Negative function doesn't exist for " + getFuncName()); + } + public String getUdfName() { return getClass().getName(); } http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPAnd.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPAnd.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPAnd.java index db7fbac..eb33d98 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPAnd.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPAnd.java @@ -97,4 +97,8 @@ public class GenericUDFOPAnd extends GenericUDF { return sb.toString(); } + @Override + public GenericUDF negative() { + return new GenericUDFOPOr(); + } } http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqual.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqual.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqual.java index 428ced7..23f7f1f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqual.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqual.java @@ -122,4 +122,8 @@ public class GenericUDFOPEqual extends GenericUDFBaseCompare { return result; } + @Override + public GenericUDF negative() { + return new GenericUDFOPNotEqual(); + } } http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrGreaterThan.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrGreaterThan.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrGreaterThan.java index d9556cc..bd5b61a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrGreaterThan.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrGreaterThan.java @@ -134,4 +134,8 @@ public class GenericUDFOPEqualOrGreaterThan extends GenericUDFBaseCompare { return new GenericUDFOPEqualOrLessThan(); } + @Override + public GenericUDF negative() { + return new GenericUDFOPLessThan(); + } } http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrLessThan.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrLessThan.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrLessThan.java index 1d9eaf6..ad971cd 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrLessThan.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPEqualOrLessThan.java @@ -134,5 +134,9 @@ public class GenericUDFOPEqualOrLessThan extends GenericUDFBaseCompare { return new GenericUDFOPEqualOrGreaterThan(); } + @Override + public GenericUDF negative() { + return new GenericUDFOPGreaterThan(); + } } http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPGreaterThan.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPGreaterThan.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPGreaterThan.java index 8e1f2b1..85f0601 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPGreaterThan.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPGreaterThan.java @@ -134,5 +134,9 @@ public class GenericUDFOPGreaterThan extends GenericUDFBaseCompare { return new GenericUDFOPLessThan(); } + @Override + public GenericUDF negative() { + return new GenericUDFOPEqualOrLessThan(); + } } http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPLessThan.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPLessThan.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPLessThan.java index 101b348..b445ae6 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPLessThan.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPLessThan.java @@ -134,4 +134,8 @@ public class GenericUDFOPLessThan extends GenericUDFBaseCompare { return new GenericUDFOPGreaterThan(); } + @Override + public GenericUDF negative() { + return new GenericUDFOPEqualOrGreaterThan(); + } } http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqual.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqual.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqual.java index b5da57a..ac8ec2f 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqual.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotEqual.java @@ -121,4 +121,9 @@ public class GenericUDFOPNotEqual extends GenericUDFBaseCompare { } return result; } + + @Override + public GenericUDF negative() { + return new GenericUDFOPEqual(); + } } http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotNull.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotNull.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotNull.java index d22b35d..2b67c38 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotNull.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNotNull.java @@ -60,4 +60,8 @@ public class GenericUDFOPNotNull extends GenericUDF { return children[0] + " is not null"; } + @Override + public GenericUDF negative() { + return new GenericUDFOPNull(); + } } http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNull.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNull.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNull.java index fe20e9a..4eb92eb 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNull.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPNull.java @@ -60,4 +60,8 @@ public class GenericUDFOPNull extends GenericUDF { return children[0] + " is null"; } + @Override + public GenericUDF negative() { + return new GenericUDFOPNotNull(); + } } http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPOr.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPOr.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPOr.java index 4160610..8de59c1 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPOr.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFOPOr.java @@ -98,4 +98,8 @@ public class GenericUDFOPOr extends GenericUDF { return sb.toString(); } + @Override + public GenericUDF negative() { + return new GenericUDFOPAnd(); + } } http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/queries/clientpositive/folder_predicate.q ---------------------------------------------------------------------- diff --git a/ql/src/test/queries/clientpositive/folder_predicate.q b/ql/src/test/queries/clientpositive/folder_predicate.q new file mode 100644 index 0000000..2377dd4 --- /dev/null +++ b/ql/src/test/queries/clientpositive/folder_predicate.q @@ -0,0 +1,32 @@ +drop table if exists predicate_fold_tb; + +create table predicate_fold_tb(value int); +insert into predicate_fold_tb values(NULL), (1), (2), (3), (4), (5); + +explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value = 3); +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value = 3); + +explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value >= 3); +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value >= 3); + +explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value <= 3); +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value <= 3); + +explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value > 3); +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value > 3); + +explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value < 3); +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value < 3); + +explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value <> 3); +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value <> 3); + +explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value > 1 AND value <=3); +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value > 1 AND value <=3); http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/annotate_stats_filter.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/annotate_stats_filter.q.out b/ql/src/test/results/clientpositive/annotate_stats_filter.q.out index af1e1c3..9e0e78a 100644 --- a/ql/src/test/results/clientpositive/annotate_stats_filter.q.out +++ b/ql/src/test/results/clientpositive/annotate_stats_filter.q.out @@ -297,15 +297,15 @@ STAGE PLANS: alias: loc_orc Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: (not zip is not null) (type: boolean) + predicate: zip is null (type: boolean) Statistics: Num rows: 1 Data size: 102 Basic stats: COMPLETE Column stats: COMPLETE Select Operator - expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: int) + expressions: state (type: string), locid (type: int), null (type: bigint), year (type: int) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 1 Data size: 102 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 94 Basic stats: COMPLETE Column stats: COMPLETE File Output Operator compressed: false - Statistics: Num rows: 1 Data size: 102 Basic stats: COMPLETE Column stats: COMPLETE + Statistics: Num rows: 1 Data size: 94 Basic stats: COMPLETE Column stats: COMPLETE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -375,7 +375,7 @@ STAGE PLANS: alias: loc_orc Statistics: Num rows: 8 Data size: 796 Basic stats: COMPLETE Column stats: COMPLETE Filter Operator - predicate: (not zip is null) (type: boolean) + predicate: zip is not null (type: boolean) Statistics: Num rows: 7 Data size: 702 Basic stats: COMPLETE Column stats: COMPLETE Select Operator expressions: state (type: string), locid (type: int), zip (type: bigint), year (type: int) http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/decimal_udf.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/decimal_udf.q.out b/ql/src/test/results/clientpositive/decimal_udf.q.out index f36670c..338b754 100644 --- a/ql/src/test/results/clientpositive/decimal_udf.q.out +++ b/ql/src/test/results/clientpositive/decimal_udf.q.out @@ -973,12 +973,12 @@ STAGE PLANS: alias: decimal_udf Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key <> 0) (type: boolean) - Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE + predicate: (key is not null and (key <> 0)) (type: boolean) + Statistics: Num rows: 2 Data size: 239 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (key / key) (type: decimal(38,24)) outputColumnNames: _col0 - Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 239 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: SELECT key / key FROM DECIMAL_UDF WHERE key is not null and key <> 0 @@ -1039,12 +1039,12 @@ STAGE PLANS: alias: decimal_udf Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (value <> 0) (type: boolean) - Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE + predicate: (value is not null and (value <> 0)) (type: boolean) + Statistics: Num rows: 2 Data size: 239 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (key / CAST( value AS decimal(10,0))) (type: decimal(31,21)) outputColumnNames: _col0 - Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 239 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: SELECT key / value FROM DECIMAL_UDF WHERE value is not null and value <> 0 @@ -1095,12 +1095,12 @@ STAGE PLANS: alias: decimal_udf Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (value <> 0) (type: boolean) - Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE + predicate: (value is not null and (value <> 0)) (type: boolean) + Statistics: Num rows: 2 Data size: 239 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (UDFToDouble(key) / (UDFToDouble(value) / 2.0)) (type: double) outputColumnNames: _col0 - Statistics: Num rows: 3 Data size: 359 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 2 Data size: 239 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: SELECT key / (value/2) FROM DECIMAL_UDF WHERE value is not null and value <> 0 http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/filter_cond_pushdown.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/filter_cond_pushdown.q.out b/ql/src/test/results/clientpositive/filter_cond_pushdown.q.out index e09057a..af42d5c 100644 --- a/ql/src/test/results/clientpositive/filter_cond_pushdown.q.out +++ b/ql/src/test/results/clientpositive/filter_cond_pushdown.q.out @@ -37,7 +37,7 @@ STAGE PLANS: alias: f Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((value <> '') and key is not null) and value is not null) (type: boolean) + predicate: ((value is not null and (value <> '')) and key is not null) (type: boolean) Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) @@ -86,17 +86,17 @@ STAGE PLANS: alias: f Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (value <> '') (type: boolean) - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + predicate: (value is not null and (value <> '')) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: value (type: string) outputColumnNames: _col0 - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -105,14 +105,14 @@ STAGE PLANS: 0 _col3 (type: string) 1 _col0 (type: string) outputColumnNames: _col0, _col4 - Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col4 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -163,7 +163,7 @@ STAGE PLANS: alias: f Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (((value <> '') and key is not null) and value is not null) (type: boolean) + predicate: ((value is not null and (value <> '')) and key is not null) (type: boolean) Statistics: Num rows: 125 Data size: 1328 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) @@ -212,17 +212,17 @@ STAGE PLANS: alias: f Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (value <> '') (type: boolean) - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + predicate: (value is not null and (value <> '')) (type: boolean) + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: value (type: string) outputColumnNames: _col0 - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: _col0 (type: string) sort order: + Map-reduce partition columns: _col0 (type: string) - Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE Reduce Operator Tree: Join Operator condition map: @@ -231,14 +231,14 @@ STAGE PLANS: 0 _col3 (type: string) 1 _col0 (type: string) outputColumnNames: _col0, _col4 - Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: string), _col4 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 550 Data size: 5843 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 275 Data size: 2921 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/filter_join_breaktask.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/filter_join_breaktask.q.out b/ql/src/test/results/clientpositive/filter_join_breaktask.q.out index 948ad0d..83f4720 100644 --- a/ql/src/test/results/clientpositive/filter_join_breaktask.q.out +++ b/ql/src/test/results/clientpositive/filter_join_breaktask.q.out @@ -271,13 +271,13 @@ STAGE PLANS: GatherStats: false Filter Operator isSamplingPred: false - predicate: (value <> '') (type: boolean) - Statistics: Num rows: 25 Data size: 211 Basic stats: COMPLETE Column stats: NONE + predicate: ((value <> '') and value is not null) (type: boolean) + Statistics: Num rows: 13 Data size: 109 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: value (type: string) sort order: + Map-reduce partition columns: value (type: string) - Statistics: Num rows: 25 Data size: 211 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 13 Data size: 109 Basic stats: COMPLETE Column stats: NONE tag: 1 auto parallelism: false Path -> Alias: @@ -360,17 +360,17 @@ STAGE PLANS: 0 _col7 (type: string) 1 value (type: string) outputColumnNames: _col0, _col13 - Statistics: Num rows: 27 Data size: 232 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 15 Data size: 130 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col13 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 27 Data size: 232 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 15 Data size: 130 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false GlobalTableId: 0 #### A masked pattern was here #### NumFilesPerFileSink: 1 - Statistics: Num rows: 27 Data size: 232 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 15 Data size: 130 Basic stats: COMPLETE Column stats: NONE #### A masked pattern was here #### table: input format: org.apache.hadoop.mapred.TextInputFormat http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/fold_when.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/fold_when.q.out b/ql/src/test/results/clientpositive/fold_when.q.out index 21748da..bf61a7d 100644 --- a/ql/src/test/results/clientpositive/fold_when.q.out +++ b/ql/src/test/results/clientpositive/fold_when.q.out @@ -328,15 +328,15 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (not (key = '238')) (type: boolean) - Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + predicate: (key <> '238') (type: boolean) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -435,15 +435,15 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (not (key = '11')) (type: boolean) - Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + predicate: (key <> '11') (type: boolean) + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string) outputColumnNames: _col0 - Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 250 Data size: 2656 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/folder_predicate.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/folder_predicate.q.out b/ql/src/test/results/clientpositive/folder_predicate.q.out new file mode 100644 index 0000000..1bc1afb --- /dev/null +++ b/ql/src/test/results/clientpositive/folder_predicate.q.out @@ -0,0 +1,368 @@ +PREHOOK: query: drop table if exists predicate_fold_tb +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists predicate_fold_tb +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table predicate_fold_tb(value int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@predicate_fold_tb +POSTHOOK: query: create table predicate_fold_tb(value int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@predicate_fold_tb +PREHOOK: query: insert into predicate_fold_tb values(NULL), (1), (2), (3), (4), (5) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@predicate_fold_tb +POSTHOOK: query: insert into predicate_fold_tb values(NULL), (1), (2), (3), (4), (5) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@predicate_fold_tb +POSTHOOK: Lineage: predicate_fold_tb.value EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value = 3) +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value = 3) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: predicate_fold_tb + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value is null or (value <> 3)) (type: boolean) + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value = 3) +PREHOOK: type: QUERY +PREHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value = 3) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +NULL +1 +2 +4 +5 +PREHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value >= 3) +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value >= 3) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: predicate_fold_tb + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value is null or (value < 3)) (type: boolean) + Statistics: Num rows: 5 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 5 Data size: 5 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 5 Data size: 5 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value >= 3) +PREHOOK: type: QUERY +PREHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value >= 3) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +NULL +1 +2 +PREHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value <= 3) +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value <= 3) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: predicate_fold_tb + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value is null or (value > 3)) (type: boolean) + Statistics: Num rows: 5 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 5 Data size: 5 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 5 Data size: 5 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value <= 3) +PREHOOK: type: QUERY +PREHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value <= 3) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +NULL +4 +5 +PREHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value > 3) +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value > 3) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: predicate_fold_tb + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value is null or (value <= 3)) (type: boolean) + Statistics: Num rows: 5 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 5 Data size: 5 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 5 Data size: 5 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value > 3) +PREHOOK: type: QUERY +PREHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value > 3) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +NULL +1 +2 +3 +PREHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value < 3) +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value < 3) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: predicate_fold_tb + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value is null or (value >= 3)) (type: boolean) + Statistics: Num rows: 5 Data size: 5 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 5 Data size: 5 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 5 Data size: 5 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value < 3) +PREHOOK: type: QUERY +PREHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value < 3) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +NULL +3 +4 +5 +PREHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value <> 3) +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value <> 3) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: predicate_fold_tb + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value is null or (value = 3)) (type: boolean) + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value <> 3) +PREHOOK: type: QUERY +PREHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value <> 3) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +NULL +3 +PREHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value > 1 AND value <=3) +PREHOOK: type: QUERY +POSTHOOK: query: explain +SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value > 1 AND value <=3) +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: predicate_fold_tb + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + Filter Operator + predicate: (value is null or (value <= 1) or (value > 3)) (type: boolean) + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: value (type: int) + outputColumnNames: _col0 + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 6 Data size: 7 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + + Stage: Stage-0 + Fetch Operator + limit: -1 + Processor Tree: + ListSink + +PREHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value > 1 AND value <=3) +PREHOOK: type: QUERY +PREHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM predicate_fold_tb WHERE not(value IS NOT NULL AND value > 1 AND value <=3) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@predicate_fold_tb +#### A masked pattern was here #### +NULL +1 +4 +5 http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/input_testxpath2.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/input_testxpath2.q.out b/ql/src/test/results/clientpositive/input_testxpath2.q.out index d3a6f29..67e270f 100644 --- a/ql/src/test/results/clientpositive/input_testxpath2.q.out +++ b/ql/src/test/results/clientpositive/input_testxpath2.q.out @@ -32,7 +32,7 @@ STAGE PLANS: alias: src_thrift Statistics: Num rows: 11 Data size: 3070 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (lint is not null and (not mstringstring is null)) (type: boolean) + predicate: (lint is not null and mstringstring is not null) (type: boolean) Statistics: Num rows: 3 Data size: 837 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: size(lint) (type: int), size(lintstring) (type: int), size(mstringstring) (type: int) http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/list_bucket_query_oneskew_3.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/list_bucket_query_oneskew_3.q.out b/ql/src/test/results/clientpositive/list_bucket_query_oneskew_3.q.out index fabd0d6..bef079b 100644 --- a/ql/src/test/results/clientpositive/list_bucket_query_oneskew_3.q.out +++ b/ql/src/test/results/clientpositive/list_bucket_query_oneskew_3.q.out @@ -293,12 +293,12 @@ STAGE PLANS: GatherStats: false Filter Operator isSamplingPred: false - predicate: (not (x = 86)) (type: boolean) - Statistics: Num rows: 15 Data size: 60 Basic stats: COMPLETE Column stats: NONE + predicate: (x <> 86) (type: boolean) + Statistics: Num rows: 29 Data size: 117 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: x (type: int) outputColumnNames: _col0 - Statistics: Num rows: 15 Data size: 60 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 29 Data size: 117 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: -- List Bucketing Query http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/rand_partitionpruner3.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/rand_partitionpruner3.q.out b/ql/src/test/results/clientpositive/rand_partitionpruner3.q.out index ef8ee2f..634e171 100644 --- a/ql/src/test/results/clientpositive/rand_partitionpruner3.q.out +++ b/ql/src/test/results/clientpositive/rand_partitionpruner3.q.out @@ -115,12 +115,12 @@ STAGE PLANS: GatherStats: false Filter Operator isSamplingPred: false - predicate: ((rand(1) < 0.1) and (not ((UDFToDouble(key) > 50.0) or (UDFToDouble(key) < 10.0)))) (type: boolean) - Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE + predicate: ((rand(1) < 0.1) and ((UDFToDouble(key) <= 50.0) and (UDFToDouble(key) >= 10.0))) (type: boolean) + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string), '2008-04-08' (type: string), hr (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 56 Data size: 594 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 18 Data size: 191 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: select a.* from srcpart a where rand(1) < 0.1 and a.ds = '2008-04-08' and not(key > 50 or key < 10) and a.hr like '%2' @@ -247,12 +247,12 @@ STAGE PLANS: GatherStats: false Filter Operator isSamplingPred: false - predicate: (not ((UDFToDouble(key) > 50.0) or (UDFToDouble(key) < 10.0))) (type: boolean) - Statistics: Num rows: 168 Data size: 1784 Basic stats: COMPLETE Column stats: NONE + predicate: ((UDFToDouble(key) <= 50.0) and (UDFToDouble(key) >= 10.0)) (type: boolean) + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string), '2008-04-08' (type: string), hr (type: string) outputColumnNames: _col0, _col1, _col2, _col3 - Statistics: Num rows: 168 Data size: 1784 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 55 Data size: 584 Basic stats: COMPLETE Column stats: NONE ListSink PREHOOK: query: select a.* from srcpart a where a.ds = '2008-04-08' and not(key > 50 or key < 10) and a.hr like '%2' http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/select_unquote_not.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/select_unquote_not.q.out b/ql/src/test/results/clientpositive/select_unquote_not.q.out index 64de433..3b8146b 100644 --- a/ql/src/test/results/clientpositive/select_unquote_not.q.out +++ b/ql/src/test/results/clientpositive/select_unquote_not.q.out @@ -59,15 +59,15 @@ STAGE PLANS: alias: npe_test Statistics: Num rows: 498 Data size: 5290 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (not (UDFToDouble(ds) < 1970.0)) (type: boolean) - Statistics: Num rows: 332 Data size: 3526 Basic stats: COMPLETE Column stats: NONE + predicate: (UDFToDouble(ds) >= 1970.0) (type: boolean) + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string), ds (type: string) outputColumnNames: _col0, _col1, _col2 - Statistics: Num rows: 332 Data size: 3526 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 332 Data size: 3526 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 166 Data size: 1763 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/spark/filter_join_breaktask.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/spark/filter_join_breaktask.q.out b/ql/src/test/results/clientpositive/spark/filter_join_breaktask.q.out index 28eeb0d..7c3c581 100644 --- a/ql/src/test/results/clientpositive/spark/filter_join_breaktask.q.out +++ b/ql/src/test/results/clientpositive/spark/filter_join_breaktask.q.out @@ -289,13 +289,13 @@ STAGE PLANS: GatherStats: false Filter Operator isSamplingPred: false - predicate: (value <> '') (type: boolean) - Statistics: Num rows: 25 Data size: 211 Basic stats: COMPLETE Column stats: NONE + predicate: ((value <> '') and value is not null) (type: boolean) + Statistics: Num rows: 13 Data size: 109 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: value (type: string) sort order: + Map-reduce partition columns: value (type: string) - Statistics: Num rows: 25 Data size: 211 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 13 Data size: 109 Basic stats: COMPLETE Column stats: NONE tag: 1 auto parallelism: false Path -> Alias: @@ -377,17 +377,17 @@ STAGE PLANS: 0 _col7 (type: string) 1 value (type: string) outputColumnNames: _col0, _col13 - Statistics: Num rows: 27 Data size: 232 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 15 Data size: 130 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col13 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 27 Data size: 232 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 15 Data size: 130 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false GlobalTableId: 0 #### A masked pattern was here #### NumFilesPerFileSink: 1 - Statistics: Num rows: 27 Data size: 232 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 15 Data size: 130 Basic stats: COMPLETE Column stats: NONE #### A masked pattern was here #### table: input format: org.apache.hadoop.mapred.TextInputFormat http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/tez/filter_join_breaktask.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/tez/filter_join_breaktask.q.out b/ql/src/test/results/clientpositive/tez/filter_join_breaktask.q.out index 06f1ca4..99120bb 100644 --- a/ql/src/test/results/clientpositive/tez/filter_join_breaktask.q.out +++ b/ql/src/test/results/clientpositive/tez/filter_join_breaktask.q.out @@ -289,13 +289,13 @@ STAGE PLANS: GatherStats: false Filter Operator isSamplingPred: false - predicate: (value <> '') (type: boolean) - Statistics: Num rows: 25 Data size: 211 Basic stats: COMPLETE Column stats: NONE + predicate: ((value <> '') and value is not null) (type: boolean) + Statistics: Num rows: 13 Data size: 109 Basic stats: COMPLETE Column stats: NONE Reduce Output Operator key expressions: value (type: string) sort order: + Map-reduce partition columns: value (type: string) - Statistics: Num rows: 25 Data size: 211 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 13 Data size: 109 Basic stats: COMPLETE Column stats: NONE tag: 1 auto parallelism: true Path -> Alias: @@ -379,17 +379,17 @@ STAGE PLANS: 1 value (type: string) outputColumnNames: _col0, _col13 Position of Big Table: 0 - Statistics: Num rows: 27 Data size: 232 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 15 Data size: 130 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: _col0 (type: int), _col13 (type: string) outputColumnNames: _col0, _col1 - Statistics: Num rows: 27 Data size: 232 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 15 Data size: 130 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false GlobalTableId: 0 #### A masked pattern was here #### NumFilesPerFileSink: 1 - Statistics: Num rows: 27 Data size: 232 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 15 Data size: 130 Basic stats: COMPLETE Column stats: NONE #### A masked pattern was here #### table: input format: org.apache.hadoop.mapred.TextInputFormat http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out b/ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out index b24ebcc..13f0de2 100644 --- a/ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out +++ b/ql/src/test/results/clientpositive/tez/vector_decimal_udf.q.out @@ -1239,15 +1239,15 @@ STAGE PLANS: alias: decimal_udf Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key <> 0) (type: boolean) - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + predicate: (key is not null and (key <> 0)) (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (key / key) (type: decimal(38,24)) outputColumnNames: _col0 - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -1321,15 +1321,15 @@ STAGE PLANS: alias: decimal_udf Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (value <> 0) (type: boolean) - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + predicate: (value is not null and (value <> 0)) (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (key / CAST( value AS decimal(10,0))) (type: decimal(31,21)) outputColumnNames: _col0 - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -1393,15 +1393,15 @@ STAGE PLANS: alias: decimal_udf Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (value <> 0) (type: boolean) - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + predicate: (value is not null and (value <> 0)) (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (UDFToDouble(key) / (UDFToDouble(value) / 2.0)) (type: double) outputColumnNames: _col0 - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/udf_isnull_isnotnull.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/udf_isnull_isnotnull.q.out b/ql/src/test/results/clientpositive/udf_isnull_isnotnull.q.out index d459ce3..b59a5b9 100644 --- a/ql/src/test/results/clientpositive/udf_isnull_isnotnull.q.out +++ b/ql/src/test/results/clientpositive/udf_isnull_isnotnull.q.out @@ -97,7 +97,7 @@ STAGE PLANS: alias: src_thrift Statistics: Num rows: 11 Data size: 3070 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (lint is not null and (not mstringstring is null)) (type: boolean) + predicate: (lint is not null and mstringstring is not null) (type: boolean) Statistics: Num rows: 3 Data size: 837 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: lint is not null (type: boolean), lintstring is not null (type: boolean), mstringstring is not null (type: boolean) http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/udf_size.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/udf_size.q.out b/ql/src/test/results/clientpositive/udf_size.q.out index efb06a1..13594d2 100644 --- a/ql/src/test/results/clientpositive/udf_size.q.out +++ b/ql/src/test/results/clientpositive/udf_size.q.out @@ -38,7 +38,7 @@ STAGE PLANS: alias: src_thrift Statistics: Num rows: 11 Data size: 3070 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (lint is not null and (not mstringstring is null)) (type: boolean) + predicate: (lint is not null and mstringstring is not null) (type: boolean) Statistics: Num rows: 3 Data size: 837 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: size(lint) (type: int), size(lintstring) (type: int), size(mstringstring) (type: int), -1 (type: int) http://git-wip-us.apache.org/repos/asf/hive/blob/a1626749/ql/src/test/results/clientpositive/vector_decimal_udf.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/vector_decimal_udf.q.out b/ql/src/test/results/clientpositive/vector_decimal_udf.q.out index e381757..91a585c 100644 --- a/ql/src/test/results/clientpositive/vector_decimal_udf.q.out +++ b/ql/src/test/results/clientpositive/vector_decimal_udf.q.out @@ -1191,15 +1191,15 @@ STAGE PLANS: alias: decimal_udf Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (key <> 0) (type: boolean) - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + predicate: (key is not null and (key <> 0)) (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (key / key) (type: decimal(38,24)) outputColumnNames: _col0 - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -1270,15 +1270,15 @@ STAGE PLANS: alias: decimal_udf Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (value <> 0) (type: boolean) - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + predicate: (value is not null and (value <> 0)) (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (key / CAST( value AS decimal(10,0))) (type: decimal(31,21)) outputColumnNames: _col0 - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat @@ -1339,15 +1339,15 @@ STAGE PLANS: alias: decimal_udf Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (value <> 0) (type: boolean) - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + predicate: (value is not null and (value <> 0)) (type: boolean) + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: (UDFToDouble(key) / (UDFToDouble(value) / 2.0)) (type: double) outputColumnNames: _col0 - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE File Output Operator compressed: false - Statistics: Num rows: 38 Data size: 4296 Basic stats: COMPLETE Column stats: NONE + Statistics: Num rows: 19 Data size: 2148 Basic stats: COMPLETE Column stats: NONE table: input format: org.apache.hadoop.mapred.TextInputFormat output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat