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) {
