Cursor; Iterator; Synchronous pipelines
In general terms, a physical operator is an implementation of a relational operator. For a relational operator, there are many alternative physical operators that implement it, for instance, sort-merge and hash-join provide alternative algorithms for implementing join. The query execution engine provides generic implementations of all physical operators. Typically, each physical operator supports a uniform iterator interface that hides any internal implementation details and allows operators to be combined together. The iterator interface includes the functions: (i) open() that prepares an operator to produce data, (ii) next() that produces an output tuple, and (iii) close() that performs the final bookkeeping.
During query processing, an input query is transformed to a plan to be executed by the query execution engine. An execution plan can be thought of as a dataflow graph where the nodes correspond to the...