Repository: lens Updated Branches: refs/heads/master a8d23df80 -> caf7a2c0b
LENS-1471: JoinCandidate's children should not share same storage candidate Project: http://git-wip-us.apache.org/repos/asf/lens/repo Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/caf7a2c0 Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/caf7a2c0 Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/caf7a2c0 Branch: refs/heads/master Commit: caf7a2c0b045ce409d254c1ff26ffd79d01fee52 Parents: a8d23df Author: Rajat Khandelwal <pro...@apache.org> Authored: Tue Sep 5 15:46:02 2017 +0530 Committer: Rajat Khandelwal <rajatgupt...@gmail.com> Committed: Tue Sep 5 15:46:02 2017 +0530 ---------------------------------------------------------------------- .../lens/cube/parse/CandidateCoveringSetsResolver.java | 8 ++++++-- .../java/org/apache/lens/cube/parse/StorageCandidate.java | 2 +- .../main/java/org/apache/lens/cube/parse/UnionCandidate.java | 7 ++++++- 3 files changed, 13 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lens/blob/caf7a2c0/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateCoveringSetsResolver.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateCoveringSetsResolver.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateCoveringSetsResolver.java index 1cff4a4..9125f4f 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateCoveringSetsResolver.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/CandidateCoveringSetsResolver.java @@ -169,7 +169,8 @@ public class CandidateCoveringSetsResolver implements ContextRewriter { } } @Deprecated - private List<UnionCandidate> getCombinations(final List<Candidate> candidates, CubeQueryContext cubeql) { + private List<UnionCandidate> getCombinations(final List<Candidate> candidates, CubeQueryContext cubeql) + throws LensException { List<UnionCandidate> combinations = new LinkedList<>(); int size = candidates.size(); int threshold = Double.valueOf(Math.pow(2, size)).intValue() - 1; @@ -187,6 +188,7 @@ public class CandidateCoveringSetsResolver implements ContextRewriter { } UnionCandidate uc = new UnionCandidate(individualCombinationList, cubeql); if (isCandidateCoveringTimeRanges(uc, cubeql.getTimeRanges())) { + uc.cloneChildren(); combinations.add(uc); } } @@ -207,7 +209,8 @@ public class CandidateCoveringSetsResolver implements ContextRewriter { * @param cubeql * @return */ - private List<UnionCandidate> getCombinationTailIterative(List<Candidate> candidates, CubeQueryContext cubeql) { + private List<UnionCandidate> getCombinationTailIterative(List<Candidate> candidates, CubeQueryContext cubeql) + throws LensException { LinkedList<Candidate> candidateLinkedList = Lists.newLinkedList(candidates); List<List<Candidate>> incompleteCombinations = Lists.newArrayList(); incompleteCombinations.add(Lists.newArrayList()); @@ -221,6 +224,7 @@ public class CandidateCoveringSetsResolver implements ContextRewriter { incompleteCombination.add(candidate); UnionCandidate unionCandidate = new UnionCandidate(incompleteCombination, cubeql); if (isCandidateCoveringTimeRanges(unionCandidate, cubeql.getTimeRanges())) { + unionCandidate.cloneChildren(); unionCandidates.add(unionCandidate); } else { moreIncomplete.add(incompleteCombination); http://git-wip-us.apache.org/repos/asf/lens/blob/caf7a2c0/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java index 27835b3..140b2c1 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/StorageCandidate.java @@ -169,7 +169,6 @@ public class StorageCandidate implements Candidate, CandidateTable { rangeToPartitions.put(entry.getKey(), new LinkedHashSet<>(entry.getValue())); } this.rangeToExtraWhereFallBack = sc.rangeToExtraWhereFallBack; - this.answerableMeasurePhraseIndices = sc.answerableMeasurePhraseIndices; } public StorageCandidate(CubeInterface cube, FactTable fact, String storageName, CubeQueryContext cubeQueryContext) @@ -933,6 +932,7 @@ public class StorageCandidate implements Candidate, CandidateTable { updatePeriodSpecificSc = copy(); updatePeriodSpecificSc.setResolvedName(getCubeMetastoreClient().getStorageTableName(fact.getSourceFactName(), storageName, period)); + updatePeriodSpecificSc.isStorageTblsAtUpdatePeriodLevel = false; updatePeriodSpecificSc.truncatePartitions(period); periodSpecificScList.add(updatePeriodSpecificSc); } http://git-wip-us.apache.org/repos/asf/lens/blob/caf7a2c0/lens-cube/src/main/java/org/apache/lens/cube/parse/UnionCandidate.java ---------------------------------------------------------------------- diff --git a/lens-cube/src/main/java/org/apache/lens/cube/parse/UnionCandidate.java b/lens-cube/src/main/java/org/apache/lens/cube/parse/UnionCandidate.java index 510ea0c..231035e 100644 --- a/lens-cube/src/main/java/org/apache/lens/cube/parse/UnionCandidate.java +++ b/lens-cube/src/main/java/org/apache/lens/cube/parse/UnionCandidate.java @@ -65,7 +65,12 @@ public class UnionCandidate implements Candidate { this.children = Lists.newArrayList(childCandidates); this.cubeQueryContext = cubeQueryContext; } - + void cloneChildren() throws LensException { + ListIterator<Candidate> iter = children.listIterator(); + while(iter.hasNext()) { + iter.set(iter.next().copy()); + } + } @Override public Set<Integer> getAnswerableMeasurePhraseIndices() { // All children in the UnionCandiate will be having common quriable measure