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 =