エポックは、txid_current()がラップアラウンドしてゼロから始まるのを防ぐために使用されます(または、値0,1,2が内部で再使用されるため、正確には3から始まります)。
したがって、これは簡単に機能します:
Postgresには、txid_current()によって返される値とは異なる内部32ビットxidカウンターがあります。内部xidはラップアラウンドし、ラップアラウンドごとにカウントをリセットします。
一方、txid_current()は64ビット(bigint)を返します。この場合、上位ビットはエポック増分であり、xidラップアラウンドごとに1回発生し、ゼロから開始しません。
したがって、すべてのラップアラウンドでエポックが開始され、txid_current()の上位ビットが変更されて、txidがリセットされないようになります。代わりに、64ビットの制限に達するまでtxidが増加し続けます(私たち全員が死んだ後、非常に遠い将来になることもあります)。