Author: xuefu Date: Sat Dec 21 01:58:49 2013 New Revision: 1552860 URL: http://svn.apache.org/r1552860 Log: HIVE-5992: Hive inconsistently converts timestamp in AVG and SUM UDAF's (reviewed by Prasad)
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java hive/trunk/ql/src/test/queries/clientpositive/timestamp_3.q hive/trunk/ql/src/test/results/clientpositive/timestamp_3.q.out Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java?rev=1552860&r1=1552859&r2=1552860&view=diff ============================================================================== --- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java (original) +++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java Sat Dec 21 01:58:49 2013 @@ -50,7 +50,7 @@ public class GenericUDAFSum extends Abst @Override public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters) - throws SemanticException { + throws SemanticException { if (parameters.length != 1) { throw new UDFArgumentTypeException(parameters.length - 1, "Exactly one argument is expected."); @@ -59,15 +59,15 @@ public class GenericUDAFSum extends Abst if (parameters[0].getCategory() != ObjectInspector.Category.PRIMITIVE) { throw new UDFArgumentTypeException(0, "Only primitive type arguments are accepted but " - + parameters[0].getTypeName() + " is passed."); + + parameters[0].getTypeName() + " is passed."); } switch (((PrimitiveTypeInfo) parameters[0]).getPrimitiveCategory()) { case BYTE: case SHORT: case INT: case LONG: - case TIMESTAMP: return new GenericUDAFSumLong(); + case TIMESTAMP: case FLOAT: case DOUBLE: case STRING: @@ -81,7 +81,7 @@ public class GenericUDAFSum extends Abst default: throw new UDFArgumentTypeException(0, "Only numeric or string type arguments are accepted but " - + parameters[0].getTypeName() + " is passed."); + + parameters[0].getTypeName() + " is passed."); } } @@ -145,7 +145,7 @@ public class GenericUDAFSum extends Abst LOG.warn(getClass().getSimpleName() + " " + StringUtils.stringifyException(e)); LOG - .warn(getClass().getSimpleName() + .warn(getClass().getSimpleName() + " ignoring similar exceptions."); } } @@ -234,7 +234,7 @@ public class GenericUDAFSum extends Abst LOG.warn(getClass().getSimpleName() + " " + StringUtils.stringifyException(e)); LOG - .warn(getClass().getSimpleName() + .warn(getClass().getSimpleName() + " ignoring similar exceptions."); } } Modified: hive/trunk/ql/src/test/queries/clientpositive/timestamp_3.q URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/timestamp_3.q?rev=1552860&r1=1552859&r2=1552860&view=diff ============================================================================== --- hive/trunk/ql/src/test/queries/clientpositive/timestamp_3.q (original) +++ hive/trunk/ql/src/test/queries/clientpositive/timestamp_3.q Sat Dec 21 01:58:49 2013 @@ -16,4 +16,6 @@ select cast(t as float) from timestamp_3 select cast(t as double) from timestamp_3 limit 1; select cast(t as string) from timestamp_3 limit 1; +select t, sum(t), count(*), sum(t)/count(*), avg(t) from timestamp_3 group by t; + drop table timestamp_3; Modified: hive/trunk/ql/src/test/results/clientpositive/timestamp_3.q.out URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/timestamp_3.q.out?rev=1552860&r1=1552859&r2=1552860&view=diff ============================================================================== --- hive/trunk/ql/src/test/results/clientpositive/timestamp_3.q.out (original) +++ hive/trunk/ql/src/test/results/clientpositive/timestamp_3.q.out Sat Dec 21 01:58:49 2013 @@ -106,6 +106,16 @@ POSTHOOK: Input: default@timestamp_3 #### A masked pattern was here #### POSTHOOK: Lineage: timestamp_3.t EXPRESSION [] 2011-04-29 20:46:56.4485 +PREHOOK: query: select t, sum(t), count(*), sum(t)/count(*), avg(t) from timestamp_3 group by t +PREHOOK: type: QUERY +PREHOOK: Input: default@timestamp_3 +#### A masked pattern was here #### +POSTHOOK: query: select t, sum(t), count(*), sum(t)/count(*), avg(t) from timestamp_3 group by t +POSTHOOK: type: QUERY +POSTHOOK: Input: default@timestamp_3 +#### A masked pattern was here #### +POSTHOOK: Lineage: timestamp_3.t EXPRESSION [] +2011-04-29 20:46:56.4485 1.3041352164485E9 1 1.3041352164485E9 1.3041352164485E9 PREHOOK: query: drop table timestamp_3 PREHOOK: type: DROPTABLE PREHOOK: Input: default@timestamp_3