Author: xuefu
Date: Fri Dec 20 18:29:17 2013
New Revision: 1552778

URL: http://svn.apache.org/r1552778
Log:
HIVE-6039: Round, AVG and SUM functions reject char/varch input while accepting 
string input (reviewed by Prasad)

Added:
    hive/trunk/data/files/char_varchar_udf.txt
    hive/trunk/ql/src/test/queries/clientpositive/char_varchar_udf.q
    hive/trunk/ql/src/test/results/clientpositive/char_varchar_udf.q.out
Modified:
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFSum.java
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java

Added: hive/trunk/data/files/char_varchar_udf.txt
URL: 
http://svn.apache.org/viewvc/hive/trunk/data/files/char_varchar_udf.txt?rev=1552778&view=auto
==============================================================================
--- hive/trunk/data/files/char_varchar_udf.txt (added)
+++ hive/trunk/data/files/char_varchar_udf.txt Fri Dec 20 18:29:17 2013
@@ -0,0 +1 @@
+47.3224        2923.29346

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java?rev=1552778&r1=1552777&r2=1552778&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDAFAverage.java
 Fri Dec 20 18:29:17 2013
@@ -77,6 +77,8 @@ public class GenericUDAFAverage extends 
     case FLOAT:
     case DOUBLE:
     case STRING:
+    case VARCHAR:
+    case CHAR:
     case TIMESTAMP:
       return new GenericUDAFAverageEvaluatorDouble();
     case DECIMAL:

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=1552778&r1=1552777&r2=1552778&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
 Fri Dec 20 18:29:17 2013
@@ -71,6 +71,8 @@ public class GenericUDAFSum extends Abst
     case FLOAT:
     case DOUBLE:
     case STRING:
+    case VARCHAR:
+    case CHAR:
       return new GenericUDAFSumDouble();
     case DECIMAL:
       return new GenericUDAFSumHiveDecimal();

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java?rev=1552778&r1=1552777&r2=1552778&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java
 (original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFRound.java
 Fri Dec 20 18:29:17 2013
@@ -143,6 +143,7 @@ public class GenericUDFRound extends Gen
       break;
     case STRING:
     case VARCHAR:
+    case CHAR:
       outputOI = 
PrimitiveObjectInspectorFactory.getPrimitiveWritableObjectInspector(PrimitiveCategory.DOUBLE);
       converterFromString = ObjectInspectorConverters.getConverter(inputOI, 
outputOI);
       break;
@@ -228,7 +229,8 @@ public class GenericUDFRound extends Gen
      case DOUBLE:
        return 
round(((DoubleWritable)inputOI.getPrimitiveWritableObject(input)), scale);
     case STRING:
-     case VARCHAR:
+    case VARCHAR:
+    case CHAR:
        DoubleWritable doubleValue = (DoubleWritable) 
converterFromString.convert(input);
        if (doubleValue == null) {
          return null;

Added: hive/trunk/ql/src/test/queries/clientpositive/char_varchar_udf.q
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/char_varchar_udf.q?rev=1552778&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/char_varchar_udf.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/char_varchar_udf.q Fri Dec 20 
18:29:17 2013
@@ -0,0 +1,9 @@
+DROP TABLE IF EXISTS  char_varchar_udf;
+
+CREATE TABLE char_varchar_udf (c char(8), vc varchar(10)) ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t';
+LOAD DATA LOCAL INPATH '../../data/files/char_varchar_udf.txt' INTO TABLE 
char_varchar_udf;
+
+SELECT ROUND(c, 2), ROUND(vc, 3) FROM char_varchar_udf;
+SELECT AVG(c), AVG(vc), SUM(c), SUM(vc) FROM char_varchar_udf;
+
+DROP TABLE char_varchar_udf;
\ No newline at end of file

Added: hive/trunk/ql/src/test/results/clientpositive/char_varchar_udf.q.out
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/char_varchar_udf.q.out?rev=1552778&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/char_varchar_udf.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/char_varchar_udf.q.out Fri 
Dec 20 18:29:17 2013
@@ -0,0 +1,41 @@
+PREHOOK: query: DROP TABLE IF EXISTS  char_varchar_udf
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE IF EXISTS  char_varchar_udf
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: CREATE TABLE char_varchar_udf (c char(8), vc varchar(10)) ROW 
FORMAT DELIMITED FIELDS TERMINATED BY '\t'
+PREHOOK: type: CREATETABLE
+POSTHOOK: query: CREATE TABLE char_varchar_udf (c char(8), vc varchar(10)) ROW 
FORMAT DELIMITED FIELDS TERMINATED BY '\t'
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: default@char_varchar_udf
+PREHOOK: query: LOAD DATA LOCAL INPATH '../../data/files/char_varchar_udf.txt' 
INTO TABLE char_varchar_udf
+PREHOOK: type: LOAD
+PREHOOK: Output: default@char_varchar_udf
+POSTHOOK: query: LOAD DATA LOCAL INPATH 
'../../data/files/char_varchar_udf.txt' INTO TABLE char_varchar_udf
+POSTHOOK: type: LOAD
+POSTHOOK: Output: default@char_varchar_udf
+PREHOOK: query: SELECT ROUND(c, 2), ROUND(vc, 3) FROM char_varchar_udf
+PREHOOK: type: QUERY
+PREHOOK: Input: default@char_varchar_udf
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT ROUND(c, 2), ROUND(vc, 3) FROM char_varchar_udf
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@char_varchar_udf
+#### A masked pattern was here ####
+47.32  2923.293
+PREHOOK: query: SELECT AVG(c), AVG(vc), SUM(c), SUM(vc) FROM char_varchar_udf
+PREHOOK: type: QUERY
+PREHOOK: Input: default@char_varchar_udf
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT AVG(c), AVG(vc), SUM(c), SUM(vc) FROM char_varchar_udf
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@char_varchar_udf
+#### A masked pattern was here ####
+47.3224        2923.29346      47.3224 2923.29346
+PREHOOK: query: DROP TABLE char_varchar_udf
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@char_varchar_udf
+PREHOOK: Output: default@char_varchar_udf
+POSTHOOK: query: DROP TABLE char_varchar_udf
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@char_varchar_udf
+POSTHOOK: Output: default@char_varchar_udf


Reply via email to