LENS-1474 : Fix NPE in ExpressionResolver for SegmentationCandidate
Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/ae6bda33 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/ae6bda33 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/ae6bda33 Branch: refs/heads/master Commit: ae6bda33ed501e15dceeecea83c86adf189e4453 Parents: 717214c Author: Rajitha R <rajitha....@gmail.com> Authored: Mon Sep 11 09:53:21 2017 +0530 Committer: rajub <raju.bairishe...@lazada.com> Committed: Thu Oct 5 11:12:15 2017 +0800 ---------------------------------------------------------------------- .../apache/lens/cube/parse/ExpressionResolver.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/ae6bda33/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 8906fae..822e25e 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 @@ -314,12 +314,14 @@ class ExpressionResolver implements ContextRewriter { } ExpressionContext getExpressionContext(String expr, String alias) { - for (ExpressionContext ec : allExprsQueried.get(expr)) { - if (ec.getSrcAlias().equals(alias)) { - return ec; + if (allExprsQueried.get(expr) != null) { + for (ExpressionContext ec : allExprsQueried.get(expr)) { + if (ec.getSrcAlias().equals(alias)) { + return ec; + } } } - throw new IllegalArgumentException("no expression available for " + expr + " alias:" + alias); + return null; } boolean hasMeasures(String expr, CubeInterface cube) { @@ -511,8 +513,11 @@ class ExpressionResolver implements ContextRewriter { expressionContexts.add(expressionContext); for (StorageCandidate sc : scSet) { storageTableNames.add(sc.getStorageTable()); - expressionContexts.add(sc.getCubeQueryContext().getExprCtx() - .getExpressionContext(expressionContext.getExprCol().getName(), expressionContext.getSrcAlias())); + ExpressionContext ex = sc.getCubeQueryContext().getExprCtx().getExpressionContext(expressionContext. + getExprCol().getName(), expressionContext.getSrcAlias()); + if (ex != null) { + expressionContexts.add(ex); + } } for (ExpressionContext ec : expressionContexts) { for (CandidateTable table : ec.evaluableExpressions.keySet()) {