Class JoinExecutorBase<T>
- java.lang.Object
-
- org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration<E>
-
- org.eclipse.rdf4j.common.iteration.LookAheadIteration<T>
-
- org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase<T>
-
- org.eclipse.rdf4j.federated.evaluation.join.JoinExecutorBase<T>
-
- All Implemented Interfaces:
AutoCloseable,Runnable,Iterator<T>,CloseableIteration<T>,ParallelExecutor<T>
- Direct Known Subclasses:
ControlledWorkerJoin,ControlledWorkerLeftJoin,HashJoin,SynchronousJoin
public abstract class JoinExecutorBase<T> extends ParallelExecutorBase<T>
Base class for any join parallel join executor. Note that this class extendsLookAheadIterationand thus any implementation of this class is applicable for pipelining when used in a different thread (access to shared variables is synchronized).- Author:
- Andreas Schwarte
-
-
Field Summary
Fields Modifier and Type Field Description protected BindingSetbindingsprotected Set<String>joinVarsprotected CloseableIteration<T>leftIterprotected TupleExprrightArg-
Fields inherited from class org.eclipse.rdf4j.federated.evaluation.concurrent.ParallelExecutorBase
evaluationThread, executorId, finished, log, NEXT_EXECUTOR_ID, queryInfo, rightIter, rightQueue, strategy
-
-
Constructor Summary
Constructors Constructor Description JoinExecutorBase(FederationEvalStrategy strategy, CloseableIteration<T> leftIter, TupleExpr rightArg, BindingSet bindings, QueryInfo queryInfo)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected StringgetExecutorType()Set<String>getJoinVars()protected abstract voidhandleBindings()Implementations must implement this method to handle bindings.voidhandleClose()Called byAbstractCloseableIteration.close()when it is called for the first time.protected voidperformExecution()Perform the parallel execution.voidsetJoinVars(Set<String> joinVars)Set the join variables-
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
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.rdf4j.common.iteration.CloseableIteration
stream
-
Methods inherited from interface java.util.Iterator
forEachRemaining
-
-
-
-
Field Detail
-
rightArg
protected final TupleExpr rightArg
-
bindings
protected final BindingSet bindings
-
leftIter
protected CloseableIteration<T> leftIter
-
-
Constructor Detail
-
JoinExecutorBase
public JoinExecutorBase(FederationEvalStrategy strategy, CloseableIteration<T> leftIter, TupleExpr rightArg, BindingSet bindings, QueryInfo queryInfo) throws QueryEvaluationException
- Throws:
QueryEvaluationException
-
-
Method Detail
-
performExecution
protected final void performExecution() throws ExceptionDescription copied from class:ParallelExecutorBasePerform the parallel execution.Note that this method must block until the execution is completed.
- Specified by:
performExecutionin classParallelExecutorBase<T>- Throws:
Exception
-
handleBindings
protected abstract void handleBindings() throws ExceptionImplementations 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.- Throws:
Exception
-
handleClose
public void handleClose() throws QueryEvaluationExceptionDescription copied from class:AbstractCloseableIterationCalled byAbstractCloseableIteration.close()when it is called for the first time. This method is only called once on each iteration. By default, this method does nothing.- Overrides:
handleClosein classParallelExecutorBase<T>- Throws:
QueryEvaluationException
-
getExecutorType
protected String getExecutorType()
- Overrides:
getExecutorTypein classParallelExecutorBase<T>- Returns:
- the executor type, e.g. "Join". Default "Executor"
-
getJoinVars
public Set<String> getJoinVars()
- Returns:
- the join variables, might be
nullif unknown in the concrete implementation
-
-