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 2015/06/26 05:40:48 UTC

phoenix git commit: PHOENIX-2078 Non-Phoenix convention Rel appear as a child of Phoenix Rel after application of XXXTransposeRule or other similar rules

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 <we...@intel.com>
Authored: Thu Jun 25 23:40:35 2015 -0400
Committer: maryannxue <we...@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>