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 {