From: Tom Lane Date: Tue, 21 Feb 2012 19:14:16 +0000 (-0500) Subject: Cosmetic cleanup for commit a760893dbda9934e287789d54bbd3c4ca3914ce0. X-Git-Tag: REL9_2_BETA1~390 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9789c99d01e7e4460b77c29b77d177f86c45a273;p=postgresql Cosmetic cleanup for commit a760893dbda9934e287789d54bbd3c4ca3914ce0. Mostly, fixing overlooked comments. --- diff --git a/src/backend/access/nbtree/nbtpage.c b/src/backend/access/nbtree/nbtpage.c index 42b2cd40b8..29a9df027b 100644 --- a/src/backend/access/nbtree/nbtpage.c +++ b/src/backend/access/nbtree/nbtpage.c @@ -715,7 +715,7 @@ _bt_page_recyclable(Page page) } /* - * Delete item(s) from a btree page. + * Delete item(s) from a btree page during VACUUM. * * This must only be used for deleting leaf items. Deleting an item on a * non-leaf page has to be done as part of an atomic action that includes @@ -736,7 +736,8 @@ _bt_page_recyclable(Page page) */ void _bt_delitems_vacuum(Relation rel, Buffer buf, - OffsetNumber *itemnos, int nitems, BlockNumber lastBlockVacuumed) + OffsetNumber *itemnos, int nitems, + BlockNumber lastBlockVacuumed) { Page page = BufferGetPage(buf); BTPageOpaque opaque; @@ -771,7 +772,6 @@ _bt_delitems_vacuum(Relation rel, Buffer buf, { XLogRecPtr recptr; XLogRecData rdata[2]; - xl_btree_vacuum xlrec_vacuum; xlrec_vacuum.node = rel->rd_node; @@ -811,13 +811,27 @@ _bt_delitems_vacuum(Relation rel, Buffer buf, END_CRIT_SECTION(); } +/* + * Delete item(s) from a btree page during single-page cleanup. + * + * As above, must only be used on leaf pages. + * + * This routine assumes that the caller has pinned and locked the buffer. + * Also, the given itemnos *must* appear in increasing order in the array. + * + * This is nearly the same as _bt_delitems_vacuum as far as what it does to + * the page, but the WAL logging considerations are quite different. See + * comments for _bt_delitems_vacuum. + */ void _bt_delitems_delete(Relation rel, Buffer buf, - OffsetNumber *itemnos, int nitems, Relation heapRel) + OffsetNumber *itemnos, int nitems, + Relation heapRel) { Page page = BufferGetPage(buf); BTPageOpaque opaque; + /* Shouldn't be called unless there's something to do */ Assert(nitems > 0); /* No ereport(ERROR) until changes are logged */ @@ -849,7 +863,6 @@ _bt_delitems_delete(Relation rel, Buffer buf, { XLogRecPtr recptr; XLogRecData rdata[3]; - xl_btree_delete xlrec_delete; xlrec_delete.node = rel->rd_node; @@ -863,8 +876,9 @@ _bt_delitems_delete(Relation rel, Buffer buf, rdata[0].next = &(rdata[1]); /* - * We need the target-offsets array whether or not we store the to - * allow us to find the latestRemovedXid on a standby server. + * We need the target-offsets array whether or not we store the whole + * buffer, to allow us to find the latestRemovedXid on a standby + * server. */ rdata[1].data = (char *) itemnos; rdata[1].len = nitems * sizeof(OffsetNumber); diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index 7627738437..184fc3bb79 100644 --- a/src/backend/access/nbtree/nbtree.c +++ b/src/backend/access/nbtree/nbtree.c @@ -1004,14 +1004,15 @@ restart: } /* - * Apply any needed deletes. We issue just one _bt_delitems() call - * per page, so as to minimize WAL traffic. + * Apply any needed deletes. We issue just one _bt_delitems_vacuum() + * call per page, so as to minimize WAL traffic. */ if (ndeletable > 0) { BlockNumber lastBlockVacuumed = BufferGetBlockNumber(buf); - _bt_delitems_vacuum(rel, buf, deletable, ndeletable, vstate->lastBlockVacuumed); + _bt_delitems_vacuum(rel, buf, deletable, ndeletable, + vstate->lastBlockVacuumed); /* * Keep track of the block number of the lastBlockVacuumed, so we @@ -1031,8 +1032,8 @@ restart: /* * If the page has been split during this vacuum cycle, it seems * worth expending a write to clear btpo_cycleid even if we don't - * have any deletions to do. (If we do, _bt_delitems takes care - * of this.) This ensures we won't process the page again. + * have any deletions to do. (If we do, _bt_delitems_vacuum takes + * care of this.) This ensures we won't process the page again. * * We treat this like a hint-bit update because there's no need to * WAL-log it. diff --git a/src/backend/access/nbtree/nbtxlog.c b/src/backend/access/nbtree/nbtxlog.c index 0f5c113492..3b351a8b96 100644 --- a/src/backend/access/nbtree/nbtxlog.c +++ b/src/backend/access/nbtree/nbtxlog.c @@ -539,7 +539,7 @@ btree_xlog_vacuum(XLogRecPtr lsn, XLogRecord *record) /* * Mark the page as not containing any LP_DEAD items --- see comments in - * _bt_delitems(). + * _bt_delitems_vacuum(). */ opaque = (BTPageOpaque) PageGetSpecialPointer(page); opaque->btpo_flags &= ~BTP_HAS_GARBAGE; @@ -720,7 +720,7 @@ btree_xlog_delete(XLogRecPtr lsn, XLogRecord *record) /* * Mark the page as not containing any LP_DEAD items --- see comments in - * _bt_delitems(). + * _bt_delitems_delete(). */ opaque = (BTPageOpaque) PageGetSpecialPointer(page); opaque->btpo_flags &= ~BTP_HAS_GARBAGE; diff --git a/src/include/access/nbtree.h b/src/include/access/nbtree.h index 041733ce30..cae51a384d 100644 --- a/src/include/access/nbtree.h +++ b/src/include/access/nbtree.h @@ -635,7 +635,8 @@ extern bool _bt_page_recyclable(Page page); extern void _bt_delitems_delete(Relation rel, Buffer buf, OffsetNumber *itemnos, int nitems, Relation heapRel); extern void _bt_delitems_vacuum(Relation rel, Buffer buf, - OffsetNumber *itemnos, int nitems, BlockNumber lastBlockVacuumed); + OffsetNumber *itemnos, int nitems, + BlockNumber lastBlockVacuumed); extern int _bt_pagedel(Relation rel, Buffer buf, BTStack stack); /*