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