Replication

catalog_xmin

Also called: catalog xmin horizon

catalog_xmin is the oldest transaction id whose system catalog row versions must still be retained. Logical replication slots hold it back because logical decoding needs the catalog as it looked when each change was made, to interpret the WAL correctly. You can see it on a slot in pg_replication_slots.

What this means

The oldest transaction whose system-catalog row versions still have to be kept around. Logical slots hold this back because decoding old WAL needs the catalog exactly as it looked when each change happened. It shows up per slot, and a stuck slot pinning it is a classic cause of catalog bloat.

Why it matters operationally

It's the lever behind failover-safe logical slots: hot_standby_feedback propagates a standby's catalog_xmin to the primary so vacuum doesn't remove catalog rows the synced slot still needs. The cost is that a held-back horizon can increase catalog bloat.

Related & next

Mentioned from

← All glossary terms · GUC reference · Error catalog