Package mondrian.rolap
Class RolapNativeSet.SetConstraint
java.lang.Object
mondrian.rolap.SqlContextConstraint
mondrian.rolap.RolapNativeSet.SetConstraint
- All Implemented Interfaces:
MemberChildrenConstraint,SqlConstraint,TupleConstraint
- Enclosing class:
- RolapNativeSet
Constraint for non empty {crossjoin, member.children, member.descendants, level.members}
-
Method Summary
Modifier and TypeMethodDescriptionvoidaddConstraint(SqlQuery sqlQuery, RolapCube baseCube, AggStar aggStar) Called from LevelMembers: restricts the SQL resultset to the current context.protected booleanIf the cross join argument has calculated members in its enumerated set, ignore the constraint since we won't produce that set through the native sql and instead will simply enumerate through the members in the setreturns a key to cache the resultReturns null to prevent the member/childern from being cached.protected booleanReturns whether a join with the fact table is required.Methods inherited from class mondrian.rolap.SqlContextConstraint
addLevelConstraint, addMemberConstraint, addMemberConstraint, getEvaluator, isValidContext, isValidContext, supportsAggTables
-
Method Details
-
isJoinRequired
protected boolean isJoinRequired()Returns whether a join with the fact table is required. A join is required if the context contains members from dimensions other than level. If we are interested in the members of a level or a members children then it does not make sense to join only one dimension (the one that contains the requested members) with the fact table for NON EMPTY optimization.If there is a crossjoin, we need to join the fact table - even if the evaluator context is empty.
- Overrides:
isJoinRequiredin classSqlContextConstraint
-
addConstraint
Description copied from class:SqlContextConstraintCalled from LevelMembers: restricts the SQL resultset to the current context.- Specified by:
addConstraintin interfaceTupleConstraint- Overrides:
addConstraintin classSqlContextConstraint- Parameters:
sqlQuery- the query to modifybaseCube- base cube for virtual cube constraintsaggStar- aggregate star to use
-
canApplyCrossJoinArgConstraint
If the cross join argument has calculated members in its enumerated set, ignore the constraint since we won't produce that set through the native sql and instead will simply enumerate through the members in the set -
getMemberChildrenConstraint
Returns null to prevent the member/childern from being cached. There exists no valid MemberChildrenConstraint that would fetch those children that were extracted as a side effect from evaluating a non empty crossjoin- Specified by:
getMemberChildrenConstraintin interfaceTupleConstraint- Overrides:
getMemberChildrenConstraintin classSqlContextConstraint
-
getCacheKey
returns a key to cache the result- Specified by:
getCacheKeyin interfaceSqlConstraint- Overrides:
getCacheKeyin classSqlContextConstraint- Returns:
- valid key or null to prevent the result from being cached
-