[1/5] lens git commit: LENS-1427: ExpressionResolver is removing expressions if they are not answerable by *any* candidates
Repository: lens Updated Branches: refs/heads/current-release-line be75e1d55 -> d3875b4e9 LENS-1427: ExpressionResolver is removing expressions if they are not answerable by *any* candidates Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/bd4b5529 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/bd4b5529 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/bd4b5529 Branch: refs/heads/current-release-line Commit: bd4b5529ac15b51a6ef91f431b2037e63078ea34 Parents: be75e1d Author: Rajat KhandelwalAuthored: Tue Jun 6 15:37:41 2017 +0530 Committer: rajub Committed: Sat Jun 10 13:28:54 2017 +0800 -- .../lens/cube/parse/ExpressionResolver.java | 37 +--- .../test/resources/schema/cubes/base/b1cube.xml | 2 +- .../test/resources/schema/cubes/base/b2cube.xml | 2 +- .../resources/schema/cubes/base/testcube.xml| 2 +- 4 files changed, 19 insertions(+), 24 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/bd4b5529/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java index a2f4bb6..ea6d5c7 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java @@ -550,15 +550,14 @@ class ExpressionResolver implements ContextRewriter { } // Remove expressions for which denormalized columns are no more reachable esc.getDeNormCtx().pruneReferences(cubeql); -for (String table : esc.getDeNormCtx().getTableToRefCols().keySet()) { - Set nonReachableFields = esc.getDeNormCtx().getNonReachableReferenceFields(table); - if (!nonReachableFields.isEmpty()) { -log.info("Removing expression {} as columns {} are not available", esc, nonReachableFields); -iterator.remove(); -removedEsc.add(esc); -removed = true; -break; - } +if (!esc.getDeNormCtx().getTableToRefCols().isEmpty() + && esc.getDeNormCtx().getTableToRefCols().keySet().stream() + .map(esc.getDeNormCtx()::getNonReachableReferenceFields).noneMatch(Set::isEmpty)) { + log.info("Removing expression {} as all tables have non reachable fields", esc); + iterator.remove(); + removedEsc.add(esc); + removed = true; + break; } if (removed) { continue; @@ -662,19 +661,15 @@ class ExpressionResolver implements ContextRewriter { for (Map.Entry ecEntry : exprCtx.allExprsQueried.entrySet()) { String expr = ecEntry.getKey(); Set ecSet = ecEntry.getValue(); - for (ExpressionContext ec : ecSet) { -if (ec.getSrcTable().getName().equals(cubeql.getCube().getName())) { - for (Iterator sItr = cubeql.getCandidates().iterator(); sItr.hasNext();) { -Candidate cand = sItr.next(); -if (!cand.isExpressionEvaluable(ec)) { - log.info("Not considering Candidate :{} as {} is not evaluable", cand, ec.exprCol.getName()); - sItr.remove(); - cubeql.addCandidatePruningMsg(cand, - CandidateTablePruneCause.expressionNotEvaluable(ec.exprCol.getName())); -} - } + cubeql.getCandidates().removeIf(x-> { +if (ecSet.stream().noneMatch(x::isExpressionEvaluable)) { + log.info("Not considering Candidate :{} as {} is not evaluable", x, expr); + cubeql.addCandidatePruningMsg(x, +CandidateTablePruneCause.expressionNotEvaluable(expr)); + return true; } - } +return false; + }); } } // prune candidate dims without any valid expressions http://git-wip-us.apache.org/repos/asf/lens/blob/bd4b5529/lens-cube/src/test/resources/schema/cubes/base/b1cube.xml -- diff --git a/lens-cube/src/test/resources/schema/cubes/base/b1cube.xml b/lens-cube/src/test/resources/schema/cubes/base/b1cube.xml index e3e9909..fd25982 100644 --- a/lens-cube/src/test/resources/schema/cubes/base/b1cube.xml +++ b/lens-cube/src/test/resources/schema/cubes/base/b1cube.xml @@ -178,7 +178,7 @@ - +
lens git commit: LENS-1427: ExpressionResolver is removing expressions if they are not answerable by *any* candidates
Repository: lens Updated Branches: refs/heads/master d3e732c9f -> cb2529672 LENS-1427: ExpressionResolver is removing expressions if they are not answerable by *any* candidates Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/cb252967 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/cb252967 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/cb252967 Branch: refs/heads/master Commit: cb252967237a7e6c945a9031a3d417c18bc736cf Parents: d3e732c Author: Rajat KhandelwalAuthored: Tue Jun 6 15:37:41 2017 +0530 Committer: Rajat Khandelwal Committed: Tue Jun 6 15:37:41 2017 +0530 -- .../lens/cube/parse/ExpressionResolver.java | 37 +--- .../test/resources/schema/cubes/base/b1cube.xml | 2 +- .../test/resources/schema/cubes/base/b2cube.xml | 2 +- .../resources/schema/cubes/base/testcube.xml| 2 +- 4 files changed, 19 insertions(+), 24 deletions(-) -- http://git-wip-us.apache.org/repos/asf/lens/blob/cb252967/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java -- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java index 7cad400..f38aa54 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/ExpressionResolver.java @@ -518,15 +518,14 @@ class ExpressionResolver implements ContextRewriter { } // Remove expressions for which denormalized columns are no more reachable esc.getDeNormCtx().pruneReferences(cubeql); -for (String table : esc.getDeNormCtx().getTableToRefCols().keySet()) { - Set nonReachableFields = esc.getDeNormCtx().getNonReachableReferenceFields(table); - if (!nonReachableFields.isEmpty()) { -log.info("Removing expression {} as columns {} are not available", esc, nonReachableFields); -iterator.remove(); -removedEsc.add(esc); -removed = true; -break; - } +if (!esc.getDeNormCtx().getTableToRefCols().isEmpty() + && esc.getDeNormCtx().getTableToRefCols().keySet().stream() + .map(esc.getDeNormCtx()::getNonReachableReferenceFields).noneMatch(Set::isEmpty)) { + log.info("Removing expression {} as all tables have non reachable fields", esc); + iterator.remove(); + removedEsc.add(esc); + removed = true; + break; } if (removed) { continue; @@ -630,19 +629,15 @@ class ExpressionResolver implements ContextRewriter { for (Map.Entry ecEntry : exprCtx.allExprsQueried.entrySet()) { String expr = ecEntry.getKey(); Set ecSet = ecEntry.getValue(); - for (ExpressionContext ec : ecSet) { -if (ec.getSrcTable().getName().equals(cubeql.getCube().getName())) { - for (Iterator sItr = cubeql.getCandidates().iterator(); sItr.hasNext();) { -Candidate cand = sItr.next(); -if (!cand.isExpressionEvaluable(ec)) { - log.info("Not considering Candidate :{} as {} is not evaluable", cand, ec.exprCol.getName()); - sItr.remove(); - cubeql.addCandidatePruningMsg(cand, - CandidateTablePruneCause.expressionNotEvaluable(ec.exprCol.getName())); -} - } + cubeql.getCandidates().removeIf(x-> { +if (ecSet.stream().noneMatch(x::isExpressionEvaluable)) { + log.info("Not considering Candidate :{} as {} is not evaluable", x, expr); + cubeql.addCandidatePruningMsg(x, +CandidateTablePruneCause.expressionNotEvaluable(expr)); + return true; } - } +return false; + }); } } // prune candidate dims without any valid expressions http://git-wip-us.apache.org/repos/asf/lens/blob/cb252967/lens-cube/src/test/resources/schema/cubes/base/b1cube.xml -- diff --git a/lens-cube/src/test/resources/schema/cubes/base/b1cube.xml b/lens-cube/src/test/resources/schema/cubes/base/b1cube.xml index e3e9909..fd25982 100644 --- a/lens-cube/src/test/resources/schema/cubes/base/b1cube.xml +++ b/lens-cube/src/test/resources/schema/cubes/base/b1cube.xml @@ -178,7 +178,7 @@ - +