[prev] 37 [next]

PostgreSQL Executor (cont)

Much simplified view of PostgreSQL executor:

ExecutePlan(execState, planStateNode, ...) {
   process "before each statement" triggers
   for (;;) {
      tuple = ExecProcNode(planStateNode)
      if (no more tuples) return END
      check tuple validity // MVCC
      if (got a tuple) break
   }
   process "after each statement" triggers
   return tuple
}
...