Author: gopalv
Date: Sun Jan 25 05:03:58 2015
New Revision: 1654616

URL: http://svn.apache.org/r1654616
Log:
HIVE-9443: Fix ORC IS_NULL predicate for columns with some nulls (Gopal V, 
reviewed by Prasanth J)

Modified:
    
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java
    
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java
    hive/trunk/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out

Modified: 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java?rev=1654616&r1=1654615&r2=1654616&view=diff
==============================================================================
--- 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java 
(original)
+++ 
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/io/orc/RecordReaderImpl.java 
Sun Jan 25 05:03:58 2015
@@ -2490,7 +2490,8 @@ class RecordReaderImpl implements Record
           return hasNull ? TruthValue.YES_NO_NULL : TruthValue.YES_NO;
         }
       case IS_NULL:
-        return hasNull ? TruthValue.YES : TruthValue.NO;
+        // min = null condition above handles the all-nulls YES case
+        return hasNull ? TruthValue.YES_NO : TruthValue.NO;
       default:
         return hasNull ? TruthValue.YES_NO_NULL : TruthValue.YES_NO;
       }

Modified: 
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java?rev=1654616&r1=1654615&r2=1654616&view=diff
==============================================================================
--- 
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java
 (original)
+++ 
hive/trunk/ql/src/test/org/apache/hadoop/hive/ql/io/orc/TestRecordReaderImpl.java
 Sun Jan 25 05:03:58 2015
@@ -750,7 +750,7 @@ public class TestRecordReaderImpl {
     PredicateLeaf pred = TestSearchArgumentImpl.createPredicateLeaf
         (PredicateLeaf.Operator.IS_NULL, PredicateLeaf.Type.STRING,
             "x", null, null);
-    assertEquals(TruthValue.YES,
+    assertEquals(TruthValue.YES_NO,
         RecordReaderImpl.evaluatePredicate(createStringStats("c", "d", true), 
pred));
     assertEquals(TruthValue.NO,
         RecordReaderImpl.evaluatePredicate(createStringStats("c", "d", false), 
pred));

Modified: 
hive/trunk/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out
URL: 
http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out?rev=1654616&r1=1654615&r2=1654616&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out 
(original)
+++ hive/trunk/ql/src/test/results/clientpositive/orc_predicate_pushdown.q.out 
Sun Jan 25 05:03:58 2015
@@ -747,6 +747,9 @@ POSTHOOK: query: SELECT t, si, d, s FROM
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@orc_pred
 #### A masked pattern was here ####
+101    327     11.48   gabriella ellison
+15     334     11.12   jessica robinson
+7      320     11.54   bob ellison
 PREHOOK: query: EXPLAIN SELECT t, si, d, s FROM orc_pred
   WHERE d >= ROUND(9.99)
   AND d < 12
@@ -943,6 +946,7 @@ POSTHOOK: query: SELECT t, si, d, s FROM
 POSTHOOK: type: QUERY
 POSTHOOK: Input: default@orc_pred
 #### A masked pattern was here ####
+15     334     11.12   jessica robinson
 PREHOOK: query: EXPLAIN SELECT t, si, d, s FROM orc_pred
   WHERE t > 10
   AND t <> 101


Reply via email to