Class UnaryExecutableOpBaseWithoutBlocking

All Implemented Interfaces:
StatsProvider, ExecutableOperator, UnaryExecutableOp
Direct Known Subclasses:
ExecOpBind, ExecOpFilter, ExecOpGlobalToLocal, ExecOpLocalToGlobal

public abstract class UnaryExecutableOpBaseWithoutBlocking extends UnaryExecutableOpBase
Base class for all implementations of UnaryExecutableOp that do not need to process the input solution mappings in batches (the filter operator is a typical example). For such operators, this base class implements the _process(List, IntermediateResultElementSink, ExecutionContext) method in a way that the given list is still consumed in batches, where each batch is processed by the _process(Iterator, int, IntermediateResultElementSink, ExecutionContext) method. Classes that extend this base class should override this method. The purpose of consuming the input list of solution mappings in batches is to increase inter-operator parallelism in the executable plans, in particular in cases in which the input list is huge. If such a huge input list was first processed completely to collect all the output solution mappings for the parent operator in the plan, then the parent operator may idle. Of course, it is also possible to directly send all output solution mappings individually to the parent operator, but that should be avoided to reduce the communication between the threads that run these operators.