Robert Haas <robertmh...@gmail.com> writes: > I spent a significant chunk of today burning through roughly 2^31 XIDs > just to see what would happen. ...
> 2. Once you get to the point where you start to emit errors when > attempting to assign an XID, you can still run plain old VACUUM > because it doesn't consume an XID ... except that if it tries to > truncate the relation, then it will take AccessExclusiveLock, which > has to be logged, which forces an XID assignment, which makes VACUUM > fail. Yeah. I tripped over that earlier this week in connection with the REINDEX business: taking an AEL only forces XID assignment when wal_level is above "minimal", so it's easy to come to the wrong conclusions depending on your test environment. I suspect that previous testing of wraparound behavior (yes there has been some) didn't see this effect because the default wal_level didn't use to cause it to happen. But anyway, it's there now and I agree we'd better do something about it. My brain is too fried from release-note-writing to have any trustworthy opinion right now about whether your patch is the best way. regards, tom lane