Epoch viene utilizzato per impedire a txid_current() di avvolgersi e iniziare da zero (o per essere esatti da 3 perché i valori 0,1,2 vengono utilizzati internamente).
Quindi funziona così:
Postgres ha un contatore xid interno a 32 bit che è diverso dal valore restituito da txid_current(). Il xid interno esegue il wrapping e reimposta il conteggio ad ogni wraparound.
Il txid_current(), d'altra parte, restituisce 64 bit (bigint) in cui i bit alti sono un incremento di epoch che avviene una volta per xid wrap around e non parte da zero.
Quindi, ad ogni avvolgimento, l'epoca entra in gioco e i bit alti di txid_current() vengono modificati per impedire il ripristino di txids, e invece txids continua ad aumentare fino al raggiungimento del limite di 64 bit (a volte in un futuro molto lontano, molto tempo dopo la nostra morte).