I don't think RecentGlobalXmin is good enough here:

!                       /*
!                        * We would like to set an accurate latestRemovedXid, 
but there
!                        * is no easy way of obtaining a useful value. So we 
use the
!                        * probably far too conservative value of 
RecentGlobalXmin instead.
!                        */
!                       xlrec_delete.latestRemovedXid = RecentGlobalXmin;
!                       rdata[0].data = (char *) &xlrec_delete;
!                       rdata[0].len = SizeOfBtreeDelete;

RecentGlobalXmin is just a hint, it lags behind the real oldest xmin that GetOldestXmin() would return. If another backend has a more recent RecentGlobalXmin value, and has killed more recent tuples on the page, the latestRemovedXid written here is too old.

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to