Repository: phoenix Updated Branches: refs/heads/master d76a4f4e5 -> a4ce14bad
PHOENIX-4243 Using rowtimestamp column with RVC causes an exception sometimes Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/a4ce14ba Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/a4ce14ba Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/a4ce14ba Branch: refs/heads/master Commit: a4ce14badb00eb51c34059c602e33e1a889877e5 Parents: d76a4f4 Author: Samarth Jain <[email protected]> Authored: Thu Sep 28 22:25:32 2017 -0700 Committer: Samarth Jain <[email protected]> Committed: Thu Sep 28 22:25:32 2017 -0700 ---------------------------------------------------------------------- .../apache/phoenix/end2end/UpsertSelectIT.java | 56 +++++++++----------- .../org/apache/phoenix/compile/ScanRanges.java | 4 +- 2 files changed, 28 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/a4ce14ba/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectIT.java index 2dbb00b..fef5a25 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/UpsertSelectIT.java @@ -1127,7 +1127,6 @@ public class UpsertSelectIT extends ParallelStatsDisabledIT { assertEquals("KV2", rs.getString("KV2")); assertEquals("KV3", rs.getString("KV3")); assertFalse(rs.next()); - // Query using the index on base table stmt = conn.prepareStatement("SELECT KV1 FROM " + baseTable + " WHERE PK2 >= ? AND PK2 <= ? AND KV3 = ?"); stmt.setDate(1, new Date(startTime)); @@ -1220,39 +1219,36 @@ public class UpsertSelectIT extends ParallelStatsDisabledIT { assertEquals("KV24", rs.getString("KV2")); assertEquals("KV34", rs.getString("KV3")); assertFalse(rs.next()); - - // TODO: enable after PHOENIX-4243 is fixed -// // Query using the index on base table -// stmt = conn.prepareStatement("SELECT KV1 FROM " + baseTable + " WHERE (PK2, KV3) IN ((?, ?), (?, ?)) ORDER BY KV1"); -// stmt.setDate(1, upsertedDate); -// stmt.setString(2, "KV33"); -// stmt.setDate(3, new Date(upsertedTs)); -// stmt.setString(4, "KV34"); -// rs = stmt.executeQuery(); -// QueryPlan plan = stmt.unwrap(PhoenixStatement.class).getQueryPlan(); -// assertTrue(plan.getTableRef().getTable().getName().getString().equals(baseTableIdx)); -// assertTrue(rs.next()); -// assertEquals("KV13", rs.getString("KV1")); -// assertTrue(rs.next()); -// assertEquals("KV14", rs.getString("KV1")); -// assertFalse(rs.next()); + // Query using the index on base table + stmt = conn.prepareStatement("SELECT KV1 FROM " + baseTable + " WHERE (PK2, KV3) IN ((?, ?), (?, ?)) ORDER BY KV1"); + stmt.setDate(1, upsertedDate); + stmt.setString(2, "KV33"); + stmt.setDate(3, new Date(upsertedTs)); + stmt.setString(4, "KV34"); + rs = stmt.executeQuery(); + QueryPlan plan = stmt.unwrap(PhoenixStatement.class).getQueryPlan(); + assertTrue(plan.getTableRef().getTable().getName().getString().equals(baseTableIdx)); + assertTrue(rs.next()); + assertEquals("KV13", rs.getString("KV1")); + assertTrue(rs.next()); + assertEquals("KV14", rs.getString("KV1")); + assertFalse(rs.next()); } // Verify that the data upserted using the tenant view can now be queried using tenant view try (Connection tenantConn = getTenantConnection(tenantId)) { - //TODO: enable after PHOENIX-4243 is fixed -// // Query the base table -// PreparedStatement stmt = tenantConn.prepareStatement("SELECT * FROM " + tenantView + " WHERE (PK2, PK3) IN ((?, ?), (?, ?)) ORDER BY KV1"); -// stmt.setDate(1, upsertedDate); -// stmt.setInt(2, 33); -// stmt.setDate(3, new Date(upsertedTs)); -// stmt.setInt(4, 44); -// ResultSet rs = stmt.executeQuery(); -// assertTrue(rs.next()); -// assertEquals("KV13", rs.getString("KV1")); -// assertTrue(rs.next()); -// assertEquals("KV14", rs.getString("KV1")); -// assertFalse(rs.next()); + // Query the base table + PreparedStatement stmt = tenantConn.prepareStatement("SELECT * FROM " + tenantView + " WHERE (PK2, PK3) IN ((?, ?), (?, ?)) ORDER BY KV1"); + stmt.setDate(1, upsertedDate); + stmt.setInt(2, 33); + stmt.setDate(3, new Date(upsertedTs)); + stmt.setInt(4, 44); + ResultSet rs = stmt.executeQuery(); + assertTrue(rs.next()); + assertEquals("KV13", rs.getString("KV1")); + assertTrue(rs.next()); + assertEquals("KV14", rs.getString("KV1")); + assertFalse(rs.next()); //TODO: uncomment the code after PHOENIX-2277 is fixed // // Query using the index on the tenantView http://git-wip-us.apache.org/repos/asf/phoenix/blob/a4ce14ba/phoenix-core/src/main/java/org/apache/phoenix/compile/ScanRanges.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/ScanRanges.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/ScanRanges.java index 5a1fcb7..a7909fb 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/ScanRanges.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/ScanRanges.java @@ -650,8 +650,8 @@ public class ScanRanges { //ranges.set(rowTimestampColPos, sortedRange); //TODO: do I really need to do this? Field f = schema.getField(rowTimestampColPos); SortOrder order = f.getSortOrder(); - KeyRange lowestRange = rowTimestampColRange.get(0); - KeyRange highestRange = rowTimestampColRange.get(rowTimestampColRange.size() - 1); + KeyRange lowestRange = sortedRange.get(0); + KeyRange highestRange = sortedRange.get(rowTimestampColRange.size() - 1); if (order == SortOrder.DESC) { return getDescTimeRange(lowestRange, highestRange, f); }
