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/04/24 18:01:52 UTC
phoenix git commit: Implemented PhoenixCalciteDriver and moved some
init logic to PhoenixPrepareImpl
Repository: phoenix
Updated Branches:
refs/heads/calcite 4c65ef2b5 -> 086462884
Implemented PhoenixCalciteDriver and moved some init logic to PhoenixPrepareImpl
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/08646288
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/08646288
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/08646288
Branch: refs/heads/calcite
Commit: 086462884ef8824724d2d1503de83aeea4056433
Parents: 4c65ef2
Author: maryannxue <we...@intel.com>
Authored: Fri Apr 24 12:01:41 2015 -0400
Committer: maryannxue <we...@intel.com>
Committed: Fri Apr 24 12:01:41 2015 -0400
----------------------------------------------------------------------
.../org/apache/phoenix/calcite/CalciteTest.java | 9 +++-
.../calcite/jdbc/PhoenixCalciteDriver.java | 30 +++++++++++
.../calcite/jdbc/PhoenixPrepareImpl.java | 52 ++++++++++++++++++++
.../phoenix/calcite/rel/PhoenixTableScan.java | 33 -------------
phoenix-core/src/main/resources/java.sql.Driver | 2 +-
5 files changed, 90 insertions(+), 36 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/08646288/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 acd230b..67c764c 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
@@ -139,10 +139,15 @@ public class CalciteTest extends BaseClientManagedTimeIT {
private static Connection createConnection() throws SQLException {
final Connection connection = DriverManager.getConnection(
- "jdbc:calcite:");
+ "jdbc:phoenixcalcite:");
final CalciteConnection calciteConnection =
connection.unwrap(CalciteConnection.class);
final String url = getUrl();
+ try {
+ Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");
+ } catch (ClassNotFoundException e) {
+ throw new RuntimeException(e);
+ }
final PhoenixConnection phoenixConnection =
DriverManager.getConnection(url).unwrap(PhoenixConnection.class);
calciteConnection.getRootSchema().add("phoenix",
@@ -174,7 +179,7 @@ public class CalciteTest extends BaseClientManagedTimeIT {
+ "}\n");
pw.close();
final Connection connection =
- DriverManager.getConnection("jdbc:calcite:model=" + file.getAbsolutePath());
+ DriverManager.getConnection("jdbc:phoenixcalcite:model=" + file.getAbsolutePath());
return connection;
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/08646288/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteDriver.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteDriver.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteDriver.java
new file mode 100644
index 0000000..37452df
--- /dev/null
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixCalciteDriver.java
@@ -0,0 +1,30 @@
+package org.apache.phoenix.calcite.jdbc;
+
+import org.apache.calcite.jdbc.CalcitePrepare;
+import org.apache.calcite.jdbc.Driver;
+import org.apache.calcite.linq4j.function.Function0;
+
+public class PhoenixCalciteDriver extends Driver {
+ public static final String CONNECT_STRING_PREFIX = "jdbc:phoenixcalcite:";
+
+ static {
+ new PhoenixCalciteDriver().register();
+ }
+
+ public PhoenixCalciteDriver() {
+ super();
+ }
+
+ @Override protected Function0<CalcitePrepare> createPrepareFactory() {
+ return new Function0<CalcitePrepare>() {
+ @Override
+ public CalcitePrepare apply() {
+ return new PhoenixPrepareImpl();
+ }
+ };
+ }
+
+ @Override protected String getConnectStringPrefix() {
+ return CONNECT_STRING_PREFIX;
+ }
+}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/08646288/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixPrepareImpl.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixPrepareImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixPrepareImpl.java
new file mode 100644
index 0000000..aa628e7
--- /dev/null
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/jdbc/PhoenixPrepareImpl.java
@@ -0,0 +1,52 @@
+package org.apache.phoenix.calcite.jdbc;
+
+import org.apache.calcite.jdbc.CalcitePrepare;
+import org.apache.calcite.plan.RelOptCostFactory;
+import org.apache.calcite.plan.RelOptPlanner;
+import org.apache.calcite.plan.RelOptRule;
+import org.apache.calcite.prepare.CalcitePrepareImpl;
+import org.apache.phoenix.calcite.rules.PhoenixAddScanLimitRule;
+import org.apache.phoenix.calcite.rules.PhoenixClientJoinRule;
+import org.apache.phoenix.calcite.rules.PhoenixCompactClientSortRule;
+import org.apache.phoenix.calcite.rules.PhoenixConverterRules;
+import org.apache.phoenix.calcite.rules.PhoenixFilterScanMergeRule;
+import org.apache.phoenix.calcite.rules.PhoenixServerAggregateRule;
+import org.apache.phoenix.calcite.rules.PhoenixServerJoinRule;
+import org.apache.phoenix.calcite.rules.PhoenixServerProjectRule;
+import org.apache.phoenix.calcite.rules.PhoenixServerSortRule;
+
+public class PhoenixPrepareImpl extends CalcitePrepareImpl {
+
+ public PhoenixPrepareImpl() {
+ super();
+ }
+
+ @Override
+ protected RelOptPlanner createPlanner(
+ final CalcitePrepare.Context prepareContext,
+ org.apache.calcite.plan.Context externalContext,
+ RelOptCostFactory costFactory) {
+ RelOptPlanner planner = super.createPlanner(prepareContext, externalContext, costFactory);
+ RelOptRule[] rules = PhoenixConverterRules.RULES;
+ for (RelOptRule rule : rules) {
+ planner.addRule(rule);
+ }
+ planner.addRule(PhoenixFilterScanMergeRule.INSTANCE);
+ planner.addRule(PhoenixAddScanLimitRule.LIMIT_SCAN);
+ planner.addRule(PhoenixAddScanLimitRule.LIMIT_SERVERPROJECT_SCAN);
+ planner.addRule(PhoenixServerProjectRule.PROJECT_SCAN);
+ planner.addRule(PhoenixServerProjectRule.PROJECT_SERVERJOIN);
+ planner.addRule(PhoenixServerJoinRule.JOIN_SCAN);
+ planner.addRule(PhoenixServerJoinRule.JOIN_SERVERPROJECT_SCAN);
+ planner.addRule(PhoenixServerAggregateRule.AGGREGATE_SCAN);
+ planner.addRule(PhoenixServerAggregateRule.AGGREGATE_SERVERJOIN);
+ planner.addRule(PhoenixServerAggregateRule.AGGREGATE_SERVERPROJECT);
+ planner.addRule(PhoenixServerSortRule.SORT_SCAN);
+ planner.addRule(PhoenixServerSortRule.SORT_SERVERJOIN);
+ planner.addRule(PhoenixServerSortRule.SORT_SERVERPROJECT);
+ planner.addRule(PhoenixCompactClientSortRule.SORT_SERVERAGGREGATE);
+ planner.addRule(PhoenixClientJoinRule.INSTANCE);
+
+ return planner;
+ }
+}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/08646288/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 c0ea42b..51cca21 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
@@ -6,7 +6,6 @@ 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.RelOptRule;
import org.apache.calcite.plan.RelOptTable;
import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.RelCollation;
@@ -20,15 +19,6 @@ import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.phoenix.calcite.CalciteUtils;
import org.apache.phoenix.calcite.PhoenixTable;
-import org.apache.phoenix.calcite.rules.PhoenixAddScanLimitRule;
-import org.apache.phoenix.calcite.rules.PhoenixClientJoinRule;
-import org.apache.phoenix.calcite.rules.PhoenixCompactClientSortRule;
-import org.apache.phoenix.calcite.rules.PhoenixFilterScanMergeRule;
-import org.apache.phoenix.calcite.rules.PhoenixConverterRules;
-import org.apache.phoenix.calcite.rules.PhoenixServerAggregateRule;
-import org.apache.phoenix.calcite.rules.PhoenixServerJoinRule;
-import org.apache.phoenix.calcite.rules.PhoenixServerProjectRule;
-import org.apache.phoenix.calcite.rules.PhoenixServerSortRule;
import org.apache.phoenix.compile.ColumnResolver;
import org.apache.phoenix.compile.FromCompiler;
import org.apache.phoenix.compile.OrderByCompiler.OrderBy;
@@ -96,29 +86,6 @@ public class PhoenixTableScan extends TableScan implements PhoenixRel {
}
@Override
- public void register(RelOptPlanner planner) {
- RelOptRule[] rules = PhoenixConverterRules.RULES;
- for (RelOptRule rule : rules) {
- planner.addRule(rule);
- }
- planner.addRule(PhoenixFilterScanMergeRule.INSTANCE);
- planner.addRule(PhoenixAddScanLimitRule.LIMIT_SCAN);
- planner.addRule(PhoenixAddScanLimitRule.LIMIT_SERVERPROJECT_SCAN);
- planner.addRule(PhoenixServerProjectRule.PROJECT_SCAN);
- planner.addRule(PhoenixServerProjectRule.PROJECT_SERVERJOIN);
- planner.addRule(PhoenixServerJoinRule.JOIN_SCAN);
- planner.addRule(PhoenixServerJoinRule.JOIN_SERVERPROJECT_SCAN);
- planner.addRule(PhoenixServerAggregateRule.AGGREGATE_SCAN);
- planner.addRule(PhoenixServerAggregateRule.AGGREGATE_SERVERJOIN);
- planner.addRule(PhoenixServerAggregateRule.AGGREGATE_SERVERPROJECT);
- planner.addRule(PhoenixServerSortRule.SORT_SCAN);
- planner.addRule(PhoenixServerSortRule.SORT_SERVERJOIN);
- planner.addRule(PhoenixServerSortRule.SORT_SERVERPROJECT);
- planner.addRule(PhoenixCompactClientSortRule.SORT_SERVERAGGREGATE);
- planner.addRule(PhoenixClientJoinRule.INSTANCE);
- }
-
- @Override
public RelWriter explainTerms(RelWriter pw) {
return super.explainTerms(pw)
.itemIf("filter", filter, filter != null)
http://git-wip-us.apache.org/repos/asf/phoenix/blob/08646288/phoenix-core/src/main/resources/java.sql.Driver
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/resources/java.sql.Driver b/phoenix-core/src/main/resources/java.sql.Driver
index fc51a04..2a19ec9 100644
--- a/phoenix-core/src/main/resources/java.sql.Driver
+++ b/phoenix-core/src/main/resources/java.sql.Driver
@@ -1 +1 @@
-org.apache.phoenix.jdbc.PhoenixDriver
+org.apache.phoenix.calcite.jdbc.PhoenixCalciteDriver