Simon Riggs <simon(at)2ndquadrant(dot)com> 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.
regards, tom lane