diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2009-11-16 21:32:07 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2009-11-16 21:32:07 +0000 |
commit | 5e66a51c2eebaad4c0d78e3f776d74b2c5a0d1bc (patch) | |
tree | cda9e19e07b87dfbd4ca411ad8cc1b496348536d /src/include/nodes/parsenodes.h | |
parent | 49ed392cd8721226c73b6bfe09e976acd72ef4de (diff) |
Provide a parenthesized-options syntax for VACUUM, analogous to that recently
adopted for EXPLAIN. This will allow additional options to be implemented
in future without having to make them fully-reserved keywords. The old syntax
remains available for existing options, however.
Itagaki Takahiro
Diffstat (limited to 'src/include/nodes/parsenodes.h')
-rw-r--r-- | src/include/nodes/parsenodes.h | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/include/nodes/parsenodes.h b/src/include/nodes/parsenodes.h index 2384e38ab7d..b51f1d9892f 100644 --- a/src/include/nodes/parsenodes.h +++ b/src/include/nodes/parsenodes.h @@ -13,7 +13,7 @@ * Portions Copyright (c) 1996-2009, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/include/nodes/parsenodes.h,v 1.414 2009/11/13 23:44:19 tgl Exp $ + * $PostgreSQL: pgsql/src/include/nodes/parsenodes.h,v 1.415 2009/11/16 21:32:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -2209,16 +2209,25 @@ typedef struct ClusterStmt * Vacuum and Analyze Statements * * Even though these are nominally two statements, it's convenient to use - * just one node type for both. + * just one node type for both. Note that at least one of VACOPT_VACUUM + * and VACOPT_ANALYZE must be set in options. VACOPT_FREEZE is an internal + * convenience for the grammar and is not examined at runtime --- the + * freeze_min_age and freeze_table_age fields are what matter. * ---------------------- */ +typedef enum VacuumOption +{ + VACOPT_VACUUM = 1 << 0, /* do VACUUM */ + VACOPT_ANALYZE = 1 << 1, /* do ANALYZE */ + VACOPT_VERBOSE = 1 << 2, /* print progress info */ + VACOPT_FREEZE = 1 << 3, /* FREEZE option */ + VACOPT_FULL = 1 << 4 /* FULL (non-concurrent) vacuum */ +} VacuumOption; + typedef struct VacuumStmt { NodeTag type; - bool vacuum; /* do VACUUM step */ - bool full; /* do FULL (non-concurrent) vacuum */ - bool analyze; /* do ANALYZE step */ - bool verbose; /* print progress info */ + int options; /* OR of VacuumOption flags */ int freeze_min_age; /* min freeze age, or -1 to use default */ int freeze_table_age; /* age at which to scan whole table */ RangeVar *relation; /* single table to process, or NULL */ |