PHOENIX-1616 Creating a View with a case sensitive column name does not work (Thomas D'Silva)
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/03a5d7ef Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/03a5d7ef Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/03a5d7ef Branch: refs/heads/calcite Commit: 03a5d7ef198f059b289a7195613db8d375b88e46 Parents: a1baf2a Author: James Taylor <jtay...@salesforce.com> Authored: Sat Jan 31 11:17:46 2015 -0800 Committer: James Taylor <jtay...@salesforce.com> Committed: Sat Jan 31 11:17:46 2015 -0800 ---------------------------------------------------------------------- .../org/apache/phoenix/end2end/HashJoinIT.java | 84 ++++++++--------- .../phoenix/end2end/HashJoinLocalIndexIT.java | 4 +- .../apache/phoenix/end2end/SortMergeJoinIT.java | 22 ++--- .../org/apache/phoenix/end2end/SubqueryIT.java | 70 +++++++------- .../end2end/SubqueryUsingSortMergeJoinIT.java | 96 ++++++++++---------- .../java/org/apache/phoenix/end2end/ViewIT.java | 27 ++++++ .../index/GlobalIndexOptimizationIT.java | 18 ++-- .../phoenix/compile/ExpressionCompiler.java | 2 +- .../apache/phoenix/parse/ColumnParseNode.java | 4 + .../org/apache/phoenix/parse/TableName.java | 24 +++-- .../org/apache/phoenix/schema/ColumnRef.java | 8 +- .../phoenix/schema/LocalIndexDataColumnRef.java | 2 +- .../org/apache/phoenix/schema/TableRef.java | 37 ++++---- .../java/org/apache/phoenix/util/IndexUtil.java | 3 +- .../org/apache/phoenix/util/SchemaUtil.java | 8 +- 15 files changed, 225 insertions(+), 184 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java index a699d48..781bfea 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinIT.java @@ -127,7 +127,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { * GROUP BY i.item_id ORDER BY q DESC" */ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [I.item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"I.item_id\"]\n" + "CLIENT MERGE SORT\n" + "CLIENT SORTED BY [SUM(O.QUANTITY) DESC]\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + @@ -141,9 +141,9 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { */ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [I.item_id]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.item_id\"]\n" + "CLIENT MERGE SORT\n" + - "CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, I.item_id]\n" + + "CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, \"I.item_id\"]\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME, /* @@ -166,9 +166,9 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { */ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [I.item_id]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.item_id\"]\n" + "CLIENT MERGE SORT\n" + - "CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, I.item_id]\n" + + "CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, \"I.item_id\"]\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME, /* @@ -218,7 +218,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " SERVER FILTER BY QUANTITY < 5000\n" + " PARALLEL INNER-JOIN TABLE 1\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" + - " DYNAMIC SERVER FILTER BY item_id IN (O.item_id)", + " DYNAMIC SERVER FILTER BY \"item_id\" IN (\"O.item_id\")", /* * testSelfJoin() * SELECT i2.item_id, i1.name FROM joinItemTable i1 @@ -229,7 +229,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " DYNAMIC SERVER FILTER BY item_id IN (I2.item_id)", + " DYNAMIC SERVER FILTER BY \"item_id\" IN (\"I2.item_id\")", /* * testSelfJoin() * SELECT i1.name, i2.name FROM joinItemTable i1 @@ -241,7 +241,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { "CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + - " DYNAMIC SERVER FILTER BY item_id IN (I2.supplier_id)", + " DYNAMIC SERVER FILTER BY \"item_id\" IN (\"I2.supplier_id\")", /* * testStarJoin() * SELECT order_id, c.name, i.name iname, quantity, o.date @@ -264,13 +264,13 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { * ORDER BY order_id */ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + - " SERVER SORTED BY [O.order_id]\n" + + " SERVER SORTED BY [\"O.order_id\"]\n" + "CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + "\n" + - " DYNAMIC SERVER FILTER BY item_id IN (O.item_id)", + " DYNAMIC SERVER FILTER BY \"item_id\" IN (\"O.item_id\")", /* * testSubJoin() * SELECT * FROM joinCustomerTable c @@ -285,7 +285,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { * ORDER BY c.customer_id, i.name */ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " [*] - ['0000000005']\n" + - " SERVER SORTED BY [C.customer_id, I.NAME]\n" + + " SERVER SORTED BY [\"C.customer_id\", I.NAME]\n" + "CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + @@ -295,7 +295,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " SERVER FILTER BY NAME != 'T3'\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" + - " DYNAMIC SERVER FILTER BY customer_id IN (O.customer_id)", + " DYNAMIC SERVER FILTER BY \"customer_id\" IN (\"O.customer_id\")", /* * testJoinWithSubqueryAndAggregation() * SELECT i.name, sum(quantity) FROM joinOrderTable o @@ -338,7 +338,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { "CLIENT MERGE SORT\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT", /* * testJoinWithSubqueryAndAggregation() @@ -354,7 +354,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { "CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT", /* * testNestedSubqueries() @@ -415,7 +415,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + " PARALLEL INNER-JOIN TABLE 1(DELAYED EVALUATION)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " DYNAMIC SERVER FILTER BY supplier_id IN (I.supplier_id)\n" + + " DYNAMIC SERVER FILTER BY \"supplier_id\" IN (\"I.supplier_id\")\n" + " JOIN-SCANNER 4 ROW LIMIT", /* * testJoinWithKeyRangeOptimization() @@ -491,7 +491,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { * GROUP BY i.item_id ORDER BY q DESC" */ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [I.:item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"I.:item_id\"]\n" + "CLIENT MERGE SORT\n" + "CLIENT SORTED BY [SUM(O.QUANTITY) DESC]\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + @@ -505,9 +505,9 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { */ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [I.item_id]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.item_id\"]\n" + "CLIENT MERGE SORT\n" + - "CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, I.item_id]\n" + + "CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, \"I.item_id\"]\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME, /* @@ -530,9 +530,9 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { */ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [I.item_id]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.item_id\"]\n" + "CLIENT MERGE SORT\n" + - "CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, I.item_id]\n" + + "CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, \"I.item_id\"]\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME, /* @@ -592,7 +592,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " DYNAMIC SERVER FILTER BY item_id IN (I2.:item_id)", + " DYNAMIC SERVER FILTER BY \"item_id\" IN (\"I2.:item_id\")", /* * testSelfJoin() * SELECT i1.name, i2.name FROM joinItemTable i1 @@ -630,7 +630,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { */ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [O.order_id]\n" + + " SERVER SORTED BY [\"O.order_id\"]\n" + "CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + @@ -651,7 +651,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { * ORDER BY c.customer_id, i.name */ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " [*] - ['0000000005']\n" + - " SERVER SORTED BY [C.customer_id, I.0:NAME]\n" + + " SERVER SORTED BY [\"C.customer_id\", I.0:NAME]\n" + "CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + @@ -661,7 +661,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " SERVER FILTER BY NAME != 'T3'\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" + - " DYNAMIC SERVER FILTER BY customer_id IN (O.customer_id)", + " DYNAMIC SERVER FILTER BY \"customer_id\" IN (\"O.customer_id\")", /* * testJoinWithSubqueryAndAggregation() * SELECT i.name, sum(quantity) FROM joinOrderTable o @@ -705,7 +705,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { "CLIENT MERGE SORT\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT", /* * testJoinWithSubqueryAndAggregation() @@ -721,7 +721,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { "CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT", /* * testNestedSubqueries() @@ -782,7 +782,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_SCHEMA + ".idx_item\n" + " PARALLEL INNER-JOIN TABLE 1(DELAYED EVALUATION)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " DYNAMIC SERVER FILTER BY supplier_id IN (I.0:supplier_id)\n" + + " DYNAMIC SERVER FILTER BY \"supplier_id\" IN (\"I.0:supplier_id\")\n" + " JOIN-SCANNER 4 ROW LIMIT", /* * testJoinWithKeyRangeOptimization() @@ -859,7 +859,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { * GROUP BY i.item_id ORDER BY q DESC" */ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [I.:item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"I.:item_id\"]\n" + "CLIENT MERGE SORT\n" + "CLIENT SORTED BY [SUM(O.QUANTITY) DESC]\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + @@ -874,9 +874,9 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { */ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [I.item_id]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.item_id\"]\n" + "CLIENT MERGE SORT\n" + - "CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, I.item_id]\n" + + "CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, \"I.item_id\"]\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME, /* @@ -900,9 +900,9 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { */ "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [I.item_id]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY [\"I.item_id\"]\n" + "CLIENT MERGE SORT\n" + - "CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, I.item_id]\n" + + "CLIENT SORTED BY [SUM(O.QUANTITY) DESC NULLS LAST, \"I.item_id\"]\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME, /* @@ -958,7 +958,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + "" + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " [-32768]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN (O.item_id)", + " DYNAMIC SERVER FILTER BY \"item_id\" IN (\"O.item_id\")", /* * testSelfJoin() * SELECT i2.item_id, i1.name FROM joinItemTable i1 @@ -970,7 +970,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " CLIENT PARALLEL 1-WAY RANGE SCAN OVER "+ MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX +""+ JOIN_ITEM_TABLE_DISPLAY_NAME +" [-32768]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN (I2.:item_id)", + " DYNAMIC SERVER FILTER BY \"item_id\" IN (\"I2.:item_id\")", /* * testSelfJoin() * SELECT i1.name, i2.name FROM joinItemTable i1 @@ -984,7 +984,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX +""+ JOIN_ITEM_TABLE_DISPLAY_NAME +" [-32768]\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN (I2.0:supplier_id)", + " DYNAMIC SERVER FILTER BY \"item_id\" IN (\"I2.0:supplier_id\")", /* * testStarJoin() * SELECT order_id, c.name, i.name iname, quantity, o.date @@ -1012,7 +1012,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { */ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + "" + JOIN_ITEM_TABLE_DISPLAY_NAME + " [-32768]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [O.order_id]\n"+ + " SERVER SORTED BY [\"O.order_id\"]\n"+ "CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + @@ -1020,7 +1020,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + "" + JOIN_CUSTOMER_TABLE_DISPLAY_NAME+" [-32768]\n"+ " SERVER FILTER BY FIRST KEY ONLY\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN (O.item_id)", + " DYNAMIC SERVER FILTER BY \"item_id\" IN (\"O.item_id\")", /* * testSubJoin() * SELECT * FROM joinCustomerTable c @@ -1035,7 +1035,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { * ORDER BY c.customer_id, i.name */ "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " [*] - ['0000000005']\n" + - " SERVER SORTED BY [C.customer_id, I.0:NAME]\n"+ + " SERVER SORTED BY [\"C.customer_id\", I.0:NAME]\n"+ "CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + @@ -1046,7 +1046,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " CLIENT MERGE SORT\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" + - " DYNAMIC SERVER FILTER BY customer_id IN (O.customer_id)", + " DYNAMIC SERVER FILTER BY \"customer_id\" IN (\"O.customer_id\")", /* * testJoinWithSubqueryAndAggregation() * SELECT i.name, sum(quantity) FROM joinOrderTable o @@ -1092,7 +1092,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { "CLIENT MERGE SORT\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT", /* * testJoinWithSubqueryAndAggregation() @@ -1108,7 +1108,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { "CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT", /* * testNestedSubqueries() @@ -1172,7 +1172,7 @@ public class HashJoinIT extends BaseHBaseManagedTimeIT { " CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 1(DELAYED EVALUATION)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER "+ JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " DYNAMIC SERVER FILTER BY supplier_id IN (I.0:supplier_id)\n" + + " DYNAMIC SERVER FILTER BY \"supplier_id\" IN (\"I.0:supplier_id\")\n" + " JOIN-SCANNER 4 ROW LIMIT", /* * testJoinWithKeyRangeOptimization() http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinLocalIndexIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinLocalIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinLocalIndexIT.java index 6f47044..45e80c6 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinLocalIndexIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/HashJoinLocalIndexIT.java @@ -105,7 +105,7 @@ public class HashJoinLocalIndexIT extends BaseHBaseManagedTimeIT { " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_ITEM_TABLE_DISPLAY_NAME + " [-32768,*] - [-32768,'T6']\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY supplier_id IN (I.0:supplier_id)", + " DYNAMIC SERVER FILTER BY \"supplier_id\" IN (\"I.0:supplier_id\")", "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " [-32768,'S1']\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + @@ -115,7 +115,7 @@ public class HashJoinLocalIndexIT extends BaseHBaseManagedTimeIT { " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_ITEM_TABLE_DISPLAY_NAME + " [-32768,*] - [-32768,'T6']\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY supplier_id IN (I.0:supplier_id)", + " DYNAMIC SERVER FILTER BY \"supplier_id\" IN (\"I.0:supplier_id\")", "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " [-32768,*] - [-32768,'S3']\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java index 0d76082..4503b5b 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SortMergeJoinIT.java @@ -112,14 +112,14 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT { "AND\n" + " SORT-MERGE-JOIN (INNER) TABLES\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + - " SERVER SORTED BY [I.item_id]\n" + + " SERVER SORTED BY [\"I.item_id\"]\n" + " CLIENT MERGE SORT\n" + " AND (SKIP MERGE)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + " SERVER FILTER BY QUANTITY < 5000\n" + - " SERVER SORTED BY [O.item_id]\n" + + " SERVER SORTED BY [\"O.item_id\"]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY [I.supplier_id]", + " CLIENT SORTED BY [\"I.supplier_id\"]", }}); testCases.add(new String[][] { { @@ -130,19 +130,19 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT { "SORT-MERGE-JOIN (LEFT) TABLES\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_supplier\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [S.:supplier_id]\n" + + " SERVER SORTED BY [\"S.:supplier_id\"]\n" + " CLIENT MERGE SORT\n" + "AND\n" + " SORT-MERGE-JOIN (INNER) TABLES\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + - " SERVER SORTED BY [I.:item_id]\n" + + " SERVER SORTED BY [\"I.:item_id\"]\n" + " CLIENT MERGE SORT\n" + " AND (SKIP MERGE)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + " SERVER FILTER BY QUANTITY < 5000\n" + - " SERVER SORTED BY [O.item_id]\n" + + " SERVER SORTED BY [\"O.item_id\"]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY [I.0:supplier_id]" + " CLIENT SORTED BY [\"I.0:supplier_id\"]" }}); testCases.add(new String[][] { { @@ -153,19 +153,19 @@ public class SortMergeJoinIT extends BaseHBaseManagedTimeIT { "SORT-MERGE-JOIN (LEFT) TABLES\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " [-32768]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [S.:supplier_id]\n" + + " SERVER SORTED BY [\"S.:supplier_id\"]\n" + " CLIENT MERGE SORT\n" + "AND\n" + " SORT-MERGE-JOIN (INNER) TABLES\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_ITEM_TABLE_DISPLAY_NAME + " [-32768]\n" + - " SERVER SORTED BY [I.:item_id]\n" + + " SERVER SORTED BY [\"I.:item_id\"]\n" + " CLIENT MERGE SORT\n" + " AND (SKIP MERGE)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + " SERVER FILTER BY QUANTITY < 5000\n" + - " SERVER SORTED BY [O.item_id]\n" + + " SERVER SORTED BY [\"O.item_id\"]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY [I.0:supplier_id]" + " CLIENT SORTED BY [\"I.0:supplier_id\"]" }}); return testCases; } http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java index 85e562c..2d11c5c 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryIT.java @@ -111,9 +111,9 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" + " SKIP-SCAN-JOIN TABLE 1\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + " \\['000000000000001'\\] - \\[\\*\\]\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN \\(\\$\\d+.\\$\\d+\\)", + " DYNAMIC SERVER FILTER BY \"item_id\" IN \\(\\$\\d+.\\$\\d+\\)", "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" + " SERVER SORTED BY [I.NAME]\n" + @@ -122,28 +122,28 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + " PARALLEL SEMI-JOIN TABLE 1(DELAYED EVALUATION) (SKIP MERGE)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT", "CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_DISPLAY_NAME + "\n" + "CLIENT MERGE SORT\n" + " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id, NAME\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\", NAME\\]\n" + " CLIENT MERGE SORT\n" + " PARALLEL ANTI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + " PARALLEL LEFT-JOIN TABLE 1\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id, NAME\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\", NAME\\]\n" + " CLIENT MERGE SORT\n" + " SKIP-SCAN-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN \\(\\$\\d+.\\$\\d+\\)\n" + + " DYNAMIC SERVER FILTER BY \"item_id\" IN \\(\\$\\d+.\\$\\d+\\)\n" + " AFTER-JOIN SERVER FILTER BY \\(\\$\\d+.\\$\\d+ IS NOT NULL OR \\$\\d+.\\$\\d+ IS NOT NULL\\)", "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + @@ -151,23 +151,23 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { "CLIENT MERGE SORT\n" + " PARALLEL ANTI-JOIN TABLE 0 (SKIP MERGE)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT", "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + "\n" + " SKIP-SCAN-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[O.customer_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"O.customer_id\"\\]\n" + " CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + " PARALLEL LEFT-JOIN TABLE 1\\(DELAYED EVALUATION\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN \\(O.item_id\\)\n" + + " DYNAMIC SERVER FILTER BY \"item_id\" IN \\(\"O.item_id\"\\)\n" + " AFTER-JOIN SERVER FILTER BY \\(I.NAME = 'T2' OR O.QUANTITY > \\$\\d+.\\$\\d+\\)\n" + - " DYNAMIC SERVER FILTER BY customer_id IN \\(\\$\\d+.\\$\\d+\\)" + " DYNAMIC SERVER FILTER BY \"customer_id\" IN \\(\\$\\d+.\\$\\d+\\)" }}); testCases.add(new String[][] { { @@ -181,7 +181,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { " SERVER FILTER BY FIRST KEY ONLY\n" + " PARALLEL SEMI-JOIN TABLE 1 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + " \\['000000000000001'\\] - \\[\\*\\]\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT", "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_supplier\n" + @@ -192,7 +192,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + " PARALLEL SEMI-JOIN TABLE 1(DELAYED EVALUATION) (SKIP MERGE)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT", "CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_DISPLAY_NAME + "\n" + @@ -200,20 +200,20 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, item_id\\]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, \"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + " PARALLEL ANTI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + " PARALLEL LEFT-JOIN TABLE 1\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, item_id\\]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, \"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + " PARALLEL SEMI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + " AFTER-JOIN SERVER FILTER BY \\(\\$\\d+.\\$\\d+ IS NOT NULL OR \\$\\d+.\\$\\d+ IS NOT NULL\\)", @@ -221,7 +221,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { " SERVER FILTER BY FIRST KEY ONLY\n" + " PARALLEL ANTI-JOIN TABLE 0 (SKIP MERGE)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT", "CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_customer\n" + @@ -229,13 +229,13 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { " PARALLEL SEMI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[O.customer_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"O.customer_id\"\\]\n" + " CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + " PARALLEL LEFT-JOIN TABLE 1\\(DELAYED EVALUATION\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + " AFTER-JOIN SERVER FILTER BY \\(I.0:NAME = 'T2' OR O.QUANTITY > \\$\\d+.\\$\\d+\\)" }}); @@ -253,9 +253,9 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { " CLIENT MERGE SORT\n" + " PARALLEL SEMI-JOIN TABLE 1 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + " \\['000000000000001'\\] - \\[\\*\\]\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN \\(\\$\\d+.\\$\\d+\\)", + " DYNAMIC SERVER FILTER BY \"item_id\" IN \\(\\$\\d+.\\$\\d+\\)", "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " [-32768]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + @@ -266,7 +266,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { " CLIENT MERGE SORT\n" + " PARALLEL SEMI-JOIN TABLE 1(DELAYED EVALUATION) (SKIP MERGE)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT", "CLIENT PARALLEL 4-WAY FULL SCAN OVER " + JOIN_COITEM_TABLE_DISPLAY_NAME + "\n" + @@ -274,22 +274,22 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { " PARALLEL LEFT-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[-32768\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, item_id\\]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, \"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + " PARALLEL ANTI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + " PARALLEL LEFT-JOIN TABLE 1\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[-32768\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, item_id\\]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, \"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + " PARALLEL SEMI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN \\(\\$\\d+.\\$\\d+\\)\n" + + " DYNAMIC SERVER FILTER BY \"item_id\" IN \\(\\$\\d+.\\$\\d+\\)\n" + " AFTER-JOIN SERVER FILTER BY \\(\\$\\d+.\\$\\d+ IS NOT NULL OR \\$\\d+.\\$\\d+ IS NOT NULL\\)", "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_ITEM_TABLE_DISPLAY_NAME + " [-32768]\n" + @@ -297,7 +297,7 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { "CLIENT MERGE SORT\n" + " PARALLEL ANTI-JOIN TABLE 0 (SKIP MERGE)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT", "CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " \\[-32768\\]\n" + @@ -306,17 +306,17 @@ public class SubqueryIT extends BaseHBaseManagedTimeIT { " PARALLEL SEMI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[-32768\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[O.customer_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"O.customer_id\"\\]\n" + " CLIENT MERGE SORT\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + " PARALLEL LEFT-JOIN TABLE 1\\(DELAYED EVALUATION\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN \\(O.item_id\\)\n" + + " DYNAMIC SERVER FILTER BY \"item_id\" IN \\(\"O.item_id\"\\)\n" + " AFTER-JOIN SERVER FILTER BY \\(I.0:NAME = 'T2' OR O.QUANTITY > \\$\\d+.\\$\\d+\\)\n" + - " DYNAMIC SERVER FILTER BY customer_id IN \\(\\$\\d+.\\$\\d+\\)" + " DYNAMIC SERVER FILTER BY \"customer_id\" IN \\(\\$\\d+.\\$\\d+\\)" }}); return testCases; } http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java index 82b1c68..7457e02 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/SubqueryUsingSortMergeJoinIT.java @@ -110,18 +110,18 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT { "SORT-MERGE-JOIN (SEMI) TABLES\n" + " SORT-MERGE-JOIN (INNER) TABLES\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + - " SERVER SORTED BY [I.supplier_id]\n" + + " SERVER SORTED BY [\"I.supplier_id\"]\n" + " CLIENT MERGE SORT\n" + " AND\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + "\n" + - " SERVER SORTED BY [S.supplier_id]\n" + + " SERVER SORTED BY [\"S.supplier_id\"]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY [I.item_id]\n" + + " CLIENT SORTED BY [\"I.item_id\"]\n" + "AND (SKIP MERGE)\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + " ['000000000000001'] - [*]\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY [item_id]\n" + + " CLIENT SORTED BY [\"item_id\"]\n" + "CLIENT SORTED BY [I.NAME]", "SORT-MERGE-JOIN \\(LEFT\\) TABLES\n" + @@ -130,40 +130,40 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT { " CLIENT MERGE SORT\n" + " AND\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id, NAME\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\", NAME\\]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY \\[item_id, NAME\\]\n" + + " CLIENT SORTED BY \\[\"item_id\", NAME\\]\n" + " PARALLEL ANTI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id]\\\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"]\\\n" + " CLIENT MERGE SORT\n" + " CLIENT SORTED BY \\[.*.CO_ITEM_ID, .*.CO_ITEM_NAME\\]\n" + "AND\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id, NAME\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\", NAME\\]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY \\[item_id, NAME\\]\n" + + " CLIENT SORTED BY \\[\"item_id\", NAME\\]\n" + " SKIP-SCAN-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN \\(\\$\\d+.\\$\\d+\\)\n" + + " DYNAMIC SERVER FILTER BY \"item_id\" IN \\(\\$\\d+.\\$\\d+\\)\n" + "CLIENT FILTER BY \\(\\$\\d+.\\$\\d+ IS NOT NULL OR \\$\\d+.\\$\\d+ IS NOT NULL\\)", "SORT-MERGE-JOIN \\(SEMI\\) TABLES\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + "\n" + "AND \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ITEM_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[O.customer_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"O.customer_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY \\[O.customer_id\\]\n" + + " CLIENT SORTED BY \\[\"O.customer_id\"\\]\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + " PARALLEL LEFT-JOIN TABLE 1\\(DELAYED EVALUATION\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN \\(O.item_id\\)\n" + + " DYNAMIC SERVER FILTER BY \"item_id\" IN \\(\"O.item_id\"\\)\n" + " AFTER-JOIN SERVER FILTER BY \\(I.NAME = 'T2' OR O.QUANTITY > \\$\\d+.\\$\\d+\\)", }}); testCases.add(new String[][] { @@ -175,19 +175,19 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT { "SORT-MERGE-JOIN (SEMI) TABLES\n" + " SORT-MERGE-JOIN (INNER) TABLES\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + - " SERVER SORTED BY [I.0:supplier_id]\n" + + " SERVER SORTED BY [\"I.0:supplier_id\"]\n" + " CLIENT MERGE SORT\n" + " AND\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_supplier\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [S.:supplier_id]\n" + + " SERVER SORTED BY [\"S.:supplier_id\"]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY [I.:item_id]\n" + + " CLIENT SORTED BY [\"I.:item_id\"]\n" + "AND (SKIP MERGE)\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + " ['000000000000001'] - [*]\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY [item_id]\n" + + " CLIENT SORTED BY [\"item_id\"]\n" + "CLIENT SORTED BY [I.0:NAME]", "SORT-MERGE-JOIN \\(LEFT\\) TABLES\n" + @@ -197,42 +197,42 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT { " AND\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, item_id\\]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, \"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY \\[item_id, NAME\\]\n" + + " CLIENT SORTED BY \\[\"item_id\", NAME\\]\n" + " PARALLEL ANTI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + " CLIENT SORTED BY \\[.*.CO_ITEM_ID, .*.CO_ITEM_NAME\\]\n" + "AND\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, item_id\\]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, \"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY \\[item_id, NAME\\]\n" + + " CLIENT SORTED BY \\[\"item_id\", NAME\\]\n" + " PARALLEL SEMI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + "CLIENT FILTER BY \\(\\$\\d+.\\$\\d+ IS NOT NULL OR \\$\\d+.\\$\\d+ IS NOT NULL\\)", "SORT-MERGE-JOIN \\(SEMI\\) TABLES\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_customer\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY \\[Join.idx_customer.:customer_id\\]\n" + + " SERVER SORTED BY \\[\"Join.idx_customer.:customer_id\"\\]\n" + " CLIENT MERGE SORT\n" + "AND \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_SCHEMA + ".idx_item\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[O.customer_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"O.customer_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY \\[O.customer_id\\]\n" + + " CLIENT SORTED BY \\[\"O.customer_id\"\\]\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + " PARALLEL LEFT-JOIN TABLE 1\\(DELAYED EVALUATION\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + " AFTER-JOIN SERVER FILTER BY \\(I.0:NAME = 'T2' OR O.QUANTITY > \\$\\d+.\\$\\d+\\)", }}); @@ -245,19 +245,19 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT { "SORT-MERGE-JOIN (SEMI) TABLES\n" + " SORT-MERGE-JOIN (INNER) TABLES\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_ITEM_TABLE_DISPLAY_NAME + " [-32768]\n" + - " SERVER SORTED BY [I.0:supplier_id]\n" + + " SERVER SORTED BY [\"I.0:supplier_id\"]\n" + " CLIENT MERGE SORT\n" + " AND\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_SUPPLIER_TABLE_DISPLAY_NAME + " [-32768]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY [S.:supplier_id]\n" + + " SERVER SORTED BY [\"S.:supplier_id\"]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY [I.:item_id]\n" + + " CLIENT SORTED BY [\"I.:item_id\"]\n" + "AND (SKIP MERGE)\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + " ['000000000000001'] - [*]\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY [item_id]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY [\"item_id\"]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY [item_id]\n" + + " CLIENT SORTED BY [\"item_id\"]\n" + "CLIENT SORTED BY [I.0:NAME]", "SORT-MERGE-JOIN \\(LEFT\\) TABLES\n" + @@ -267,45 +267,45 @@ public class SubqueryUsingSortMergeJoinIT extends BaseHBaseManagedTimeIT { " AND\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[-32768\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, item_id\\]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, \"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY \\[item_id, NAME\\]\n" + + " CLIENT SORTED BY \\[\"item_id\", NAME\\]\n" + " PARALLEL ANTI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + " CLIENT SORTED BY \\[.*.CO_ITEM_ID, .*.CO_ITEM_NAME\\]\n" + "AND\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[-32768\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, item_id\\]\n" + + " SERVER AGGREGATE INTO ORDERED DISTINCT ROWS BY \\[NAME, \"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY \\[item_id, NAME\\]\n" + + " CLIENT SORTED BY \\[\"item_id\", NAME\\]\n" + " PARALLEL SEMI-JOIN TABLE 0 \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN \\(\\$\\d+.\\$\\d+\\)\n" + + " DYNAMIC SERVER FILTER BY \"item_id\" IN \\(\\$\\d+.\\$\\d+\\)\n" + "CLIENT FILTER BY \\(\\$\\d+.\\$\\d+ IS NOT NULL OR \\$\\d+.\\$\\d+ IS NOT NULL\\)", "SORT-MERGE-JOIN \\(SEMI\\) TABLES\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_CUSTOMER_TABLE_DISPLAY_NAME + " \\[-32768\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER SORTED BY \\[Join.idx_customer.:customer_id\\]\n" + + " SERVER SORTED BY \\[\"Join.idx_customer.:customer_id\"\\]\n" + " CLIENT MERGE SORT\n" + "AND \\(SKIP MERGE\\)\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + MetaDataUtil.LOCAL_INDEX_TABLE_PREFIX + JOIN_ITEM_TABLE_DISPLAY_NAME + " \\[-32768\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[O.customer_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"O.customer_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " CLIENT SORTED BY \\[O.customer_id\\]\n" + + " CLIENT SORTED BY \\[\"O.customer_id\"\\]\n" + " PARALLEL INNER-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + " PARALLEL LEFT-JOIN TABLE 1\\(DELAYED EVALUATION\\)\n" + " CLIENT PARALLEL 1-WAY FULL SCAN OVER " + JOIN_ORDER_TABLE_DISPLAY_NAME + "\n" + - " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[item_id\\]\n" + + " SERVER AGGREGATE INTO DISTINCT ROWS BY \\[\"item_id\"\\]\n" + " CLIENT MERGE SORT\n" + - " DYNAMIC SERVER FILTER BY item_id IN \\(O.item_id\\)\n" + + " DYNAMIC SERVER FILTER BY \"item_id\" IN \\(\"O.item_id\"\\)\n" + " AFTER-JOIN SERVER FILTER BY \\(I.0:NAME = 'T2' OR O.QUANTITY > \\$\\d+.\\$\\d+\\)", }}); return testCases; http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java index 0b06e03..aa26f9b 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/ViewIT.java @@ -245,6 +245,33 @@ public class ViewIT extends BaseViewIT { } @Test + public void testReadOnlyViewWithCaseSensitiveColumnNames() throws Exception { + Connection conn = DriverManager.getConnection(getUrl()); + String ddl = "CREATE TABLE t (\"k\" INTEGER NOT NULL PRIMARY KEY, \"v1\" INTEGER, \"a\".v2 VARCHAR)"; + conn.createStatement().execute(ddl); + ddl = "CREATE VIEW v (v VARCHAR) AS SELECT * FROM t WHERE \"k\" > 5 and \"v1\" > 1"; + conn.createStatement().execute(ddl); + try { + conn.createStatement().execute("UPSERT INTO v VALUES(1)"); + fail(); + } catch (ReadOnlyTableException e) { + + } + for (int i = 0; i < 10; i++) { + conn.createStatement().execute("UPSERT INTO t VALUES(" + i + ", " + (i+10) + ",'A')"); + } + conn.commit(); + + int count = 0; + ResultSet rs = conn.createStatement().executeQuery("SELECT \"k\", \"v1\",\"a\".v2 FROM v"); + while (rs.next()) { + count++; + assertEquals(count + 5, rs.getInt(1)); + } + assertEquals(4, count); + } + + @Test public void testViewAndTableInDifferentSchemas() throws Exception { Connection conn = DriverManager.getConnection(getUrl()); String ddl = "CREATE TABLE s1.t (k INTEGER NOT NULL PRIMARY KEY, v1 DATE)"; http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java index f526c6a..e54e6a2 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/GlobalIndexOptimizationIT.java @@ -113,7 +113,7 @@ public class GlobalIndexOptimizationIT extends BaseHBaseManagedTimeIT { " SKIP-SCAN-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + TestUtil.DEFAULT_INDEX_TABLE_NAME + " \\['a'\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " DYNAMIC SERVER FILTER BY \\(T_ID, K1, K2\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; + " DYNAMIC SERVER FILTER BY \\(\"T_ID\", \"K1\", \"K2\"\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; String actual = QueryUtil.getExplainPlan(rs); assertTrue("Expected:\n" + expected + "\nbut got\n" + actual, Pattern.matches(expected, actual)); @@ -138,7 +138,7 @@ public class GlobalIndexOptimizationIT extends BaseHBaseManagedTimeIT { " SKIP-SCAN-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + TestUtil.DEFAULT_INDEX_TABLE_NAME + " \\['a'\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " DYNAMIC SERVER FILTER BY \\(T_ID, K1, K2\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; + " DYNAMIC SERVER FILTER BY \\(\"T_ID\", \"K1\", \"K2\"\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; actual = QueryUtil.getExplainPlan(rs); assertTrue("Expected:\n" + expected + "\nbut got\n" + actual, Pattern.matches(expected, actual)); @@ -168,7 +168,7 @@ public class GlobalIndexOptimizationIT extends BaseHBaseManagedTimeIT { " SKIP-SCAN-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + TestUtil.DEFAULT_INDEX_TABLE_NAME + " \\[\\*\\] - \\['z'\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " DYNAMIC SERVER FILTER BY \\(T_ID, K1, K2\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; + " DYNAMIC SERVER FILTER BY \\(\"T_ID\", \"K1\", \"K2\"\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; actual = QueryUtil.getExplainPlan(rs); assertTrue("Expected:\n" + expected + "\nbut got\n" + actual, Pattern.matches(expected, actual)); @@ -203,7 +203,7 @@ public class GlobalIndexOptimizationIT extends BaseHBaseManagedTimeIT { " SKIP-SCAN-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER " + TestUtil.DEFAULT_INDEX_TABLE_NAME + " \\[\\*\\] - \\['z'\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " DYNAMIC SERVER FILTER BY \\(T_ID, K1, K2\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; + " DYNAMIC SERVER FILTER BY \\(\"T_ID\", \"K1\", \"K2\"\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; actual = QueryUtil.getExplainPlan(rs); assertTrue("Expected:\n" + expected + "\nbut got\n" + actual, Pattern.matches(expected, actual)); @@ -237,7 +237,7 @@ public class GlobalIndexOptimizationIT extends BaseHBaseManagedTimeIT { " SKIP-SCAN-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER I \\[\\*\\] - \\['z'\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " DYNAMIC SERVER FILTER BY \\(T_ID, K1, K2\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; + " DYNAMIC SERVER FILTER BY \\(\"T_ID\", \"K1\", \"K2\"\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; actual = QueryUtil.getExplainPlan(rs); assertTrue("Expected:\n" + expected + "\nbut got\n" + actual, Pattern.matches(expected, actual)); @@ -275,8 +275,8 @@ public class GlobalIndexOptimizationIT extends BaseHBaseManagedTimeIT { " SKIP-SCAN-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY RANGE SCAN OVER I \\['tid1','a'\\]\n" + " SERVER FILTER BY FIRST KEY ONLY\n" + - " DYNAMIC SERVER FILTER BY \\(K1, K2\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; - assertTrue("Expected:\n" + expected + "\nbut got\n" + actual, Pattern.matches(expected, actual)); + " DYNAMIC SERVER FILTER BY \\(\"K1\", \"K2\"\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; + assertTrue("Expected:\n" + expected + "\ndid not match\n" + actual, Pattern.matches(expected, actual)); rs = conn1.createStatement().executeQuery(query); assertTrue(rs.next()); @@ -323,8 +323,8 @@ public class GlobalIndexOptimizationIT extends BaseHBaseManagedTimeIT { " SKIP-SCAN-JOIN TABLE 0\n" + " CLIENT PARALLEL 1-WAY SKIP SCAN ON 2 KEYS OVER _IDX_T \\[-32768,1\\] - \\[-32768,2\\]\n" + " SERVER FILTER BY FIRST KEY ONLY AND K2 IN \\(3,4\\)\n" + - " DYNAMIC SERVER FILTER BY \\(T_ID, K1, K2\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; - assertTrue("Expected:\n" + expected + "\nbut got\n" + actual, Pattern.matches(expected,actual)); + " DYNAMIC SERVER FILTER BY \\(\"T_ID\", \"K1\", \"K2\"\\) IN \\(\\(\\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+, \\$\\d+.\\$\\d+\\)\\)"; + assertTrue("Expected:\n" + expected + "\ndid not match\n" + actual, Pattern.matches(expected,actual)); rs = conn1.createStatement().executeQuery(query); assertTrue(rs.next()); http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/main/java/org/apache/phoenix/compile/ExpressionCompiler.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/compile/ExpressionCompiler.java b/phoenix-core/src/main/java/org/apache/phoenix/compile/ExpressionCompiler.java index 32216db..95e145c 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/compile/ExpressionCompiler.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/compile/ExpressionCompiler.java @@ -387,7 +387,7 @@ public class ExpressionCompiler extends UnsupportedAllParseNodeVisitor<Expressio if (tableRef.equals(context.getCurrentTable()) && !SchemaUtil.isPKColumn(column)) { // project only kv columns context.getScan().addColumn(column.getFamilyName().getBytes(), column.getName().getBytes()); } - Expression expression = ref.newColumnExpression(); + Expression expression = ref.newColumnExpression(node.isTableNameCaseSensitive(), node.isCaseSensitive()); Expression wrappedExpression = wrapGroupByExpression(expression); // If we're in an aggregate expression // and we're not in the context of an aggregate function http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnParseNode.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnParseNode.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnParseNode.java index 95ef6a4..19dbc68 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnParseNode.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/ColumnParseNode.java @@ -85,4 +85,8 @@ public class ColumnParseNode extends NamedParseNode { ColumnParseNode other = (ColumnParseNode)obj; return fullName.equals(other.fullName); } + + public boolean isTableNameCaseSensitive() { + return tableName == null ? false : tableName.isTableNameCaseSensitive(); + } } http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/main/java/org/apache/phoenix/parse/TableName.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/parse/TableName.java b/phoenix-core/src/main/java/org/apache/phoenix/parse/TableName.java index 9f43371..9717067 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/parse/TableName.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/parse/TableName.java @@ -23,20 +23,30 @@ import org.apache.phoenix.util.SchemaUtil; public class TableName { private final String tableName; private final String schemaName; + private final boolean isTableNameCaseSensitive; + private final boolean isSchemaNameCaseSensitive; public static TableName createNormalized(String schemaName, String tableName) { - schemaName = schemaName == null ? null : SchemaUtil.normalizeIdentifier(schemaName); - tableName = SchemaUtil.normalizeIdentifier(tableName); - return new TableName(schemaName, tableName); + return new TableName(schemaName, tableName, true); } public static TableName create(String schemaName, String tableName) { - return new TableName(schemaName,tableName); + return new TableName(schemaName, tableName, false); } - private TableName(String schemaName, String tableName) { - this.schemaName = schemaName; - this.tableName = tableName; + private TableName(String schemaName, String tableName, boolean normalize) { + this.schemaName = normalize ? SchemaUtil.normalizeIdentifier(schemaName) : schemaName; + this.isSchemaNameCaseSensitive = normalize ? SchemaUtil.isCaseSensitive(schemaName) : false; + this.tableName = normalize ? SchemaUtil.normalizeIdentifier(tableName) : tableName; + this.isTableNameCaseSensitive = normalize ? SchemaUtil.isCaseSensitive(tableName) : false; + } + + public boolean isTableNameCaseSensitive() { + return isTableNameCaseSensitive; + } + + public boolean isSchemaNameCaseSensitive() { + return isSchemaNameCaseSensitive; } public String getTableName() { http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/main/java/org/apache/phoenix/schema/ColumnRef.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/ColumnRef.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/ColumnRef.java index f271ac5..c6dd1f4 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/ColumnRef.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/ColumnRef.java @@ -89,11 +89,15 @@ public class ColumnRef { if (!tableRef.equals(other.tableRef)) return false; return true; } - + public ColumnExpression newColumnExpression() { + return newColumnExpression(false, false); + } + + public ColumnExpression newColumnExpression(boolean schemaNameCaseSensitive, boolean colNameCaseSensitive) { PTable table = tableRef.getTable(); PColumn column = this.getColumn(); - String displayName = tableRef.getColumnDisplayName(this); + String displayName = tableRef.getColumnDisplayName(this, schemaNameCaseSensitive, colNameCaseSensitive); if (SchemaUtil.isPKColumn(column)) { return new RowKeyColumnExpression( column, http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java index 362d59f..62ef431 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/LocalIndexDataColumnRef.java @@ -61,7 +61,7 @@ public class LocalIndexDataColumnRef extends ColumnRef { } @Override - public ColumnExpression newColumnExpression() { + public ColumnExpression newColumnExpression(boolean schemaNameCaseSensitive, boolean colNameCaseSensitive) { PTable table = this.getTable(); PColumn column = this.getColumn(); // TODO: util for this or store in member variable http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/main/java/org/apache/phoenix/schema/TableRef.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/schema/TableRef.java b/phoenix-core/src/main/java/org/apache/phoenix/schema/TableRef.java index a88ba4d..b64912b 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/schema/TableRef.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/schema/TableRef.java @@ -18,7 +18,6 @@ package org.apache.phoenix.schema; import org.apache.hadoop.hbase.HConstants; -import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.query.QueryConstants; import org.apache.phoenix.util.IndexUtil; import org.apache.phoenix.util.SchemaUtil; @@ -69,31 +68,29 @@ public class TableRef { return alias; } - public String getColumnDisplayName(ColumnRef ref) { + public String getColumnDisplayName(ColumnRef ref, boolean cfCaseSensitive, boolean cqCaseSensitive) { + String cf = null; + String cq = null; PColumn column = ref.getColumn(); + String name = column.getName().getString(); + boolean isIndex = table.getType() == PTableType.INDEX; if (table.getType() == PTableType.JOIN || table.getType() == PTableType.SUBQUERY) { - return column.getName().getString(); + cq = column.getName().getString(); } - boolean isIndex = table.getType() == PTableType.INDEX; - if (SchemaUtil.isPKColumn(column)) { - String name = column.getName().getString(); - if (isIndex) { - return IndexUtil.getDataColumnName(name); - } - return name; + else if (SchemaUtil.isPKColumn(column)) { + cq = isIndex ? IndexUtil.getDataColumnName(name) : name; } - - if (isIndex) { - // Translate to the data table column name - String indexColumnName = column.getName().getString(); - String dataFamilyName = IndexUtil.getDataColumnFamilyName(indexColumnName); - String dataColumnName = IndexUtil.getDataColumnName(indexColumnName); + else { String defaultFamilyName = table.getDefaultFamilyName() == null ? QueryConstants.DEFAULT_COLUMN_FAMILY : table.getDefaultFamilyName().getString(); - return SchemaUtil.getColumnDisplayName(defaultFamilyName.equals(dataFamilyName) ? null : dataFamilyName, dataColumnName); + // Translate to the data table column name + String dataFamilyName = isIndex ? IndexUtil.getDataColumnFamilyName(name) : column.getFamilyName().getString() ; + cf = defaultFamilyName.equals(dataFamilyName) ? null : dataFamilyName; + cq = isIndex ? IndexUtil.getDataColumnName(name) : name; } - byte[] defaultFamily = table.getDefaultFamilyName() == null ? QueryConstants.DEFAULT_COLUMN_FAMILY_BYTES : table.getDefaultFamilyName().getBytes(); - String displayName = SchemaUtil.getColumnDisplayName(Bytes.compareTo(defaultFamily, column.getFamilyName().getBytes()) == 0 ? null : column.getFamilyName().getBytes(), column.getName().getBytes()); - return displayName; + + cf = (cf!=null && cfCaseSensitive) ? "\"" + cf + "\"" : cf; + cq = cqCaseSensitive ? "\"" + cq + "\"" : cq; + return SchemaUtil.getColumnDisplayName(cf, cq); } @Override http://git-wip-us.apache.org/repos/asf/phoenix/blob/03a5d7ef/phoenix-core/src/main/java/org/apache/phoenix/util/IndexUtil.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/IndexUtil.java b/phoenix-core/src/main/java/org/apache/phoenix/util/IndexUtil.java index 8245df5..39e13bf 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/util/IndexUtil.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/util/IndexUtil.java @@ -28,7 +28,6 @@ import java.util.List; import java.util.Map; import org.apache.hadoop.hbase.Cell; -import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.KeyValue; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.client.Get; @@ -442,7 +441,7 @@ public class IndexUtil { PhoenixStatement statement = new PhoenixStatement(conn); TableRef indexTableRef = new TableRef(index) { @Override - public String getColumnDisplayName(ColumnRef ref) { + public String getColumnDisplayName(ColumnRef ref, boolean cfCaseSensitive, boolean cqCaseSensitive) { return '"' + ref.getColumn().getName().getString() + '"'; } };