Re: The vacuum-ignore-vacuum patch - Mailing list pgsql-hackers

From Tom Lane
Subject Re: The vacuum-ignore-vacuum patch
Date
Msg-id 19986.1154094458@sss.pgh.pa.us
Whole thread Raw
In response to Re: The vacuum-ignore-vacuum patch  (Bruce Momjian <bruce@momjian.us>)
Responses Re: The vacuum-ignore-vacuum patch  (Bruce Momjian <bruce@momjian.us>)
List pgsql-hackers
Bruce Momjian <bruce@momjian.us> writes:
> Good question.  Imagine you have a serializable transaction like
> pg_dump, and then you have lots of newer transactions.  If pg_dump is
> xid=12, and all the new transactions start at xid=30, any row created
> and expired between 12 and 30 can be removed because they are not
> visible.

This reasoning is bogus.

It would probably be safe for pg_dump because it's a read-only
operation, but it fails badly if the serializable transaction is trying
to do updates.  An update needs to chase the chain of newer versions of
the row forward from the version that's visible to the xact's
serializable snapshot, to see if anyone has committed a newer version.
Your proposal would remove elements of that chain, thereby possibly
allowing the serializable xact to conclude it may update the tuple
when it should have given an error.
        regards, tom lane


pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: The vacuum-ignore-vacuum patch
Next
From: "Pavel Stehule"
Date:
Subject: plperl and refcursor?