Planner Page

Introduction

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. In Minibase, 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 execution.

Design Decisions

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