The
iterator model. Each operation is
implemented by 3 functions:
Open: sets up the data structures and performs
initializations
GetNext: returns the the next tuple of the result.
Close: ends the operations. Cleans up the data
structures.
Enables pipelining!
Contrast with data-driven materialize model.
Sometimes its the same (e.g., sorted scan).