You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ma...@apache.org on 2014/11/26 00:12:13 UTC

phoenix git commit: PHOENIX-1474 NPE when RVC between combined with key part comparison

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 <ma...@apache.org>
Authored: Tue Nov 25 18:11:54 2014 -0500
Committer: maryannxue <ma...@apache.org>
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) {