Andres Freund <andres(at)2ndquadrant(dot)com> writes:
> If any *single* full table vacuum after that calls
> vac_update_datfrozenxid() which just needs its datfrozenxid advance by
> one we're in trouble: vac_truncate_clog() will be called with minMulti =
> GetOldestMultiXactId().
Uh, no, the cutoff is GetOldestMultiXactId minus
vacuum_multixact_freeze_min_age (or the autovac equivalent).
See vacuum_set_xid_limits.
regards, tom lane