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 2017/02/02 00:50:52 UTC

phoenix git commit: PHOENIX-3643 Not able resolve columns in predicate while querying views in Phoenix-Calcite

Repository: phoenix
Updated Branches:
  refs/heads/calcite eb51d8bb4 -> 76fae2c86


PHOENIX-3643 Not able resolve columns in predicate while querying views in Phoenix-Calcite


Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/76fae2c8
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/76fae2c8
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/76fae2c8

Branch: refs/heads/calcite
Commit: 76fae2c86464ec7eac27234c94d274772351f817
Parents: eb51d8b
Author: maryannxue <ma...@gmail.com>
Authored: Wed Feb 1 16:50:43 2017 -0800
Committer: maryannxue <ma...@gmail.com>
Committed: Wed Feb 1 16:50:43 2017 -0800

----------------------------------------------------------------------
 .../java/org/apache/phoenix/calcite/CalciteIT.java  |  8 ++++----
 .../org/apache/phoenix/calcite/TableMapping.java    | 16 +++++++++++++---
 2 files changed, 17 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/76fae2c8/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java b/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java
index a2c15fa..a649c7e 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/calcite/CalciteIT.java
@@ -144,7 +144,7 @@ public class CalciteIT extends BaseCalciteIT {
                            "  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" +
                            "    PhoenixServerJoin(condition=[=($5, $7)], joinType=[inner])\n" +
                            "      PhoenixTableScan(table=[[phoenix, Join, ItemTable]])\n" +
-                           "      PhoenixServerProject(supplier_id=[$0], NAME=[$1], PHONE=[$2], ADDRESS=[$3], LOC_ID=[$4], NAME5=[CAST($1):VARCHAR(2) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\"])\n" +
+                           "      PhoenixServerProject(supplier_id=[$0], NAME=[$1], PHONE=[$2], ADDRESS=[$3], LOC_ID=[$4], NAME0=[CAST($1):VARCHAR(2) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\"])\n" +
                            "        PhoenixTableScan(table=[[phoenix, Join, SupplierTable]], filter=[=(CAST($1):VARCHAR(2) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\", 'S5')])\n")
                 .resultIs(0, new Object[][] {
                           {"0000000005", "T5", 500, 8, 15, "0000000005", "Item T5", "0000000005", "S5", "888-888-5555", "505 YYY Street", "10005"}})
@@ -157,7 +157,7 @@ public class CalciteIT extends BaseCalciteIT {
                            "    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" +
-                           "      PhoenixServerProject(order_id=[$0], item_id=[$2], QUANTITY=[$4], PRICE6=[CAST($3):DECIMAL(17, 6)])\n" +
+                           "      PhoenixServerProject(order_id=[$0], item_id=[$2], QUANTITY=[$4], PRICE0=[CAST($3):DECIMAL(17, 6)])\n" +
                            "        PhoenixTableScan(table=[[phoenix, Join, OrderTable]], filter=[<($4, 5000)])\n")
                 .resultIs(0, new Object[][] {
                           {"000000000000004", "T6", 600, 15, 4000}})
@@ -230,10 +230,10 @@ public class CalciteIT extends BaseCalciteIT {
         
         start(false, 100000f).sql("select t1.k0, t1.k1, t2.k0, t2.k1 from " + KEY_ORDERING_TABLE_1_NAME + " t1 join " + KEY_ORDERING_TABLE_2_NAME + " t2 on t1.k0 = t2.k0 and t1.k1 = t2.k1")
                 .explainIs("PhoenixToEnumerableConverter\n" +
-                           "  PhoenixClientProject(K0=[$0], K1=[$1], K00=[$3], K10=[$4])\n" +
+                           "  PhoenixClientProject(K0=[$0], K1=[$1], K00=[$3], K11=[$4])\n" +
                            "    PhoenixClientJoin(condition=[AND(=($0, $3), =($2, $4))], joinType=[inner])\n" +
                            "      PhoenixServerSort(sort0=[$0], sort1=[$2], dir0=[ASC], dir1=[ASC])\n" +
-                           "        PhoenixServerProject(K0=[$0], K1=[$1], K14=[CAST($1):BIGINT NOT NULL])\n" +
+                           "        PhoenixServerProject(K0=[$0], K1=[$1], K10=[CAST($1):BIGINT NOT NULL])\n" +
                            "          PhoenixTableScan(table=[[phoenix, KEY_ORDERING_TEST_TABLE_1]])\n" +
                            "      PhoenixServerProject(K0=[$0], K1=[$1])\n" +
                            "        PhoenixTableScan(table=[[phoenix, KEY_ORDERING_TEST_TABLE_2]], scanOrder=[REVERSE])\n")

http://git-wip-us.apache.org/repos/asf/phoenix/blob/76fae2c8/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java b/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java
index 161c618..8891bd4 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/calcite/TableMapping.java
@@ -108,17 +108,27 @@ public class TableMapping {
     }
 
     private void init() {
+        Set<String> nameSet = Sets.newHashSet();
+        boolean dup = false;
         for (int i = 0; i < mappedColumns.size(); i++) {
             PColumn column = mappedColumns.get(i);
             String familyName = column.getFamilyName() == null ? "" : column.getFamilyName().getString();
-            String translatedName = SchemaUtil.getCaseSensitiveColumnDisplayName(familyName, column.getName().getString());
-            names.add(translatedName);
+            String name = column.getName().getString();
             Map<String, Integer> subMap = groupMap.get(familyName);
             if (subMap == null) {
               subMap = Maps.newHashMap();
               groupMap.put(familyName, subMap);
             }
-            subMap.put(column.getName().getString(), i);            
+            subMap.put(name, i);
+            dup = dup || !nameSet.add(name);
+        }
+        for (int i = 0; i < mappedColumns.size(); i++) {
+            PColumn column = mappedColumns.get(i);
+            String familyName = column.getFamilyName() == null ? "" : column.getFamilyName().getString();
+            String name = column.getName().getString();
+            String translatedName = !dup ? name
+                    : SchemaUtil.getCaseSensitiveColumnDisplayName(familyName, column.getName().getString());
+            names.add(translatedName);
         }
     }