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 <maryann....@gmail.com> Authored: Wed Feb 1 16:50:43 2017 -0800 Committer: maryannxue <maryann....@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); } }