You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@orc.apache.org by pr...@apache.org on 2017/01/24 00:03:05 UTC

orc git commit: ORC-134: DecimalColumnStatistics methods throws NPE when all column values are null (prasanthj)

Repository: orc
Updated Branches:
  refs/heads/master 33bd60603 -> c523b97c1


ORC-134: DecimalColumnStatistics methods throws NPE when all column values are null (prasanthj)

Fixes #86

Signed-off-by: Prasanth Jayachandran <pr...@apache.org>


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

Branch: refs/heads/master
Commit: c523b97c1965300af55459cf176cdf80adb05272
Parents: 33bd606
Author: Prasanth Jayachandran <pr...@apache.org>
Authored: Mon Jan 23 14:43:09 2017 -0800
Committer: Prasanth Jayachandran <pr...@apache.org>
Committed: Mon Jan 23 16:02:46 2017 -0800

----------------------------------------------------------------------
 .gitignore                                      |  2 ++
 .../apache/orc/impl/ColumnStatisticsImpl.java   |  6 ++--
 .../test/org/apache/orc/TestVectorOrcFile.java  | 29 ++++++++++++++++++++
 3 files changed, 34 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/orc/blob/c523b97c/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 167ac88..40178ec 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,5 +2,7 @@ build
 target
 *~
 *.iml
+*.ipr
+*.iws
 .idea
 .DS_Store

http://git-wip-us.apache.org/repos/asf/orc/blob/c523b97c/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java
----------------------------------------------------------------------
diff --git a/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java b/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java
index 70018e3..cdf9c46 100644
--- a/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java
+++ b/java/core/src/java/org/apache/orc/impl/ColumnStatisticsImpl.java
@@ -878,17 +878,17 @@ public class ColumnStatisticsImpl implements ColumnStatistics {
 
     @Override
     public HiveDecimal getMinimum() {
-      return minimum.getHiveDecimal();
+      return minimum == null ? null : minimum.getHiveDecimal();
     }
 
     @Override
     public HiveDecimal getMaximum() {
-      return maximum.getHiveDecimal();
+      return maximum == null ? null : maximum.getHiveDecimal();
     }
 
     @Override
     public HiveDecimal getSum() {
-      return sum.getHiveDecimal();
+      return sum == null ? null : sum.getHiveDecimal();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/orc/blob/c523b97c/java/core/src/test/org/apache/orc/TestVectorOrcFile.java
----------------------------------------------------------------------
diff --git a/java/core/src/test/org/apache/orc/TestVectorOrcFile.java b/java/core/src/test/org/apache/orc/TestVectorOrcFile.java
index 7801156..c3df813 100644
--- a/java/core/src/test/org/apache/orc/TestVectorOrcFile.java
+++ b/java/core/src/test/org/apache/orc/TestVectorOrcFile.java
@@ -487,6 +487,35 @@ public class TestVectorOrcFile {
     rows.close();
   }
 
+  @Test
+  public void testHiveDecimalStatsAllNulls() throws Exception {
+    TypeDescription schema = TypeDescription.createStruct()
+      .addField("dec1", TypeDescription.createDecimal());
+
+    Writer writer = OrcFile.createWriter(testFilePath,
+      OrcFile.writerOptions(conf).setSchema(schema).stripeSize(100000).bufferSize(10000));
+    VectorizedRowBatch batch = schema.createRowBatch();
+    batch.size = 4;
+    DecimalColumnVector field1 = (DecimalColumnVector) batch.cols[0];
+    field1.noNulls = false;
+    field1.isNull[0] = true;
+    field1.isNull[1] = true;
+    field1.isNull[2] = true;
+    field1.isNull[3] = true;
+    writer.addRowBatch(batch);
+    writer.close();
+
+    Reader reader = OrcFile.createReader(testFilePath,
+      OrcFile.readerOptions(conf).filesystem(fs));
+    // check the stats
+    ColumnStatistics[] stats = reader.getStatistics();
+    Assert.assertEquals(4, stats[0].getNumberOfValues());
+    Assert.assertEquals(0, stats[1].getNumberOfValues());
+    Assert.assertEquals(true, stats[1].hasNull());
+    Assert.assertNull(((DecimalColumnStatistics)stats[1]).getMinimum());
+    Assert.assertNull(((DecimalColumnStatistics)stats[1]).getMaximum());
+    Assert.assertEquals(new HiveDecimalWritable(0).getHiveDecimal(), ((DecimalColumnStatistics)stats[1]).getSum());
+  }
 
   @Test
   public void testStripeLevelStats() throws Exception {