QueryGraphValueEntryRange rangeProp = subqRangeKey.getRangeInfo();
if (rangeProp.getType().isRange()) {
QueryGraphValueEntryRangeIn in = (QueryGraphValueEntryRangeIn) rangeProp;
ExprEvaluator start = in.getExprStart().getExprEvaluator();
boolean includeStart = rangeProp.getType().isIncludeStart();
ExprEvaluator end = in.getExprEnd().getExprEvaluator();
boolean includeEnd = rangeProp.getType().isIncludeEnd();
if (!rangeProp.getType().isRangeInverted()) {
strategy = new CompositeAccessStrategyRangeNormal(isNWOnTrigger, lookupStream, numStreams, start, includeStart, end, includeEnd, coercionType, ((QueryGraphValueEntryRangeIn) rangeProp).isAllowRangeReversal());
}
else {
strategy = new CompositeAccessStrategyRangeInverted(isNWOnTrigger, lookupStream, numStreams, start, includeStart, end, includeEnd, coercionType);
}
}
else {
QueryGraphValueEntryRangeRelOp relOp = (QueryGraphValueEntryRangeRelOp) rangeProp;
ExprEvaluator key = relOp.getExpression().getExprEvaluator();
if (rangeProp.getType() == QueryGraphRangeEnum.GREATER_OR_EQUAL) {
strategy = new CompositeAccessStrategyGE(isNWOnTrigger, lookupStream, numStreams, key, coercionType);
}
else if (rangeProp.getType() == QueryGraphRangeEnum.GREATER) {
strategy = new CompositeAccessStrategyGT(isNWOnTrigger, lookupStream, numStreams, key, coercionType);