> > Unfortunately, session 3 with just SELECT * FROM foo will also wait
> > for session 1 & session 2 commit.
>
> Session 3 would wait for session 2 in any case, no?
But now it will wait longer - for the duration of session 1' transaction.
> This is all irrelevant unless someone can make a convincing case that
> it's safe to release read locks early. In the words of the ancient
> sage, "I can make this program arbitrarily fast ... if it doesn't have
> to give the right answer". I have already pointed out several cases
> where releasing locks early is clearly *not* safe. I don't think I
> need to produce more examples. The burden of proof is on the other
> side to show how it can be done safely (and with an amount of work
> that's reasonable for 7.1, which is not too darn much at this point).
Agreed - no other way now.
Vadim