You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by ra...@apache.org on 2015/10/16 13:04:03 UTC

lens git commit: LENS-821 : Fix replacing table alias for filters with comma in IN filters

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 <su...@inmobi.com>
Authored: Fri Oct 16 12:31:13 2015 +0530
Committer: raju <ra...@apache.org>
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.
    *