You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2016/08/31 00:30:21 UTC

hive git commit: HIVE-14658 : UDF abs throws NPE when input arg type is string (Niklaus Xiao via Ashutosh Chauhan)

Repository: hive
Updated Branches:
  refs/heads/master 20824f27b -> ec4673bbc


HIVE-14658 : UDF abs throws NPE when input arg type is string (Niklaus Xiao via Ashutosh Chauhan)

Signed-off-by: Ashutosh Chauhan <ha...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/ec4673bb
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/ec4673bb
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/ec4673bb

Branch: refs/heads/master
Commit: ec4673bbc61b2555ef2d992266055a331443b4d6
Parents: 20824f2
Author: niklaus xiao <st...@live.cn>
Authored: Tue Aug 30 17:29:37 2016 -0700
Committer: Ashutosh Chauhan <ha...@apache.org>
Committed: Tue Aug 30 17:29:37 2016 -0700

----------------------------------------------------------------------
 .../org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java   | 3 +++
 .../apache/hadoop/hive/ql/udf/generic/TestGenericUDFAbs.java   | 6 ++++++
 2 files changed, 9 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/ec4673bb/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java
index 1fdd41c..a8e2786 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFAbs.java
@@ -130,6 +130,9 @@ public class GenericUDFAbs extends GenericUDF {
     case STRING:
     case DOUBLE:
       valObject = inputConverter.convert(valObject);
+      if (valObject == null) {
+        return null;
+      }
       resultDouble.set(Math.abs(((DoubleWritable) valObject).get()));
       return resultDouble;
     case DECIMAL:

http://git-wip-us.apache.org/repos/asf/hive/blob/ec4673bb/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFAbs.java
----------------------------------------------------------------------
diff --git a/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFAbs.java b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFAbs.java
index 8c531ea..6dbb33f 100644
--- a/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFAbs.java
+++ b/ql/src/test/org/apache/hadoop/hive/ql/udf/generic/TestGenericUDFAbs.java
@@ -133,6 +133,12 @@ public class TestGenericUDFAbs extends TestCase {
     output = (DoubleWritable) udf.evaluate(args);
 
     assertEquals("abs() test for String failed ", "123.45", output.toString());
+
+    valueObj = new DeferredJavaObject(new Text("foo"));
+    args[0] = valueObj;
+    output = (DoubleWritable) udf.evaluate(args);
+
+    assertEquals("abs() test for String failed ", null, output);
   }
 
   public void testHiveDecimal() throws HiveException {