Repository: lens
Updated Branches:
  refs/heads/master 1f12ce55a -> f3e6bc542


LENS-1028 : Convert dimension filter to fact filters for perfomace improvement 
on outer join queries


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/f3e6bc54
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/f3e6bc54
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/f3e6bc54

Branch: refs/heads/master
Commit: f3e6bc54263c3d5612449bb9b957b110524a9e50
Parents: 1f12ce5
Author: Sushil Mohanty <[email protected]>
Authored: Wed May 18 10:56:14 2016 +0530
Committer: Amareshwari Sriramadasu <[email protected]>
Committed: Wed May 18 10:56:14 2016 +0530

----------------------------------------------------------------------
 .../lens/cube/parse/CubeQueryContext.java       |  4 ++++
 .../lens/cube/parse/TestCubeRewriter.java       | 23 +++++++++++++++-----
 2 files changed, 21 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/f3e6bc54/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java
----------------------------------------------------------------------
diff --git 
a/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java 
b/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java
index 0fc8549..cf32746 100644
--- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java
+++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CubeQueryContext.java
@@ -1342,6 +1342,10 @@ public class CubeQueryContext implements 
TrackQueriedColumns, QueryAST {
           allFilters.add(getFilter(table, cubeAlias, node, joinClause, i, 
dimToQuery));
         }
       }
+    } else if (node.getParent() == null
+        && node.getToken().getType() != HiveParser.KW_AND) {
+      // if node is the only child
+      allFilters.add(HQLParser.getString((ASTNode) node));
     }
     for (int i = 0; i < node.getChildCount(); i++) {
       ASTNode child = (ASTNode) node.getChild(i);

http://git-wip-us.apache.org/repos/asf/lens/blob/f3e6bc54/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java
----------------------------------------------------------------------
diff --git 
a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java 
b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java
index 87799eb..fff6f24 100644
--- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java
+++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestCubeRewriter.java
@@ -515,7 +515,7 @@ public class TestCubeRewriter extends TestQueryRewrite {
             + TWO_DAYS_RANGE, conf);
     String filterSubquery = "testcube.countryid in ( select id from 
TestQueryRewrite.c3_countrytable_partitioned "
         + "cubecountry where ((cubecountry.region) = 'asia') and 
(cubecountry.dt = 'latest') )";
-    //assertTrue(hql.contains(filterSubquery));
+    assertTrue(hql.contains(filterSubquery));
 
     // filter with or
     hql = rewrite(
@@ -524,7 +524,7 @@ public class TestCubeRewriter extends TestQueryRewrite {
     filterSubquery = "testcube.countryid in ( select id from 
TestQueryRewrite.c3_countrytable_partitioned "
         + "cubecountry where (((cubecountry.region) = 'asia') or 
((cubecountry.region) = 'europe')) "
         + "and (cubecountry.dt = 'latest') )";
-    //assertTrue(hql.contains(filterSubquery));
+    assertTrue(hql.contains(filterSubquery));
 
     //filter with in
     hql = rewrite(
@@ -532,7 +532,7 @@ public class TestCubeRewriter extends TestQueryRewrite {
             + "and " + TWO_DAYS_RANGE , conf);
     filterSubquery = "testcube.countryid in ( select id from 
TestQueryRewrite.c3_countrytable_partitioned "
         + "cubecountry where (cubecountry.region) in ('asia' , 'europe') and 
(cubecountry.dt = 'latest') )";
-    //assertTrue(hql.contains(filterSubquery));
+    assertTrue(hql.contains(filterSubquery));
 
     //filter with not in
     hql = rewrite(
@@ -540,7 +540,7 @@ public class TestCubeRewriter extends TestQueryRewrite {
             + "and " + TWO_DAYS_RANGE , conf);
     filterSubquery = "testcube.countryid in ( select id from 
TestQueryRewrite.c3_countrytable_partitioned "
         + "cubecountry where (cubecountry.region) not  in ('asia' , 'europe') 
and (cubecountry.dt = 'latest') )";
-    //assertTrue(hql.contains(filterSubquery));
+    assertTrue(hql.contains(filterSubquery));
 
     //filter with !=
     hql = rewrite(
@@ -548,7 +548,7 @@ public class TestCubeRewriter extends TestQueryRewrite {
             + "and " + TWO_DAYS_RANGE , conf);
     filterSubquery = "testcube.countryid in ( select id from 
TestQueryRewrite.c3_countrytable_partitioned "
         + "cubecountry where ((cubecountry.region) != 'asia') and 
(cubecountry.dt = 'latest') )";
-    //assertTrue(hql.contains(filterSubquery));
+    assertTrue(hql.contains(filterSubquery));
 
     //filter with cube alias
     hql = rewrite(
@@ -556,7 +556,18 @@ public class TestCubeRewriter extends TestQueryRewrite {
             + "and zipcode = 'x' and " + TWO_DAYS_RANGE , conf);
     filterSubquery = "t.countryid in ( select id from 
TestQueryRewrite.c3_countrytable_partitioned "
         + "cubecountry where ((cubecountry.region) = 'asia') and 
(cubecountry.dt = 'latest') )";
-    //assertTrue(hql.contains(filterSubquery));
+    assertTrue(hql.contains(filterSubquery));
+
+    //filter with AbridgedTimeRangeWriter
+    conf.setClass(CubeQueryConfUtil.TIME_RANGE_WRITER_CLASS, 
AbridgedTimeRangeWriter.class, TimeRangeWriter.class);
+    hql = rewrite(
+        "select cubecountry.name, msr2 from" + " testCube" + " where 
cubecountry.region = 'asia' and "
+            + TWO_DAYS_RANGE, conf);
+    filterSubquery = "testcube.countryid in ( select id from 
TestQueryRewrite.c3_countrytable_partitioned "
+        + "cubecountry where ((cubecountry.region) = 'asia') and 
(cubecountry.dt = 'latest') )";
+    String timeKeyIn = "(testcube.dt) in";
+    assertTrue(hql.contains(timeKeyIn));
+    assertTrue(hql.contains(filterSubquery));
   }
 
   @Test

Reply via email to