On Tue, 2007-12-11 at 10:19 -0500, Tom Lane wrote:
> Simon Riggs <[EMAIL PROTECTED]> writes:
> > This command will place a ShareLock (only) on the table, preventing
> > anybody from writing to the table while we freeze it. The ShareLock is
> > incompatible with any transaction that has written to the table, so when
> > we acquire the lock all writers to the table will have completed. We
> > then run the equivalent of a VACUUM FREEZE which will then be able to
> > freeze *all* rows in one pass (rather than all except the most
> > recent).
> 
> This breaks MVCC.  The fact that a transaction has completed is not
> license to discard tuple xmin immediately.

Yeh, agreed. I knew I'd solved that bit, so I was focused elsewhere.
Sloppy, so apologies.

I was originally planning to put a wait in at the beginning, as is used
by CREATE INDEX CONCURRENTLY, though I prefer Greg's variant because
it's more forgiving.

-- 
  Simon Riggs
  2ndQuadrant  http://www.2ndQuadrant.com


---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to