diff options
Diffstat (limited to 'src/backend/access/nbtree')
-rw-r--r-- | src/backend/access/nbtree/nbtpage.c | 11 | ||||
-rw-r--r-- | src/backend/access/nbtree/nbtxlog.c | 9 |
2 files changed, 5 insertions, 15 deletions
diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c index 3e2a9010a44..2b82a87a1d4 100644 --- a/src/backend/access/nbtree/nbtpage.c +++ b/src/backend/access/nbtree/nbtpage.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtpage.c,v 1.81 2004/12/31 21:59:22 pgsql Exp $ + * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtpage.c,v 1.82 2005/03/22 06:17:03 tgl Exp $ * * NOTES * Postgres btree pages look like ordinary relation pages. The opaque @@ -639,17 +639,12 @@ _bt_delitems(Relation rel, Buffer buf, OffsetNumber *itemnos, int nitems) { Page page = BufferGetPage(buf); - int i; /* No ereport(ERROR) until changes are logged */ START_CRIT_SECTION(); - /* - * Delete the items in reverse order so we don't have to think about - * adjusting item numbers for previous deletions. - */ - for (i = nitems - 1; i >= 0; i--) - PageIndexTupleDelete(page, itemnos[i]); + /* Fix the page */ + PageIndexMultiDelete(page, itemnos, nitems); /* XLOG stuff */ if (!rel->rd_istemp) diff --git a/src/backend/access/nbtree/nbtxlog.c b/src/backend/access/nbtree/nbtxlog.c index 0bd2c418f03..ade60619a3d 100644 --- a/src/backend/access/nbtree/nbtxlog.c +++ b/src/backend/access/nbtree/nbtxlog.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtxlog.c,v 1.19 2004/12/31 21:59:22 pgsql Exp $ + * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtxlog.c,v 1.20 2005/03/22 06:17:03 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -411,12 +411,7 @@ btree_xlog_delete(bool redo, XLogRecPtr lsn, XLogRecord *record) unused = (OffsetNumber *) ((char *) xlrec + SizeOfBtreeDelete); unend = (OffsetNumber *) ((char *) xlrec + record->xl_len); - /* be careful to delete from back to front */ - while (unused < unend) - { - unend--; - PageIndexTupleDelete(page, *unend); - } + PageIndexMultiDelete(page, unused, unend - unused); } PageSetLSN(page, lsn); |