pg_serial early wraparound

Thomas Munro <thomas.munro@enterprisedb.com>

From: Thomas Munro <thomas.munro@enterprisedb.com>
To: Pg Hackers <pgsql-hackers@postgresql.org>
Date: 2016-11-08T22:07:42Z
Lists: pgsql-hackers

Attachments

Hi hackers,

The SLRU managed by predicate.c can wrap around and overwrite data if
you have more than 1 billion active XIDs.  That's because when SSI was
implemented, slru.c was limited to four digit segment names, which
implied a page limit that wasn't enough for pg_serial to have space
for every possible XID.  We should probably rip that code out, because
SLRUs now support five digit segment names.  Something like the
attached.  I'll post a test script to demonstrate correct wraparound
behaviour around in time for one of the later CFs.

-- 
Thomas Munro
http://www.enterprisedb.com

Commits

  1. Remove obsolete SLRU wrapping and warnings from predicate.c.

  2. Remove incorrect assertion in clog.c

  3. Keep track of transaction commit timestamps

  4. Handle 5-char filenames in SlruScanDirectory