diff --git ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java index 718119a..9c2c9c2 100644 --- ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java +++ ql/src/java/org/apache/hadoop/hive/ql/io/orc/ColumnStatisticsImpl.java @@ -825,6 +825,8 @@ public String toString() { if (stats.hasHasNull()) { hasNull = stats.getHasNull(); + } else { + hasNull = true; } } diff --git ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java index 8cb51b0..8577f41 100644 --- ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java +++ ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcFile.java @@ -257,13 +257,13 @@ public void testReadFormat_0_11() throws Exception { assertEquals(7500, stats[1].getNumberOfValues()); assertEquals(3750, ((BooleanColumnStatistics) stats[1]).getFalseCount()); assertEquals(3750, ((BooleanColumnStatistics) stats[1]).getTrueCount()); - assertEquals("count: 7500 hasNull: false true: 3750", stats[1].toString()); + assertEquals("count: 7500 hasNull: true true: 3750", stats[1].toString()); assertEquals(2048, ((IntegerColumnStatistics) stats[3]).getMaximum()); assertEquals(1024, ((IntegerColumnStatistics) stats[3]).getMinimum()); assertEquals(true, ((IntegerColumnStatistics) stats[3]).isSumDefined()); assertEquals(11520000, ((IntegerColumnStatistics) stats[3]).getSum()); - assertEquals("count: 7500 hasNull: false min: 1024 max: 2048 sum: 11520000", + assertEquals("count: 7500 hasNull: true min: 1024 max: 2048 sum: 11520000", stats[3].toString()); assertEquals(Long.MAX_VALUE, @@ -272,17 +272,17 @@ public void testReadFormat_0_11() throws Exception { ((IntegerColumnStatistics) stats[5]).getMinimum()); assertEquals(false, ((IntegerColumnStatistics) stats[5]).isSumDefined()); assertEquals( - "count: 7500 hasNull: false min: 9223372036854775807 max: 9223372036854775807", + "count: 7500 hasNull: true min: 9223372036854775807 max: 9223372036854775807", stats[5].toString()); assertEquals(-15.0, ((DoubleColumnStatistics) stats[7]).getMinimum()); assertEquals(-5.0, ((DoubleColumnStatistics) stats[7]).getMaximum()); assertEquals(-75000.0, ((DoubleColumnStatistics) stats[7]).getSum(), 0.00001); - assertEquals("count: 7500 hasNull: false min: -15.0 max: -5.0 sum: -75000.0", + assertEquals("count: 7500 hasNull: true min: -15.0 max: -5.0 sum: -75000.0", stats[7].toString()); - assertEquals("count: 7500 hasNull: false min: bye max: hi sum: 0", stats[9].toString()); + assertEquals("count: 7500 hasNull: true min: bye max: hi sum: 0", stats[9].toString()); // check the inspectors StructObjectInspector readerInspector = (StructObjectInspector) reader diff --git ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java index 698523c..dde653f 100644 --- ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java +++ ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestOrcSerDeStats.java @@ -603,13 +603,13 @@ public void testSerdeStatsOldFormat() throws Exception { assertEquals(7500, stats[1].getNumberOfValues()); assertEquals(3750, ((BooleanColumnStatistics) stats[1]).getFalseCount()); assertEquals(3750, ((BooleanColumnStatistics) stats[1]).getTrueCount()); - assertEquals("count: 7500 hasNull: false true: 3750", stats[1].toString()); + assertEquals("count: 7500 hasNull: true true: 3750", stats[1].toString()); assertEquals(2048, ((IntegerColumnStatistics) stats[3]).getMaximum()); assertEquals(1024, ((IntegerColumnStatistics) stats[3]).getMinimum()); assertEquals(true, ((IntegerColumnStatistics) stats[3]).isSumDefined()); assertEquals(11520000, ((IntegerColumnStatistics) stats[3]).getSum()); - assertEquals("count: 7500 hasNull: false min: 1024 max: 2048 sum: 11520000", + assertEquals("count: 7500 hasNull: true min: 1024 max: 2048 sum: 11520000", stats[3].toString()); assertEquals(Long.MAX_VALUE, @@ -618,24 +618,24 @@ public void testSerdeStatsOldFormat() throws Exception { ((IntegerColumnStatistics) stats[5]).getMinimum()); assertEquals(false, ((IntegerColumnStatistics) stats[5]).isSumDefined()); assertEquals( - "count: 7500 hasNull: false min: 9223372036854775807 max: 9223372036854775807", + "count: 7500 hasNull: true min: 9223372036854775807 max: 9223372036854775807", stats[5].toString()); assertEquals(-15.0, ((DoubleColumnStatistics) stats[7]).getMinimum()); assertEquals(-5.0, ((DoubleColumnStatistics) stats[7]).getMaximum()); assertEquals(-75000.0, ((DoubleColumnStatistics) stats[7]).getSum(), 0.00001); - assertEquals("count: 7500 hasNull: false min: -15.0 max: -5.0 sum: -75000.0", + assertEquals("count: 7500 hasNull: true min: -15.0 max: -5.0 sum: -75000.0", stats[7].toString()); assertEquals("bye", ((StringColumnStatistics) stats[9]).getMinimum()); assertEquals("hi", ((StringColumnStatistics) stats[9]).getMaximum()); assertEquals(0, ((StringColumnStatistics) stats[9]).getSum()); - assertEquals("count: 7500 hasNull: false min: bye max: hi sum: 0", stats[9].toString()); + assertEquals("count: 7500 hasNull: true min: bye max: hi sum: 0", stats[9].toString()); // old orc format will not have binary statistics. toString() will show only // the general column statistics - assertEquals("count: 7500 hasNull: false", stats[8].toString()); + assertEquals("count: 7500 hasNull: true", stats[8].toString()); // since old orc format doesn't support binary statistics, // this should throw ClassCastException assertEquals(5, ((BinaryColumnStatistics) stats[8]).getSum()); diff --git ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java index d0f3a5e..a50def1 100644 --- ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java +++ ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java @@ -510,17 +510,17 @@ public void testEquals() throws Exception { PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf (PredicateLeaf.Operator.EQUALS, PredicateLeaf.Type.INTEGER, "x", 15L, null); - assertEquals(TruthValue.NO, + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(20L, 30L), pred, null)); - assertEquals(TruthValue.YES_NO, + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(15L, 30L), pred, null)); - assertEquals(TruthValue.YES_NO, + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(10L, 30L), pred, null)); - assertEquals(TruthValue.YES_NO, + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(10L, 15L), pred, null)); - assertEquals(TruthValue.NO, + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(0L, 10L), pred, null)); - assertEquals(TruthValue.YES, + assertEquals(TruthValue.YES_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(15L, 15L), pred, null)); } @@ -548,15 +548,15 @@ public void testLessThan() throws Exception { PredicateLeaf lessThan = TestSearchArgumentImpl.createPredicateLeaf (PredicateLeaf.Operator.LESS_THAN, PredicateLeaf.Type.INTEGER, "x", 15L, null); - assertEquals(TruthValue.NO, + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(20L, 30L), lessThan, null)); - assertEquals(TruthValue.NO, + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(15L, 30L), lessThan, null)); - assertEquals(TruthValue.YES_NO, + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(10L, 30L), lessThan, null)); - assertEquals(TruthValue.YES_NO, + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(10L, 15L), lessThan, null)); - assertEquals(TruthValue.YES, + assertEquals(TruthValue.YES_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(0L, 10L), lessThan, null)); } @@ -565,15 +565,15 @@ public void testLessThanEquals() throws Exception { PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf (PredicateLeaf.Operator.LESS_THAN_EQUALS, PredicateLeaf.Type.INTEGER, "x", 15L, null); - assertEquals(TruthValue.NO, + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(20L, 30L), pred, null)); - assertEquals(TruthValue.YES_NO, + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(15L, 30L), pred, null)); - assertEquals(TruthValue.YES_NO, + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(10L, 30L), pred, null)); - assertEquals(TruthValue.YES, + assertEquals(TruthValue.YES_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(10L, 15L), pred, null)); - assertEquals(TruthValue.YES, + assertEquals(TruthValue.YES_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(0L, 10L), pred, null)); } @@ -585,13 +585,13 @@ public void testIn() throws Exception { PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf (PredicateLeaf.Operator.IN, PredicateLeaf.Type.INTEGER, "x", null, args); - assertEquals(TruthValue.YES, + assertEquals(TruthValue.YES_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(20L, 20L), pred, null)); - assertEquals(TruthValue.NO, + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(30L, 30L), pred, null)); - assertEquals(TruthValue.YES_NO, + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(10L, 30L), pred, null)); - assertEquals(TruthValue.NO, + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(12L, 18L), pred, null)); } @@ -603,19 +603,19 @@ public void testBetween() throws Exception { PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf (PredicateLeaf.Operator.BETWEEN, PredicateLeaf.Type.INTEGER, "x", null, args); - assertEquals(TruthValue.NO, + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(0L, 5L), pred, null)); - assertEquals(TruthValue.NO, + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(30L, 40L), pred, null)); - assertEquals(TruthValue.YES_NO, + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(5L, 15L), pred, null)); - assertEquals(TruthValue.YES_NO, + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(15L, 25L), pred, null)); - assertEquals(TruthValue.YES_NO, + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(5L, 25L), pred, null)); - assertEquals(TruthValue.YES, + assertEquals(TruthValue.YES_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(10L, 20L), pred, null)); - assertEquals(TruthValue.YES, + assertEquals(TruthValue.YES_NULL, RecordReaderImpl.evaluatePredicateProto(createIntStats(12L, 18L), pred, null)); } @@ -624,7 +624,7 @@ public void testIsNull() throws Exception { PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf (PredicateLeaf.Operator.IS_NULL, PredicateLeaf.Type.INTEGER, "x", null, null); - assertEquals(TruthValue.NO, + assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicateProto(createIntStats(20L, 30L), pred, null)); } @@ -1168,10 +1168,10 @@ public void testIntEqualsBloomFilter() throws Exception { bf.addLong(i); } ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createIntStats(10, 100)); - assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addLong(15); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); } @Test @@ -1187,13 +1187,13 @@ public void testIntInBloomFilter() throws Exception { bf.addLong(i); } ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createIntStats(10, 100)); - assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addLong(19); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addLong(15); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); } @Test @@ -1220,10 +1220,10 @@ public void testDoubleEqualsBloomFilter() throws Exception { bf.addDouble(i); } ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createDoubleStats(10.0, 100.0)); - assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addDouble(15.0); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); } @Test @@ -1239,13 +1239,13 @@ public void testDoubleInBloomFilter() throws Exception { bf.addDouble(i); } ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createDoubleStats(10.0, 100.0)); - assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addDouble(19.0); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addDouble(15.0); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); } @Test @@ -1272,10 +1272,10 @@ public void testStringEqualsBloomFilter() throws Exception { bf.addString("str_" + i); } ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createStringStats("str_10", "str_200")); - assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addString("str_15"); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); } @Test @@ -1291,13 +1291,13 @@ public void testStringInBloomFilter() throws Exception { bf.addString("str_" + i); } ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createStringStats("str_10", "str_200")); - assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addString("str_19"); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addString("str_15"); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); } @Test @@ -1325,10 +1325,10 @@ public void testDateWritableEqualsBloomFilter() throws Exception { bf.addLong((new DateWritable(i)).getDays()); } ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createDateStats(10, 100)); - assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addLong((new DateWritable(15)).getDays()); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); } @Test @@ -1344,13 +1344,13 @@ public void testDateWritableInBloomFilter() throws Exception { bf.addLong((new DateWritable(i)).getDays()); } ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createDateStats(10, 100)); - assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addLong((new DateWritable(19)).getDays()); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addLong((new DateWritable(15)).getDays()); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); } @Test @@ -1379,10 +1379,10 @@ public void testTimestampEqualsBloomFilter() throws Exception { bf.addLong((new Timestamp(i)).getTime()); } ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createTimestampStats(10, 100)); - assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addLong((new Timestamp(15)).getTime()); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); } @Test @@ -1398,13 +1398,13 @@ public void testTimestampInBloomFilter() throws Exception { bf.addLong((new Timestamp(i)).getTime()); } ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createTimestampStats(10, 100)); - assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addLong((new Timestamp(19)).getTime()); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addLong((new Timestamp(15)).getTime()); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); } @Test @@ -1434,10 +1434,10 @@ public void testDecimalEqualsBloomFilter() throws Exception { bf.addString(HiveDecimal.create(i).toString()); } ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createDecimalStats("10", "200")); - assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addString(HiveDecimal.create(15).toString()); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); } @Test @@ -1453,13 +1453,13 @@ public void testDecimalInBloomFilter() throws Exception { bf.addString(HiveDecimal.create(i).toString()); } ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createDecimalStats("10", "200")); - assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addString(HiveDecimal.create(19).toString()); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); bf.addString(HiveDecimal.create(15).toString()); - assertEquals(TruthValue.YES_NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); + assertEquals(TruthValue.YES_NO_NULL, RecordReaderImpl.evaluatePredicate(cs, pred, bf)); } @Test @@ -1475,7 +1475,7 @@ public void testNullsInBloomFilter() throws Exception { for (int i = 20; i < 1000; i++) { bf.addString(HiveDecimal.create(i).toString()); } - ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createDecimalStats("10", "200")); + ColumnStatistics cs = ColumnStatisticsImpl.deserialize(createDecimalStats("10", "200", false)); // hasNull is false, so bloom filter should return NO assertEquals(TruthValue.NO, RecordReaderImpl.evaluatePredicate(cs, pred, bf));