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/20 10:41:34 UTC
[2/3] lens git commit: LENS-1454: Time Covering set algorithm is
skipping some combinations
LENS-1454: Time Covering set algorithm is skipping some combinations
Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/e977ce6e
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/e977ce6e
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/e977ce6e
Branch: refs/heads/master
Commit: e977ce6e5a97015fedf24520d0632cd981a0cc5f
Parents: 0b265c8
Author: Rajat Khandelwal <pr...@apache.org>
Authored: Thu Jul 20 16:10:52 2017 +0530
Committer: Rajat Khandelwal <ra...@gmail.com>
Committed: Thu Jul 20 16:10:52 2017 +0530
----------------------------------------------------------------------
.../lens/cube/parse/CandidateCoveringSetsResolver.java | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lens/blob/e977ce6e/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 69d9562..4066cf7 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
@@ -209,21 +209,23 @@ public class CandidateCoveringSetsResolver implements ContextRewriter {
private List<UnionCandidate> getCombinationTailIterative(List<Candidate> candidates, CubeQueryContext cubeql) {
LinkedList<Candidate> candidateLinkedList = Lists.newLinkedList(candidates);
List<List<Candidate>> incompleteCombinations = Lists.newArrayList();
+ incompleteCombinations.add(Lists.newArrayList());
List<UnionCandidate> unionCandidates = Lists.newArrayList();
while(!candidateLinkedList.isEmpty()) {
+ List<List<Candidate>> moreIncomplete = Lists.newArrayList();
Candidate candidate = candidateLinkedList.remove();
- incompleteCombinations.add(Lists.newArrayList());
- Iterator<List<Candidate>> iter = incompleteCombinations.iterator();
- while(iter.hasNext()) {
- List<Candidate> incompleteCombination = iter.next();
+ for (List<Candidate> combination : incompleteCombinations) {
+ List<Candidate> incompleteCombination = Lists.newArrayList(combination);
incompleteCombination.add(candidate);
UnionCandidate unionCandidate = new UnionCandidate(incompleteCombination, cubeql);
if (isCandidateCoveringTimeRanges(unionCandidate, cubeql.getTimeRanges())) {
unionCandidates.add(unionCandidate);
- iter.remove();
+ } else {
+ moreIncomplete.add(incompleteCombination);
}
}
+ incompleteCombinations.addAll(moreIncomplete);
}
return unionCandidates;
}