Class QueryJoinOptimizer.JoinVisitor
- java.lang.Object
-
- org.eclipse.rdf4j.query.algebra.helpers.AbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
- org.eclipse.rdf4j.query.algebra.evaluation.optimizer.QueryJoinOptimizer.JoinVisitor
-
- All Implemented Interfaces:
QueryModelVisitor<java.lang.RuntimeException>
- Enclosing class:
- QueryJoinOptimizer
private static class QueryJoinOptimizer.JoinVisitor extends AbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classQueryJoinOptimizer.JoinVisitor.StatementPatternVarCollector
-
Field Summary
Fields Modifier and Type Field Description (package private) java.util.Set<java.lang.String>boundVarsprivate EvaluationStatisticsstatistics
-
Constructor Summary
Constructors Modifier Constructor Description protectedJoinVisitor(EvaluationStatistics statistics, boolean trackResultSize)
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description private intcountConstantVars(java.util.List<Var> vars)protected <M extends java.util.Map<Var,java.lang.Integer>>
voidfillVarFreqMap(java.util.List<Var> varList, M varFreqMap)protected java.util.List<Extension>getExtensions(java.util.List<TupleExpr> expressions)private java.util.List<TupleExpr>getExtensionTupleExprs(java.util.List<TupleExpr> expressions)protected intgetForeignVarFreq(java.util.List<Var> ownUnboundVars, java.util.Map<Var,java.lang.Integer> varFreqMap)protected <L extends java.util.List<TupleExpr>>
LgetJoinArgs(TupleExpr tupleExpr, L joinArgs)private TupleExprgetNextSubselect(java.util.List<TupleExpr> currentList, java.util.List<TupleExpr> joinArgs)protected java.util.List<Var>getStatementPatternVars(TupleExpr tupleExpr)protected java.util.List<TupleExpr>getSubSelects(java.util.List<TupleExpr> expressions)protected doublegetTupleExprCost(TupleExpr tupleExpr, java.util.Map<TupleExpr,java.lang.Double> cardinalityMap, java.util.Map<TupleExpr,java.util.List<Var>> varsMap, java.util.Map<Var,java.lang.Integer> varFreqMap)protected java.util.List<Var>getUnboundVars(java.lang.Iterable<Var> vars)Deprecated, for removal: This API element is subject to removal in a future version.protected java.util.List<Var>getUnboundVars(java.util.List<Var> vars)voidmeet(Join node)voidmeet(LeftJoin leftJoin)voidmeet(StatementPattern node)private voidoptimizePriorityJoin(java.util.Set<java.lang.String> origBoundVars, TupleExpr join)protected java.util.List<TupleExpr>reorderSubselects(java.util.List<TupleExpr> subSelects)Determines an optimal ordering of subselect join arguments, based on variable bindings.protected TupleExprselectNextTupleExpr(java.util.List<TupleExpr> expressions, java.util.Map<TupleExpr,java.lang.Double> cardinalityMap, java.util.Map<TupleExpr,java.util.List<Var>> varsMap, java.util.Map<Var,java.lang.Integer> varFreqMap)Selects from a list of tuple expressions the next tuple expression that should be evaluated.-
Methods inherited from class org.eclipse.rdf4j.query.algebra.helpers.AbstractSimpleQueryModelVisitor
meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meet, meetBinaryTupleOperator, meetBinaryValueOperator, meetCompareSubQueryValueOperator, meetNAryValueOperator, meetOther, meetSubQueryValueOperator, meetUnaryTupleOperator, meetUnaryValueOperator, meetUnsupported, meetUpdateExpr
-
-
-
-
Field Detail
-
statistics
private final EvaluationStatistics statistics
-
boundVars
java.util.Set<java.lang.String> boundVars
-
-
Constructor Detail
-
JoinVisitor
protected JoinVisitor(EvaluationStatistics statistics, boolean trackResultSize)
-
-
Method Detail
-
meet
public void meet(LeftJoin leftJoin)
- Specified by:
meetin interfaceQueryModelVisitor<java.lang.RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
meet
public void meet(StatementPattern node) throws java.lang.RuntimeException
- Specified by:
meetin interfaceQueryModelVisitor<java.lang.RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<java.lang.RuntimeException>- Throws:
java.lang.RuntimeException
-
optimizePriorityJoin
private void optimizePriorityJoin(java.util.Set<java.lang.String> origBoundVars, TupleExpr join)
-
meet
public void meet(Join node)
- Specified by:
meetin interfaceQueryModelVisitor<java.lang.RuntimeException>- Overrides:
meetin classAbstractSimpleQueryModelVisitor<java.lang.RuntimeException>
-
getJoinArgs
protected <L extends java.util.List<TupleExpr>> L getJoinArgs(TupleExpr tupleExpr, L joinArgs)
-
fillVarFreqMap
protected <M extends java.util.Map<Var,java.lang.Integer>> void fillVarFreqMap(java.util.List<Var> varList, M varFreqMap)
-
getExtensions
protected java.util.List<Extension> getExtensions(java.util.List<TupleExpr> expressions)
-
getExtensionTupleExprs
private java.util.List<TupleExpr> getExtensionTupleExprs(java.util.List<TupleExpr> expressions)
-
getSubSelects
protected java.util.List<TupleExpr> getSubSelects(java.util.List<TupleExpr> expressions)
-
reorderSubselects
protected java.util.List<TupleExpr> reorderSubselects(java.util.List<TupleExpr> subSelects)
Determines an optimal ordering of subselect join arguments, based on variable bindings. An ordering is considered optimal if for each consecutive element it holds that first of all its shared variables with all previous elements is maximized, and second, the union of all its variables with all previous elements is maximized.Example: reordering
[f] [a b c] [e f] [a d] [b e]
should result in:
[a b c] [a d] [b e] [e f] [f]
- Parameters:
subSelects- the original ordering of expressions- Returns:
- the optimized ordering of expressions
-
getNextSubselect
private TupleExpr getNextSubselect(java.util.List<TupleExpr> currentList, java.util.List<TupleExpr> joinArgs)
-
selectNextTupleExpr
protected TupleExpr selectNextTupleExpr(java.util.List<TupleExpr> expressions, java.util.Map<TupleExpr,java.lang.Double> cardinalityMap, java.util.Map<TupleExpr,java.util.List<Var>> varsMap, java.util.Map<Var,java.lang.Integer> varFreqMap)
Selects from a list of tuple expressions the next tuple expression that should be evaluated. This method selects the tuple expression with highest number of bound variables, preferring variables that have been bound in other tuple expressions over variables with a fixed value.
-
getTupleExprCost
protected double getTupleExprCost(TupleExpr tupleExpr, java.util.Map<TupleExpr,java.lang.Double> cardinalityMap, java.util.Map<TupleExpr,java.util.List<Var>> varsMap, java.util.Map<Var,java.lang.Integer> varFreqMap)
-
countConstantVars
private int countConstantVars(java.util.List<Var> vars)
-
getUnboundVars
@Deprecated(forRemoval=true, since="4.1.0") protected java.util.List<Var> getUnboundVars(java.lang.Iterable<Var> vars)Deprecated, for removal: This API element is subject to removal in a future version.
-
-