summaryrefslogtreecommitdiff
path: root/src/backend/parser
diff options
context:
space:
mode:
authorRobert Haas2016-06-17 19:48:57 +0000
committerRobert Haas2016-06-17 19:48:57 +0000
commitede62e56fbe809baa1a7bc3873d82f12ffe7540b (patch)
treebed6a8e258dc9148b2141b0a8e112a0b864bc283 /src/backend/parser
parent20eb2731b7775f3381939d2667b6aa8ba62ab2c5 (diff)
Add VACUUM (DISABLE_PAGE_SKIPPING) for emergencies.
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.
Diffstat (limited to 'src/backend/parser')
-rw-r--r--src/backend/parser/gram.y10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/backend/parser/gram.y b/src/backend/parser/gram.y
index 2c950f937c4..edf4516dacd 100644
--- a/src/backend/parser/gram.y
+++ b/src/backend/parser/gram.y
@@ -9370,6 +9370,16 @@ vacuum_option_elem:
| VERBOSE { $$ = VACOPT_VERBOSE; }
| FREEZE { $$ = VACOPT_FREEZE; }
| FULL { $$ = VACOPT_FULL; }
+ | IDENT
+ {
+ if (strcmp($1, "disable_page_skipping") == 0)
+ $$ = VACOPT_DISABLE_PAGE_SKIPPING;
+ else
+ ereport(ERROR,
+ (errcode(ERRCODE_SYNTAX_ERROR),
+ errmsg("unrecognized VACUUM option \"%s\"", $1),
+ parser_errposition(@1)));
+ }
;
AnalyzeStmt: