On Wed, Mar 7, 2012 at 2:05 AM, Dan Ports <drkp@csail.mit.edu> wrote:
> While mucking around in src/backend/utils/time/tqual.c today, I noticed
> the following comment attached to HeapTupleSatisfiesNow:
>
> * mao says 17 march 1993: the tests in this routine are correct;
> * if you think they're not, you're wrong, and you should think
> * about it again. i know, it happened to me. we don't need to
> * check commit time against the start time of this transaction
> * because 2ph locking protects us from doing the wrong thing.
> * if you mess around here, you'll break serializability. the only
> * problem with this code is that it does the wrong thing for system
> * catalog updates, because the catalogs aren't subject to 2ph, so
> * the serializability guarantees we provide don't extend to xacts
> * that do catalog accesses. this is unfortunate, but not critical.
>
> Much as I hate to disturb a comment just before its 19th birthday, the
> bit about two-phase locking and serializability hasn't been correct
> since around 1999 (when MVCC was added). :-)
There is much wisdom there and much wisdom in leaving ancient warnings
as we find them.
Are these the words you object to?
"we don't need to
> * check commit time against the start time of this transaction
> * because 2ph locking protects us from doing the wrong thing."
--
Simon Riggs http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services