aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-01-04 19:16:24 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-01-04 19:16:24 +0000
commite0078ea22ddb229e9050d17f8e3fa847f66f6768 (patch)
tree07ee3b185b1dda538572a72c8563f801d196c070
parent507e07e27704dde07bf246de766b424921de1a1b (diff)
downloadpostgresql-e0078ea22ddb229e9050d17f8e3fa847f66f6768.tar.gz
postgresql-e0078ea22ddb229e9050d17f8e3fa847f66f6768.zip
Fix another case in which autovacuum would fail while analyzing
expressional indexes. Per report from Brian Hirt.
-rw-r--r--src/backend/commands/vacuum.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/backend/commands/vacuum.c b/src/backend/commands/vacuum.c
index 0526d67aaea..2d654c82233 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)