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();