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/07/15 17:01:57 UTC
[1/2] phoenix git commit: Remove PhoenixPostJoinProject
Repository: phoenix
Updated Branches:
refs/heads/calcite 57e1b485b -> 3f8185855
Remove PhoenixPostJoinProject
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/f7516b5f
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/f7516b5f
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/f7516b5f
Branch: refs/heads/calcite
Commit: f7516b5faf66339fa209713b58fdb6ef977d3600
Parents: 57e1b48
Author: maryannxue <we...@intel.com>
Authored: Sat Jul 11 13:41:38 2015 -0400
Committer: maryannxue <we...@intel.com>
Committed: Sat Jul 11 13:41:38 2015 -0400
----------------------------------------------------------------------
.../org/apache/phoenix/calcite/CalciteTest.java | 68 +++++++++----------
.../calcite/rel/PhoenixPostJoinProject.java | 71 --------------------
.../calcite/rel/PhoenixServerProject.java | 5 +-
.../calcite/rules/PhoenixConverterRules.java | 33 ---------
.../GroupedAggregateRegionObserver.java | 3 +-
.../coprocessor/HashJoinRegionScanner.java | 10 +--
.../phoenix/coprocessor/ScanRegionObserver.java | 3 +-
.../UngroupedAggregateRegionObserver.java | 3 +-
.../apache/phoenix/execute/TupleProjector.java | 17 +----
9 files changed, 43 insertions(+), 170 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/f7516b5f/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 7a0324c..32d0558 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
@@ -327,8 +327,8 @@ public class CalciteTest extends BaseClientManagedTimeIT {
@Test public void testJoin() throws Exception {
start().sql("select t1.entity_id, t2.a_string, t1.organization_id from aTable t1 join aTable t2 on t1.entity_id = t2.entity_id and t1.organization_id = t2.organization_id where t1.a_string = 'a'")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(ENTITY_ID=[$4], A_STRING=[$2], ORGANIZATION_ID=[$3])\n" +
+ " PhoenixClientProject(ENTITY_ID=[$4], A_STRING=[$2], ORGANIZATION_ID=[$3])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[AND(=($4, $1), =($3, $0))], joinType=[inner])\n" +
" PhoenixServerProject(ORGANIZATION_ID=[$0], ENTITY_ID=[$1], A_STRING=[$2])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n" +
@@ -344,8 +344,8 @@ public class CalciteTest extends BaseClientManagedTimeIT {
start().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\"")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[=($2, $3)], joinType=[inner])\n" +
" PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
@@ -363,8 +363,8 @@ public class CalciteTest extends BaseClientManagedTimeIT {
start().sql("SELECT * FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\" AND supp.name = 'S5'")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(item_id=[$0], NAME=[$1], PRICE=[$2], DISCOUNT1=[$3], DISCOUNT2=[$4], supplier_id=[$5], DESCRIPTION=[$6], supplier_id0=[$7], NAME0=[$8], PHONE=[$9], ADDRESS=[$10], LOC_ID=[$11])\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], PRICE=[$2], DISCOUNT1=[$3], DISCOUNT2=[$4], supplier_id=[$5], DESCRIPTION=[$6], supplier_id0=[$7], NAME0=[$8], PHONE=[$9], ADDRESS=[$10], LOC_ID=[$11])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[=($5, $7)], joinType=[inner])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixToClientConverter\n" +
@@ -377,8 +377,8 @@ public class CalciteTest extends BaseClientManagedTimeIT {
start().sql("SELECT \"order_id\", i.name, i.price, discount2, quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o INNER JOIN "
+ JOIN_ITEM_TABLE_FULL_NAME + " i ON o.\"item_id\" = i.\"item_id\" AND o.price = (i.price * (100 - discount2)) / 100.0 WHERE quantity < 5000")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(order_id=[$5], NAME=[$1], PRICE=[$2], DISCOUNT2=[$3], QUANTITY=[$7])\n" +
+ " PhoenixClientProject(order_id=[$5], NAME=[$1], PRICE=[$2], DISCOUNT2=[$3], QUANTITY=[$7])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[AND(=($6, $0), =($8, $4))], joinType=[inner])\n" +
" PhoenixServerProject(item_id=[$0], NAME=[$1], PRICE=[$2], DISCOUNT2=[$4], $f7=[/(*($2, -(100, $4)), 100.0)])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
@@ -393,8 +393,8 @@ public class CalciteTest extends BaseClientManagedTimeIT {
@Test public void testRightOuterJoin() throws Exception {
start().sql("SELECT item.\"item_id\", item.name, supp.\"supplier_id\", supp.name FROM " + JOIN_ITEM_TABLE_FULL_NAME + " item RIGHT OUTER JOIN " + JOIN_SUPPLIER_TABLE_FULL_NAME + " supp ON item.\"supplier_id\" = supp.\"supplier_id\"")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(item_id=[$2], NAME=[$3], supplier_id=[$0], NAME0=[$1])\n" +
+ " PhoenixClientProject(item_id=[$2], NAME=[$3], supplier_id=[$0], NAME0=[$1])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[=($4, $0)], joinType=[left])\n" +
" PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n" +
@@ -464,8 +464,8 @@ public class CalciteTest extends BaseClientManagedTimeIT {
// Server-join with LHS sorted on order-by fields
start().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\" order by supp.\"supplier_id\"")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(item_id=[$2], NAME=[$3], supplier_id=[$0], NAME0=[$1])\n" +
+ " PhoenixClientProject(item_id=[$2], NAME=[$3], supplier_id=[$0], NAME0=[$1])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[=($4, $0)], joinType=[inner])\n" +
" PhoenixServerProject(supplier_id=[$0], NAME=[$1])\n" +
" PhoenixTableScan(table=[[phoenix, Join, SupplierTable]])\n" +
@@ -491,12 +491,12 @@ public class CalciteTest extends BaseClientManagedTimeIT {
@Test public void testMultiJoin() throws Exception {
start().sql("select t1.entity_id, t2.a_string, t3.organization_id from aTable t1 join aTable t2 on t1.entity_id = t2.entity_id and t1.organization_id = t2.organization_id join atable t3 on t1.entity_id = t3.entity_id and t1.organization_id = t3.organization_id where t1.a_string = 'a'")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(ENTITY_ID=[$19], A_STRING=[$38], ORGANIZATION_ID=[$0])\n" +
+ " PhoenixClientProject(ENTITY_ID=[$19], A_STRING=[$38], ORGANIZATION_ID=[$0])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[AND(=($19, $1), =($18, $0))], joinType=[inner])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(ORGANIZATION_ID=[$18], ENTITY_ID=[$19], A_STRING=[$20], B_STRING=[$21], A_INTEGER=[$22], A_DATE=[$23], A_TIME=[$24], A_TIMESTAMP=[$25], X_DECIMAL=[$26], X_LONG=[$27], X_INTEGER=[$28], Y_INTEGER=[$29], A_BYTE=[$30], A_SHORT=[$31], A_FLOAT=[$32], A_DOUBLE=[$33], A_UNSIGNED_FLOAT=[$34], A_UNSIGNED_DOUBLE=[$35], ORGANIZATION_ID0=[$0], ENTITY_ID0=[$1], A_STRING0=[$2], B_STRING0=[$3], A_INTEGER0=[$4], A_DATE0=[$5], A_TIME0=[$6], A_TIMESTAMP0=[$7], X_DECIMAL0=[$8], X_LONG0=[$9], X_INTEGER0=[$10], Y_INTEGER0=[$11], A_BYTE0=[$12], A_SHORT0=[$13], A_FLOAT0=[$14], A_DOUBLE0=[$15], A_UNSIGNED_FLOAT0=[$16], A_UNSIGNED_DOUBLE0=[$17])\n" +
+ " PhoenixClientProject(ORGANIZATION_ID=[$18], ENTITY_ID=[$19], A_STRING=[$20], B_STRING=[$21], A_INTEGER=[$22], A_DATE=[$23], A_TIME=[$24], A_TIMESTAMP=[$25], X_DECIMAL=[$26], X_LONG=[$27], X_INTEGER=[$28], Y_INTEGER=[$29], A_BYTE=[$30], A_SHORT=[$31], A_FLOAT=[$32], A_DOUBLE=[$33], A_UNSIGNED_FLOAT=[$34], A_UNSIGNED_DOUBLE=[$35], ORGANIZATION_ID0=[$0], ENTITY_ID0=[$1], A_STRING0=[$2], B_STRING0=[$3], A_INTEGER0=[$4], A_DATE0=[$5], A_TIME0=[$6], A_TIMESTAMP0=[$7], X_DECIMAL0=[$8], X_LONG0=[$9], X_INTEGER0=[$10], Y_INTEGER0=[$11], A_BYTE0=[$12], A_SHORT0=[$13], A_FLOAT0=[$14], A_DOUBLE0=[$15], A_UNSIGNED_FLOAT0=[$16], A_UNSIGNED_DOUBLE0=[$17])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[AND(=($19, $1), =($18, $0))], joinType=[inner])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n" +
" PhoenixToClientConverter\n" +
@@ -510,8 +510,8 @@ public class CalciteTest extends BaseClientManagedTimeIT {
start().sql("select t1.entity_id, t2.a_string, t3.organization_id from aTable t1 join aTable t2 on t1.entity_id = t2.entity_id and t1.organization_id = t2.organization_id join atable t3 on t1.entity_id = t3.entity_id and t1.organization_id = t3.organization_id")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(ENTITY_ID=[$19], A_STRING=[$2], ORGANIZATION_ID=[$36])\n" +
+ " PhoenixClientProject(ENTITY_ID=[$19], A_STRING=[$2], ORGANIZATION_ID=[$36])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[AND(=($19, $1), =($18, $0))], joinType=[inner])\n" +
" PhoenixTableScan(table=[[phoenix, ATABLE]])\n" +
" PhoenixToClientConverter\n" +
@@ -649,8 +649,8 @@ public class CalciteTest extends BaseClientManagedTimeIT {
start().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\" order by item.name desc")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixServerSort(sort0=[$1], dir0=[DESC])\n" +
- " PhoenixPostJoinProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixServerSort(sort0=[$1], dir0=[DESC])\n" +
" PhoenixServerJoin(condition=[=($2, $3)], joinType=[inner])\n" +
" PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
@@ -727,9 +727,9 @@ public class CalciteTest extends BaseClientManagedTimeIT {
start().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\" order by item.name desc limit 3")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixLimit(fetch=[3])\n" +
- " PhoenixServerSort(sort0=[$1], dir0=[DESC])\n" +
- " PhoenixPostJoinProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixLimit(fetch=[3])\n" +
+ " PhoenixServerSort(sort0=[$1], dir0=[DESC])\n" +
" PhoenixServerJoin(condition=[=($2, $3)], joinType=[inner])\n" +
" PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
@@ -787,9 +787,9 @@ public class CalciteTest extends BaseClientManagedTimeIT {
start().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")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixLimit(fetch=[3])\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], supplier_id=[$3], NAME0=[$4])\n" +
+ " PhoenixLimit(fetch=[3])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[=($2, $3)], joinType=[inner])\n" +
" PhoenixServerProject(item_id=[$0], NAME=[$1], supplier_id=[$5])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
@@ -806,8 +806,8 @@ public class CalciteTest extends BaseClientManagedTimeIT {
@Test public void testSubquery() {
start().sql("SELECT \"order_id\", quantity FROM " + JOIN_ORDER_TABLE_FULL_NAME + " o WHERE quantity = (SELECT max(quantity) FROM " + JOIN_ORDER_TABLE_FULL_NAME + " q WHERE o.\"item_id\" = q.\"item_id\")")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(order_id=[$0], QUANTITY=[$4])\n" +
+ " PhoenixClientProject(order_id=[$0], QUANTITY=[$4])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[AND(=($2, $7), =($4, $8))], joinType=[inner])\n" +
" PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
" PhoenixServerAggregate(group=[{7}], EXPR$0=[MAX($4)])\n" +
@@ -828,8 +828,8 @@ public class CalciteTest extends BaseClientManagedTimeIT {
+ "from " + JOIN_ORDER_TABLE_FULL_NAME + " o where o.\"item_id\" = i.\"item_id\")\n"
+ "from " + JOIN_ITEM_TABLE_FULL_NAME + " i")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(item_id=[$0], NAME=[$1], EXPR$2=[$8])\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], EXPR$2=[$8])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[=($0, $7)], joinType=[left], isSingleValueRhs=[true])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
" PhoenixServerAggregate(group=[{7}], SQ=[MAX($4)])\n" +
@@ -852,12 +852,12 @@ public class CalciteTest extends BaseClientManagedTimeIT {
+ "from " + JOIN_ORDER_TABLE_FULL_NAME + " o where o.\"item_id\" = i.\"item_id\")\n"
+ "from " + JOIN_ITEM_TABLE_FULL_NAME + " i where \"item_id\" < '0000000006'")
.explainIs("PhoenixToEnumerableConverter\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(item_id=[$0], NAME=[$1], EXPR$2=[$8])\n" +
+ " PhoenixClientProject(item_id=[$0], NAME=[$1], EXPR$2=[$8])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[=($0, $7)], joinType=[left], isSingleValueRhs=[true])\n" +
" PhoenixTableScan(table=[[phoenix, Join, ItemTable]], filter=[<($0, '0000000006')])\n" +
- " PhoenixToClientConverter\n" +
- " PhoenixPostJoinProject(item_id0=[$7], SQ=[$4])\n" +
+ " PhoenixClientProject(item_id0=[$7], SQ=[$4])\n" +
+ " PhoenixToClientConverter\n" +
" PhoenixServerJoin(condition=[=($2, $7)], joinType=[inner])\n" +
" PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
" PhoenixServerAggregate(group=[{0}])\n" +
http://git-wip-us.apache.org/repos/asf/phoenix/blob/f7516b5f/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
deleted file mode 100644
index a1ae22b..0000000
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixPostJoinProject.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package org.apache.phoenix.calcite.rel;
-
-import java.util.List;
-
-import org.apache.calcite.plan.RelOptCluster;
-import org.apache.calcite.plan.RelOptCost;
-import org.apache.calcite.plan.RelOptPlanner;
-import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rel.RelCollation;
-import org.apache.calcite.rel.RelCollationTraitDef;
-import org.apache.calcite.rel.RelNode;
-import org.apache.calcite.rel.metadata.RelMdCollation;
-import org.apache.calcite.rel.type.RelDataType;
-import org.apache.calcite.rex.RexNode;
-import org.apache.phoenix.compile.QueryPlan;
-import org.apache.phoenix.execute.HashJoinPlan;
-import org.apache.phoenix.execute.TupleProjector;
-
-import com.google.common.base.Supplier;
-
-public class PhoenixPostJoinProject extends PhoenixAbstractProject {
-
- public static PhoenixPostJoinProject create(final RelNode input,
- final List<? extends RexNode> projects, RelDataType rowType) {
- RelOptCluster cluster = input.getCluster();
- final RelTraitSet traits =
- cluster.traitSet().replace(PhoenixRel.PROJECTABLE_CONVENTION)
- .replaceIfs(RelCollationTraitDef.INSTANCE,
- new Supplier<List<RelCollation>>() {
- public List<RelCollation> get() {
- return RelMdCollation.project(input, projects);
- }
- });
- return new PhoenixPostJoinProject(cluster, traits, input, projects, rowType);
- }
-
- private PhoenixPostJoinProject(RelOptCluster cluster, RelTraitSet traits,
- RelNode input, List<? extends RexNode> projects, RelDataType rowType) {
- super(cluster, traits, input, projects, rowType);
- }
-
- @Override
- public PhoenixPostJoinProject copy(RelTraitSet traits, RelNode input,
- List<RexNode> projects, RelDataType rowType) {
- return create(input, projects, rowType);
- }
-
- @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);
- }
-
- @Override
- public QueryPlan implement(Implementor implementor) {
- implementor.pushContext(new ImplementorContext(implementor.getCurrentContext().isRetainPKColumns(), false));
- QueryPlan plan = implementor.visitInput(0, (PhoenixRel) getInput());
- implementor.popContext();
- assert (plan instanceof HashJoinPlan
- && !TupleProjector.hasProjector(plan.getContext().getScan(), false));
-
- TupleProjector tupleProjector = super.project(implementor);
- TupleProjector.serializeProjectorIntoScan(plan.getContext().getScan(), tupleProjector, false);
- return plan;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/f7516b5f/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 da9f250..bafd78c 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
@@ -60,11 +60,10 @@ public class PhoenixServerProject extends PhoenixAbstractProject {
implementor.pushContext(new ImplementorContext(implementor.getCurrentContext().isRetainPKColumns(), false));
QueryPlan plan = implementor.visitInput(0, (PhoenixRel) getInput());
implementor.popContext();
- assert (plan instanceof ScanPlan
- && !TupleProjector.hasProjector(plan.getContext().getScan(), true));
+ assert (plan instanceof ScanPlan);
TupleProjector tupleProjector = super.project(implementor);
- TupleProjector.serializeProjectorIntoScan(plan.getContext().getScan(), tupleProjector, true);
+ TupleProjector.serializeProjectorIntoScan(plan.getContext().getScan(), tupleProjector);
return plan;
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/f7516b5f/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java
index dee433c..df6a213 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java
@@ -41,7 +41,6 @@ import org.apache.phoenix.calcite.rel.PhoenixClientProject;
import org.apache.phoenix.calcite.rel.PhoenixClientSort;
import org.apache.phoenix.calcite.rel.PhoenixFilter;
import org.apache.phoenix.calcite.rel.PhoenixLimit;
-import org.apache.phoenix.calcite.rel.PhoenixPostJoinProject;
import org.apache.phoenix.calcite.rel.PhoenixRel;
import org.apache.phoenix.calcite.rel.PhoenixServerAggregate;
import org.apache.phoenix.calcite.rel.PhoenixServerJoin;
@@ -76,7 +75,6 @@ public class PhoenixConverterRules {
PhoenixFilterRule.INSTANCE,
PhoenixClientProjectRule.INSTANCE,
PhoenixServerProjectRule.INSTANCE,
- PhoenixPostJoinProjectRule.INSTANCE,
PhoenixClientAggregateRule.INSTANCE,
PhoenixServerAggregateRule.SERVER,
PhoenixServerAggregateRule.PROJECTABLE,
@@ -331,37 +329,6 @@ public class PhoenixConverterRules {
}
/**
- * Rule to convert a {@link org.apache.calcite.rel.logical.LogicalProject}
- * to a {@link PhoenixPostJoinProject}.
- */
- private static class PhoenixPostJoinProjectRule extends PhoenixConverterRule {
-
- private static Predicate<LogicalProject> IS_CONVERTIBLE = new Predicate<LogicalProject>() {
- @Override
- public boolean apply(LogicalProject input) {
- return isConvertible(input);
- }
- };
-
- private static final PhoenixPostJoinProjectRule INSTANCE = new PhoenixPostJoinProjectRule();
-
- private PhoenixPostJoinProjectRule() {
- super(LogicalProject.class, IS_CONVERTIBLE, Convention.NONE,
- PhoenixRel.PROJECTABLE_CONVENTION, "PhoenixPostJoinProjectRule");
- }
-
- public RelNode convert(RelNode rel) {
- final LogicalProject project = (LogicalProject) rel;
- return PhoenixPostJoinProject.create(
- convert(
- project.getInput(),
- project.getInput().getTraitSet().replace(PhoenixRel.PROJECTABLE_CONVENTION)),
- project.getProjects(),
- project.getRowType());
- }
- }
-
- /**
* Rule to convert a {@link org.apache.calcite.rel.logical.LogicalAggregate}
* to an {@link PhoenixClientAggregate}.
*/
http://git-wip-us.apache.org/repos/asf/phoenix/blob/f7516b5f/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/GroupedAggregateRegionObserver.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/GroupedAggregateRegionObserver.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/GroupedAggregateRegionObserver.java
index 989426c..d613688 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/GroupedAggregateRegionObserver.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/GroupedAggregateRegionObserver.java
@@ -148,9 +148,8 @@ public class GroupedAggregateRegionObserver extends BaseScannerRegionObserver {
}
if (j != null) {
- TupleProjector postJoinProjector = TupleProjector.deserializeProjectorFromScan(scan, false);
innerScanner =
- new HashJoinRegionScanner(innerScanner, p, postJoinProjector, j, ScanUtil.getTenantId(scan),
+ new HashJoinRegionScanner(innerScanner, p, j, ScanUtil.getTenantId(scan),
c.getEnvironment());
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/f7516b5f/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java
index 6fdc865..1e34d96 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/HashJoinRegionScanner.java
@@ -61,13 +61,11 @@ public class HashJoinRegionScanner implements RegionScanner {
private List<Tuple>[] tempTuples;
private ValueBitSet tempDestBitSet;
private ValueBitSet[] tempSrcBitSet;
- private final TupleProjector postJoinProjector;
-
+
@SuppressWarnings("unchecked")
- public HashJoinRegionScanner(RegionScanner scanner, TupleProjector projector, TupleProjector postJoinProjector, HashJoinInfo joinInfo, ImmutableBytesWritable tenantId, RegionCoprocessorEnvironment env) throws IOException {
+ public HashJoinRegionScanner(RegionScanner scanner, TupleProjector projector, HashJoinInfo joinInfo, ImmutableBytesWritable tenantId, RegionCoprocessorEnvironment env) throws IOException {
this.scanner = scanner;
this.projector = projector;
- this.postJoinProjector = postJoinProjector;
this.joinInfo = joinInfo;
this.resultQueue = new LinkedList<Tuple>();
this.hasMore = true;
@@ -229,10 +227,6 @@ public class HashJoinRegionScanner implements RegionScanner {
}
Tuple tuple = resultQueue.poll();
- // post-join projection
- if (postJoinProjector != null) {
- tuple = postJoinProjector.projectResults(tuple);
- }
for (int i = 0; i < tuple.size(); i++) {
results.add(tuple.getValue(i));
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/f7516b5f/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/ScanRegionObserver.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/ScanRegionObserver.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/ScanRegionObserver.java
index 55e58f0..54c688a 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/ScanRegionObserver.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/ScanRegionObserver.java
@@ -210,8 +210,7 @@ public class ScanRegionObserver extends BaseScannerRegionObserver {
final ImmutableBytesWritable tenantId = ScanUtil.getTenantId(scan);
if (j != null) {
- TupleProjector postJoinProjector = TupleProjector.deserializeProjectorFromScan(scan, false);
- innerScanner = new HashJoinRegionScanner(innerScanner, p, postJoinProjector, j, tenantId, c.getEnvironment());
+ innerScanner = new HashJoinRegionScanner(innerScanner, p, j, tenantId, c.getEnvironment());
}
final OrderedResultIterator iterator = deserializeFromScan(scan,innerScanner);
http://git-wip-us.apache.org/repos/asf/phoenix/blob/f7516b5f/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
index fa78709..d5cc486 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/UngroupedAggregateRegionObserver.java
@@ -232,8 +232,7 @@ public class UngroupedAggregateRegionObserver extends BaseScannerRegionObserver{
}
if (j != null) {
- TupleProjector postJoinProjector = TupleProjector.deserializeProjectorFromScan(scan, false);
- theScanner = new HashJoinRegionScanner(theScanner, p, postJoinProjector, j, ScanUtil.getTenantId(scan), c.getEnvironment());
+ theScanner = new HashJoinRegionScanner(theScanner, p, j, ScanUtil.getTenantId(scan), c.getEnvironment());
}
int batchSize = 0;
http://git-wip-us.apache.org/repos/asf/phoenix/blob/f7516b5f/phoenix-core/src/main/java/org/apache/phoenix/execute/TupleProjector.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/execute/TupleProjector.java b/phoenix-core/src/main/java/org/apache/phoenix/execute/TupleProjector.java
index 7ec147f..a4728e9 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/execute/TupleProjector.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/execute/TupleProjector.java
@@ -54,7 +54,6 @@ public class TupleProjector {
public static final byte[] VALUE_COLUMN_QUALIFIER = new byte[0];
private static final String SCAN_PROJECTOR = "scanProjector";
- private static final String POST_JOIN_PROJECTOR = "postJoinProjector";
private final KeyValueSchema schema;
private final Expression[] expressions;
@@ -101,15 +100,7 @@ public class TupleProjector {
this.valueSet = bitSet;
}
- public static boolean hasProjector(Scan scan, boolean scanProjector) {
- return scan.getAttribute(scanProjector ? SCAN_PROJECTOR : POST_JOIN_PROJECTOR) != null;
- }
-
public static void serializeProjectorIntoScan(Scan scan, TupleProjector projector) {
- serializeProjectorIntoScan(scan, projector, true);
- }
-
- public static void serializeProjectorIntoScan(Scan scan, TupleProjector projector, boolean scanProjector) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
try {
DataOutputStream output = new DataOutputStream(stream);
@@ -120,7 +111,7 @@ public class TupleProjector {
WritableUtils.writeVInt(output, ExpressionType.valueOf(projector.expressions[i]).ordinal());
projector.expressions[i].write(output);
}
- scan.setAttribute(scanProjector ? SCAN_PROJECTOR : POST_JOIN_PROJECTOR, stream.toByteArray());
+ scan.setAttribute(SCAN_PROJECTOR, stream.toByteArray());
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
@@ -134,11 +125,7 @@ public class TupleProjector {
}
public static TupleProjector deserializeProjectorFromScan(Scan scan) {
- return deserializeProjectorFromScan(scan, true);
- }
-
- public static TupleProjector deserializeProjectorFromScan(Scan scan, boolean scanProjector) {
- byte[] proj = scan.getAttribute(scanProjector ? SCAN_PROJECTOR : POST_JOIN_PROJECTOR);
+ byte[] proj = scan.getAttribute(SCAN_PROJECTOR);
if (proj == null) {
return null;
}
[2/2] phoenix git commit: Rename PROJECTABLE convention to SERVERJOIN
convention
Posted by ma...@apache.org.
Rename PROJECTABLE convention to SERVERJOIN convention
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/3f818585
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/3f818585
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/3f818585
Branch: refs/heads/calcite
Commit: 3f81858553751bf26dda1124df805ac43f421aa9
Parents: f7516b5
Author: maryannxue <we...@intel.com>
Authored: Sat Jul 11 14:10:19 2015 -0400
Committer: maryannxue <we...@intel.com>
Committed: Sat Jul 11 14:10:19 2015 -0400
----------------------------------------------------------------------
.../java/org/apache/phoenix/calcite/rel/PhoenixRel.java | 2 +-
.../phoenix/calcite/rel/PhoenixServerAggregate.java | 2 +-
.../org/apache/phoenix/calcite/rel/PhoenixServerJoin.java | 2 +-
.../org/apache/phoenix/calcite/rel/PhoenixServerSort.java | 2 +-
.../phoenix/calcite/rules/PhoenixConverterRules.java | 10 +++++-----
5 files changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3f818585/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRel.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRel.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRel.java
index 82afedc..1136ea6 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRel.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rel/PhoenixRel.java
@@ -23,7 +23,7 @@ import org.apache.phoenix.schema.TableRef;
public interface PhoenixRel extends RelNode {
/** Calling conventions for relational operations that occur in Phoenix. */
Convention SERVER_CONVENTION = new Convention.Impl("PHOENIX_SERVER", PhoenixRel.class);
- Convention PROJECTABLE_CONVENTION = new Convention.Impl("PHOENIX_PROJECTABLE", PhoenixRel.class);
+ Convention SERVERJOIN_CONVENTION = new Convention.Impl("PHOENIX_SERVERJOIN", PhoenixRel.class);
Convention CLIENT_CONVENTION = new Convention.Impl("PHOENIX_CLIENT", PhoenixRel.class);
/** Metadata Provider for PhoenixRel */
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3f818585/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 f0697e4..8c0c83a 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
@@ -44,7 +44,7 @@ public class PhoenixServerAggregate extends PhoenixAbstractAggregate {
@Override
public RelOptCost computeSelfCost(RelOptPlanner planner) {
if (getInput().getConvention() != PhoenixRel.SERVER_CONVENTION
- && getInput().getConvention() != PhoenixRel.PROJECTABLE_CONVENTION)
+ && getInput().getConvention() != PhoenixRel.SERVERJOIN_CONVENTION)
return planner.getCostFactory().makeInfiniteCost();
return super.computeSelfCost(planner)
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3f818585/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 e07f345..b6a3e1c 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
@@ -38,7 +38,7 @@ public class PhoenixServerJoin extends PhoenixAbstractJoin {
Set<String> variablesStopped, boolean isSingleValueRhs) {
RelOptCluster cluster = left.getCluster();
final RelTraitSet traits =
- cluster.traitSet().replace(PhoenixRel.PROJECTABLE_CONVENTION)
+ cluster.traitSet().replace(PhoenixRel.SERVERJOIN_CONVENTION)
.replaceIfs(RelCollationTraitDef.INSTANCE,
new Supplier<List<RelCollation>>() {
public List<RelCollation> get() {
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3f818585/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 e185a2f..0818ce6 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
@@ -39,7 +39,7 @@ public class PhoenixServerSort extends PhoenixAbstractSort {
@Override
public RelOptCost computeSelfCost(RelOptPlanner planner) {
if (getInput().getConvention() != PhoenixRel.SERVER_CONVENTION
- && getInput().getConvention() != PhoenixRel.PROJECTABLE_CONVENTION)
+ && getInput().getConvention() != PhoenixRel.SERVERJOIN_CONVENTION)
return planner.getCostFactory().makeInfiniteCost();
return super.computeSelfCost(planner)
http://git-wip-us.apache.org/repos/asf/phoenix/blob/3f818585/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java
index df6a213..ea34a1e 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/rules/PhoenixConverterRules.java
@@ -170,7 +170,7 @@ public class PhoenixConverterRules {
};
public static final PhoenixServerSortRule SERVER = new PhoenixServerSortRule(PhoenixRel.SERVER_CONVENTION);
- public static final PhoenixServerSortRule PROJECTABLE = new PhoenixServerSortRule(PhoenixRel.PROJECTABLE_CONVENTION);
+ public static final PhoenixServerSortRule PROJECTABLE = new PhoenixServerSortRule(PhoenixRel.SERVERJOIN_CONVENTION);
private final Convention inputConvention;
@@ -375,7 +375,7 @@ public class PhoenixConverterRules {
};
public static final RelOptRule SERVER = new PhoenixServerAggregateRule(PhoenixRel.SERVER_CONVENTION);
- public static final RelOptRule PROJECTABLE = new PhoenixServerAggregateRule(PhoenixRel.PROJECTABLE_CONVENTION);
+ public static final RelOptRule PROJECTABLE = new PhoenixServerAggregateRule(PhoenixRel.SERVERJOIN_CONVENTION);
private final Convention inputConvention;
@@ -512,7 +512,7 @@ public class PhoenixConverterRules {
private PhoenixServerJoinRule() {
super(LogicalJoin.class, Predicates.and(Arrays.asList(IS_CONVERTIBLE, NO_RIGHT_OR_FULL_JOIN)), Convention.NONE,
- PhoenixRel.PROJECTABLE_CONVENTION, "PhoenixServerJoinRule");
+ PhoenixRel.SERVERJOIN_CONVENTION, "PhoenixServerJoinRule");
}
public RelNode convert(RelNode rel) {
@@ -695,7 +695,7 @@ public class PhoenixConverterRules {
/**
* Rule to convert a relational expression from
- * {@link org.apache.phoenix.calcite.rel.PhoenixRel#PROJECTABLE_CONVENTION} to
+ * {@link org.apache.phoenix.calcite.rel.PhoenixRel#SERVERJOIN_CONVENTION} to
* {@link org.apache.phoenix.calcite.rel.PhoenixRel#CLIENT_CONVENTION}.
*/
public static class PhoenixProjectableToClientConverterRule extends ConverterRule {
@@ -703,7 +703,7 @@ public class PhoenixConverterRules {
new PhoenixProjectableToClientConverterRule();
private PhoenixProjectableToClientConverterRule() {
- super(RelNode.class, PhoenixRel.PROJECTABLE_CONVENTION, PhoenixRel.CLIENT_CONVENTION,
+ super(RelNode.class, PhoenixRel.SERVERJOIN_CONVENTION, PhoenixRel.CLIENT_CONVENTION,
"PhoenixProjectableToClientConverterRule");
}