Add VACUUM (DISABLE_PAGE_SKIPPING) for emergencies

Enterprise / PostgreSQL - Robert Haas [postgresql.org] - 17 June 2016 14:48 UTC

If you really want to vacuum every single page in the relation, regardless of apparent visibility status or anything else, you can use this option. In previous releases, this behavior could be achieved using VACUUM (FREEZE), but because we can now recognize all-frozen pages as not needing to be frozen again, that no longer works. There should be no need for routine use of this option, but maybe bugs or disaster recovery will necessitate its use.

Patch by me, reviewed by Andres Freund.

ede62e5 Add VACUUM (DISABLE_PAGE_SKIPPING) for emergencies.
doc/src/sgml/ref/vacuum.sgml | 21 +++++++-
src/backend/commands/vacuum.c | 9 ++++
src/backend/commands/vacuumlazy.c | 97 +++++++++++++++++++---------------
src/backend/parser/gram.y | 10 ++++
src/include/nodes/parsenodes.h | 3 +-
src/test/regress/expected/vacuum.out | 1 +
src/test/regress/sql/vacuum.sql | 2 +
7 files changed, 97 insertions(+), 46 deletions(-)

Upstream: git.postgresql.org


  • Share