diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2008-01-17 23:47:04 +0000 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2008-01-17 23:47:04 +0000 |
commit | 5cbb5f31e1b91eb6122b1ebea20e70e81464f062 (patch) | |
tree | 0850d161dda043a6025a5366bcd88a2b3ea780b8 /src/backend | |
parent | 412eaece244e9870fb3c12eb5189744421c9a306 (diff) | |
download | postgresql-5cbb5f31e1b91eb6122b1ebea20e70e81464f062.tar.gz postgresql-5cbb5f31e1b91eb6122b1ebea20e70e81464f062.zip |
Backpatch my fix of rev 1.48 to avoid a division-by-zero error in the
cost-limit vacuum code. Per trouble report from Joshua Drake.
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/postmaster/autovacuum.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c index 8a44f7fa57e..f17b3905d32 100644 --- a/src/backend/postmaster/autovacuum.c +++ b/src/backend/postmaster/autovacuum.c @@ -10,7 +10,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.29 2006/11/21 20:59:52 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/postmaster/autovacuum.c,v 1.29.2.1 2008/01/17 23:47:04 alvherre Exp $ * *------------------------------------------------------------------------- */ @@ -736,6 +736,9 @@ test_rel_for_autovac(Oid relid, PgStat_StatTabEntry *tabentry, * If there is a tuple in pg_autovacuum, use it; else, use the GUC * defaults. Note that the fields may contain "-1" (or indeed any * negative value), which means use the GUC defaults for each setting. + * + * Note: in cost_limit, 0 also means use the value from elsewhere, + * because 0 is not a valid value for VacuumCostLimit. */ if (avForm != NULL) { @@ -755,9 +758,9 @@ test_rel_for_autovac(Oid relid, PgStat_StatTabEntry *tabentry, Min(avForm->freeze_max_age, autovacuum_freeze_max_age) : autovacuum_freeze_max_age; - vac_cost_limit = (avForm->vac_cost_limit >= 0) ? + vac_cost_limit = (avForm->vac_cost_limit > 0) ? avForm->vac_cost_limit : - ((autovacuum_vac_cost_limit >= 0) ? + ((autovacuum_vac_cost_limit > 0) ? autovacuum_vac_cost_limit : VacuumCostLimit); vac_cost_delay = (avForm->vac_cost_delay >= 0) ? @@ -776,7 +779,7 @@ test_rel_for_autovac(Oid relid, PgStat_StatTabEntry *tabentry, freeze_min_age = default_freeze_min_age; freeze_max_age = autovacuum_freeze_max_age; - vac_cost_limit = (autovacuum_vac_cost_limit >= 0) ? + vac_cost_limit = (autovacuum_vac_cost_limit > 0) ? autovacuum_vac_cost_limit : VacuumCostLimit; vac_cost_delay = (autovacuum_vac_cost_delay >= 0) ? |