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

Reply via email to