On Fri, Sep 26, 2014 at 3:25 PM, Peter Geoghegan <p...@heroku.com> wrote: > On Fri, Sep 26, 2014 at 3:11 PM, Alvaro Herrera > <alvhe...@2ndquadrant.com> wrote: >> FWIW there are 28 callers of HeapTupleHeaderGetXmin.
> Don't forget about direct callers to HeapTupleHeaderGetRawXmin(), > though. There are plenty of those in tqual.c. Which reminds me: commit 37484ad2 added the opportunistic freezing stuff. To quote the commit message: """ Instead of changing the tuple xmin to FrozenTransactionId, the combination of HEAP_XMIN_COMMITTED and HEAP_XMIN_INVALID, which were previously never set together, is now defined as HEAP_XMIN_FROZEN. A variety of previous proposals to freeze tuples opportunistically before vacuum_freeze_min_age is reached have foundered on the objection that replacing xmin by FrozenTransactionId might hinder debugging efforts when things in this area go awry; this patch is intended to solve that problem by keeping the XID around (but largely ignoring the value to which it is set). """ Why wouldn't the same objection (the objection that the earlier opportunistic freezing ideas stalled on) apply to directly setting tuple xmin to InvalidTransactionId? You get the idea, though: Making promise tuples possible to release early (before transaction end) by setting tuple xmin to InvalidTransactionId is certainly hard to get right, and seems dangerous. -- Peter Geoghegan -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers