aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/postmaster/autovacuum.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/backend/postmaster/autovacuum.c b/src/backend/postmaster/autovacuum.c
index b53cfdbf6df..c240d2444c8 100644
--- a/src/backend/postmaster/autovacuum.c
+++ b/src/backend/postmaster/autovacuum.c
@@ -2711,14 +2711,21 @@ relation_needs_vacanalyze(Oid relid,
*wraparound = force_vacuum;
/* User disabled it in pg_class.reloptions? (But ignore if at risk) */
- if (!force_vacuum && !av_enabled)
+ if (!av_enabled && !force_vacuum)
{
*doanalyze = false;
*dovacuum = false;
return;
}
- if (PointerIsValid(tabentry))
+ /*
+ * If we found the table in the stats hash, and autovacuum is currently
+ * enabled, make a threshold-based decision whether to vacuum and/or
+ * analyze. If autovacuum is currently disabled, we must be here for
+ * anti-wraparound vacuuming only, so don't vacuum (or analyze) anything
+ * that's not being forced.
+ */
+ if (PointerIsValid(tabentry) && AutoVacuumingActive())
{
reltuples = classForm->reltuples;
vactuples = tabentry->n_dead_tuples;