On Fri, Feb 20, 2015 at 5:41 AM, Peter Eisentraut wrote: > That's cool if you want to add those assertions, but please make them > separate statements each, like > > Assert(vacstmt->options & (VACOPT_FULL | VACOPT_FREEZE) || > vacstmt->freeze_min_age == -1); > Assert(vacstmt->options & (VACOPT_FULL | VACOPT_FREEZE) || > vacstmt->freeze_table_age == -1); > ... > > Besides being more readable, this will give you more useful output if > the assertion fails.
It makes sense. When a manual VACUUM FREEZE without options specified without parenthesis, VACOPT_FREEZE is not used in gram.y, so ISTM that we should change them to that instead: Assert((vacstmt->options & VACOPT_VACUUM) || vacstmt->multixact_freeze_table_age == -1); At least this would check that an ANALYZE does not set those parameters inappropriately... -- Michael
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 2f3f79d..d2f5baa 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -111,6 +111,14 @@ vacuum(VacuumStmt *vacstmt, Oid relid, bool do_toast, Assert(vacstmt->options & (VACOPT_VACUUM | VACOPT_ANALYZE)); Assert((vacstmt->options & VACOPT_VACUUM) || !(vacstmt->options & (VACOPT_FULL | VACOPT_FREEZE))); + Assert((vacstmt->options & VACOPT_VACUUM) || + vacstmt->freeze_min_age == -1); + Assert((vacstmt->options & VACOPT_VACUUM) || + vacstmt->freeze_table_age == -1); + Assert((vacstmt->options & VACOPT_VACUUM) || + vacstmt->multixact_freeze_min_age == -1); + Assert((vacstmt->options & VACOPT_VACUUM) || + vacstmt->multixact_freeze_table_age == -1); Assert((vacstmt->options & VACOPT_ANALYZE) || vacstmt->va_cols == NIL); stmttype = (vacstmt->options & VACOPT_VACUUM) ? "VACUUM" : "ANALYZE";
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers