You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by am...@apache.org on 2016/11/21 06:46:06 UTC
lens git commit: LENS-1377 : Optimize measure covering set to exclude
fact covering all measures in other combinations
Repository: lens
Updated Branches:
refs/heads/master 02cbd6bc3 -> fe66131a4
LENS-1377 : Optimize measure covering set to exclude fact covering all measures in other combinations
Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/fe66131a
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/fe66131a
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/fe66131a
Branch: refs/heads/master
Commit: fe66131a47249afdecdacd080c115cebda2cae34
Parents: 02cbd6b
Author: Amareshwari Sriramadasu <am...@apache.org>
Authored: Mon Nov 21 12:15:55 2016 +0530
Committer: Amareshwari Sriramadasu <am...@apache.org>
Committed: Mon Nov 21 12:15:55 2016 +0530
----------------------------------------------------------------------
.../lens/cube/parse/CandidateTableResolver.java | 41 ++++++++++++--------
1 file changed, 24 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lens/blob/fe66131a/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 510bd8c..e7fc557 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
@@ -355,36 +355,43 @@ class CandidateTableResolver implements ContextRewriter {
List<CandidateFact> cfacts = new ArrayList<>(cfactsPassed);
for (Iterator<CandidateFact> i = cfacts.iterator(); i.hasNext();) {
CandidateFact cfact = i.next();
- i.remove();
if (!checkForFactColumnExistsAndValidForRange(cfact, msrs, cubeql)) {
// cfact does not contain any of msrs and none of exprsWithMeasures are evaluable.
// ignore the fact
+ i.remove();
continue;
} else if (allEvaluable(cfact, msrs, cubeql)) {
// return single set
Set<CandidateFact> one = new LinkedHashSet<>();
one.add(cfact);
cfactset.add(one);
- } else {
- // find the remaining measures in other facts
- if (i.hasNext()) {
- Set<QueriedPhraseContext> remainingMsrs = new HashSet<>(msrs);
- Set<QueriedPhraseContext> coveredMsrs = coveredMeasures(cfact, msrs, cubeql);
- remainingMsrs.removeAll(coveredMsrs);
-
- Set<Set<CandidateFact>> coveringSets = findCoveringSets(cubeql, cfacts, remainingMsrs);
- if (!coveringSets.isEmpty()) {
- for (Set<CandidateFact> set : coveringSets) {
- set.add(cfact);
- cfactset.add(set);
- }
- } else {
- log.info("Couldnt find any set containing remaining measures:{} {} in {}", remainingMsrs,
- cfactsPassed);
+ i.remove();
+ }
+ }
+ // facts that contain all measures or no measures are removed from iteration.
+ // find other facts
+ for (Iterator<CandidateFact> i = cfacts.iterator(); i.hasNext();) {
+ CandidateFact cfact = i.next();
+ i.remove();
+ // find the remaining measures in other facts
+ if (i.hasNext()) {
+ Set<QueriedPhraseContext> remainingMsrs = new HashSet<>(msrs);
+ Set<QueriedPhraseContext> coveredMsrs = coveredMeasures(cfact, msrs, cubeql);
+ remainingMsrs.removeAll(coveredMsrs);
+
+ Set<Set<CandidateFact>> coveringSets = findCoveringSets(cubeql, cfacts, remainingMsrs);
+ if (!coveringSets.isEmpty()) {
+ for (Set<CandidateFact> set : coveringSets) {
+ set.add(cfact);
+ cfactset.add(set);
}
+ } else {
+ log.info("Couldnt find any set containing remaining measures:{} {} in {}", remainingMsrs,
+ cfactsPassed);
}
}
}
+ log.info("Covering set {} for measures {} with factsPassed {}", cfactset, msrs, cfactsPassed);
return cfactset;
}