Commit 9789c99d authored by Tom Lane's avatar Tom Lane

Cosmetic cleanup for commit a760893d.

Mostly, fixing overlooked comments.
parent c2a2f751
...@@ -715,7 +715,7 @@ _bt_page_recyclable(Page page) ...@@ -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 * 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 * non-leaf page has to be done as part of an atomic action that includes
...@@ -736,7 +736,8 @@ _bt_page_recyclable(Page page) ...@@ -736,7 +736,8 @@ _bt_page_recyclable(Page page)
*/ */
void void
_bt_delitems_vacuum(Relation rel, Buffer buf, _bt_delitems_vacuum(Relation rel, Buffer buf,
OffsetNumber *itemnos, int nitems, BlockNumber lastBlockVacuumed) OffsetNumber *itemnos, int nitems,
BlockNumber lastBlockVacuumed)
{ {
Page page = BufferGetPage(buf); Page page = BufferGetPage(buf);
BTPageOpaque opaque; BTPageOpaque opaque;
...@@ -771,7 +772,6 @@ _bt_delitems_vacuum(Relation rel, Buffer buf, ...@@ -771,7 +772,6 @@ _bt_delitems_vacuum(Relation rel, Buffer buf,
{ {
XLogRecPtr recptr; XLogRecPtr recptr;
XLogRecData rdata[2]; XLogRecData rdata[2];
xl_btree_vacuum xlrec_vacuum; xl_btree_vacuum xlrec_vacuum;
xlrec_vacuum.node = rel->rd_node; xlrec_vacuum.node = rel->rd_node;
...@@ -811,13 +811,27 @@ _bt_delitems_vacuum(Relation rel, Buffer buf, ...@@ -811,13 +811,27 @@ _bt_delitems_vacuum(Relation rel, Buffer buf,
END_CRIT_SECTION(); 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 void
_bt_delitems_delete(Relation rel, Buffer buf, _bt_delitems_delete(Relation rel, Buffer buf,
OffsetNumber *itemnos, int nitems, Relation heapRel) OffsetNumber *itemnos, int nitems,
Relation heapRel)
{ {
Page page = BufferGetPage(buf); Page page = BufferGetPage(buf);
BTPageOpaque opaque; BTPageOpaque opaque;
/* Shouldn't be called unless there's something to do */
Assert(nitems > 0); Assert(nitems > 0);
/* No ereport(ERROR) until changes are logged */ /* No ereport(ERROR) until changes are logged */
...@@ -849,7 +863,6 @@ _bt_delitems_delete(Relation rel, Buffer buf, ...@@ -849,7 +863,6 @@ _bt_delitems_delete(Relation rel, Buffer buf,
{ {
XLogRecPtr recptr; XLogRecPtr recptr;
XLogRecData rdata[3]; XLogRecData rdata[3];
xl_btree_delete xlrec_delete; xl_btree_delete xlrec_delete;
xlrec_delete.node = rel->rd_node; xlrec_delete.node = rel->rd_node;
...@@ -863,8 +876,9 @@ _bt_delitems_delete(Relation rel, Buffer buf, ...@@ -863,8 +876,9 @@ _bt_delitems_delete(Relation rel, Buffer buf,
rdata[0].next = &(rdata[1]); rdata[0].next = &(rdata[1]);
/* /*
* We need the target-offsets array whether or not we store the to * We need the target-offsets array whether or not we store the whole
* allow us to find the latestRemovedXid on a standby server. * buffer, to allow us to find the latestRemovedXid on a standby
* server.
*/ */
rdata[1].data = (char *) itemnos; rdata[1].data = (char *) itemnos;
rdata[1].len = nitems * sizeof(OffsetNumber); rdata[1].len = nitems * sizeof(OffsetNumber);
......
...@@ -1004,14 +1004,15 @@ restart: ...@@ -1004,14 +1004,15 @@ restart:
} }
/* /*
* Apply any needed deletes. We issue just one _bt_delitems() call * Apply any needed deletes. We issue just one _bt_delitems_vacuum()
* per page, so as to minimize WAL traffic. * call per page, so as to minimize WAL traffic.
*/ */
if (ndeletable > 0) if (ndeletable > 0)
{ {
BlockNumber lastBlockVacuumed = BufferGetBlockNumber(buf); 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 * Keep track of the block number of the lastBlockVacuumed, so we
...@@ -1031,8 +1032,8 @@ restart: ...@@ -1031,8 +1032,8 @@ restart:
/* /*
* If the page has been split during this vacuum cycle, it seems * 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 * 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 * have any deletions to do. (If we do, _bt_delitems_vacuum takes
* of this.) This ensures we won't process the page again. * 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 * We treat this like a hint-bit update because there's no need to
* WAL-log it. * WAL-log it.
......
...@@ -539,7 +539,7 @@ btree_xlog_vacuum(XLogRecPtr lsn, XLogRecord *record) ...@@ -539,7 +539,7 @@ btree_xlog_vacuum(XLogRecPtr lsn, XLogRecord *record)
/* /*
* Mark the page as not containing any LP_DEAD items --- see comments in * Mark the page as not containing any LP_DEAD items --- see comments in
* _bt_delitems(). * _bt_delitems_vacuum().
*/ */
opaque = (BTPageOpaque) PageGetSpecialPointer(page); opaque = (BTPageOpaque) PageGetSpecialPointer(page);
opaque->btpo_flags &= ~BTP_HAS_GARBAGE; opaque->btpo_flags &= ~BTP_HAS_GARBAGE;
...@@ -720,7 +720,7 @@ btree_xlog_delete(XLogRecPtr lsn, XLogRecord *record) ...@@ -720,7 +720,7 @@ btree_xlog_delete(XLogRecPtr lsn, XLogRecord *record)
/* /*
* Mark the page as not containing any LP_DEAD items --- see comments in * Mark the page as not containing any LP_DEAD items --- see comments in
* _bt_delitems(). * _bt_delitems_delete().
*/ */
opaque = (BTPageOpaque) PageGetSpecialPointer(page); opaque = (BTPageOpaque) PageGetSpecialPointer(page);
opaque->btpo_flags &= ~BTP_HAS_GARBAGE; opaque->btpo_flags &= ~BTP_HAS_GARBAGE;
......
...@@ -635,7 +635,8 @@ extern bool _bt_page_recyclable(Page page); ...@@ -635,7 +635,8 @@ extern bool _bt_page_recyclable(Page page);
extern void _bt_delitems_delete(Relation rel, Buffer buf, extern void _bt_delitems_delete(Relation rel, Buffer buf,
OffsetNumber *itemnos, int nitems, Relation heapRel); OffsetNumber *itemnos, int nitems, Relation heapRel);
extern void _bt_delitems_vacuum(Relation rel, Buffer buf, 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); extern int _bt_pagedel(Relation rel, Buffer buf, BTStack stack);
/* /*
......
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