diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c index 0526d67aae..2d654c8223 100644 --- a/src/backend/commands/vacuum.c +++ b/src/backend/commands/vacuum.c @@ -13,7 +13,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.319 2005/11/22 18:17:09 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/vacuum.c,v 1.320 2006/01/04 19:16:24 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -510,6 +510,14 @@ vacuum(VacuumStmt *vacstmt, List *relids) * PostgresMain(). */ StartTransactionCommand(); + /* + * Re-establish the transaction snapshot. This is wasted effort + * when we are called as a normal utility command, because the + * new transaction will be dropped immediately by PostgresMain(); + * but it's necessary if we are called from autovacuum because + * autovacuum might continue on to do an ANALYZE-only call. + */ + ActiveSnapshot = CopySnapshot(GetTransactionSnapshot()); } if (vacstmt->vacuum)