Class JoinExecutorBase<T>
- java.lang.Object
-
- org.eclipse.rdf4j.common.iteration.AbstractCloseableIteration<E,X>
-
- org.eclipse.rdf4j.common.iteration.LookAheadIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>
-
- org.eclipse.rdf4j.repository.sparql.federation.JoinExecutorBase<T>
-
- All Implemented Interfaces:
AutoCloseable,org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>,org.eclipse.rdf4j.common.iteration.Iteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>
public abstract class JoinExecutorBase<T> extends org.eclipse.rdf4j.common.iteration.LookAheadIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>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 org.eclipse.rdf4j.query.BindingSetbindingsprotected booleanclosedDeprecated.UseAbstractCloseableIteration.isClosed()instead.protected booleanfinishedDeprecated.UseisFinished()instead.protected org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>leftIterprotected static intNEXT_JOIN_IDDeprecated.No replacement, don't use static shared int variables.protected org.eclipse.rdf4j.query.algebra.TupleExprrightArgprotected org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>rightIterprotected QueueCursor<org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>>rightQueue
-
Constructor Summary
Constructors Modifier Constructor Description protectedJoinExecutorBase(org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> leftIter, org.eclipse.rdf4j.query.algebra.TupleExpr rightArg, org.eclipse.rdf4j.query.BindingSet bindings)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description voidaddResult(org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> res)voiddone()TgetNextElement()protected abstract voidhandleBindings()Implementations must implement this method to handle bindings.voidhandleClose()booleanisFinished()Gets whether this executor is finished or aborted.voidrun()voidtoss(Exception e)-
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
-
-
-
-
Field Detail
-
NEXT_JOIN_ID
protected static int NEXT_JOIN_ID
Deprecated.No replacement, don't use static shared int variables.
-
rightArg
protected final org.eclipse.rdf4j.query.algebra.TupleExpr rightArg
-
bindings
protected final org.eclipse.rdf4j.query.BindingSet bindings
-
leftIter
protected final org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> leftIter
-
rightIter
protected volatile org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> rightIter
-
closed
protected volatile boolean closed
Deprecated.UseAbstractCloseableIteration.isClosed()instead.
-
finished
protected volatile boolean finished
Deprecated.UseisFinished()instead.
-
rightQueue
protected final QueueCursor<org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>> rightQueue
-
-
Constructor Detail
-
JoinExecutorBase
protected JoinExecutorBase(org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> leftIter, org.eclipse.rdf4j.query.algebra.TupleExpr rightArg, org.eclipse.rdf4j.query.BindingSet bindings) throws org.eclipse.rdf4j.query.QueryEvaluationException
- Throws:
org.eclipse.rdf4j.query.QueryEvaluationException
-
-
Method Detail
-
run
public final void run()
-
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- Throws:
Exception
-
addResult
public void addResult(org.eclipse.rdf4j.common.iteration.CloseableIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException> res)
-
done
public void done()
-
toss
public void toss(Exception e)
-
getNextElement
public T getNextElement() throws org.eclipse.rdf4j.query.QueryEvaluationException
- Specified by:
getNextElementin classorg.eclipse.rdf4j.common.iteration.LookAheadIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>- Throws:
org.eclipse.rdf4j.query.QueryEvaluationException
-
handleClose
public void handleClose() throws org.eclipse.rdf4j.query.QueryEvaluationException- Overrides:
handleClosein classorg.eclipse.rdf4j.common.iteration.LookAheadIteration<T,org.eclipse.rdf4j.query.QueryEvaluationException>- Throws:
org.eclipse.rdf4j.query.QueryEvaluationException
-
isFinished
public boolean isFinished()
Gets whether this executor is finished or aborted.- Returns:
- true if this executor is finished or aborted
-
-