Interface BinaryExecutableOp
- All Superinterfaces:
ExecutableOperator
,StatsProvider
- All Known Implementing Classes:
BinaryExecutableOpBase
,ExecOpBinaryUnion
,ExecOpHashJoin
,ExecOpHashRJoin
,ExecOpNaiveNestedLoopsJoin
,ExecOpSymmetricHashJoin
A specialization of the
ExecutableOperator
interface that
captures executable operators that consume a pair of two sequences
of solution mappings (which both are batched into several blocks of
solution mappings).-
Method Summary
Modifier and TypeMethodDescriptionint
Returns the preferred block size of input blocks that are passed to this executable operator from the first operand.int
Returns the preferred block size of input blocks that are passed to this executable operator from the second operand.void
processBlockFromChild1
(IntermediateResultBlock input, IntermediateResultElementSink sink, ExecutionContext execCxt) Processes the given input coming from the first operand and sends the produced result elements (if any) to the given sink.void
processBlockFromChild2
(IntermediateResultBlock input, IntermediateResultElementSink sink, ExecutionContext execCxt) Processes the given input coming from the second operand and sends the produced result elements (if any) to the given sink.boolean
Returns true if this operator is implemented based on the assumption that the COMPLETE input from the first operand has been sent to it before input from the second operand is sent.void
wrapUpForChild1
(IntermediateResultElementSink sink, ExecutionContext execCxt) Finishes up any processing related to the input coming from the first operand and sends the remaining result elements (if any) to the given sink.void
wrapUpForChild2
(IntermediateResultElementSink sink, ExecutionContext execCxt) Finishes up any processing related to the input coming from the second operand and sends the remaining result elements (if any) to the given sink.Methods inherited from interface se.liu.ida.hefquin.engine.queryplan.executable.ExecutableOperator
getExceptionsCaughtDuringExecution, getStats
Methods inherited from interface se.liu.ida.hefquin.base.utils.StatsProvider
resetStats
-
Method Details
-
preferredInputBlockSizeFromChild1
int preferredInputBlockSizeFromChild1()Returns the preferred block size of input blocks that are passed to this executable operator from the first operand. A query planner may use this number as an optimization hint but it does not have to use it. -
preferredInputBlockSizeFromChild2
int preferredInputBlockSizeFromChild2()Returns the preferred block size of input blocks that are passed to this executable operator from the second operand. A query planner may use this number as an optimization hint but it does not have to use it. -
requiresCompleteChild1InputFirst
boolean requiresCompleteChild1InputFirst()Returns true if this operator is implemented based on the assumption that the COMPLETE input from the first operand has been sent to it before input from the second operand is sent. An example of an operator that may return true here is a hash join (which first needs to add all result elements from the first operand into its hash table and, then, can start consuming the result elements from the second operand by probing into the hash table). In contrast, a symmetric hash join (which has two hash tables and can consume result elements from both inputs in any order) would return false. Operators that return true here may throw anIllegalStateException
if their methodsprocessBlockFromChild2(IntermediateResultBlock, IntermediateResultElementSink, ExecutionContext)
orwrapUpForChild2(IntermediateResultElementSink, ExecutionContext)
are called beforewrapUpForChild1(IntermediateResultElementSink, ExecutionContext)
has been called. -
processBlockFromChild1
void processBlockFromChild1(IntermediateResultBlock input, IntermediateResultElementSink sink, ExecutionContext execCxt) throws ExecOpExecutionException Processes the given input coming from the first operand and sends the produced result elements (if any) to the given sink.- Throws:
ExecOpExecutionException
-
wrapUpForChild1
void wrapUpForChild1(IntermediateResultElementSink sink, ExecutionContext execCxt) throws ExecOpExecutionException Finishes up any processing related to the input coming from the first operand and sends the remaining result elements (if any) to the given sink. This method will be called only once, after the sub-plan that produces the input coming from the first operand has finished producing its result.- Throws:
ExecOpExecutionException
-
processBlockFromChild2
void processBlockFromChild2(IntermediateResultBlock input, IntermediateResultElementSink sink, ExecutionContext execCxt) throws ExecOpExecutionException Processes the given input coming from the second operand and sends the produced result elements (if any) to the given sink. May throwIllegalStateException
for operators for whichrequiresCompleteChild1InputFirst()
returns true andwrapUpForChild1(IntermediateResultElementSink, ExecutionContext)
has not been called yet.- Throws:
ExecOpExecutionException
-
wrapUpForChild2
void wrapUpForChild2(IntermediateResultElementSink sink, ExecutionContext execCxt) throws ExecOpExecutionException Finishes up any processing related to the input coming from the second operand and sends the remaining result elements (if any) to the given sink. This method will be called only once, after the sub-plan that produces the input coming from the second operand has finished producing its result. May throwIllegalStateException
for operators for whichrequiresCompleteChild1InputFirst()
returns true andwrapUpForChild1(IntermediateResultElementSink, ExecutionContext)
has not been called yet.- Throws:
ExecOpExecutionException
-