Repository: phoenix
Updated Branches:
  refs/heads/4.0 850272502 -> ed4ad1355


PHOENIX-1474 NPE when RVC between combined with key part comparison


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

Branch: refs/heads/4.0
Commit: ed4ad1355213418e4c83d6a4fdfb3eadaf31b44b
Parents: 8502725
Author: maryannxue <[email protected]>
Authored: Tue Nov 25 18:11:54 2014 -0500
Committer: maryannxue <[email protected]>
Committed: Tue Nov 25 18:11:54 2014 -0500

----------------------------------------------------------------------
 .../phoenix/end2end/RowValueConstructorIT.java       | 15 +++++++++++++++
 .../org/apache/phoenix/compile/WhereOptimizer.java   |  4 +++-
 2 files changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/ed4ad135/phoenix-core/src/it/java/org/apache/phoenix/end2end/RowValueConstructorIT.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RowValueConstructorIT.java
 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RowValueConstructorIT.java
index be91eab..8d67fa4 100644
--- 
a/phoenix-core/src/it/java/org/apache/phoenix/end2end/RowValueConstructorIT.java
+++ 
b/phoenix-core/src/it/java/org/apache/phoenix/end2end/RowValueConstructorIT.java
@@ -1311,6 +1311,21 @@ public class RowValueConstructorIT extends 
BaseClientManagedTimeIT {
         assertEquals("helo3", rs.getString(1));
         assertEquals(3, rs.getInt(2));
         assertFalse(rs.next());
+        
+        stmt = conn.prepareStatement("select pk2, pk3 from RVC1 WHERE tenantId 
= ? AND (tenantId, pk2, pk3) BETWEEN (?, ?, ?) AND (?, ?, ?) LIMIT 100");
+        stmt.setString(1, "ABC");
+        stmt.setString(2, "ABC");
+        stmt.setString(3, "helo2");
+        stmt.setInt(4, 2);
+        stmt.setString(5, "DEF");
+        stmt.setString(6, "helo3");
+        stmt.setInt(7, 3);
+        
+        rs = stmt.executeQuery();
+        assertTrue(rs.next());
+        assertEquals("helo2", rs.getString(1));
+        assertEquals(2, rs.getInt(2));
+        assertFalse(rs.next());
     }
     
     // query against tenant specific view. Salted base table.

http://git-wip-us.apache.org/repos/asf/phoenix/blob/ed4ad135/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
----------------------------------------------------------------------
diff --git 
a/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java 
b/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
index 6a46a7b..f70ba21 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/WhereOptimizer.java
@@ -643,7 +643,9 @@ public class WhereOptimizer {
                     // with our minMaxRange, since it spans columns and this 
would mess up our skip scan.
                     minMaxRange = 
minMaxRange.intersect(childSlot.getMinMaxRange());
                     for (KeySlot slot : childSlot) {
-                        
minMaxExtractNodes.addAll(slot.getKeyPart().getExtractNodes());
+                        if (slot != null) {
+                           
minMaxExtractNodes.addAll(slot.getKeyPart().getExtractNodes());
+                        }
                     }
                 } else {
                     for (KeySlot slot : childSlot) {

Reply via email to