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/28 00:31:45 UTC
phoenix git commit: TetestConnectJoinHsqldb ran with results
Repository: phoenix
Updated Branches:
refs/heads/calcite d555ee62f -> 0b1b7e0f0
TetestConnectJoinHsqldb ran with results
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/0b1b7e0f
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/0b1b7e0f
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/0b1b7e0f
Branch: refs/heads/calcite
Commit: 0b1b7e0f0c2e9d5c954e4cec71e9ca3b050fd52b
Parents: d555ee6
Author: maryannxue <we...@intel.com>
Authored: Mon Apr 27 18:31:29 2015 -0400
Committer: maryannxue <we...@intel.com>
Committed: Mon Apr 27 18:31:29 2015 -0400
----------------------------------------------------------------------
.../org/apache/phoenix/calcite/CalciteTest.java | 63 ++++++++++----------
.../apache/phoenix/calcite/PhoenixSchema.java | 10 ++--
phoenix-core/src/main/resources/java.sql.Driver | 1 +
.../java/org/apache/phoenix/query/BaseTest.java | 13 +++-
4 files changed, 50 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/0b1b7e0f/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 f7c8b21..91eb6b9 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
@@ -1,12 +1,12 @@
package org.apache.phoenix.calcite;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import org.apache.calcite.adapter.jdbc.JdbcSchema;
import org.apache.calcite.jdbc.CalciteConnection;
import org.apache.calcite.schema.SchemaPlus;
import org.apache.phoenix.end2end.BaseClientManagedTimeIT;
-import org.apache.phoenix.jdbc.PhoenixConnection;
import org.junit.Before;
import org.junit.Test;
@@ -15,6 +15,7 @@ import java.io.FileWriter;
import java.io.PrintWriter;
import java.sql.*;
import java.util.List;
+import java.util.Map;
import javax.sql.DataSource;
@@ -147,15 +148,11 @@ public class CalciteTest extends BaseClientManagedTimeIT {
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",
- new PhoenixSchema(null, phoenixConnection));
+ Map<String, Object> operand = Maps.newHashMap();
+ operand.put("url", url);
+ SchemaPlus rootSchema = calciteConnection.getRootSchema();
+ rootSchema.add("phoenix",
+ PhoenixSchema.FACTORY.create(rootSchema, null, operand));
calciteConnection.setSchema("phoenix");
return connection;
}
@@ -603,11 +600,11 @@ public class CalciteTest extends BaseClientManagedTimeIT {
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" +
" PhoenixServerProject(order_id=[$0], QUANTITY=[$4])\n" +
- " PhoenixServerJoin(condition=[AND(=($2, $6), =($4, $7))], joinType=[inner])\n" +
+ " PhoenixServerJoin(condition=[AND(=($2, $7), =($4, $8))], joinType=[inner])\n" +
" PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
" PhoenixServerAggregate(group=[{0}], EXPR$0=[MAX($1)])\n" +
- " PhoenixServerProject(item_id0=[$6], QUANTITY=[$4])\n" +
- " PhoenixServerJoin(condition=[=($6, $2)], joinType=[inner])\n" +
+ " PhoenixServerProject(item_id0=[$7], QUANTITY=[$4])\n" +
+ " PhoenixServerJoin(condition=[=($7, $2)], joinType=[inner])\n" +
" PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
" PhoenixServerAggregate(group=[{0}])\n" +
" PhoenixServerProject(item_id=[$2])\n" +
@@ -627,23 +624,29 @@ public class CalciteTest extends BaseClientManagedTimeIT {
return createConnectionWithHsqldb();
}
};
- start.sql("select \"the_year\", count(*) as c, min(\"the_month\") as m\n"
- + "from \"foodmart\".\"time_by_day\" t\n"
- + "join " + JOIN_ORDER_TABLE_FULL_NAME + " c on t.\"the_year\" = c.quantity\n"
- + "group by \"the_year\"\n"
- + "order by 1, 2")
- .explainIs("EnumerableSort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[ASC])\n" +
-" EnumerableAggregate(group=[{0}], C=[COUNT()], M=[MIN($1)])\n" +
-" EnumerableCalc(expr#0..3=[{inputs}], the_year=[$t1], the_month=[$t0])\n" +
-" EnumerableJoin(condition=[=($2, $3)], joinType=[inner])\n" +
-" JdbcToEnumerableConverter\n" +
-" JdbcProject(the_month=[$3], the_year=[$4], $f10=[CAST($4):INTEGER])\n" +
-" JdbcTableScan(table=[[foodmart, time_by_day]])\n" +
-" PhoenixToEnumerableConverter\n" +
-" PhoenixServerProject(QUANTITY=[$4])\n" +
-" PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n")
- .resultIs(new Object[][] {})
- //.resultIs(new Object[][] { new Object[] {(short) 1997, 365L, "April"}, new Object[] {(short) 1998, 365L, "April"}})
+ start.sql("select the_year, quantity as q, (select count(*) cnt \n"
+ + "from \"foodmart\".\"time_by_day\" t where t.\"the_year\" = c.the_year)\n"
+ + "from " + JOIN_ORDER_TABLE_FULL_NAME + " c")
+ .explainIs("EnumerableCalc(expr#0..8=[{inputs}], THE_YEAR=[$t6], Q=[$t4], EXPR$2=[$t8])\n" +
+ " EnumerableJoin(condition=[=($6, $7)], joinType=[left])\n" +
+ " PhoenixToEnumerableConverter\n" +
+ " 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=[0], expr#12=[CAST($t5):INTEGER], expr#13=[=($t12, $t0)], THE_YEAR=[$t0], $f0=[$t11], $condition=[$t13])\n" +
+ " EnumerableJoin(condition=[true], joinType=[inner])\n" +
+ " PhoenixToEnumerableConverter\n" +
+ " PhoenixServerAggregate(group=[{0}])\n" +
+ " PhoenixServerProject(THE_YEAR=[$6])\n" +
+ " PhoenixTableScan(table=[[phoenix, Join, OrderTable]])\n" +
+ " JdbcToEnumerableConverter\n" +
+ " JdbcTableScan(table=[[foodmart, time_by_day]])\n")
+ .resultIs(new Object[][] {
+ new Object[] {1997, 1000, 365L},
+ new Object[] {1997, 2000, 365L},
+ new Object[] {1997, 3000, 365L},
+ new Object[] {1998, 4000, 365L},
+ new Object[] {1998, 5000, 365L}})
.close();;
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/0b1b7e0f/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java
index 14c0ee9..f995f19 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/PhoenixSchema.java
@@ -25,6 +25,8 @@ import java.util.*;
* Implementation of Calcite's {@link Schema} SPI for Phoenix.
*/
public class PhoenixSchema implements Schema {
+ public static final Factory FACTORY = new Factory();
+
private final String schemaName;
private final PhoenixConnection pc;
protected final MetaDataClient client;
@@ -39,14 +41,14 @@ public class PhoenixSchema implements Schema {
tableCache.put("Join", "CustomerTable");
tableCache.put("Join", "OrderTable");
}
-
- PhoenixSchema(String name, PhoenixConnection pc) {
+
+ private PhoenixSchema(String name, PhoenixConnection pc) {
this.schemaName = name;
this.pc = pc;
this.client = new MetaDataClient(pc);
}
- private static Schema create(SchemaPlus parentSchema, String name, Map<String, Object> operand) {
+ private static Schema create(SchemaPlus parentSchema, Map<String, Object> operand) {
String url = (String) operand.get("url");
final Properties properties = new Properties();
for (Map.Entry<String, Object> entry : operand.entrySet()) {
@@ -150,7 +152,7 @@ public class PhoenixSchema implements Schema {
*/
public static class Factory implements SchemaFactory {
public Schema create(SchemaPlus parentSchema, String name, Map<String, Object> operand) {
- return PhoenixSchema.create(parentSchema, name, operand);
+ return PhoenixSchema.create(parentSchema, operand);
}
}
}
http://git-wip-us.apache.org/repos/asf/phoenix/blob/0b1b7e0f/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 2a19ec9..5e78cdf 100644
--- a/phoenix-core/src/main/resources/java.sql.Driver
+++ b/phoenix-core/src/main/resources/java.sql.Driver
@@ -1 +1,2 @@
org.apache.phoenix.calcite.jdbc.PhoenixCalciteDriver
+org.apache.phoenix.jdbc.PhoenixDriver
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/phoenix/blob/0b1b7e0f/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
index 51461ea..18be719 100644
--- a/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
+++ b/phoenix-core/src/test/java/org/apache/phoenix/query/BaseTest.java
@@ -429,7 +429,8 @@ public abstract class BaseTest {
" \"item_id\" varchar(10), " +
" price integer, " +
" quantity integer, " +
- " date timestamp)");
+ " date timestamp, " +
+ " the_year integer)");
builder.put(JOIN_CUSTOMER_TABLE_FULL_NAME, "create table " + JOIN_CUSTOMER_TABLE_FULL_NAME +
" (\"customer_id\" varchar(10) not null primary key, " +
" name varchar, " +
@@ -1574,14 +1575,16 @@ public abstract class BaseTest {
" \"item_id\", " +
" PRICE, " +
" QUANTITY," +
- " DATE) " +
- "values (?, ?, ?, ?, ?, ?)");
+ " DATE," +
+ " THE_YEAR) " +
+ "values (?, ?, ?, ?, ?, ?, ?)");
stmt.setString(1, "000000000000001");
stmt.setString(2, "0000000004");
stmt.setString(3, "0000000001");
stmt.setInt(4, 100);
stmt.setInt(5, 1000);
stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-22 14:22:56").getTime()));
+ stmt.setShort(7, (short) 1997);
stmt.execute();
stmt.setString(1, "000000000000002");
@@ -1590,6 +1593,7 @@ public abstract class BaseTest {
stmt.setInt(4, 552);
stmt.setInt(5, 2000);
stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-25 10:06:29").getTime()));
+ stmt.setShort(7, (short) 1997);
stmt.execute();
stmt.setString(1, "000000000000003");
@@ -1598,6 +1602,7 @@ public abstract class BaseTest {
stmt.setInt(4, 190);
stmt.setInt(5, 3000);
stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-25 16:45:07").getTime()));
+ stmt.setShort(7, (short) 1997);
stmt.execute();
stmt.setString(1, "000000000000004");
@@ -1606,6 +1611,7 @@ public abstract class BaseTest {
stmt.setInt(4, 510);
stmt.setInt(5, 4000);
stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-26 13:26:04").getTime()));
+ stmt.setShort(7, (short) 1998);
stmt.execute();
stmt.setString(1, "000000000000005");
@@ -1614,6 +1620,7 @@ public abstract class BaseTest {
stmt.setInt(4, 264);
stmt.setInt(5, 5000);
stmt.setTimestamp(6, new Timestamp(format.parse("2013-11-27 09:37:50").getTime()));
+ stmt.setShort(7, (short) 1998);
stmt.execute();
conn.commit();