Tom Lane <tgl@sss.pgh.pa.us> wrote:
> As of 8.4, the typical case is that an open transaction blocks
> deletion of rows that were deleted since the transaction's current
> *statement* started. So this makes a huge difference if you have
> long-running transactions that consist of a series of not-so-long
> statements. It also means that transactions that sit "idle in
> transaction" are not a hazard for VACUUM anymore --- an idle
> transaction doesn't block deletion of anything.
Surely the original version of a row updated or deleted by the
long-running transaction must be left until the long-running
transaction completes; otherwise, how does ROLLBACK work? (The OP did
mention that there were a large number of updates and deletes being
performed by the long-running transaction....)
-Kevin