diff --git a/src/main/mondrian/rolap/RolapNativeExisting.java b/src/main/mondrian/rolap/RolapNativeExisting.java index cbfbca2f43..6a7e299a43 100644 --- a/src/main/mondrian/rolap/RolapNativeExisting.java +++ b/src/main/mondrian/rolap/RolapNativeExisting.java @@ -215,7 +215,7 @@ private static TupleList removeInvalidTuples( * @param leftSet * @param hierarchyRight * @param rightSet - * @return + * @return filtered left set */ public static TupleList postFilterExistingRelatedHierarchies( RolapEvaluator evaluator, @@ -321,6 +321,7 @@ private static Map> extractHierarchyMembers( { Map> result = new LinkedHashMap>(); + final boolean isAgg = MondrianProperties.instance().UseAggregates.get(); for (List tuple : tuples) { for (Member member : tuple) { if (member.getHierarchy().equals(targetHierarchy) @@ -328,10 +329,14 @@ private static Map> extractHierarchyMembers( { // avoiding rolapCubeMember will prevent fact table joins // TODO: a better way + // would fail for aggregate tables RolapMember rolapMember = (RolapMember) member; - if (!isNonEmpty && rolapMember instanceof RolapCubeMember) { + if (!isNonEmpty + && rolapMember instanceof RolapCubeMember + && !isAgg) + { rolapMember = - ((RolapCubeMember)member).getRolapMember(); + ((RolapCubeMember) member).getRolapMember(); } putInMapList( result,