|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectmondrian.rolap.RolapNative
mondrian.rolap.RolapNativeSet
public abstract class RolapNativeSet
Analyses set expressions and executes them in SQL if possible. Supports crossjoin, member.children, level.members and member.descendants - all in non empty mode, i.e. there is a join to the fact table.
TODO: the order of the result is different from the order of the enumeration. Should sort.
Nested Class Summary | |
---|---|
protected static interface |
RolapNativeSet.CrossJoinArg
"Light version" of a TupleConstraint , represents one of
member.children, level.members, member.descendants, {enumeration}. |
protected static class |
RolapNativeSet.DescendantsCrossJoinArg
Represents one of: Level.Members: member == null and level != null Member.Children: member != null and level = member.getLevel().getChildLevel() Member.Descendants: member != null and level == some level below member.getLevel() |
protected static class |
RolapNativeSet.MemberListCrossJoinArg
Represents an enumeration {member1, member2, ...}. |
static interface |
RolapNativeSet.SchemaReaderWithMemberReaderAvailable
|
protected static class |
RolapNativeSet.SetConstraint
Constraint for non empty {crossjoin, member.children, member.descendants, level.members} |
protected class |
RolapNativeSet.SetEvaluator
|
Nested classes/interfaces inherited from class mondrian.rolap.RolapNative |
---|
RolapNative.Listener, RolapNative.NativeEvent, RolapNative.TupleEvent |
Field Summary | |
---|---|
protected static org.apache.log4j.Logger |
LOGGER
|
Fields inherited from class mondrian.rolap.RolapNative |
---|
listener |
Constructor Summary | |
---|---|
RolapNativeSet()
|
Method Summary | |
---|---|
protected java.util.List<RolapNativeSet.CrossJoinArg[]> |
checkCrossJoin(RolapEvaluator evaluator,
FunDef fun,
Exp[] args,
boolean returnAny)
Checks for CrossJoin(<set1>, <set2>) , where
set1 and set2 are one of
member.children , level.members or
member.descendants . |
protected java.util.List<RolapNativeSet.CrossJoinArg[]> |
checkCrossJoinArg(RolapEvaluator evaluator,
Exp exp)
Scans for memberChildren, levelMembers, memberDescendants, crossJoin. |
protected java.util.List<RolapNativeSet.CrossJoinArg[]> |
checkCrossJoinArg(RolapEvaluator evaluator,
Exp exp,
boolean returnAny)
Checks whether an expression can be natively evaluated. |
protected RolapNativeSet.CrossJoinArg[] |
checkDescendants(Role role,
FunDef fun,
Exp[] args)
Checks for Descendants(<member>, <Level>) |
protected RolapNativeSet.CrossJoinArg[] |
checkEnumeration(RolapEvaluator evaluator,
FunDef fun,
Exp[] args,
boolean exclude)
Checks for a set constructor, {member1, member2,
...} that does not contain calculated members. |
protected RolapNativeSet.CrossJoinArg[] |
checkLevelMembers(Role role,
FunDef fun,
Exp[] args)
Checks for <Level>.Members . |
protected RolapNativeSet.CrossJoinArg[] |
checkMemberChildren(Role role,
FunDef fun,
Exp[] args)
Checks for <Member>.Children . |
protected boolean |
isPreferInterpreter(RolapNativeSet.CrossJoinArg[] args,
boolean joinArg)
Tests whether non-native evaluation is preferred for the given arguments. |
protected static boolean |
isSimpleLevel(RolapLevel level)
Ensures that level is not ragged and not a parent/child level. |
protected static boolean |
isTooRagged(RolapLevel level)
Determines whether the specified level is too ragged for native evaluation, which is able to handle one special case of a ragged hierarchy: when the level specified in the query is the leaf level of the hierarchy and HideMemberCondition for the level is IfBlankName. |
protected RolapEvaluator |
overrideContext(RolapEvaluator evaluator,
RolapNativeSet.CrossJoinArg[] cargs,
RolapStoredMeasure storedMeasure)
Override current members in position by default members in hierarchies which are involved in this filter/topcount. |
protected abstract boolean |
restrictMemberTypes()
Returns whether certain member types(e.g. |
(package private) void |
useHardCache(boolean hard)
disable garbage collection for test |
Methods inherited from class mondrian.rolap.RolapNative |
---|
createEvaluator, getListener, isEnabled, setEnabled, setListener |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected static final org.apache.log4j.Logger LOGGER
Constructor Detail |
---|
public RolapNativeSet()
Method Detail |
---|
protected abstract boolean restrictMemberTypes()
If true, expressions containing calculated members will be evaluated by the interpreter, instead of using SQL. If false, calc members will be ignored and the computation will be done in SQL, returning more members than requested. This is ok, if the superflous members are filtered out in java code afterwards.
protected RolapNativeSet.CrossJoinArg[] checkDescendants(Role role, FunDef fun, Exp[] args)
RolapNativeSet.CrossJoinArg
instance describing the Descendants
function, or null if fun
represents something else.protected RolapNativeSet.CrossJoinArg[] checkLevelMembers(Role role, FunDef fun, Exp[] args)
<Level>.Members
.
RolapNativeSet.CrossJoinArg
instance describing the Level.members
function, or null if fun
represents something else.protected RolapNativeSet.CrossJoinArg[] checkMemberChildren(Role role, FunDef fun, Exp[] args)
<Member>.Children
.
RolapNativeSet.CrossJoinArg
instance describing the member.children
function, or null if fun
represents something else.protected RolapNativeSet.CrossJoinArg[] checkEnumeration(RolapEvaluator evaluator, FunDef fun, Exp[] args, boolean exclude)
{member1, member2,
...}
that does not contain calculated members.
RolapNativeSet.CrossJoinArg
instance describing the enumeration,
or null if fun
represents something else.protected java.util.List<RolapNativeSet.CrossJoinArg[]> checkCrossJoin(RolapEvaluator evaluator, FunDef fun, Exp[] args, boolean returnAny)
CrossJoin(<set1>, <set2>)
, where
set1 and set2 are one of
member.children
, level.members
or
member.descendants
.
evaluator
- Evaluator to use if inputs are to be evaluatedfun
- The function, either "CrossJoin" or "NonEmptyCrossJoin"args
- Inputs to the CrossJoinreturnAny
- indicates we should return any valid crossjoin args
protected java.util.List<RolapNativeSet.CrossJoinArg[]> checkCrossJoinArg(RolapEvaluator evaluator, Exp exp)
protected java.util.List<RolapNativeSet.CrossJoinArg[]> checkCrossJoinArg(RolapEvaluator evaluator, Exp exp, boolean returnAny)
evaluator
- Evaluatorexp
- Expresssion
protected static boolean isSimpleLevel(RolapLevel level)
protected static boolean isTooRagged(RolapLevel level)
level
- A RolapLevel to check the raggedness of.
protected boolean isPreferInterpreter(RolapNativeSet.CrossJoinArg[] args, boolean joinArg)
joinArg
- true if evaluating a cross-join; false if
evaluating a single-input expression such as filter
void useHardCache(boolean hard)
useHardCache
in class RolapNative
protected RolapEvaluator overrideContext(RolapEvaluator evaluator, RolapNativeSet.CrossJoinArg[] cargs, RolapStoredMeasure storedMeasure)
RolapAggregationManager.makeRequest(RolapEvaluator)
|
|
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |