On 2013-12-16 17:43:37 -0300, Alvaro Herrera wrote:
> Alvaro Herrera wrote:
>
> > This POC patch changes the two places in HeapTupleSatisfiesUpdate that
> > need to be touched for this to work. This is probably too simplistic,
> > in that I make the involved cases return HeapTupleBeingUpdated without
> > checking that there actually are remote lockers, which is the case of
> > concern. I'm not yet sure if this is the final form of the fix, or
> > instead we should expand the Multi (in the cases where there is a multi)
> > and verify whether any lockers are transactions other than the current
> > one. As is, nothing seems to break, but I think that's probably just
> > chance and should not be relied upon.
>
> After playing with this, I think the reason this seems to work without
> fail is that all callers of HeapTupleSatisfiesUpdate are already
> prepared to deal with the case where HeapTupleBeingUpdated is returned
> but there is no actual transaction that would block the operation.
> So I think the proposed patch is okay, barring a few more comments.
Are you sure? the various wait/nowait cases don't seem to handle that
correctly.
Greetings,
Andres Freund
-- Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services