Hopefully this won't digress into a top-to-bottom discussion of all
aspects of implementing serializable transactions again, but I have
what I hope is a quick question.
The "easy" part of implementing SIREAD level predicate locking
should be to get a lock on each visible tuple which is read in the
execution of the plan. Is it safe to assume that ExecStoreTuple is
used for any such access? It's obviously too low level to be the
right place to check whether we're in serializable mode and take out
locks, but if I look at the callers (like IndexNext or TidNext)
which use a valid buffer in a call to ExecStoreTuple, should I be
catching all the tuples read from the heap?
Thanks,
-Kevin