Skip to content

Commit

Permalink
mondrian: Revert the dependency test in 9259; Non-native evaluation o…
Browse files Browse the repository at this point in the history
…f NECJ is independent of slicers.

[git-p4: depot-paths = "//open/mondrian/": change = 9268]
  • Loading branch information
Rushan Chen committed May 16, 2007
1 parent d27924f commit bdc5042
Showing 1 changed file with 9 additions and 47 deletions.
56 changes: 9 additions & 47 deletions src/main/mondrian/olap/fun/CrossJoinFunDef.java
Expand Up @@ -2414,35 +2414,10 @@ protected List nonEmptyListNEW(
}
}

Set<Member> independentSlicerMembers = null;
Set<Member> dependentSlicerMembers = null;
List<Member> slicerMembers = null;
if (evaluator instanceof RolapEvaluator) {
RolapEvaluator rev = (RolapEvaluator) evaluator;
independentSlicerMembers =
new HashSet<Member>();
dependentSlicerMembers =
new HashSet<Member>();

for (Member m : rev.getSlicerMembers()) {
// Slicer member is said to be independent if CrossJoin
// computation is not affected by it. CrossJoin is not
// affected by members that appear in the CrossJoin
// arguments.
boolean slicerFound = false;
for (Member lm : listMembers) {
Hierarchy h = lm.getHierarchy();
if (h.equals(m.getHierarchy())) {
slicerFound = true;
break;
}
}

if (slicerFound) {
independentSlicerMembers.add(m);
} else {
dependentSlicerMembers.add(m);
}
}
slicerMembers = rev.getSlicerMembers();
}

// Now we have the non-List-Members, but some of them may not be
Expand All @@ -2456,23 +2431,14 @@ protected List nonEmptyListNEW(
List<Member[]> nonAllMemberList = new ArrayList<Member[]>();

Member em;
boolean isIndependentSlicerMember = false;
boolean isDependentSlicerMember = false;
boolean isSlicerMember = false;
for (int i = 0; i < evalMembers.length; i++) {
em = evalMembers[i];

if (independentSlicerMembers == null) {
isIndependentSlicerMember = false;
if (slicerMembers == null) {
isSlicerMember = false;
} else {
isIndependentSlicerMember =
independentSlicerMembers.contains(em);
}

if (dependentSlicerMembers == null) {
isDependentSlicerMember = false;
} else {
isDependentSlicerMember =
dependentSlicerMembers.contains(em);
isSlicerMember = slicerMembers.contains(em);
}

if (em == null) {
Expand All @@ -2483,18 +2449,14 @@ protected List nonEmptyListNEW(
if (em.isMeasure()) {
continue;
}

if (isDependentSlicerMember) {
// Keep members unchanged if they are dependent
// slicer members(otherwise they will be replaced by the
// "all" member)
if (em.isCalculated() && !isSlicerMember) {
continue;
}

// If the member is not the All member;
// or if it is an independent slicer member,
// or if it is a slicer member,
// replace with the "all" member.
if (!em.isAll() || isIndependentSlicerMember) {
if (!em.isAll() || isSlicerMember) {
Hierarchy h = em.getHierarchy();
Member[] rootMembers = schemaReader.getHierarchyRootMembers(h);
if (h.hasAll()) {
Expand Down

0 comments on commit bdc5042

Please sign in to comment.