You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by pr...@apache.org on 2017/07/06 14:05:41 UTC
lens git commit: LENS-1451: Enforcing valid fact tables doesn't
filter out segmentations
Repository: lens
Updated Branches:
refs/heads/master e570e9e33 -> 45521bf2c
LENS-1451: Enforcing valid fact tables doesn't filter out segmentations
Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/45521bf2
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/45521bf2
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/45521bf2
Branch: refs/heads/master
Commit: 45521bf2c05b2babb2fc96a2000c3dc11fb4329c
Parents: e570e9e
Author: Rajat Khandelwal <pr...@apache.org>
Authored: Thu Jul 6 19:35:15 2017 +0530
Committer: Rajat Khandelwal <ra...@gmail.com>
Committed: Thu Jul 6 19:35:15 2017 +0530
----------------------------------------------------------------------
.../lens/cube/parse/CandidateTableResolver.java | 26 ++++++++++----------
1 file changed, 13 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lens/blob/45521bf2/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 be3b474..86209bd 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
@@ -104,6 +104,9 @@ class CandidateTableResolver implements ContextRewriter {
private void populateCandidateTables(CubeQueryContext cubeql) throws LensException {
if (cubeql.getCube() != null) {
+ String str = cubeql.getConf().get(CubeQueryConfUtil.getValidFactTablesKey(cubeql.getCube().getName()));
+ List<String> validFactTables =
+ StringUtils.isBlank(str) ? null : Arrays.asList(StringUtils.split(str.toLowerCase(), ","));
List<FactTable> factTables = cubeql.getMetastoreClient().getAllFacts(cubeql.getCube());
if (factTables.isEmpty()) {
throw new LensException(LensCubeErrorCode.NO_CANDIDATE_FACT_AVAILABLE.getLensErrorInfo(),
@@ -112,11 +115,15 @@ class CandidateTableResolver implements ContextRewriter {
for (FactTable fact : factTables) {
if (fact.getUpdatePeriods().isEmpty()) {
log.info("Not considering fact: {} as it has no update periods", fact.getName());
+ } else if (validFactTables != null && !validFactTables.contains(fact.getName())) {
+ log.info("Not considering fact: {} as it's not valid as per user configuration.", fact.getName());
} else {
for (String s : fact.getStorages()) {
StorageCandidate sc = new StorageCandidate(cubeql.getCube(), fact, s, cubeql);
if (isStorageSupportedOnDriver(sc.getStorageName())) {
cubeql.getCandidates().add(sc);
+ } else {
+ log.info("Not considering {} since storage is not supported on driver.", sc.getName());
}
}
}
@@ -125,7 +132,12 @@ class CandidateTableResolver implements ContextRewriter {
log.info("Populated storage candidates: {}", cubeql.getCandidates());
List<SegmentationCandidate> segmentationCandidates = Lists.newArrayList();
for (Segmentation segmentation : cubeql.getMetastoreClient().getAllSegmentations(cubeql.getCube())) {
- segmentationCandidates.add(new SegmentationCandidate(cubeql, segmentation));
+ if (validFactTables != null && !validFactTables.contains(segmentation.getName())) {
+ log.info("Not considering segmentation: {} as it's not valid as per user configuration.",
+ segmentation.getName());
+ } else {
+ segmentationCandidates.add(new SegmentationCandidate(cubeql, segmentation));
+ }
}
cubeql.getCandidates().addAll(segmentationCandidates);
}
@@ -261,9 +273,6 @@ class CandidateTableResolver implements ContextRewriter {
private void resolveCandidateFactTables(CubeQueryContext cubeql) throws LensException {
if (cubeql.getCube() != null) {
- String str = cubeql.getConf().get(CubeQueryConfUtil.getValidFactTablesKey(cubeql.getCube().getName()));
- List<String> validFactTables =
- StringUtils.isBlank(str) ? null : Arrays.asList(StringUtils.split(str.toLowerCase(), ","));
Set<QueriedPhraseContext> queriedMsrs = new HashSet<>();
Set<QueriedPhraseContext> dimExprs = new HashSet<>();
@@ -279,15 +288,6 @@ class CandidateTableResolver implements ContextRewriter {
Candidate cand = i.next();
if (cand instanceof StorageCandidate) {
StorageCandidate sc = (StorageCandidate) cand;
- if (validFactTables != null) {
- if (!validFactTables.contains(sc.getFact().getName().toLowerCase())) {
- log.info("Not considering storage candidate:{} as it is not a valid candidate", sc);
- cubeql.addStoragePruningMsg(sc, new CandidateTablePruneCause(CandidateTablePruneCode.INVALID));
- i.remove();
- continue;
- }
- }
-
// update expression evaluability for this fact
for (String expr : cubeql.getQueriedExprs()) {
cubeql.getExprCtx().updateEvaluables(expr, sc);