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 2016/02/24 22:14:08 UTC
[50/50] [abbrv] phoenix git commit: 1. Expose and correct (new issue
to be opened) the byte estimate interface from ResultIterators and apply it
in costing;
2. Remove walk-around for PHOENIX-2647 and verify the tests all work;
3. Apply temporary fix for
1. Expose and correct (new issue to be opened) the byte estimate interface from ResultIterators and apply it in costing; 2. Remove walk-around for PHOENIX-2647 and verify the tests all work; 3. Apply temporary fix for PHOENIX-2712
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/9ac854ae
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/9ac854ae
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/9ac854ae
Branch: refs/heads/calcite
Commit: 9ac854ae5335a00d2a61ec6f1929ebc64e7137e2
Parents: bc4b891
Author: maryannxue <ma...@gmail.com>
Authored: Wed Feb 24 16:12:25 2016 -0500
Committer: maryannxue <ma...@gmail.com>
Committed: Wed Feb 24 16:12:25 2016 -0500
----------------------------------------------------------------------
.../apache/phoenix/calcite/BaseCalciteIT.java | 52 ++++--
.../org/apache/phoenix/calcite/CalciteIT.java | 163 ++++++++++---------
.../apache/phoenix/calcite/CalciteIndexIT.java | 36 ++--
.../phoenix/calcite/rel/PhoenixTableScan.java | 74 +--------
.../org/apache/phoenix/execute/ScanPlan.java | 5 +
.../phoenix/iterate/BaseResultIterators.java | 12 +-
.../apache/phoenix/iterate/ResultIterators.java | 1 +
.../phoenix/iterate/UnionResultIterators.java | 5 +
.../apache/phoenix/schema/MetaDataClient.java | 3 +
.../iterate/AggregateResultScannerTest.java | 5 +
.../iterate/ConcatResultIteratorTest.java | 10 ++
.../iterate/MergeSortResultIteratorTest.java | 15 ++
12 files changed, 204 insertions(+), 177 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ac854ae/phoenix-core/src/it/java/org/apache/phoenix/calcite/BaseCalciteIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/calcite/BaseCalciteIT.java b/phoenix-core/src/it/java/org/apache/phoenix/calcite/BaseCalciteIT.java
index 35c46e7..65a9c6e 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/calcite/BaseCalciteIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/calcite/BaseCalciteIT.java
@@ -168,14 +168,28 @@ public class BaseCalciteIT extends BaseClientManagedTimeIT {
start.close();
}
- public Sql resultIs(boolean ordered, Object[][] expected) throws SQLException {
+ public Sql resultIs(Object[][] expected) throws SQLException {
final Statement statement = start.getConnection().createStatement();
final ResultSet resultSet = statement.executeQuery(sql);
- if (ordered) {
- checkResultOrdered(resultSet, expected);
- } else {
- checkResultUnordered(resultSet, expected);
- }
+ checkResultOrdered(resultSet, expected);
+ resultSet.close();
+ statement.close();
+ return this;
+ }
+
+ public Sql resultIs(int orderedCount, Object[][] expected) throws SQLException {
+ final Statement statement = start.getConnection().createStatement();
+ final ResultSet resultSet = statement.executeQuery(sql);
+ checkResultUnordered(resultSet, expected, orderedCount, null);
+ resultSet.close();
+ statement.close();
+ return this;
+ }
+
+ public Sql resultIsSomeOf(int count, Object[][] expected) throws SQLException {
+ final Statement statement = start.getConnection().createStatement();
+ final ResultSet resultSet = statement.executeQuery(sql);
+ checkResultUnordered(resultSet, expected, 0, count);
resultSet.close();
statement.close();
return this;
@@ -198,21 +212,28 @@ public class BaseCalciteIT extends BaseClientManagedTimeIT {
assertFalse("Got more rows than expected.", resultSet.next());
}
- private void checkResultUnordered(ResultSet resultSet, Object[][] expected) throws SQLException {
+ private void checkResultUnordered(ResultSet resultSet, Object[][] expected, int orderedCount, Integer checkContains) throws SQLException {
List<List<Object>> expectedResults = Lists.newArrayList();
List<List<Object>> actualResults = Lists.newArrayList();
List<List<Object>> errorResults = Lists.newArrayList();
int columnCount = expected.length > 0 ? expected[0].length : 0;
for (Object[] e : expected) {
List<Object> row = Lists.newArrayList();
- for (Object o : e) {
- row.add(canonicalize(o));
+ for (int i = orderedCount; i < e.length; i++) {
+ row.add(canonicalize(e[i]));
}
expectedResults.add(row);
}
while (resultSet.next()) {
+ // check the ordered part
+ Object[] row = expected[actualResults.size()];
+ for (int i = 0; i < orderedCount; i++) {
+ Object obj = resultSet.getObject(i + 1);
+ assertEquals(canonicalize(row[i]), canonicalize(obj));
+ }
+ // check the unordered part
List<Object> result = Lists.newArrayList();
- for (int i = 0; i < columnCount; i++) {
+ for (int i = orderedCount; i < columnCount; i++) {
result.add(canonicalize(resultSet.getObject(i+1)));
}
if (!expectedResults.remove(result)) {
@@ -220,10 +241,15 @@ public class BaseCalciteIT extends BaseClientManagedTimeIT {
}
actualResults.add(result);
}
+ boolean allContainedInExpected = errorResults.isEmpty();
+ boolean allExpectedFound = checkContains == null ? expectedResults.isEmpty() : checkContains == actualResults.size();
assertTrue(
- (expectedResults.isEmpty() ? "" : ("Count not find " + expectedResults + " in actual results: " + actualResults + ".\n")) +
- (errorResults.isEmpty() ? "" : "Could not find " + errorResults + " in expected results.\n"),
- errorResults.isEmpty() && expectedResults.isEmpty());
+ (allContainedInExpected ? "" : "Could not find " + errorResults + " in expected results.\n") +
+ (allExpectedFound ? "" :
+ (checkContains == null
+ ? ("Count not find " + expectedResults + " in actual results: " + actualResults + ".\n")
+ : ("Expected " + checkContains + " rows, but got " + actualResults.size() + " rows."))),
+ allContainedInExpected && allExpectedFound);
}
private Object canonicalize(Object obj) {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ac854ae/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java b/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java
index df6ac81..fc08252 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java
@@ -64,7 +64,7 @@ public class CalciteIT extends BaseCalciteIT {
start(false, 1000f).sql("select * from aTable where a_string = 'a'")
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"00D300000000XHP", "00A123122312312", "a"},
{"00D300000000XHP", "00A223122312312", "a"},
{"00D300000000XHP", "00A323122312312", "a"},
@@ -73,12 +73,12 @@ public class CalciteIT extends BaseCalciteIT {
// FIXME: Should be 14:22:56 instead. Wrong due to time zone.
start(false, 1000f).sql("select \"DATE\" from " + JOIN_ORDER_TABLE_FULL_NAME + " where \"order_id\" = '000000000000001'")
- .resultIs(false, new Object[][]{
+ .resultIs(0, new Object[][]{
{new Timestamp(format.parse("2013-11-22 19:22:56").getTime())}})
.close();
start(false, 1000f).sql("select student_id, scores from " + SCORES_TABLE_NAME)
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{1, new Integer[] {85, 80, 82}},
{2, null},
{3, new Integer[] {87, 88, 80}}})
@@ -90,7 +90,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(ENTITY_ID=[$1], A_STRING=[$2], ORGANIZATION_ID=[$0])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"00A123122312312", "a", "00D300000000XHP"},
{"00A223122312312", "a", "00D300000000XHP"},
{"00A323122312312", "a", "00D300000000XHP"},
@@ -107,7 +107,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"00A123122312312", "a", "00D300000000XHP"},
{"00A223122312312", "a", "00D300000000XHP"},
{"00A323122312312", "a", "00D300000000XHP"},
@@ -122,7 +122,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"0000000001", "T1", "0000000001", "S1"},
{"0000000002", "T2", "0000000001", "S1"},
{"0000000003", "T3", "0000000002", "S2"},
@@ -138,7 +138,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixServerProject(supplier_id=[$0], NAME=[$1], PHONE=[$2], ADDRESS=[$3], LOC_ID=[$4], NAME5=[CAST($1):VARCHAR(2) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\"])\n" +
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]], filter=[=(CAST($1):VARCHAR(2) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\", 'S5')])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"0000000005", "T5", 500, 8, 15, "0000000005", "Item T5", "0000000005", "S5", "888-888-5555", "505 YYY Street", "10005"}})
.close();
@@ -151,7 +151,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixServerProject(order_id=[$0], item_id=[$2], QUANTITY=[$4], PRICE7=[CAST($3):DECIMAL(17, 6)])\n" +
" PhoenixTableScan(table=[[phoenix, Join, OrderTable]], filter=[<($4, 5000)])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"000000000000004", "T6", 600, 15, 4000}})
.close();
}
@@ -165,7 +165,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n" +
" PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"0000000001", "T1", "0000000001", "S1"},
{"0000000002", "T2", "0000000001", "S1"},
{"0000000003", "T3", "0000000002", "S2"},
@@ -188,7 +188,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]], scanOrder=[FORWARD])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"0000000001", "T1", "0000000001", "S1"},
{"0000000002", "T2", "0000000001", "S1"},
{"0000000003", "T3", "0000000002", "S2"},
@@ -208,7 +208,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[FORWARD])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[FORWARD])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"00A123122312312", "a", "00D300000000XHP"},
{"00A223122312312", "a", "00D300000000XHP"},
{"00A323122312312", "a", "00D300000000XHP"},
@@ -284,7 +284,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2], B_STRING=[$3])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[AND(=($2, 'a'), >($3, 'a'))])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"00A123122312312", "a", "00D300000000XHP"},
{"00A223122312312", "a", "00D300000000XHP"},
{"00A323122312312", "a", "00D300000000XHP"},
@@ -305,7 +305,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixServerSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[ASC])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"00A123122312312", "a", "00D300000000XHP"},
{"00A223122312312", "a", "00D300000000XHP"},
{"00A323122312312", "a", "00D300000000XHP"},
@@ -323,7 +323,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerAggregate(group=[{}], EXPR$0=[COUNT($3)])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{9L}})
.close();
@@ -331,7 +331,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerAggregate(group=[{0}], EXPR$1=[COUNT($3)], isOrdered=[true])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[FORWARD])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"00D300000000XHP", 9L}})
.close();
@@ -339,7 +339,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerAggregate(group=[{0, 1}], EXPR$2=[COUNT($3)], isOrdered=[true])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[FORWARD])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"00D300000000XHP", "00A123122312312", 1L},
{"00D300000000XHP", "00A223122312312", 1L},
{"00D300000000XHP", "00A323122312312", 1L},
@@ -355,7 +355,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerAggregate(group=[{1}], EXPR$1=[COUNT($3)], isOrdered=[false])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"00A123122312312", 1L},
{"00A223122312312", 1L},
{"00A323122312312", 1L},
@@ -371,7 +371,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerAggregate(group=[{2}], EXPR$1=[COUNT($3)], isOrdered=[false])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"a", 4L},
{"b", 4L},
{"c", 1L}})
@@ -382,7 +382,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixClientProject(EXPR$0=[$1], A_STRING=[$0])\n" +
" PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()], isOrdered=[false])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{4L, "a"},
{4L, "b"},
{1L, "c"}})
@@ -396,7 +396,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n" +
" PhoenixServerProject(supplier_id=[$5])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"S1", 2L},
{"S2", 2L},
{"S5", 1L},
@@ -412,7 +412,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]], scanOrder=[FORWARD])\n" +
" PhoenixServerProject(supplier_id=[$5])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"0000000001", 2L},
{"0000000002", 2L},
{"0000000005", 1L},
@@ -423,7 +423,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerAggregate(group=[{2}], EXPR$1=[SUM($4)], isOrdered=[false])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"a", 10L},
{"b", 26L},
{"c", 9L}})
@@ -439,7 +439,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixClientProject(MYPK0=[$0], EXPR$1=[CAST(/($1, $2)):INTEGER NOT NULL])\n" +
" PhoenixServerAggregate(group=[{0}], agg#0=[$SUM0($1)], agg#1=[COUNT()], isOrdered=[true])\n" +
" PhoenixTableScan(table=[[phoenix, SALTED_TEST_TABLE]], scanOrder=[FORWARD])\n")
- .resultIs(false, expectedResult)
+ .resultIs(0, expectedResult)
.close();
}
@@ -448,7 +448,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerAggregate(group=[{2}], isOrdered=[false])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(false, new Object[][]{
+ .resultIs(0, new Object[][]{
{"a"},
{"b"},
{"c"}})
@@ -461,7 +461,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixServerSort(sort0=[$2], sort1=[$1], dir0=[ASC], dir1=[ASC])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"00D300000000XHP", "00A123122312312", "a"},
{"00D300000000XHP", "00A223122312312", "a"},
{"00D300000000XHP", "00A323122312312", "a"},
@@ -477,7 +477,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[FORWARD])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"00D300000000XHP", "00A123122312312", "a"},
{"00D300000000XHP", "00A223122312312", "a"},
{"00D300000000XHP", "00A323122312312", "a"},
@@ -493,7 +493,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[REVERSE])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"00D300000000XHP", "00C923122312312", "c"},
{"00D300000000XHP", "00B823122312312", "b"},
{"00D300000000XHP", "00B723122312312", "b"},
@@ -509,7 +509,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[REVERSE])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"00D300000000XHP", "00C923122312312", "c"},
{"00D300000000XHP", "00B823122312312", "b"},
{"00D300000000XHP", "00B723122312312", "b"},
@@ -526,7 +526,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixServerSort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[DESC])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"00D300000000XHP", "00C923122312312", "c"},
{"00D300000000XHP", "00B823122312312", "b"},
{"00D300000000XHP", "00B723122312312", "b"},
@@ -544,7 +544,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixCompactClientSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[DESC])\n" +
" PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()], isOrdered=[false])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{1L, "c"},
{4L, "b"},
{4L, "a"}})
@@ -559,7 +559,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n" +
" PhoenixServerProject(supplier_id=[$5])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"S6", 1L},
{"S5", 1L},
{"S2", 2L},
@@ -575,7 +575,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"0000000006", "T6", "0000000006", "S6"},
{"0000000005", "T5", "0000000005", "S5"},
{"0000000004", "T4", "0000000002", "S2"},
@@ -592,7 +592,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixServerSort(sort0=[$2], sort1=[$1], dir0=[ASC], dir1=[ASC])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"00D300000000XHP", "00A123122312312", "a"},
{"00D300000000XHP", "00A223122312312", "a"},
{"00D300000000XHP", "00A323122312312", "a"},
@@ -605,7 +605,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixLimit(fetch=[5])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[FORWARD])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"00D300000000XHP", "00A123122312312", "a"},
{"00D300000000XHP", "00A223122312312", "a"},
{"00D300000000XHP", "00A323122312312", "a"},
@@ -618,7 +618,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixLimit(fetch=[5])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[REVERSE])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"00D300000000XHP", "00C923122312312", "c"},
{"00D300000000XHP", "00B823122312312", "b"},
{"00D300000000XHP", "00B723122312312", "b"},
@@ -631,7 +631,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixLimit(fetch=[5])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], scanOrder=[REVERSE])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"00D300000000XHP", "00C923122312312", "c"},
{"00D300000000XHP", "00B823122312312", "b"},
{"00D300000000XHP", "00B723122312312", "b"},
@@ -645,7 +645,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixServerSort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[DESC])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"00D300000000XHP", "00C923122312312", "c"},
{"00D300000000XHP", "00B823122312312", "b"},
{"00D300000000XHP", "00B723122312312", "b"},
@@ -660,7 +660,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixCompactClientSort(sort0=[$1], sort1=[$0], dir0=[ASC], dir1=[DESC])\n" +
" PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()], isOrdered=[false])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{1L, "c"},
{4L, "b"}})
.close();
@@ -675,7 +675,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n" +
" PhoenixServerProject(supplier_id=[$5])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"S6", 1L},
{"S5", 1L},
{"S2", 2L}})
@@ -691,7 +691,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"0000000006", "T6", "0000000006", "S6"},
{"0000000005", "T5", "0000000005", "S5"},
{"0000000004", "T4", "0000000002", "S2"}})
@@ -704,12 +704,16 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixLimit(fetch=[5])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(false, new Object[][] {
- {"00D300000000XHP", "00A123122312312", "a"},
- {"00D300000000XHP", "00A223122312312", "a"},
- {"00D300000000XHP", "00A323122312312", "a"},
- {"00D300000000XHP", "00A423122312312", "a"},
- {"00D300000000XHP", "00B523122312312", "b"}})
+ .resultIsSomeOf(5, new Object[][] {
+ {"00D300000000XHP", "00A123122312312", "a"},
+ {"00D300000000XHP", "00A223122312312", "a"},
+ {"00D300000000XHP", "00A323122312312", "a"},
+ {"00D300000000XHP", "00A423122312312", "a"},
+ {"00D300000000XHP", "00B523122312312", "b"},
+ {"00D300000000XHP", "00B623122312312", "b"},
+ {"00D300000000XHP", "00B723122312312", "b"},
+ {"00D300000000XHP", "00B823122312312", "b"},
+ {"00D300000000XHP", "00C923122312312", "c"}})
.close();
start(false, 1000f).sql("select count(entity_id), a_string from atable group by a_string limit 2")
@@ -718,9 +722,10 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixLimit(fetch=[2])\n" +
" PhoenixServerAggregate(group=[{2}], EXPR$0=[COUNT()], isOrdered=[false])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n")
- .resultIs(false, new Object[][] {
+ .resultIsSomeOf(2, new Object[][] {
{4L, "a"},
- {4L, "b"}})
+ {4L, "b"},
+ {1L, "c"}})
.close();
start(false, 1000f).sql("select s.name, count(\"item_id\") from " + JOIN_SUPPLIER_TABLE_FULL_NAME + " s join " + JOIN_ITEM_TABLE_FULL_NAME + " i on s.\"supplier_id\" = i.\"supplier_id\" group by s.name limit 3")
@@ -732,10 +737,11 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n" +
" PhoenixServerProject(supplier_id=[$5])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n")
- .resultIs(false, new Object[][] {
+ .resultIsSomeOf(3, new Object[][] {
{"S1", 2L},
{"S2", 2L},
- {"S5", 1L}})
+ {"S5", 1L},
+ {"S6", 1L}})
.close();
start(false, 1000f).sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" limit 3")
@@ -747,10 +753,13 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n")
- .resultIs(false, new Object[][] {
+ .resultIsSomeOf(3, new Object[][] {
{"0000000001", "T1", "0000000001", "S1"},
{"0000000002", "T2", "0000000001", "S1"},
- {"0000000003", "T3", "0000000002", "S2"}})
+ {"0000000003", "T3", "0000000002", "S2"},
+ {"0000000004", "T4", "0000000002", "S2"},
+ {"0000000005", "T5", "0000000005", "S5"},
+ {"0000000006", "T6", "0000000006", "S6"}})
.close();
start(false, 1000f).sql("SELECT x from (values (1, 2), (2, 4), (3, 6)) as t(x, y) limit 2")
@@ -758,7 +767,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixClientProject(X=[$0])\n" +
" PhoenixLimit(fetch=[2])\n" +
" PhoenixValues(tuples=[[{ 1, 2 }, { 2, 4 }, { 3, 6 }]])\n")
- .resultIs(false, new Object[][] {{1}, {2}})
+ .resultIsSomeOf(2, new Object[][] {{1}, {2}, {3}})
.close();
}
@@ -776,7 +785,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixServerProject(item_id=[$0])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]], scanOrder=[FORWARD])\n" +
" PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
new Object[] {"0000000001", "T1", 1000},
new Object[] {"0000000002", "T2", 3000},
new Object[] {"0000000003", "T3", 5000},
@@ -798,7 +807,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
" PhoenixServerProject(item_id=[$0])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]], filter=[<($0, '0000000006')])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
new Object[] {"0000000001", "T1", 1000},
new Object[] {"0000000002", "T2", 3000},
new Object[] {"0000000003", "T3", 5000},
@@ -817,7 +826,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixClientAggregate(group=[{}], EXPR$0=[COUNT()], EXPR$1=[MAX($1)])\n" +
" PhoenixValues(tuples=[[{ 2, 1 }, { 3, 4 }, { 5, 2 }]])\n")
- .resultIs(false, new Object[][] {{3L, 4}})
+ .resultIs(0, new Object[][] {{3L, 4}})
.close();
}
@@ -829,7 +838,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n" +
" PhoenixServerProject(ENTITY_ID=[$1])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'b')])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"00A123122312312"},
{"00A223122312312"},
{"00A323122312312"},
@@ -852,7 +861,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixServerSort(sort0=[$0], dir0=[DESC])\n" +
" PhoenixServerProject(ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'c')])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"00C923122312312", "c"},
{"00A423122312312", "a"},
{"00A323122312312", "a"}})
@@ -867,7 +876,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixServerSort(sort0=[$0], dir0=[DESC])\n" +
" PhoenixServerProject(ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'c')])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"00C923122312312", "c"},
{"00A423122312312", "a"},
{"00A323122312312", "a"},
@@ -882,7 +891,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixUncollect\n" +
" PhoenixServerProject(EXPR$0=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, SCORES]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{85},
{80},
{82},
@@ -898,7 +907,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixUncollect\n" +
" PhoenixServerProject(EXPR$0=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, SCORES]], filter=[=($cor0.STUDENT_ID, $0)])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{1, 85},
{1, 80},
{1, 82},
@@ -941,8 +950,8 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
" PhoenixServerAggregate(group=[{2}], isOrdered=[false])\n" +
" PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n";
- start(correlProps).sql(q1).explainIs(p1Correlate).resultIs(false, r1).close();
- start(decorrelProps).sql(q1).explainIs(p1Decorrelated).resultIs(false, r1).close();
+ start(correlProps).sql(q1).explainIs(p1Correlate).resultIs(0, r1).close();
+ start(decorrelProps).sql(q1).explainIs(p1Decorrelated).resultIs(0, r1).close();
String q2 = "select name from " + JOIN_ITEM_TABLE_FULL_NAME + " i where price = (select max(price) from " + JOIN_ITEM_TABLE_FULL_NAME + " i2 where i.\"item_id\" = i2.\"item_id\" and i.name = i2.name and i2.\"item_id\" <> 'invalid001')";
Object[][] r2 = new Object[][]{
@@ -973,8 +982,8 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixServerProject(item_id=[$0], NAME=[$1], PRICE=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]], filter=[<>($0, 'invalid001')])\n";
- start(correlProps).sql(q2).explainIs(p2Correlate).resultIs(false, r2).close();
- start(decorrelProps).sql(q2).explainIs(p2Decorrelated).resultIs(false, r2).close();
+ start(correlProps).sql(q2).explainIs(p2Correlate).resultIs(0, r2).close();
+ start(decorrelProps).sql(q2).explainIs(p2Decorrelated).resultIs(0, r2).close();
// Test PhoenixClientSemiJoin
String q3 = "select \"item_id\", name from " + JOIN_ITEM_TABLE_FULL_NAME + " i where exists (select 1 from " + JOIN_ORDER_TABLE_FULL_NAME + " o where i.\"item_id\" = o.\"item_id\")";
@@ -1002,8 +1011,8 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]], scanOrder=[FORWARD])\n" +
" PhoenixServerProject(item_id=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n";
- start(correlProps).sql(q3).explainIs(p3Correlate).resultIs(false, r3).close();
- start(decorrelProps).sql(q3).explainIs(p3Decorrelated).resultIs(false, r3).close();
+ start(correlProps).sql(q3).explainIs(p3Correlate).resultIs(0, r3).close();
+ start(decorrelProps).sql(q3).explainIs(p3Decorrelated).resultIs(0, r3).close();
String q4 = "select \"item_id\", name from " + JOIN_ITEM_TABLE_FULL_NAME + " i where \"item_id\" in (select \"item_id\" from " + JOIN_ORDER_TABLE_FULL_NAME + ")";
Object[][] r4 = new Object[][] {
@@ -1018,7 +1027,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixServerProject(item_id=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n";
- start(decorrelProps).sql(q4).explainIs(p4Decorrelated).resultIs(false, r4).close();
+ start(decorrelProps).sql(q4).explainIs(p4Decorrelated).resultIs(0, r4).close();
String q5 = "select \"order_id\" from " + JOIN_ITEM_TABLE_FULL_NAME + " i JOIN " + JOIN_ORDER_TABLE_FULL_NAME + " o on o.\"item_id\" = i.\"item_id\" where quantity = (select max(quantity) from " + JOIN_ORDER_TABLE_FULL_NAME + " o2 JOIN " + JOIN_ITEM_TABLE_FULL_NAME + " i2 on o2.\"item_id\" = i2.\"item_id\" where i.\"supplier_id\" = i2.\"supplier_id\")";
Object [][] r5 = new Object[][] {
@@ -1062,7 +1071,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixServerProject(item_id=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n";
- start(correlProps).sql(q5).explainIs(p5Correlate).resultIs(false, r5).close();
+ start(correlProps).sql(q5).explainIs(p5Correlate).resultIs(0, r5).close();
//TODO long-running query, disable for now.
//start(decorrelProps).sql(q5).explainIs(p5Decorrelated).resultIs(false, r5).close();
@@ -1092,8 +1101,8 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n" +
" PhoenixServerAggregate(group=[{0, 3}], isOrdered=[false])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n";
- start(correlProps).sql(q6).explainIs(p6Correlate).resultIs(false, r6).close();
- start(decorrelProps).sql(q6).explainIs(p6Decorrelated).resultIs(false, r6).close();
+ start(correlProps).sql(q6).explainIs(p6Correlate).resultIs(0, r6).close();
+ start(decorrelProps).sql(q6).explainIs(p6Decorrelated).resultIs(0, r6).close();
}
@Test public void testInValueList() throws Exception {
@@ -1101,7 +1110,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(ENTITY_ID=[$1])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[AND(=($0, '00D300000000XHP'), OR(=($1, '00A123122312312'), =($1, '00A223122312312'), =($1, '00B523122312312'), =($1, '00B623122312312'), =($1, '00C923122312312')))])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"00A123122312312"},
{"00A223122312312"},
{"00B523122312312"},
@@ -1114,7 +1123,7 @@ public class CalciteIT extends BaseCalciteIT {
start(false, 1000f).sql("select * from v")
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"00D300000000XHP", "00A123122312312", "a"},
{"00D300000000XHP", "00A223122312312", "a"},
{"00D300000000XHP", "00A323122312312", "a"},
@@ -1127,7 +1136,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixClientProject(EXPR$0=[NEXT_VALUE('\"SEQ0\"')], C0=[$0])\n" +
" PhoenixValues(tuples=[[{ 1 }, { 1 }]])\n")
- .resultIs(false, new Object[][]{
+ .resultIs(0, new Object[][]{
{1L, 1},
{2L, 1}})
.close();
@@ -1136,7 +1145,7 @@ public class CalciteIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixClientProject(EXPR$0=[NEXT_VALUE('\"MY\".\"SEQ1\"')], ENTITY_ID=[$1])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]], filter=[=($2, 'a')])\n")
- .resultIs(false, new Object[][]{
+ .resultIs(1, new Object[][]{
{2L, "00A123122312312"},
{4L, "00A223122312312"},
{6L, "00A323122312312"},
@@ -1151,7 +1160,7 @@ public class CalciteIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(1, new Object[][] {
{3L, "0000000001", "T1", "0000000001", "S1"},
{4L, "0000000002", "T2", "0000000001", "S1"},
{5L, "0000000003", "T3", "0000000002", "S2"},
@@ -1196,7 +1205,7 @@ public class CalciteIT extends BaseCalciteIT {
" JdbcToEnumerableConverter\n" +
" JdbcProject(time_id=[$0], the_date=[$1], the_day=[$2], the_month=[$3], the_year=[$4], day_of_month=[$5], week_of_year=[$6], month_of_year=[$7], quarter=[$8], fiscal_period=[$9], the_year10=[CAST($4):INTEGER])\n" +
" JdbcTableScan(table=[[foodmart, time_by_day]])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
new Object[] {1997, 1000, 365L},
new Object[] {1997, 2000, 365L},
new Object[] {1997, 3000, 365L},
http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ac854ae/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIndexIT.java
index d1aea74..067d0fc 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIndexIT.java
@@ -131,20 +131,20 @@ public class CalciteIndexIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerAggregate(group=[{}], EXPR$0=[COUNT()])\n" +
" PhoenixTableScan(table=[[phoenix, IDXSALTED_NOSALT_TEST_TABLE]], filter=[>(CAST($0):INTEGER, 3)])\n")
- .resultIs(false, new Object[][]{{999L}})
+ .resultIs(0, new Object[][]{{999L}})
.close();
start(true, 1f).sql("select mypk0, mypk1, col0 from " + NOSALT_TABLE_NAME + " where col0 <= 4")
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(MYPK0=[$1], MYPK1=[$2], COL0=[CAST($0):INTEGER])\n" +
" PhoenixTableScan(table=[[phoenix, IDXSALTED_NOSALT_TEST_TABLE]], filter=[<=(CAST($0):INTEGER, 4)])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{2, 3, 4},
{1, 2, 3}})
.close();
start(true, 1f).sql("select * from " + SALTED_TABLE_NAME + " where mypk0 < 3")
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixTableScan(table=[[phoenix, SALTED_TEST_TABLE]], filter=[<($0, 3)])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{1, 2, 3, 4},
{2, 3, 4, 5}})
.close();
@@ -152,13 +152,13 @@ public class CalciteIndexIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerAggregate(group=[{}], EXPR$0=[COUNT()])\n" +
" PhoenixTableScan(table=[[phoenix, IDX_SALTED_TEST_TABLE]], filter=[>(CAST($0):INTEGER, 3)])\n")
- .resultIs(false, new Object[][]{{999L}})
+ .resultIs(0, new Object[][]{{999L}})
.close();
start(true, 1f).sql("select mypk0, mypk1, col0 from " + SALTED_TABLE_NAME + " where col0 <= 4")
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(MYPK0=[$1], MYPK1=[$2], COL0=[CAST($0):INTEGER])\n" +
" PhoenixTableScan(table=[[phoenix, IDX_SALTED_TEST_TABLE]], filter=[<=(CAST($0):INTEGER, 4)])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{2, 3, 4},
{1, 2, 3}})
.close();
@@ -166,13 +166,13 @@ public class CalciteIndexIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerAggregate(group=[{}], EXPR$0=[COUNT()])\n" +
" PhoenixTableScan(table=[[phoenix, IDXSALTED_SALTED_TEST_TABLE]], filter=[>(CAST($0):INTEGER, 4)])\n")
- .resultIs(false, new Object[][]{{999L}})
+ .resultIs(0, new Object[][]{{999L}})
.close();
start(true, 1f).sql("select * from " + SALTED_TABLE_NAME + " where col1 <= 5 order by col1")
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(MYPK0=[$1], MYPK1=[$2], COL0=[$3], COL1=[CAST($0):INTEGER])\n" +
" PhoenixTableScan(table=[[phoenix, IDXSALTED_SALTED_TEST_TABLE]], filter=[<=(CAST($0):INTEGER, 5)], scanOrder=[FORWARD])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{1, 2, 3, 4},
{2, 3, 4, 5}})
.close();
@@ -182,7 +182,7 @@ public class CalciteIndexIT extends BaseCalciteIT {
" PhoenixTableScan(table=[[phoenix, SALTED_TEST_TABLE]], filter=[>($0, 500)])\n" +
" PhoenixServerProject(MYPK0=[$1], MYPK1=[$2], COL0=[$3], COL1=[CAST($0):INTEGER])\n" +
" PhoenixTableScan(table=[[phoenix, IDXSALTED_SALTED_TEST_TABLE]], filter=[<(CAST($0):INTEGER, 505)])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{501, 502, 503, 504, 501, 502, 503, 504}})
.close();
}
@@ -192,7 +192,7 @@ public class CalciteIndexIT extends BaseCalciteIT {
start(props).sql("select * from " + MULTI_TENANT_TABLE + " where tenant_id = '10' and id <= '0004'")
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixTableScan(table=[[phoenix, MULTITENANT_TEST_TABLE]], filter=[AND(=(CAST($0):VARCHAR(2) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL, '10'), <=($1, '0004'))])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"10", "0002", 3, 4, 5},
{"10", "0003", 4, 5, 6},
{"10", "0004", 5, 6, 7}})
@@ -202,7 +202,7 @@ public class CalciteIndexIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(TENANT_ID=[$0], ID=[$2], COL0=[$3], COL1=[CAST($1):INTEGER], COL2=[$4])\n" +
" PhoenixTableScan(table=[[phoenix, IDX_MULTITENANT_TEST_TABLE]], filter=[AND(=(CAST($0):VARCHAR(2) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL, '20'), <(CAST($1):INTEGER, 8))])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"20", "0004", 5, 6, 7},
{"20", "0005", 6, 7, 8}})
.close();
@@ -219,7 +219,7 @@ public class CalciteIndexIT extends BaseCalciteIT {
start(props).sql("select * from " + MULTI_TENANT_TABLE + " where id = '0284'")
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixTableScan(table=[[phoenix, MULTITENANT_TEST_TABLE]], filter=[=(CAST($0):VARCHAR(4) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL, '0284')])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"0284", 285, 286, 287}})
.close();
@@ -227,7 +227,7 @@ public class CalciteIndexIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(ID=[$1], COL0=[$2], COL1=[CAST($0):INTEGER], COL2=[$3])\n" +
" PhoenixTableScan(table=[[phoenix, IDX_MULTITENANT_TEST_TABLE]], filter=[>(CAST($0):INTEGER, 1000)])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"0999", 1000, 1001, 1002},
{"1000", 1001, 1002, 1003},
{"1001", 1002, 1003, 1004},
@@ -246,7 +246,7 @@ public class CalciteIndexIT extends BaseCalciteIT {
start(props).sql("select * from " + MULTI_TENANT_VIEW1 + " where id = '0512'")
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixTableScan(table=[[phoenix, MULTITENANT_TEST_TABLE]], filter=[=(CAST($0):VARCHAR(4) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL, '0512')])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"0512", 513, 514, 515}})
.close();
@@ -254,7 +254,7 @@ public class CalciteIndexIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(ID=[$1], COL0=[$2], COL1=[CAST($0):INTEGER], COL2=[$3])\n" +
" PhoenixTableScan(table=[[phoenix, IDX_MULTITENANT_TEST_TABLE]], filter=[<=(CAST($0):INTEGER, 6)])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"0002", 3, 4, 5},
{"0003", 4, 5, 6},
{"0004", 5, 6, 7}})
@@ -264,7 +264,7 @@ public class CalciteIndexIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(ID=[$1], COL0=[CAST($0):INTEGER])\n" +
" PhoenixTableScan(table=[[phoenix, S1, IDX_MULTITENANT_TEST_VIEW1]], filter=[>=(CAST($0):INTEGER, 1000)])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"0999", 1000},
{"1000", 1001},
{"1001", 1002}})
@@ -274,7 +274,7 @@ public class CalciteIndexIT extends BaseCalciteIT {
start(props).sql("select * from " + MULTI_TENANT_VIEW2 + " where id = '0765'")
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixTableScan(table=[[phoenix, MULTITENANT_TEST_TABLE]], filter=[AND(>($3, 7), =(CAST($0):VARCHAR(4) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL, '0765'))])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"0765", 766, 767, 768}})
.close();
@@ -282,7 +282,7 @@ public class CalciteIndexIT extends BaseCalciteIT {
.explainIs("PhoenixToEnumerableConverter\n" +
" PhoenixServerProject(ID=[$1], COL0=[CAST($0):INTEGER])\n" +
" PhoenixTableScan(table=[[phoenix, S2, IDX_MULTITENANT_TEST_VIEW2]], filter=[AND(>=(CAST($0):INTEGER, 272), <=(CAST($0):INTEGER, 275))])\n")
- .resultIs(false, new Object[][] {
+ .resultIs(0, new Object[][] {
{"0271", 272},
{"0272", 273},
{"0273", 274},
@@ -294,7 +294,7 @@ public class CalciteIndexIT extends BaseCalciteIT {
" PhoenixLimit(fetch=[5])\n" +
" PhoenixServerProject(ID=[$1], COL0=[CAST($0):INTEGER])\n" +
" PhoenixTableScan(table=[[phoenix, S2, IDX_MULTITENANT_TEST_VIEW2]], scanOrder=[FORWARD])\n")
- .resultIs(true, new Object[][] {
+ .resultIs(new Object[][] {
{"0005", 6},
{"0006", 7},
{"0007", 8},
http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ac854ae/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java
index db6ac24..80c328f 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixTableScan.java
@@ -1,6 +1,5 @@
package org.apache.phoenix.calcite.rel;
-import java.io.IOException;
import java.sql.SQLException;
import java.util.List;
@@ -20,7 +19,6 @@ import org.apache.calcite.rex.RexNode;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.ImmutableIntList;
import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.client.HTableInterface;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.phoenix.calcite.CalciteUtils;
import org.apache.phoenix.calcite.PhoenixTable;
@@ -38,9 +36,7 @@ import org.apache.phoenix.execute.ScanPlan;
import org.apache.phoenix.execute.TupleProjector;
import org.apache.phoenix.expression.Expression;
import org.apache.phoenix.expression.LiteralExpression;
-import org.apache.phoenix.hbase.index.util.ImmutableBytesPtr;
import org.apache.phoenix.iterate.ParallelIteratorFactory;
-import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData;
import org.apache.phoenix.jdbc.PhoenixStatement;
import org.apache.phoenix.parse.SelectStatement;
import org.apache.phoenix.query.QueryServices;
@@ -49,11 +45,7 @@ import org.apache.phoenix.schema.PColumn;
import org.apache.phoenix.schema.PName;
import org.apache.phoenix.schema.PTable;
import org.apache.phoenix.schema.TableRef;
-import org.apache.phoenix.schema.stats.GuidePostsInfo;
-import org.apache.phoenix.schema.stats.StatisticsUtil;
import org.apache.phoenix.schema.types.PDataType;
-import org.apache.phoenix.util.SchemaUtil;
-
import com.google.common.base.Supplier;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableList.Builder;
@@ -72,7 +64,7 @@ public class PhoenixTableScan extends TableScan implements PhoenixRel {
public final ScanOrder scanOrder;
public final ScanRanges scanRanges;
- protected final GuidePostsInfo filteredGuideposts;
+ protected final long estimatedBytes;
protected final float rowCountFactor;
public static PhoenixTableScan create(RelOptCluster cluster, final RelOptTable table) {
@@ -106,8 +98,7 @@ public class PhoenixTableScan extends TableScan implements PhoenixRel {
.getProps().getFloat(PhoenixRel.ROW_COUNT_FACTOR, 1f);
ScanRanges scanRanges = null;
- GuidePostsInfo info = null;
- HTableInterface statsHTable = null;
+ long estimatedSize = 0;
if (filter != null) {
try {
// TODO simplify this code
@@ -138,35 +129,16 @@ public class PhoenixTableScan extends TableScan implements PhoenixRel {
StatementContext context = new StatementContext(stmt, resolver, new Scan(), new SequenceManager(stmt));
Expression filterExpr = CalciteUtils.toExpression(filter, tmpImplementor);
filterExpr = WhereOptimizer.pushKeyExpressionsToScan(context, select, filterExpr);
+ WhereCompiler.setScanFilter(context, select, filterExpr, true, false);
scanRanges = context.getScanRanges();
- if (!scanRanges.isPointLookup()
- && !scanRanges.isDegenerate()
- && !scanRanges.isEverything()) {
- // TODO get the cf and timestamp right.
- Scan scan = context.getScan();
- byte[] cf = SchemaUtil.getEmptyColumnFamily(pTable);
- statsHTable = phoenixTable.pc.getQueryServices()
- .getTable(PhoenixDatabaseMetaData.SYSTEM_STATS_NAME_BYTES);
- info = StatisticsUtil.readStatistics(
- statsHTable, pTable.getPhysicalName().getBytes(),
- new ImmutableBytesPtr(cf),
- scan.getStartRow(),
- scan.getStopRow(),
- HConstants.LATEST_TIMESTAMP).getGuidePosts().get(cf);
- }
- } catch (SQLException | IOException e) {
+ ScanPlan plan = new ScanPlan(context, select, tableRef, RowProjector.EMPTY_PROJECTOR, null, OrderBy.EMPTY_ORDER_BY, null, true, null);
+ estimatedSize = plan.getEstimatedBytes();
+ } catch (SQLException e) {
throw new RuntimeException(e);
- } finally {
- if (statsHTable != null) {
- try {
- statsHTable.close();
- } catch (IOException e) {
- }
- }
}
}
this.scanRanges = scanRanges;
- this.filteredGuideposts = info;
+ this.estimatedBytes = estimatedSize;
}
private static ScanOrder getDefaultScanOrder(PhoenixTable table) {
@@ -211,37 +183,7 @@ public class PhoenixTableScan extends TableScan implements PhoenixRel {
double byteCount;
PhoenixTable phoenixTable = table.unwrap(PhoenixTable.class);
if (scanRanges != null) {
- if (scanRanges.isPointLookup()) {
- byteCount = 1.0;
- } else if (scanRanges.isDegenerate()) {
- byteCount = 0.0;
- } else if (scanRanges.isEverything()) {
- byteCount = phoenixTable.byteCount;
- } else {
- if (filteredGuideposts != null) {
- byteCount = 0;
- for (long b : filteredGuideposts.getByteCounts()) {
- byteCount += b;
- }
- // TODO why zero byteCount? a bug?
- if (byteCount == 0 && filteredGuideposts.getGuidePostsCount() > 0) {
- PTable pTable = phoenixTable.getTable();
- byte[] emptyCf = SchemaUtil.getEmptyColumnFamily(pTable);
- GuidePostsInfo info = pTable.getTableStats().getGuidePosts().get(emptyCf);
- byteCount = phoenixTable.byteCount * filteredGuideposts.getGuidePostsCount() / info.getGuidePostsCount();
- }
- } else {
- PTable pTable = phoenixTable.getTable();
- byte[] emptyCf = SchemaUtil.getEmptyColumnFamily(pTable);
- GuidePostsInfo info = pTable.getTableStats().getGuidePosts().get(emptyCf);
- if (info != null) {
- byteCount = phoenixTable.byteCount / info.getGuidePostsCount() / 2;
- } else {
- int pkCount = scanRanges.getBoundPkColumnCount();
- byteCount = phoenixTable.byteCount * Math.pow(mq.getSelectivity(this, filter), pkCount);
- }
- }
- }
+ byteCount = estimatedBytes;
} else {
byteCount = phoenixTable.byteCount;
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ac854ae/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java
index 673a641..f622e8e 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/ScanPlan.java
@@ -34,6 +34,7 @@ import org.apache.phoenix.coprocessor.ScanRegionObserver;
import org.apache.phoenix.expression.Expression;
import org.apache.phoenix.iterate.ChunkedResultIterator;
import org.apache.phoenix.iterate.ConcatResultIterator;
+import org.apache.phoenix.iterate.DefaultParallelScanGrouper;
import org.apache.phoenix.iterate.LimitingResultIterator;
import org.apache.phoenix.iterate.MergeSortRowKeyResultIterator;
import org.apache.phoenix.iterate.MergeSortTopNResultIterator;
@@ -257,4 +258,8 @@ public class ScanPlan extends BaseQueryPlan {
}
}
+ public long getEstimatedBytes() throws SQLException {
+ return new ParallelIterators(this, null, parallelIteratorFactory, DefaultParallelScanGrouper.getInstance()).getEstimatedSize();
+ }
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ac854ae/phoenix-core/src/main/java/org/apache/phoenix/iterate/BaseResultIterators.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/iterate/BaseResultIterators.java b/phoenix-core/src/main/java/org/apache/phoenix/iterate/BaseResultIterators.java
index d321c50..c3da407 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/iterate/BaseResultIterators.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/iterate/BaseResultIterators.java
@@ -147,7 +147,7 @@ public abstract class BaseResultIterators extends ExplainTable implements Result
if (isPointLookup || ScanUtil.isAnalyzeTable(scan)) {
return false;
}
- return false;
+ return true;
}
private static void initializeScan(QueryPlan plan, Integer perScanLimit) {
@@ -560,8 +560,10 @@ public abstract class BaseResultIterators extends ExplainTable implements Result
while (guideIndex < gpsSize && (currentGuidePost.compareTo(endKey) <= 0 || endKey.length == 0)) {
Scan newScan = scanRanges.intersectScan(scan, currentKeyBytes, currentGuidePostBytes, keyOffset,
false);
- estimatedRows += gps.getRowCounts().get(guideIndex);
- estimatedSize += gps.getByteCounts().get(guideIndex);
+ if (newScan != null) {
+ estimatedRows += gps.getRowCounts().get(guideIndex);
+ estimatedSize += gps.getByteCounts().get(guideIndex);
+ }
scans = addNewScan(parallelScans, scans, newScan, currentGuidePostBytes, false, regionLocation);
currentKeyBytes = currentGuidePost.copyBytes();
currentGuidePost = PrefixByteCodec.decode(decoder, input);
@@ -872,4 +874,8 @@ public abstract class BaseResultIterators extends ExplainTable implements Result
return "ResultIterators [name=" + getName() + ",id=" + scanId + ",scans=" + scans + "]";
}
+ @Override
+ public long getEstimatedSize() {
+ return estimatedSize;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ac854ae/phoenix-core/src/main/java/org/apache/phoenix/iterate/ResultIterators.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/iterate/ResultIterators.java b/phoenix-core/src/main/java/org/apache/phoenix/iterate/ResultIterators.java
index 16f8b41..e76db56 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/iterate/ResultIterators.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/iterate/ResultIterators.java
@@ -26,6 +26,7 @@ import org.apache.phoenix.util.SQLCloseable;
public interface ResultIterators extends SQLCloseable {
public int size();
+ public long getEstimatedSize();
public List<KeyRange> getSplits();
public List<List<Scan>> getScans();
public void explain(List<String> planSteps);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ac854ae/phoenix-core/src/main/java/org/apache/phoenix/iterate/UnionResultIterators.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/iterate/UnionResultIterators.java b/phoenix-core/src/main/java/org/apache/phoenix/iterate/UnionResultIterators.java
index 5018dad..0c2cfea 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/iterate/UnionResultIterators.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/iterate/UnionResultIterators.java
@@ -139,4 +139,9 @@ public class UnionResultIterators implements ResultIterators {
public List<PeekingResultIterator> getIterators() throws SQLException {
return iterators;
}
+
+ @Override
+ public long getEstimatedSize() {
+ return 0;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ac854ae/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
index 7f3f850..7e28933 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/MetaDataClient.java
@@ -963,6 +963,9 @@ public class MetaDataClient {
* This supports scenarios in which a major compaction was manually initiated and the
* client wants the modified stats to be reflected immediately.
*/
+ connection.getQueryServices().clearTableFromCache(logicalTable.getTenantId() == null ? ByteUtil.EMPTY_BYTE_ARRAY : logicalTable.getTenantId().getBytes(),
+ Bytes.toBytes(SchemaUtil.getSchemaNameFromFullName(logicalTable.getName().toString())),
+ Bytes.toBytes(SchemaUtil.getTableNameFromFullName(logicalTable.getName().toString())), clientTimeStamp);
connection.getQueryServices().clearTableFromCache(tenantIdBytes,
Bytes.toBytes(SchemaUtil.getSchemaNameFromFullName(physicalName.getString())),
Bytes.toBytes(SchemaUtil.getTableNameFromFullName(physicalName.getString())), clientTimeStamp);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ac854ae/phoenix-core/src/test/java/org/apache/phoenix/iterate/AggregateResultScannerTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/iterate/AggregateResultScannerTest.java b/phoenix-core/src/test/java/org/apache/phoenix/iterate/AggregateResultScannerTest.java
index f53e871..60e4b2d 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/iterate/AggregateResultScannerTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/iterate/AggregateResultScannerTest.java
@@ -168,6 +168,11 @@ public class AggregateResultScannerTest extends BaseConnectionlessQueryTest {
@Override
public void close() throws SQLException {
}
+
+ @Override
+ public long getEstimatedSize() {
+ return 0;
+ }
};
ResultIterator scanner = new GroupedAggregatingResultIterator(new MergeSortRowKeyResultIterator(iterators), aggregationManager.getAggregators());
http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ac854ae/phoenix-core/src/test/java/org/apache/phoenix/iterate/ConcatResultIteratorTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/iterate/ConcatResultIteratorTest.java b/phoenix-core/src/test/java/org/apache/phoenix/iterate/ConcatResultIteratorTest.java
index cf71724..2670c6d 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/iterate/ConcatResultIteratorTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/iterate/ConcatResultIteratorTest.java
@@ -85,6 +85,11 @@ public class ConcatResultIteratorTest {
@Override
public void close() throws SQLException {
}
+
+ @Override
+ public long getEstimatedSize() {
+ return 0;
+ }
};
Tuple[] expectedResults = new Tuple[] {
@@ -148,6 +153,11 @@ public class ConcatResultIteratorTest {
@Override
public void close() throws SQLException {
}
+
+ @Override
+ public long getEstimatedSize() {
+ return 0;
+ }
};
ResultIterator scanner = new MergeSortRowKeyResultIterator(iterators);
AssertResults.assertResults(scanner, expectedResults);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/9ac854ae/phoenix-core/src/test/java/org/apache/phoenix/iterate/MergeSortResultIteratorTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/iterate/MergeSortResultIteratorTest.java b/phoenix-core/src/test/java/org/apache/phoenix/iterate/MergeSortResultIteratorTest.java
index 9b2e8de..6e3e0b7 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/iterate/MergeSortResultIteratorTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/iterate/MergeSortResultIteratorTest.java
@@ -100,6 +100,11 @@ public class MergeSortResultIteratorTest {
@Override
public void close() throws SQLException {
}
+
+ @Override
+ public long getEstimatedSize() {
+ return 0;
+ }
};
ResultIterators reverseIterators = new ResultIterators() {
@@ -130,6 +135,11 @@ public class MergeSortResultIteratorTest {
@Override
public void close() throws SQLException {
}
+
+ @Override
+ public long getEstimatedSize() {
+ return 0;
+ }
};
ResultIterator scanner = new MergeSortRowKeyResultIterator(iterators);
AssertResults.assertResults(scanner, expectedResults);
@@ -193,6 +203,11 @@ public class MergeSortResultIteratorTest {
@Override
public void close() throws SQLException {
}
+
+ @Override
+ public long getEstimatedSize() {
+ return 0;
+ }
};
ResultIterator scanner = new MergeSortRowKeyResultIterator(iterators, 0, true);
AssertResults.assertResults(scanner, expectedResults);