Commit 2c66dcf6 authored by Tom Lane's avatar Tom Lane

In the new dispensation where REINDEX doesn't take exclusive lock on

the parent table, it's essential that all index accesses take some kind
of lock on the index.  I had missed vacuumlazy.c :-( ...
parent 1d6b0969
......@@ -31,7 +31,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.47 2004/10/15 22:39:56 tgl Exp $
* $PostgreSQL: pgsql/src/backend/commands/vacuumlazy.c,v 1.48 2004/10/25 15:42:02 tgl Exp $
*
*-------------------------------------------------------------------------
*/
......@@ -554,9 +554,12 @@ lazy_scan_index(Relation indrel, LVRelStats *vacrelstats)
vac_init_rusage(&ru0);
/*
* If index is unsafe for concurrent access, must lock it.
* Acquire appropriate type of lock on index: must be exclusive if
* index AM isn't concurrent-safe.
*/
if (!indrel->rd_am->amconcurrent)
if (indrel->rd_am->amconcurrent)
LockRelation(indrel, RowExclusiveLock);
else
LockRelation(indrel, AccessExclusiveLock);
/*
......@@ -576,7 +579,9 @@ lazy_scan_index(Relation indrel, LVRelStats *vacrelstats)
/*
* Release lock acquired above.
*/
if (!indrel->rd_am->amconcurrent)
if (indrel->rd_am->amconcurrent)
UnlockRelation(indrel, RowExclusiveLock);
else
UnlockRelation(indrel, AccessExclusiveLock);
if (!stats)
......@@ -619,9 +624,12 @@ lazy_vacuum_index(Relation indrel, LVRelStats *vacrelstats)
vac_init_rusage(&ru0);
/*
* If index is unsafe for concurrent access, must lock it.
* Acquire appropriate type of lock on index: must be exclusive if
* index AM isn't concurrent-safe.
*/
if (!indrel->rd_am->amconcurrent)
if (indrel->rd_am->amconcurrent)
LockRelation(indrel, RowExclusiveLock);
else
LockRelation(indrel, AccessExclusiveLock);
/* Do bulk deletion */
......@@ -636,7 +644,9 @@ lazy_vacuum_index(Relation indrel, LVRelStats *vacrelstats)
/*
* Release lock acquired above.
*/
if (!indrel->rd_am->amconcurrent)
if (indrel->rd_am->amconcurrent)
UnlockRelation(indrel, RowExclusiveLock);
else
UnlockRelation(indrel, AccessExclusiveLock);
if (!stats)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment