public class QueryGraph extends Object
Modifier and Type | Field and Description |
---|---|
static int |
SELF_STREAM |
Constructor and Description |
---|
QueryGraph(int numStreams,
ExcludePlanHint optionalHint,
boolean nToZeroAnalysis)
Ctor.
|
Modifier and Type | Method and Description |
---|---|
void |
addCustomIndex(String operationName,
ExprNode[] indexExpressions,
List<Pair<ExprNode,int[]>> streamKeys,
int streamValue) |
void |
addInSetMultiIndex(int testStreamNum,
ExprNode testPropExpr,
int setStreamNum,
ExprNode[] setPropExpr) |
void |
addInSetMultiIndexUnkeyed(ExprNode testPropExpr,
int setStreamNum,
ExprNode[] setPropExpr) |
void |
addInSetSingleIndex(int testStreamNum,
ExprNode testPropExpr,
int setStreamNum,
ExprNode[] setPropExpr) |
void |
addInSetSingleIndexUnkeyed(int testStreamNum,
ExprNode testPropExpr,
ExprNode[] setPropExpr) |
void |
addKeyedExpression(int indexedStream,
ExprIdentNode indexedProp,
int keyExprStream,
ExprNode exprNodeNoIdent) |
void |
addRangeExpr(int indexedStream,
ExprIdentNode indexedProp,
ExprNode startNode,
Integer optionalStartStreamNum,
ExprNode endNode,
Integer optionalEndStreamNum,
QueryGraphRangeEnum rangeOp) |
void |
addRangeStrict(int streamNumStart,
ExprIdentNode propertyStartExpr,
int streamNumEnd,
ExprIdentNode propertyEndExpr,
int streamNumValue,
ExprIdentNode propertyValueExpr,
QueryGraphRangeEnum rangeOp) |
void |
addRelationalOp(int indexedStream,
ExprIdentNode indexedProp,
Integer keyStreamNum,
ExprNode exprNodeNoIdent,
RelationalOpEnum relationalOpEnum) |
void |
addRelationalOpStrict(int streamIdLeft,
ExprIdentNode propertyLeftExpr,
int streamIdRight,
ExprIdentNode propertyRightExpr,
RelationalOpEnum relationalOpEnum) |
boolean |
addStrictEquals(int streamLeft,
String propertyLeft,
ExprIdentNode nodeLeft,
int streamRight,
String propertyRight,
ExprIdentNode nodeRight)
Add properties for 2 streams that are equal.
|
void |
addUnkeyedExpression(int indexedStream,
ExprIdentNode indexedProp,
ExprNode exprNodeNoIdent) |
static void |
fillEquivalentNav(EventType[] typesPerStream,
QueryGraph queryGraph)
Fill in equivalent key properties (navigation entries) on all streams.
|
QueryGraphValue |
getGraphValue(int streamLookup,
int streamIndexed) |
Set<Integer> |
getNavigableStreams(int streamFrom)
Returns set of streams that the given stream is navigable to.
|
int |
getNumStreams()
Returns the number of streams.
|
boolean |
isNavigableAtAll(int streamFrom,
int streamTo) |
String |
toString() |
public static final int SELF_STREAM
public QueryGraph(int numStreams, ExcludePlanHint optionalHint, boolean nToZeroAnalysis)
numStreams
- - number of streamsoptionalHint
- hint if anynToZeroAnalysis
- indicator for star-evalpublic int getNumStreams()
public boolean addStrictEquals(int streamLeft, String propertyLeft, ExprIdentNode nodeLeft, int streamRight, String propertyRight, ExprIdentNode nodeRight)
streamLeft
- - left hand streampropertyLeft
- - left hand stream propertystreamRight
- - right hand streampropertyRight
- - right hand stream propertynodeLeft
- left exprnodeRight
- right exprpublic boolean isNavigableAtAll(int streamFrom, int streamTo)
public Set<Integer> getNavigableStreams(int streamFrom)
streamFrom
- - from stream numberpublic QueryGraphValue getGraphValue(int streamLookup, int streamIndexed)
public static void fillEquivalentNav(EventType[] typesPerStream, QueryGraph queryGraph)
queryGraph
- - navigablity info between streamsstypesPerStream
- type infopublic void addRangeStrict(int streamNumStart, ExprIdentNode propertyStartExpr, int streamNumEnd, ExprIdentNode propertyEndExpr, int streamNumValue, ExprIdentNode propertyValueExpr, QueryGraphRangeEnum rangeOp)
public void addRelationalOpStrict(int streamIdLeft, ExprIdentNode propertyLeftExpr, int streamIdRight, ExprIdentNode propertyRightExpr, RelationalOpEnum relationalOpEnum)
public void addUnkeyedExpression(int indexedStream, ExprIdentNode indexedProp, ExprNode exprNodeNoIdent)
public void addKeyedExpression(int indexedStream, ExprIdentNode indexedProp, int keyExprStream, ExprNode exprNodeNoIdent)
public void addRangeExpr(int indexedStream, ExprIdentNode indexedProp, ExprNode startNode, Integer optionalStartStreamNum, ExprNode endNode, Integer optionalEndStreamNum, QueryGraphRangeEnum rangeOp)
public void addRelationalOp(int indexedStream, ExprIdentNode indexedProp, Integer keyStreamNum, ExprNode exprNodeNoIdent, RelationalOpEnum relationalOpEnum)
public void addInSetSingleIndex(int testStreamNum, ExprNode testPropExpr, int setStreamNum, ExprNode[] setPropExpr)
public void addInSetSingleIndexUnkeyed(int testStreamNum, ExprNode testPropExpr, ExprNode[] setPropExpr)
public void addInSetMultiIndex(int testStreamNum, ExprNode testPropExpr, int setStreamNum, ExprNode[] setPropExpr)
public void addInSetMultiIndexUnkeyed(ExprNode testPropExpr, int setStreamNum, ExprNode[] setPropExpr)