diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c index 4edc5a7..1d02e1b 100644 --- a/src/backend/access/gist/gist.c +++ b/src/backend/access/gist/gist.c @@ -1478,14 +1478,20 @@ gistvacuumpage(Relation rel, Page page, Buffer buffer) ItemId itemId = PageGetItemId(page, offnum); if (ItemIdIsDead(itemId)) - deletable[ndeletable++] = offnum; + { + deletable[ndeletable] = offnum - ndeletable; + ndeletable++; + } } if (ndeletable > 0) { + int i; + START_CRIT_SECTION(); - PageIndexMultiDelete(page, deletable, ndeletable); + for (i = 0; i < ndeletable; i++) + PageIndexTupleDelete(page, deletable[i]); /* * Mark the page as not containing any LP_DEAD items. This is not