Skip to content

Commit eb1376a

Browse files
committed
JoinVisitor needs to be possible to extend for developers who extend RDF4J
1 parent c1d042b commit eb1376a

File tree

1 file changed

+14
-13
lines changed
  • core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/optimizer

1 file changed

+14
-13
lines changed

core/queryalgebra/evaluation/src/main/java/org/eclipse/rdf4j/query/algebra/evaluation/optimizer/QueryJoinOptimizer.java

+14-13
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@
3434
import org.eclipse.rdf4j.query.QueryEvaluationException;
3535
import org.eclipse.rdf4j.query.algebra.AbstractQueryModelNode;
3636
import org.eclipse.rdf4j.query.algebra.BindingSetAssignment;
37-
import org.eclipse.rdf4j.query.algebra.Extension;
3837
import org.eclipse.rdf4j.query.algebra.Join;
3938
import org.eclipse.rdf4j.query.algebra.LeftJoin;
4039
import org.eclipse.rdf4j.query.algebra.StatementPattern;
@@ -100,7 +99,11 @@ public void optimize(TupleExpr tupleExpr, Dataset dataset, BindingSet bindings)
10099
tupleExpr.visit(new JoinVisitor(statistics, trackResultSize, tripleSource));
101100
}
102101

103-
private static class JoinVisitor extends AbstractSimpleQueryModelVisitor<RuntimeException> {
102+
/**
103+
* This can be extended by subclasses to allow for adjustments to the optimization process.
104+
*/
105+
@SuppressWarnings("InnerClassMayBeStatic")
106+
protected class JoinVisitor extends AbstractSimpleQueryModelVisitor<RuntimeException> {
104107

105108
private final EvaluationStatistics statistics;
106109
private final TripleSource tripleSource;
@@ -405,16 +408,6 @@ protected <M extends Map<Var, Integer>> void fillVarFreqMap(List<Var> varList, M
405408
}
406409
}
407410

408-
protected List<Extension> getExtensions(List<TupleExpr> expressions) {
409-
List<Extension> extensions = new ArrayList<>();
410-
for (TupleExpr expr : expressions) {
411-
if (expr instanceof Extension) {
412-
extensions.add((Extension) expr);
413-
}
414-
}
415-
return extensions;
416-
}
417-
418411
private List<TupleExpr> getExtensionTupleExprs(List<TupleExpr> expressions) {
419412
if (expressions.isEmpty()) {
420413
return List.of();
@@ -436,6 +429,14 @@ private List<TupleExpr> getExtensionTupleExprs(List<TupleExpr> expressions) {
436429
return extensions;
437430
}
438431

432+
/**
433+
* This method returns all direct sub-selects in the given list of expressions.
434+
* <p>
435+
* This method is meant to be possible to override by subclasses.
436+
*
437+
* @param expressions
438+
* @return
439+
*/
439440
protected List<TupleExpr> getSubSelects(List<TupleExpr> expressions) {
440441
if (expressions.isEmpty()) {
441442
return List.of();
@@ -795,7 +796,7 @@ private void mergeJoinForCrossJoin(Deque<TupleExpr> orderedJoinArgs, Set<Var> su
795796
}
796797
}
797798

798-
private static class StatementPatternVarCollector extends StatementPatternVisitor {
799+
private class StatementPatternVarCollector extends StatementPatternVisitor {
799800

800801
private final TupleExpr tupleExpr;
801802
private List<Var> vars;

0 commit comments

Comments
 (0)