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.
    *

Reply via email to