On Thu, Dec 9, 2021 at 8:41 PM Bossart, Nathan <bossa...@amazon.com> wrote: > I like the idea of having a built-in function that does the bare > minimum to resolve wraparound emergencies, and I think providing some > sort of simple progress indicator (even if rudimentary) would be very > useful.
If John doesn't have time to work on this during the Postgres 15 cycle, and if nobody else picks it up, then we should at least do the bare minimum here: force the use of the failsafe in single user mode (regardless of the age of relfrozenxid/relminmxid, which in general might not be that old in tables where VACUUM might need to do a lot of work). Attached quick and dirty patch shows what this would take. If nothing else, it seems natural to define running any VACUUM in single user mode as an emergency. This is really the least we could do -- it's much better than nothing, but still really lazy^M^M^M^M conservative. I haven't revised the assumption that the user should do a top-level "VACUUM" in databases that can no longer allocate XIDs due to wraparound, despite the fact that we could do far better with moderate effort. Although it might make sense to commit something like the attached as part of a more worked out solution (assuming it didn't fully remove single user mode from the equation, which would be better still). -- Peter Geoghegan
v1-0001-Always-trigger-failsafe-in-single-user-mode.patch
Description: Binary data