The task of the runtime plan interpreter is to walk the optimizer's plan tree
recursively and to construct a tree of
iterators. An iterator is an
an object that (naturally!) iterates over a collection of input
tuples and produces a collection of output tuples.
all the relational operators and access methods are
special cases of iterators.
The planner is thus basically a "translator" from a plan tree, produced
by the optimizer, to an iterator tree, which is the basis of runtime
The iterator object was designed to provide a
consistent get_next interface
to link the output of one operator to another. While scans
of heap files are identical in task to that of a file scan iterator, scans
of a relation using an index are different: they must scan the index and
retrieve the tuple from the heap file. Such details can be hidden,
when appropriate, through the use of the iterator abstraction.
Not all iterators are created by the planner. Some are created by other
iterators. Go to the iterator page for a
more complete description.
Click here for the public interface.
Back to the Minibase Home Page
Back to the Components Page