Class ExecOpParallelMultiwayLeftJoin
java.lang.Object
se.liu.ida.hefquin.engine.queryplan.executable.impl.ops.BaseForExecOps
se.liu.ida.hefquin.engine.queryplan.executable.impl.ops.UnaryExecutableOpBase
se.liu.ida.hefquin.engine.queryplan.executable.impl.ops.ExecOpParallelMultiwayLeftJoin
- All Implemented Interfaces:
StatsProvider,ExecutableOperator,UnaryExecutableOp
TODO: Provide a description of the algorithm implemented by this class.
-
Nested Class Summary
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final List<SolutionMappingsIndex>protected final ExpectedVariablesprotected final List<org.apache.jena.sparql.core.Var>protected final List<LogicalOpRequest<?,?>> Fields inherited from class se.liu.ida.hefquin.engine.queryplan.executable.impl.ops.UnaryExecutableOpBase
timeAtCurrentProcStartFields inherited from class se.liu.ida.hefquin.engine.queryplan.executable.impl.ops.BaseForExecOps
collectExceptions -
Constructor Summary
ConstructorsConstructorDescriptionExecOpParallelMultiwayLeftJoin(boolean collectExceptions, ExpectedVariables inputVarsFromNonOptionalPart, List<LogicalOpRequest<?, ?>> optionalParts) ExecOpParallelMultiwayLeftJoin(boolean collectExceptions, ExpectedVariables inputVarsFromNonOptionalPart, LogicalOpRequest<?, ?>... optionalParts) -
Method Summary
Modifier and TypeMethodDescriptionprotected void_concludeExecution(IntermediateResultElementSink sink, ExecutionContext execCxt) Implementations of this function need to conclude the execution of this operator and send the remaining result elements (if any) to the given sink.protected void_process(IntermediateResultBlock input, IntermediateResultElementSink sink, ExecutionContext execCxt) Implementations of this function need to process the given input block and send the produced result elements (if any) to the given sink.protected IntermediateResultBlockPreprocess the givenIntermediateResultBlockto identify the input solution mappings that do not need to be considered during the parallel phase of the algorithm (because they have bindings for the join variables such that there already was an earlier input solution mapping with the same bindings).protected Set<SolutionMapping>merge(SolutionMapping inputSol) protected voidmergePhase(Iterable<SolutionMapping> inputSolMaps, IntermediateResultElementSink sink) protected voidparallelPhase(IntermediateResultBlock inputForParallelProcess, ExecutionContext execCxt) intReturns the preferred block size of input blocks that are passed to this executable operator.Methods inherited from class se.liu.ida.hefquin.engine.queryplan.executable.impl.ops.UnaryExecutableOpBase
concludeExecution, createStats, getStats, process, resetStatsMethods inherited from class se.liu.ida.hefquin.engine.queryplan.executable.impl.ops.BaseForExecOps
getExceptionsCaughtDuringExecution, recordExceptionCaughtDuringExecutionMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface se.liu.ida.hefquin.engine.queryplan.executable.ExecutableOperator
getExceptionsCaughtDuringExecution
-
Field Details
-
inputVarsFromNonOptionalPart
-
optionalParts
-
indexes
-
joinVars
-
bindingsForJoinVariable
-
-
Constructor Details
-
ExecOpParallelMultiwayLeftJoin
public ExecOpParallelMultiwayLeftJoin(boolean collectExceptions, ExpectedVariables inputVarsFromNonOptionalPart, LogicalOpRequest<?, ?>... optionalParts) -
ExecOpParallelMultiwayLeftJoin
public ExecOpParallelMultiwayLeftJoin(boolean collectExceptions, ExpectedVariables inputVarsFromNonOptionalPart, List<LogicalOpRequest<?, ?>> optionalParts)
-
-
Method Details
-
preferredInputBlockSize
public int preferredInputBlockSize()Description copied from interface:UnaryExecutableOpReturns the preferred block size of input blocks that are passed to this executable operator. A query planner may use this number as an optimization hint but it does not have to use it. -
_process
protected void _process(IntermediateResultBlock input, IntermediateResultElementSink sink, ExecutionContext execCxt) throws ExecOpExecutionException Description copied from class:UnaryExecutableOpBaseImplementations of this function need to process the given input block and send the produced result elements (if any) to the given sink. If an exception occurs while processing the input block, this exception needs to either be collected or be thrown, depending on whetherBaseForExecOps.collectExceptionsis set totrue.- Specified by:
_processin classUnaryExecutableOpBase- Throws:
ExecOpExecutionException
-
determineInputForParallelProcess
Preprocess the givenIntermediateResultBlockto identify the input solution mappings that do not need to be considered during the parallel phase of the algorithm (because they have bindings for the join variables such that there already was an earlier input solution mapping with the same bindings). TheIntermediateResultBlockreturned by this function contains only the solution mappings from the given block that need to be considered. -
parallelPhase
protected void parallelPhase(IntermediateResultBlock inputForParallelProcess, ExecutionContext execCxt) throws ExecOpExecutionException - Throws:
ExecOpExecutionException
-
mergePhase
protected void mergePhase(Iterable<SolutionMapping> inputSolMaps, IntermediateResultElementSink sink) -
merge
-
_concludeExecution
protected void _concludeExecution(IntermediateResultElementSink sink, ExecutionContext execCxt) throws ExecOpExecutionException Description copied from class:UnaryExecutableOpBaseImplementations of this function need to conclude the execution of this operator and send the remaining result elements (if any) to the given sink. If an exception occurs during this process, then this exception needs to either be collected or be thrown, depending on whetherBaseForExecOps.collectExceptionsis set totrue.- Specified by:
_concludeExecutionin classUnaryExecutableOpBase- Throws:
ExecOpExecutionException
-