Repository: lens Updated Branches: refs/heads/current-release-line cdd7b0999 -> f43c20512
LENS-1457: ExpressionResolver pruning expression when some tables don't have ref columns of the expressions Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/f43c2051 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/f43c2051 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/f43c2051 Branch: refs/heads/current-release-line Commit: f43c20512facb9686316b5b4aed1af9515d33fb5 Parents: cdd7b09 Author: Rajat Khandelwal <pro...@apache.org> Authored: Mon Jul 31 15:16:35 2017 +0530 Committer: Rajat Khandelwal <rajatgupt...@gmail.com> Committed: Wed Aug 2 20:47:04 2017 +0530 ---------------------------------------------------------------------- .../java/org/apache/lens/cube/parse/CandidateTable.java | 10 ++-------- .../org/apache/lens/cube/parse/ExpressionResolver.java | 4 ++++ 2 files changed, 6 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/f43c2051/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTable.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTable.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTable.java index c909545..40022f0 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTable.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTable.java @@ -22,11 +22,12 @@ import java.util.Collection; import java.util.Set; import org.apache.lens.cube.metadata.AbstractCubeTable; +import org.apache.lens.cube.metadata.Named; /** * Candidate table interface */ -public interface CandidateTable { +public interface CandidateTable extends Named { /** * Get storage string of the base table alias passed @@ -57,13 +58,6 @@ public interface CandidateTable { AbstractCubeTable getBaseTable(); /** - * Get name of the candidate table - * - * @return name - */ - String getName(); - - /** * Get columns of candidate table * * @return set or list of columns http://git-wip-us.apache.org/repos/asf/lens/blob/f43c2051/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 4680766..8906fae 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 @@ -19,6 +19,8 @@ package org.apache.lens.cube.parse; +import static java.util.stream.Collectors.toSet; + import static org.apache.hadoop.hive.ql.parse.HiveParser.*; import java.util.*; @@ -557,6 +559,8 @@ class ExpressionResolver implements ContextRewriter { // Remove expressions for which denormalized columns are no more reachable esc.getDeNormCtx().pruneReferences(cubeql); if (!esc.getDeNormCtx().getTableToRefCols().isEmpty() + && esc.getDeNormCtx().getTableToRefCols().keySet().containsAll( + ec.getEvaluableExpressions().keySet().stream().map(Named::getName).collect(toSet())) && esc.getDeNormCtx().getTableToRefCols().keySet().stream() .map(esc.getDeNormCtx()::getNonReachableReferenceFields).noneMatch(Set::isEmpty)) { log.info("Removing expression {} as all tables have non reachable fields", esc);