You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by go...@apache.org on 2014/08/20 07:16:58 UTC

svn commit: r1619032 - in /hive/trunk: itests/src/test/resources/ ql/src/test/queries/clientpositive/ ql/src/test/results/clientpositive/tez/ serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/

Author: gopalv
Date: Wed Aug 20 05:16:57 2014
New Revision: 1619032

URL: http://svn.apache.org/r1619032
Log:
HIVE-7738 : tez select sum(decimal) from union all of decimal and null throws NPE (Alexander Pivovarov, reviewed by Gopal V)

Added:
    hive/trunk/ql/src/test/queries/clientpositive/tez_union_decimal.q
    hive/trunk/ql/src/test/results/clientpositive/tez/tez_union_decimal.q.out
Modified:
    hive/trunk/itests/src/test/resources/testconfiguration.properties
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantByteObjectInspector.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantHiveDecimalObjectInspector.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantIntObjectInspector.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantLongObjectInspector.java
    hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantShortObjectInspector.java

Modified: hive/trunk/itests/src/test/resources/testconfiguration.properties
URL: http://svn.apache.org/viewvc/hive/trunk/itests/src/test/resources/testconfiguration.properties?rev=1619032&r1=1619031&r2=1619032&view=diff
==============================================================================
--- hive/trunk/itests/src/test/resources/testconfiguration.properties (original)
+++ hive/trunk/itests/src/test/resources/testconfiguration.properties Wed Aug 20 05:16:57 2014
@@ -146,7 +146,8 @@ minitez.query.files=bucket_map_join_tez1
   tez_join_tests.q,\
   tez_joins_explain.q,\
   tez_schema_evolution.q,\
-  tez_union.q
+  tez_union.q,\
+  tez_union_decimal.q
 
 beeline.positive.exclude=add_part_exist.q,\
   alter1.q,\

Added: hive/trunk/ql/src/test/queries/clientpositive/tez_union_decimal.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/tez_union_decimal.q?rev=1619032&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/tez_union_decimal.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/tez_union_decimal.q Wed Aug 20 05:16:57 2014
@@ -0,0 +1,37 @@
+select sum(a) from (
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+  union all
+  select cast(null as decimal) a from src tablesample (1 rows)
+) t;
+
+select sum(a) from (
+  select cast(1 as tinyint) a from src tablesample (1 rows)
+  union all
+  select cast(null as tinyint) a from src tablesample (1 rows)
+  union all
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+) t;
+
+select sum(a) from (
+  select cast(1 as smallint) a from src tablesample (1 rows)
+  union all
+  select cast(null as smallint) a from src tablesample (1 rows)
+  union all
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+) t;
+
+select sum(a) from (
+  select cast(1 as int) a from src tablesample (1 rows)
+  union all
+  select cast(null as int) a from src tablesample (1 rows)
+  union all
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+) t;
+
+select sum(a) from (
+  select cast(1 as bigint) a from src tablesample (1 rows)
+  union all
+  select cast(null as bigint) a from src tablesample (1 rows)
+  union all
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+) t;

Added: hive/trunk/ql/src/test/results/clientpositive/tez/tez_union_decimal.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/tez/tez_union_decimal.q.out?rev=1619032&view=auto
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/tez/tez_union_decimal.q.out (added)
+++ hive/trunk/ql/src/test/results/clientpositive/tez/tez_union_decimal.q.out Wed Aug 20 05:16:57 2014
@@ -0,0 +1,101 @@
+PREHOOK: query: select sum(a) from (
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+  union all
+  select cast(null as decimal) a from src tablesample (1 rows)
+) t
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(a) from (
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+  union all
+  select cast(null as decimal) a from src tablesample (1 rows)
+) t
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+1
+PREHOOK: query: select sum(a) from (
+  select cast(1 as tinyint) a from src tablesample (1 rows)
+  union all
+  select cast(null as tinyint) a from src tablesample (1 rows)
+  union all
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+) t
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(a) from (
+  select cast(1 as tinyint) a from src tablesample (1 rows)
+  union all
+  select cast(null as tinyint) a from src tablesample (1 rows)
+  union all
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+) t
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+2
+PREHOOK: query: select sum(a) from (
+  select cast(1 as smallint) a from src tablesample (1 rows)
+  union all
+  select cast(null as smallint) a from src tablesample (1 rows)
+  union all
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+) t
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(a) from (
+  select cast(1 as smallint) a from src tablesample (1 rows)
+  union all
+  select cast(null as smallint) a from src tablesample (1 rows)
+  union all
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+) t
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+2
+PREHOOK: query: select sum(a) from (
+  select cast(1 as int) a from src tablesample (1 rows)
+  union all
+  select cast(null as int) a from src tablesample (1 rows)
+  union all
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+) t
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(a) from (
+  select cast(1 as int) a from src tablesample (1 rows)
+  union all
+  select cast(null as int) a from src tablesample (1 rows)
+  union all
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+) t
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+2
+PREHOOK: query: select sum(a) from (
+  select cast(1 as bigint) a from src tablesample (1 rows)
+  union all
+  select cast(null as bigint) a from src tablesample (1 rows)
+  union all
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+) t
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: select sum(a) from (
+  select cast(1 as bigint) a from src tablesample (1 rows)
+  union all
+  select cast(null as bigint) a from src tablesample (1 rows)
+  union all
+  select cast(1.1 as decimal) a from src tablesample (1 rows)
+) t
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+2

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantByteObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantByteObjectInspector.java?rev=1619032&r1=1619031&r2=1619032&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantByteObjectInspector.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantByteObjectInspector.java Wed Aug 20 05:16:57 2014
@@ -48,6 +48,9 @@ public class WritableConstantByteObjectI
 
   @Override
   public int precision() {
+    if (value == null) {
+      return super.precision();
+    }
     return BigDecimal.valueOf(value.get()).precision();
   }
 

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantHiveDecimalObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantHiveDecimalObjectInspector.java?rev=1619032&r1=1619031&r2=1619032&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantHiveDecimalObjectInspector.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantHiveDecimalObjectInspector.java Wed Aug 20 05:16:57 2014
@@ -58,11 +58,17 @@ implements ConstantObjectInspector {
 
   @Override
   public int precision() {
+    if (value == null) {
+      return super.precision();
+    }
     return value.getHiveDecimal().precision();
   }
 
   @Override
   public int scale() {
+    if (value == null) {
+      return super.scale();
+    }
     return value.getHiveDecimal().scale();
   }
 

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantIntObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantIntObjectInspector.java?rev=1619032&r1=1619031&r2=1619032&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantIntObjectInspector.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantIntObjectInspector.java Wed Aug 20 05:16:57 2014
@@ -48,6 +48,9 @@ public class WritableConstantIntObjectIn
 
   @Override
   public int precision() {
+    if (value == null) {
+      return super.precision();
+    }
     return BigDecimal.valueOf(value.get()).precision();
   }
 

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantLongObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantLongObjectInspector.java?rev=1619032&r1=1619031&r2=1619032&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantLongObjectInspector.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantLongObjectInspector.java Wed Aug 20 05:16:57 2014
@@ -48,6 +48,9 @@ public class WritableConstantLongObjectI
 
   @Override
   public int precision() {
+    if (value == null) {
+      return super.precision();
+    }
     return BigDecimal.valueOf(value.get()).precision();
   }
 

Modified: hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantShortObjectInspector.java
URL: http://svn.apache.org/viewvc/hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantShortObjectInspector.java?rev=1619032&r1=1619031&r2=1619032&view=diff
==============================================================================
--- hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantShortObjectInspector.java (original)
+++ hive/trunk/serde/src/java/org/apache/hadoop/hive/serde2/objectinspector/primitive/WritableConstantShortObjectInspector.java Wed Aug 20 05:16:57 2014
@@ -48,6 +48,9 @@ public class WritableConstantShortObject
 
   @Override
   public int precision() {
+    if (value == null) {
+      return super.precision();
+    }
     return BigDecimal.valueOf(value.get()).precision();
   }