diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2010-02-08 16:50:21 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2010-02-08 16:50:21 +0000 |
commit | 9184cc7dab0b00f6a1325a762e856ed1079327cf (patch) | |
tree | 8469f2260d19935c326d37b2478c3aa218bf8308 /src | |
parent | dfc902854aa008ea4bd1096ab1657d226f0b9bfa (diff) | |
download | postgresql-9184cc7dab0b00f6a1325a762e856ed1079327cf.tar.gz postgresql-9184cc7dab0b00f6a1325a762e856ed1079327cf.zip |
Fix serious performance bug in new implementation of VACUUM FULL:
cluster_rel necessarily builds an all-new toast table, so it's useless to
then go and VACUUM FULL the toast table.
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/commands/vacuum.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index c96c8400cc6..599a24412d1 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -14,7 +14,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.405 2010/02/08 04:33:53 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.406 2010/02/08 16:50:21 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -938,9 +938,10 @@ vacuum_rel(Oid relid, VacuumStmt *vacstmt, bool do_toast, bool for_wraparound, /* * Remember the relation's TOAST relation for later, if the caller asked - * us to process it. + * us to process it. In VACUUM FULL, though, the toast table is + * automatically rebuilt by cluster_rel so we shouldn't recurse to it. */ - if (do_toast) + if (do_toast && !(vacstmt->options & VACOPT_FULL)) toast_relid = onerel->rd_rel->reltoastrelid; else toast_relid = InvalidOid; |