Repository: lens Updated Branches: refs/heads/master 5a40ee60c -> 8923ce7ff
LENS-821 : Fix replacing table alias for filters with comma in IN filters Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/8923ce7f Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/8923ce7f Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/8923ce7f Branch: refs/heads/master Commit: 8923ce7ffc2432b90fe45f54c1b11636ac432261 Parents: 5a40ee6 Author: Sushil Mohanty <[email protected]> Authored: Fri Oct 16 12:31:13 2015 +0530 Committer: raju <[email protected]> Committed: Fri Oct 16 12:31:13 2015 +0530 ---------------------------------------------------------------------- .../lens/driver/jdbc/ColumnarSQLRewriter.java | 2 +- .../driver/jdbc/TestColumnarSQLRewriter.java | 40 ++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/8923ce7f/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java ---------------------------------------------------------------------- diff --git a/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java b/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java index 8a98c57..db278ee 100644 --- a/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java +++ b/lens-driver-jdbc/src/main/java/org/apache/lens/driver/jdbc/ColumnarSQLRewriter.java @@ -692,7 +692,7 @@ public class ColumnarSQLRewriter implements QueryRewriter { ref = keyString.substring(0, keyString.indexOf("__")).replaceAll("[(,)]", ""); } if (type.equals("alias")) { - ref = keyString.substring(0, keyString.lastIndexOf(".")).replaceAll("[(,)]", ""); + ref = keyString.substring(0, keyString.indexOf(".")).replaceAll("[(,)]", ""); } return ref; } http://git-wip-us.apache.org/repos/asf/lens/blob/8923ce7f/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java ---------------------------------------------------------------------- diff --git a/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java b/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java index 6b5fb6a..ff6531b 100644 --- a/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java +++ b/lens-driver-jdbc/src/test/java/org/apache/lens/driver/jdbc/TestColumnarSQLRewriter.java @@ -828,6 +828,46 @@ public class TestColumnarSQLRewriter { compareQueries(expected, actual); } + @Test + public void testFiltersWithComma() throws LensException { + + String query = "select fact.time_key,time_dim.day_of_week,time_dim.day,item_dim.item_key, " + + "case when sum(fact.dollars_sold) = 0 then 0.0 else sum(fact.dollars_sold) end dollars_sold, " + + "sum(fact.units_sold),avg(fact.dollars_sold),min(fact.dollars_sold),max(fact.dollars_sold)" + + "from sales_fact fact " + "inner join time_dim time_dim on fact.time_key = time_dim.time_key " + + "inner join location_dim location_dim on fact.location_key = location_dim.location_key " + + "inner join item_dim item_dim on fact.item_key = item_dim.item_key " + + "and location_dim.location_name in ('test,123','test,456') " + + "where time_dim.time_key between '2013-01-01' and '2013-01-31' " + "and item_dim.item_name = 'item_1' " + + "group by fact.time_key,time_dim.day_of_week,time_dim.day,item_dim.item_key " + + "order by dollars_sold desc "; + + SessionState.start(hconf); + + String actual = qtest.rewrite(query, conf, hconf); + String expected = "select ( sales_fact___fact . time_key ), ( time_dim___time_dim . day_of_week ), " + + "( time_dim___time_dim . day ), ( item_dim___item_dim . item_key ), case when " + + "(sum(( sales_fact___fact . dollars_sold )) = 0 ) then 0.0 else " + + "sum(( sales_fact___fact . dollars_sold )) end dollars_sold , " + + "sum(( sales_fact___fact . units_sold )), avg(( sales_fact___fact . dollars_sold )), " + + "min(( sales_fact___fact . dollars_sold )), max(( sales_fact___fact . dollars_sold )) " + + "from sales_fact sales_fact___fact inner join (select time_key,day_of_week,day from time_dim) " + + "time_dim___time_dim on (( sales_fact___fact . time_key ) = ( time_dim___time_dim . time_key )) " + + "inner join (select location_key,location_name from location_dim) location_dim___location_dim " + + "on (( sales_fact___fact . location_key ) = ( location_dim___location_dim . location_key )) " + + "inner join (select item_key,item_name from item_dim) item_dim___item_dim on " + + "((( sales_fact___fact . item_key ) = ( item_dim___item_dim . item_key )) " + + "and ( location_dim___location_dim . location_name ) in ( 'test,123' , 'test,456' )) " + + "where (( time_dim___time_dim . time_key ) between '2013-01-01' and '2013-01-31' " + + "and (( item_dim___item_dim . item_name ) = 'item_1' )) group by " + + "( sales_fact___fact . time_key ), ( time_dim___time_dim . day_of_week )," + + " ( time_dim___time_dim . day ), ( item_dim___item_dim . item_key ) " + + "order by dollars_sold desc"; + + compareQueries(expected, actual); + } + + /** * Test replace db name. *
