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 2014/12/01 17:08:58 UTC

incubator-lens git commit: LENS-80 : Fixes exceptions in CandidateTableResolver (Rajat Khandelwal via amareshwari)

Repository: incubator-lens
Updated Branches:
  refs/heads/master 358f3244f -> be6fb66ce


LENS-80 : Fixes exceptions in CandidateTableResolver (Rajat Khandelwal via amareshwari)


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

Branch: refs/heads/master
Commit: be6fb66ce30282b761ae4020a61018b12bde7c26
Parents: 358f324
Author: Amareshwari Sriramdasu <am...@inmobi.com>
Authored: Mon Dec 1 21:38:45 2014 +0530
Committer: Amareshwari Sriramdasu <am...@inmobi.com>
Committed: Mon Dec 1 21:38:45 2014 +0530

----------------------------------------------------------------------
 .../apache/lens/cube/parse/CandidateTableResolver.java  | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-lens/blob/be6fb66c/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java
----------------------------------------------------------------------
diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java
index ed4f93a..8b9e604 100644
--- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java
+++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateTableResolver.java
@@ -196,6 +196,7 @@ class CandidateTableResolver implements ContextRewriter {
         // the candidate facts should have all the dimensions queried and
         // atleast
         // one measure
+        boolean toRemove = false;
         for (String col : queriedDimAttrs) {
           if (!cfact.getColumns().contains(col.toLowerCase())) {
             // check if it available as reference, if not remove the candidate
@@ -203,7 +204,7 @@ class CandidateTableResolver implements ContextRewriter {
               LOG.info("Not considering fact table:" + cfact + " as column " + col + " is not available");
               cubeql.addFactPruningMsgs(cfact.fact, new CandidateTablePruneCause(cfact.getName(),
                   CubeTableCause.COLUMN_NOT_FOUND));
-              i.remove();
+              toRemove = true;
               break;
             }
           }
@@ -214,6 +215,9 @@ class CandidateTableResolver implements ContextRewriter {
           LOG.info("Not considering fact table:" + cfact + " as columns " + queriedMsrs + " is not available");
           cubeql.addFactPruningMsgs(cfact.fact, new CandidateTablePruneCause(cfact.getName(),
               CubeTableCause.COLUMN_NOT_FOUND));
+          toRemove = true;
+        }
+        if(toRemove) {
           i.remove();
         }
       }
@@ -336,6 +340,7 @@ class CandidateTableResolver implements ContextRewriter {
     if (cubeql.getAutoJoinCtx() == null) {
       return;
     }
+    Collection<String> colSet = null;
     if (cubeql.getCube() != null && !cubeql.getCandidateFactTables().isEmpty()) {
       for (Iterator<CandidateFact> i = cubeql.getCandidateFactTables().iterator(); i.hasNext();) {
         CandidateFact cfact = i.next();
@@ -346,7 +351,7 @@ class CandidateTableResolver implements ContextRewriter {
             .getAlljoinPathColumns().entrySet()) {
           Dimension reachableDim = joincolumnsEntry.getKey();
           OptionalDimCtx optdim = cubeql.getOptionalDimensionMap().get(reachableDim);
-          Collection<String> colSet = joincolumnsEntry.getValue().get((AbstractCubeTable) cubeql.getCube());
+          colSet = joincolumnsEntry.getValue().get((AbstractCubeTable) cubeql.getCube());
 
           if (!checkForColumnExists(cfact, colSet)) {
             if (optdim == null || optdim.isRequiredInJoinChain
@@ -362,8 +367,7 @@ class CandidateTableResolver implements ContextRewriter {
         }
       }
       if (cubeql.getCandidateFactTables().size() == 0) {
-        throw new SemanticException(ErrorMsg.NO_FACT_HAS_COLUMN, cubeql.getAutoJoinCtx()
-            .getJoinPathColumnsOfTable((AbstractCubeTable) cubeql.getCube()).toString());
+        throw new SemanticException(ErrorMsg.NO_FACT_HAS_COLUMN, colSet == null? "NULL" : colSet.toString());
       }
     }
   }