diff options
Diffstat (limited to 'src/backend/commands/vacuum.c')
| -rw-r--r-- | src/backend/commands/vacuum.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index e6745e6145c..a13a2d7f222 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -69,6 +69,7 @@ int vacuum_multixact_freeze_min_age; int vacuum_multixact_freeze_table_age; int vacuum_failsafe_age; int vacuum_multixact_failsafe_age; +double vacuum_max_eager_freeze_failure_rate; /* * Variables for cost-based vacuum delay. The defaults differ between @@ -406,6 +407,11 @@ ExecVacuum(ParseState *pstate, VacuumStmt *vacstmt, bool isTopLevel) params.log_min_duration = -1; /* + * Later, in vacuum_rel(), we check if a reloption override was specified. + */ + params.max_eager_freeze_failure_rate = vacuum_max_eager_freeze_failure_rate; + + /* * Create special memory context for cross-transaction storage. * * Since it is a child of PortalContext, it will go away eventually even @@ -2166,6 +2172,15 @@ vacuum_rel(Oid relid, RangeVar *relation, VacuumParams *params, } /* + * Check if the vacuum_max_eager_freeze_failure_rate table storage + * parameter was specified. This overrides the GUC value. + */ + if (rel->rd_options != NULL && + ((StdRdOptions *) rel->rd_options)->vacuum_max_eager_freeze_failure_rate >= 0) + params->max_eager_freeze_failure_rate = + ((StdRdOptions *) rel->rd_options)->vacuum_max_eager_freeze_failure_rate; + + /* * Set truncate option based on truncate reloption if it wasn't specified * in VACUUM command, or when running in an autovacuum worker */ |
