Repository: lens Updated Branches: refs/heads/master 2da114407 -> ee2bda93f
LENS-977: 'AND' in having clause is not resolved properly with multi fact query Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/ee2bda93 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/ee2bda93 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/ee2bda93 Branch: refs/heads/master Commit: ee2bda93f1587148a8a5e86ba88d04d1f3549d4f Parents: 2da1144 Author: Amareshwari Sriramadasu <[email protected]> Authored: Sun Feb 28 20:01:31 2016 +0530 Committer: Rajat Khandelwal <[email protected]> Committed: Sun Feb 28 20:01:31 2016 +0530 ---------------------------------------------------------------------- .../java/org/apache/lens/cube/parse/CandidateFact.java | 4 ++-- .../org/apache/lens/cube/parse/TestBaseCubeQueries.java | 11 +++++++++++ 2 files changed, 13 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/ee2bda93/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java index 1b0de34..82ca4f4 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateFact.java @@ -117,9 +117,9 @@ public class CandidateFact implements CandidateTable, QueryAST { return; } ASTNode existingHavingAST = (ASTNode) getHavingAST().getChild(0); - ASTNode newHavingAST = new ASTNode(new CommonToken(KW_AND, "KW_AND")); - newHavingAST.addChild(ast); + ASTNode newHavingAST = new ASTNode(new CommonToken(KW_AND, "AND")); newHavingAST.addChild(existingHavingAST); + newHavingAST.addChild(ast); getHavingAST().setChild(0, newHavingAST); } http://git-wip-us.apache.org/repos/asf/lens/blob/ee2bda93/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 0415434..fec5d51 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 @@ -763,6 +763,17 @@ public class TestBaseCubeQueries extends TestQueryRewrite { assertTrue(hqlQuery.contains(joinSubString) && hqlQuery.endsWith(endSubString), hqlQuery); hqlQuery = rewrite("select dim1, dim11 from basecube where " + TWO_DAYS_RANGE + + "having msr12 > 2 and roundedmsr2 > 0 and msr2 > 100", conf); + expected2 = getExpectedQuery(cubeName, + "select basecube.dim1 as dim1, basecube.dim11 as dim11 FROM ", null, + " group by basecube.dim1, basecube.dim11 HAVING round(sum(basecube.msr2)/1000) > 0 and sum(basecube.msr2) > 100", + getWhereForDailyAndHourly2days(cubeName, "C1_testFact1_BASE")); + compareContains(expected1, hqlQuery); + compareContains(expected2, hqlQuery); + assertTrue(hqlQuery.toLowerCase().startsWith(begin), hqlQuery); + assertTrue(hqlQuery.contains(joinSubString) && hqlQuery.endsWith(endSubString), hqlQuery); + + hqlQuery = rewrite("select dim1, dim11 from basecube where " + TWO_DAYS_RANGE + "having flooredmsr12+roundedmsr2 <= 1000", conf); expected1 = getExpectedQuery(cubeName, "select basecube.dim1 as dim1, basecube.dim11 as dim11, "
