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