mirror of
https://github.com/postgres/postgres.git
synced 2025-04-25 21:42:33 +03:00
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.
This commit is contained in:
parent
dfc902854a
commit
9184cc7dab
@ -14,7 +14,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* 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
|
* 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;
|
toast_relid = onerel->rd_rel->reltoastrelid;
|
||||||
else
|
else
|
||||||
toast_relid = InvalidOid;
|
toast_relid = InvalidOid;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user