Class HashJoin
java.lang.Object
org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration<E,X>
org.eclipse.rdf4j.common.iteration.LookAheadIteration<T,QueryEvaluationException>
org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase<T>
org.eclipse.rdf4j.federated.evaluation.join.JoinExecutorBase<BindingSet>
org.eclipse.rdf4j.federated.evaluation.join.HashJoin
- All Implemented Interfaces:
AutoCloseable
,Runnable
,CloseableIteration<BindingSet,
,QueryEvaluationException> Iteration<BindingSet,
,QueryEvaluationException> ParallelExecutor<BindingSet>
Operator for a hash join of tuple expressions.
- Since:
- 6.0
- Author:
- Andreas Schwarte
-
Field Summary
Fields inherited from class org.eclipse.rdf4j.federated.evaluation.join.JoinExecutorBase
bindings, joinVars, leftIter, rightArg
Fields inherited from class org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase
evaluationThread, executorId, finished, log, NEXT_EXECUTOR_ID, queryInfo, rightIter, rightQueue, strategy
-
Constructor Summary
ConstructorDescriptionHashJoin
(FederationEvalStrategy strategy, CloseableIteration<BindingSet, QueryEvaluationException> leftIter, TupleExpr rightArg, QueryEvaluationStep rightPrepared, Set<String> joinVars, BindingSet bindings, QueryInfo queryInfo) -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Implementations must implement this method to handle bindings.protected void
performJoin
(Collection<BindingSet> leftBlock, Collection<BindingSet> rightBlock, Set<String> joinVariables, Collection<String> freeVariablesRight) Perform the join and add the result to this cursor.Methods inherited from class org.eclipse.rdf4j.federated.evaluation.join.JoinExecutorBase
getExecutorType, getJoinVars, handleClose, performExecution, setJoinVars
Methods inherited from class org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase
addResult, checkTimeout, done, getDisplayId, getId, getNextElement, getQueryInfo, isFinished, run, toss, toString
Methods inherited from class org.eclipse.rdf4j.common.iteration.LookAheadIteration
hasNext, next, remove
Methods inherited from class org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration
close, isClosed
-
Constructor Details
-
HashJoin
public HashJoin(FederationEvalStrategy strategy, CloseableIteration<BindingSet, QueryEvaluationException> leftIter, TupleExpr rightArg, QueryEvaluationStep rightPrepared, Set<String> joinVars, BindingSet bindings, QueryInfo queryInfo) throws QueryEvaluationException- Throws:
QueryEvaluationException
-
-
Method Details
-
handleBindings
Description copied from class:JoinExecutorBase
Implementations must implement this method to handle bindings. Use the following as a templatewhile (!closed && leftIter.hasNext()) { // your code }
and add results to rightQueue. Note that addResult() is implemented synchronized and thus thread safe. In case you can guarantee sequential access, it is also possible to directly access rightQueue Note that the implementation must block until the entire join is executed.- Specified by:
handleBindings
in classJoinExecutorBase<BindingSet>
- Throws:
Exception
-
performJoin
protected void performJoin(Collection<BindingSet> leftBlock, Collection<BindingSet> rightBlock, Set<String> joinVariables, Collection<String> freeVariablesRight) Perform the join and add the result to this cursor.See
join(Collection, Collection, Set, Collection)
andParallelExecutorBase.addResult(CloseableIteration)
.- Parameters:
leftBlock
-rightBlock
-joinVariables
-freeVariablesRight
-
-