diff options
Diffstat (limited to 'src/backend/access/gist/gistvacuum.c')
-rw-r--r-- | src/backend/access/gist/gistvacuum.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/backend/access/gist/gistvacuum.c b/src/backend/access/gist/gistvacuum.c index e3bff5147c2..37b5631b281 100644 --- a/src/backend/access/gist/gistvacuum.c +++ b/src/backend/access/gist/gistvacuum.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.25 2006/07/14 14:52:16 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistvacuum.c,v 1.26 2006/07/31 20:08:59 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -517,7 +517,7 @@ gistvacuumcleanup(PG_FUNCTION_ARGS) GistVacuum gv; ArrayTuple res; - LockRelation(rel, AccessExclusiveLock); + /* note: vacuum.c already acquired AccessExclusiveLock on index */ gv.index = rel; initGISTstate(&(gv.giststate), rel); @@ -543,8 +543,12 @@ gistvacuumcleanup(PG_FUNCTION_ARGS) (errmsg("index \"%s\" needs VACUUM FULL or REINDEX to finish crash recovery", RelationGetRelationName(rel)))); + /* + * If vacuum full, we already have exclusive lock on the index. + * Otherwise, need lock unless it's local to this backend. + */ if (info->vacuum_full) - needLock = false; /* relation locked with AccessExclusiveLock */ + needLock = false; else needLock = !RELATION_IS_LOCAL(rel); @@ -613,9 +617,6 @@ gistvacuumcleanup(PG_FUNCTION_ARGS) if (needLock) UnlockRelationForExtension(rel, ExclusiveLock); - if (info->vacuum_full) - UnlockRelation(rel, AccessExclusiveLock); - PG_RETURN_POINTER(stats); } |