You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by am...@apache.org on 2016/09/06 03:45:53 UTC

lens git commit: LENS-1306 : Fix final rewritten when more than two facts are candidates for a query

Repository: lens
Updated Branches:
  refs/heads/master 0013ec206 -> 5db78ce18


LENS-1306 : Fix final rewritten when more than two facts are candidates for a query


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

Branch: refs/heads/master
Commit: 5db78ce1826048d7099df50b4c92ff455a1472c0
Parents: 0013ec2
Author: Lavkesh Lahngir <la...@linux.com>
Authored: Tue Sep 6 09:15:43 2016 +0530
Committer: Amareshwari Sriramadasu <am...@apache.org>
Committed: Tue Sep 6 09:15:43 2016 +0530

----------------------------------------------------------------------
 .../lens/cube/parse/MultiFactHQLContext.java    |  2 +-
 .../lens/cube/parse/TestBaseCubeQueries.java    | 35 ++++++++++++++++++++
 2 files changed, 36 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/5db78ce1/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java
----------------------------------------------------------------------
diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java
index e90da4c..7fbcd7e 100644
--- a/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java
+++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/MultiFactHQLContext.java
@@ -152,7 +152,7 @@ class MultiFactHQLContext extends SimpleHQLContext {
           fromBuilder.append(" AND ");
         }
       }
-      if (i != facts.size()) {
+      if (i != facts.size() && firstFact.getDimFieldIndices().size() > 0) {
         fromBuilder.append(" AND ");
       }
     }

http://git-wip-us.apache.org/repos/asf/lens/blob/5db78ce1/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java
----------------------------------------------------------------------
diff --git a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java
index 84e18dc..6fb027a 100644
--- a/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java
+++ b/lens-cube/src/test/java/org/apache/lens/cube/parse/TestBaseCubeQueries.java
@@ -201,6 +201,41 @@ public class TestBaseCubeQueries extends TestQueryRewrite {
   }
 
   @Test
+  public void testMoreThanTwoFactQueryWithNoDimensionsSelected() throws Exception {
+    CubeQueryContext ctx = rewriteCtx("select roundedmsr2, msr14, msr12 from basecube" + " where " + TWO_DAYS_RANGE,
+      conf);
+    Set<String> candidateFacts = new HashSet<String>();
+    for (CandidateFact cfact : ctx.getCandidateFacts()) {
+      candidateFacts.add(cfact.getName().toLowerCase());
+    }
+    Assert.assertEquals(candidateFacts.size(), 3);
+    Assert.assertTrue(candidateFacts.contains("testfact1_base"));
+    Assert.assertTrue(candidateFacts.contains("testfact2_base"));
+    Assert.assertTrue(candidateFacts.contains("testfact3_base"));
+    String hqlQuery = ctx.toHQL();
+    String expected1 = getExpectedQuery(cubeName, "select sum(basecube.msr12) as `msr12` FROM ", null, null,
+      getWhereForDailyAndHourly2days(cubeName, "C1_testFact2_BASE"));
+    String expected2 = getExpectedQuery(cubeName, "select round(sum(basecube.msr2)/1000) as `roundedmsr2` FROM ", null,
+      null, getWhereForDailyAndHourly2days(cubeName, "C1_testFact1_BASE"));
+    String expected3 = getExpectedQuery(cubeName, "select count((basecube.msr14)) as `msr14` FROM ", null, null,
+      getWhereForDailyAndHourly2days(cubeName, "C1_testFact3_BASE"));
+    compareContains(expected1, hqlQuery);
+    compareContains(expected2, hqlQuery);
+    compareContains(expected3, hqlQuery);
+    String lower = hqlQuery.toLowerCase();
+    assertTrue(lower.startsWith("select mq1.roundedmsr2 roundedmsr2, mq3.msr14 msr14, mq2.msr12 msr12 from ") || lower
+      .startsWith("select mq3.roundedmsr2 roundedmsr2, mq1.msr14 msr14, mq2.msr12 msr12 from ") || lower
+      .startsWith("select mq2.roundedmsr2 roundedmsr2, mq3.msr14 msr14, mq1.msr12 msr12 from ") || lower
+      .startsWith("select mq3.roundedmsr2 roundedmsr2, mq2.msr14 msr14, mq1.msr12 msr12 from ") || lower
+      .startsWith("select mq1.roundedmsr2 roundedmsr2, mq2.msr14 msr14, mq3.msr12 msr12 from ") || lower
+      .startsWith("select mq2.roundedmsr2 roundedmsr2, mq1.msr14 msr14, mq3.msr12 msr12 from "), hqlQuery);
+    assertTrue(lower.contains("mq1 full outer join") && lower.endsWith("mq3"));
+    assertFalse(lower.contains("mq3 on"), hqlQuery);
+    assertFalse(lower.contains("mq2 on"), hqlQuery);
+    assertFalse(lower.contains("<=>"), hqlQuery);
+  }
+
+  @Test
   public void testMultiFactQueryWithSingleCommonDimension() throws Exception {
     String hqlQuery = rewrite("select dim1, roundedmsr2, msr12 from basecube" + " where " + TWO_DAYS_RANGE, conf);
     String expected1 =