summaryrefslogtreecommitdiff
path: root/src/include/commands
diff options
context:
space:
mode:
authorAlvaro Herrera2013-11-28 19:52:54 +0000
committerAlvaro Herrera2013-11-30 00:47:13 +0000
commitf54106f77e6d71cbb3fa0924095e5142341fde2b (patch)
treecee909f9b7febc4d8cb40839f1bbf70b52f18d59 /src/include/commands
parent76a31c689c627268067175b5d0687ce0dac9a4f4 (diff)
Fix full-table-vacuum request mechanism for MultiXactIds
While autovacuum dutifully launched anti-multixact-wraparound vacuums when the multixact "age" was reached, the vacuum code was not aware that it needed to make them be full table vacuums. As the resulting partial-table vacuums aren't capable of actually increasing relminmxid, autovacuum continued to launch anti-wraparound vacuums that didn't have the intended effect, until age of relfrozenxid caused the vacuum to finally be a full table one via vacuum_freeze_table_age. To fix, introduce logic for multixacts similar to that for plain TransactionIds, using the same GUCs. Backpatch to 9.3, where permanent MultiXactIds were introduced. Andres Freund, some cleanup by Álvaro
Diffstat (limited to 'src/include/commands')
-rw-r--r--src/include/commands/vacuum.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/include/commands/vacuum.h b/src/include/commands/vacuum.h
index 08bec256ba..44a3c3bd52 100644
--- a/src/include/commands/vacuum.h
+++ b/src/include/commands/vacuum.h
@@ -159,8 +159,9 @@ extern void vacuum_set_xid_limits(int freeze_min_age, int freeze_table_age,
bool sharedRel,
TransactionId *oldestXmin,
TransactionId *freezeLimit,
- TransactionId *freezeTableLimit,
- MultiXactId *multiXactCutoff);
+ TransactionId *xidFullScanLimit,
+ MultiXactId *multiXactCutoff,
+ MultiXactId *mxactFullScanLimit);
extern void vac_update_datfrozenxid(void);
extern void vacuum_delay_point(void);