An execution engine operator. Query results are encapsulated using iterators that are self-contained software objects that accept a stream of rows from null or n-ary data sets. The role of an iterator is to process many iterations of a data set across many nodes in serial or parallel. Iterators do not know what the source of the data stream is, if the source is external, such as another iterator, or do know the source if source is internal, such as when the source is produced by the iterator itself. For each iteration of a data set, the iterator applies a predefined behavior to the data set being processed, manipulating the data according to the specification of that iterator. For example, scanning rows from a table on disk can be the behavior of one type of iterator. A key feature of iterators is that regardless of what type the iterator is and what behavior is associated with it, all iterators follow the same mode and have the same external interface. They all open data streams, iteratively read the streams, then process and close the streams.