Repository: phoenix Updated Branches: refs/heads/calcite 62d6720f7 -> 22162037e
PHOENIX-2078 Non-Phoenix convention Rel appear as a child of Phoenix Rel after application of XXXTransposeRule or other similar rules Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/22162037 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/22162037 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/22162037 Branch: refs/heads/calcite Commit: 22162037edcad2189c46abe488a4166f2e130de5 Parents: 62d6720 Author: maryannxue <wei....@intel.com> Authored: Thu Jun 25 23:40:35 2015 -0400 Committer: maryannxue <wei....@intel.com> Committed: Thu Jun 25 23:40:35 2015 -0400 ---------------------------------------------------------------------- phoenix-core/pom.xml | 4 ++++ .../it/java/org/apache/phoenix/calcite/CalciteTest.java | 12 ++++++------ .../phoenix/calcite/rel/PhoenixClientAggregate.java | 3 +++ .../apache/phoenix/calcite/rel/PhoenixClientJoin.java | 5 ++++- .../phoenix/calcite/rel/PhoenixClientProject.java | 3 +++ .../apache/phoenix/calcite/rel/PhoenixClientSort.java | 3 +++ .../phoenix/calcite/rel/PhoenixCompactClientSort.java | 5 ++++- .../org/apache/phoenix/calcite/rel/PhoenixFilter.java | 3 +++ .../org/apache/phoenix/calcite/rel/PhoenixLimit.java | 3 +++ .../phoenix/calcite/rel/PhoenixPostJoinProject.java | 3 +++ .../phoenix/calcite/rel/PhoenixServerAggregate.java | 4 ++++ .../apache/phoenix/calcite/rel/PhoenixServerJoin.java | 6 +++++- .../phoenix/calcite/rel/PhoenixServerProject.java | 3 +++ .../apache/phoenix/calcite/rel/PhoenixServerSort.java | 4 ++++ pom.xml | 4 ++-- 15 files changed, 54 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/pom.xml ---------------------------------------------------------------------- diff --git a/phoenix-core/pom.xml b/phoenix-core/pom.xml index 965d198..2f8f006 100644 --- a/phoenix-core/pom.xml +++ b/phoenix-core/pom.xml @@ -350,6 +350,10 @@ <artifactId>calcite-core</artifactId> </dependency> <dependency> + <groupId>org.apache.calcite</groupId> + <artifactId>calcite-linq4j</artifactId> + </dependency> + <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> </dependency> http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteTest.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteTest.java b/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteTest.java index ebd9dfb..d65eb80 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteTest.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteTest.java @@ -826,12 +826,12 @@ public class CalciteTest extends BaseClientManagedTimeIT { " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + " EnumerableAggregate(group=[{0}], agg#0=[SINGLE_VALUE($1)])\n" + " EnumerableAggregate(group=[{0}], CNT=[COUNT()])\n" + - " EnumerableCalc(expr#0..10=[{inputs}], expr#11=[CAST($t5):INTEGER], expr#12=[=($t11, $t0)], proj#0..10=[{exprs}], $condition=[$t12])\n" + - " EnumerableJoin(condition=[true], joinType=[inner])\n" + - " PhoenixToEnumerableConverter\n" + - " PhoenixServerAggregate(group=[{6}])\n" + - " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + - " JdbcToEnumerableConverter\n" + + " EnumerableJoin(condition=[=($0, $11)], joinType=[inner])\n" + + " PhoenixToEnumerableConverter\n" + + " PhoenixServerAggregate(group=[{6}])\n" + + " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" + + " 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], $f10=[CAST($4):INTEGER])\n" + " JdbcTableScan(table=[[foodmart, time_by_day]])\n") .resultIs(new Object[][] { new Object[] {1997, 1000, 365L}, http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientAggregate.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientAggregate.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientAggregate.java index 7e9ff90..75f19a0 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientAggregate.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientAggregate.java @@ -49,6 +49,9 @@ public class PhoenixClientAggregate extends PhoenixAbstractAggregate { @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { + if (getInput().getConvention() != PhoenixRel.CLIENT_CONVENTION) + return planner.getCostFactory().makeInfiniteCost(); + return super.computeSelfCost(planner) .multiplyBy(PHOENIX_FACTOR); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientJoin.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientJoin.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientJoin.java index d664843..c6cf214 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientJoin.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientJoin.java @@ -61,7 +61,6 @@ public class PhoenixClientJoin extends PhoenixAbstractJoin { JoinRelType joinType, Set<String> variablesStopped, boolean isSingleValueRhs) { super(cluster, traits, left, right, condition, joinType, variablesStopped, isSingleValueRhs); - assert joinType != JoinRelType.RIGHT; } @Override @@ -78,6 +77,10 @@ public class PhoenixClientJoin extends PhoenixAbstractJoin { @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { + if (getLeft().getConvention() != PhoenixRel.CLIENT_CONVENTION + || getRight().getConvention() != PhoenixRel.CLIENT_CONVENTION) + return planner.getCostFactory().makeInfiniteCost(); + if (joinType == JoinRelType.RIGHT || (!joinInfo.leftKeys.isEmpty() && !RelCollations.contains(RelMetadataQuery.collations(getLeft()), joinInfo.leftKeys)) || (!joinInfo.rightKeys.isEmpty() && !RelCollations.contains(RelMetadataQuery.collations(getRight()), joinInfo.rightKeys))) http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientProject.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientProject.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientProject.java index 4cbf4d0..77ca76d 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientProject.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientProject.java @@ -47,6 +47,9 @@ public class PhoenixClientProject extends PhoenixAbstractProject { @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { + if (getInput().getConvention() != PhoenixRel.CLIENT_CONVENTION) + return planner.getCostFactory().makeInfiniteCost(); + return super.computeSelfCost(planner) .multiplyBy(PHOENIX_FACTOR); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientSort.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientSort.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientSort.java index ab9dfd2..09218c8 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientSort.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixClientSort.java @@ -44,6 +44,9 @@ public class PhoenixClientSort extends PhoenixAbstractSort { @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { + if (getInput().getConvention() != PhoenixRel.CLIENT_CONVENTION) + return planner.getCostFactory().makeInfiniteCost(); + return super.computeSelfCost(planner) .multiplyBy(PHOENIX_FACTOR); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixCompactClientSort.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixCompactClientSort.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixCompactClientSort.java index 81b5608..d881f3f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixCompactClientSort.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixCompactClientSort.java @@ -28,7 +28,7 @@ public class PhoenixCompactClientSort extends PhoenixAbstractSort { private PhoenixCompactClientSort(RelOptCluster cluster, RelTraitSet traits, RelNode child, RelCollation collation) { super(cluster, traits, child, collation); - } + } @Override public PhoenixCompactClientSort copy(RelTraitSet traitSet, RelNode newInput, @@ -38,6 +38,9 @@ public class PhoenixCompactClientSort extends PhoenixAbstractSort { @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { + if (getInput().getConvention() != PhoenixRel.CLIENT_CONVENTION) + return planner.getCostFactory().makeInfiniteCost(); + return super.computeSelfCost(planner) .multiplyBy(CLIENT_MERGE_FACTOR) .multiplyBy(PHOENIX_FACTOR); http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixFilter.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixFilter.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixFilter.java index 7583750..a070d35 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixFilter.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixFilter.java @@ -49,6 +49,9 @@ public class PhoenixFilter extends Filter implements PhoenixRel { @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { + if (getInput().getConvention() != PhoenixRel.CLIENT_CONVENTION) + return planner.getCostFactory().makeInfiniteCost(); + return super.computeSelfCost(planner).multiplyBy(PHOENIX_FACTOR); } http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixLimit.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixLimit.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixLimit.java index b66ecbd..55acd4a 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixLimit.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixLimit.java @@ -67,6 +67,9 @@ public class PhoenixLimit extends SingleRel implements PhoenixRel { @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { + if (getInput().getConvention() != PhoenixRel.CLIENT_CONVENTION) + return planner.getCostFactory().makeInfiniteCost(); + double rowCount = RelMetadataQuery.getRowCount(this); return planner.getCostFactory() .makeCost(rowCount, 0, 0) http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixPostJoinProject.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixPostJoinProject.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixPostJoinProject.java index 0559ba6..a1ae22b 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixPostJoinProject.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixPostJoinProject.java @@ -47,6 +47,9 @@ public class PhoenixPostJoinProject extends PhoenixAbstractProject { @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { + if (getInput().getConvention() != PhoenixRel.PROJECTABLE_CONVENTION) + return planner.getCostFactory().makeInfiniteCost(); + return super.computeSelfCost(planner) .multiplyBy(SERVER_FACTOR) .multiplyBy(PHOENIX_FACTOR); http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerAggregate.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerAggregate.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerAggregate.java index 4231f03..f0697e4 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerAggregate.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerAggregate.java @@ -43,6 +43,10 @@ public class PhoenixServerAggregate extends PhoenixAbstractAggregate { @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { + if (getInput().getConvention() != PhoenixRel.SERVER_CONVENTION + && getInput().getConvention() != PhoenixRel.PROJECTABLE_CONVENTION) + return planner.getCostFactory().makeInfiniteCost(); + return super.computeSelfCost(planner) .multiplyBy(SERVER_FACTOR) .multiplyBy(PHOENIX_FACTOR); http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerJoin.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerJoin.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerJoin.java index ef0abd3..328549b 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerJoin.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerJoin.java @@ -70,12 +70,16 @@ public class PhoenixServerJoin extends PhoenixAbstractJoin { @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { - //TODO return infinite cost if RHS size exceeds memory limit. + if (getLeft().getConvention() != PhoenixRel.SERVER_CONVENTION + || getRight().getConvention() != PhoenixRel.CLIENT_CONVENTION) + return planner.getCostFactory().makeInfiniteCost(); if (joinType == JoinRelType.FULL || joinType == JoinRelType.RIGHT || getLeft().getConvention() != PhoenixRel.SERVER_CONVENTION) return planner.getCostFactory().makeInfiniteCost(); + //TODO return infinite cost if RHS size exceeds memory limit. + double rowCount = RelMetadataQuery.getRowCount(this); double leftRowCount = RelMetadataQuery.getRowCount(getLeft()); http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerProject.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerProject.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerProject.java index 802211a..da9f250 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerProject.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerProject.java @@ -47,6 +47,9 @@ public class PhoenixServerProject extends PhoenixAbstractProject { @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { + if (getInput().getConvention() != PhoenixRel.SERVER_CONVENTION) + return planner.getCostFactory().makeInfiniteCost(); + return super.computeSelfCost(planner) .multiplyBy(SERVER_FACTOR) .multiplyBy(PHOENIX_FACTOR); http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerSort.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerSort.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerSort.java index dea751f..e185a2f 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerSort.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixServerSort.java @@ -38,6 +38,10 @@ public class PhoenixServerSort extends PhoenixAbstractSort { @Override public RelOptCost computeSelfCost(RelOptPlanner planner) { + if (getInput().getConvention() != PhoenixRel.SERVER_CONVENTION + && getInput().getConvention() != PhoenixRel.PROJECTABLE_CONVENTION) + return planner.getCostFactory().makeInfiniteCost(); + return super.computeSelfCost(planner) .multiplyBy(SERVER_FACTOR) .multiplyBy(PHOENIX_FACTOR); http://git-wip-us.apache.org/repos/asf/phoenix/blob/22162037/pom.xml ---------------------------------------------------------------------- diff --git a/pom.xml b/pom.xml index 8227115..a9786ce 100644 --- a/pom.xml +++ b/pom.xml @@ -113,7 +113,7 @@ <collections.version>3.2.1</collections.version> <jodatime.version>2.7</jodatime.version> <joni.version>2.1.2</joni.version> - <calcite.version>1.3.0-incubating</calcite.version> + <calcite.version>1.4.0-incubating-SNAPSHOT</calcite.version> <!-- Test Dependencies --> <mockito-all.version>1.8.5</mockito-all.version> @@ -773,7 +773,7 @@ </dependency> <dependency> <groupId>org.apache.calcite</groupId> - <artifactId>calcite-avatica</artifactId> + <artifactId>calcite-linq4j</artifactId> <version>${calcite.version}</version> </dependency> <dependency>