Relational Operators


The relational operators are implemented as iterators, i.e., they support a get-next-tuple interface.

Selections are implemented as part of file-scan iterators or index-scan iterators; projections (with no selection) are always file-scan iterators. Selections on single relations are combined with projections.

Whenever possible, selections are combined with joins by applying the (non-join) selection conditions to the tuples in the join result. Similarly, any unwanted attributes are projected out as part of the join operators. Each join method defines a new kind of iterator.

Sorting is implemented as a separate iterator, and is used internally by the sort-merge join operator. It can also be used for GROUP-BY, ORDER-BY and DISTINCT.

Design Decisions

Back to the List of Components
Back to the Minibase Home Page