summaryrefslogtreecommitdiff
path: root/src/backend/access/nbtree/nbtxlog.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/nbtree/nbtxlog.c')
-rw-r--r--src/backend/access/nbtree/nbtxlog.c52
1 files changed, 28 insertions, 24 deletions
diff --git a/src/backend/access/nbtree/nbtxlog.c b/src/backend/access/nbtree/nbtxlog.c
index f5320fb1039..07416d599b5 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.61 2010/02/13 00:59:58 sriggs Exp $
+ * $PostgreSQL: pgsql/src/backend/access/nbtree/nbtxlog.c,v 1.62 2010/02/26 02:00:34 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -473,10 +473,10 @@ btree_xlog_vacuum(XLogRecPtr lsn, XLogRecord *record)
xlrec = (xl_btree_vacuum *) XLogRecGetData(record);
/*
- * If queries might be active then we need to ensure every block is unpinned
- * between the lastBlockVacuumed and the current block, if there are any.
- * This ensures that every block in the index is touched during VACUUM as
- * required to ensure scans work correctly.
+ * If queries might be active then we need to ensure every block is
+ * unpinned between the lastBlockVacuumed and the current block, if there
+ * are any. This ensures that every block in the index is touched during
+ * VACUUM as required to ensure scans work correctly.
*/
if (standbyState == STANDBY_SNAPSHOT_READY &&
(xlrec->lastBlockVacuumed + 1) != xlrec->block)
@@ -486,10 +486,10 @@ btree_xlog_vacuum(XLogRecPtr lsn, XLogRecord *record)
for (; blkno < xlrec->block; blkno++)
{
/*
- * XXX we don't actually need to read the block, we
- * just need to confirm it is unpinned. If we had a special call
- * into the buffer manager we could optimise this so that
- * if the block is not in shared_buffers we confirm it as unpinned.
+ * XXX we don't actually need to read the block, we just need to
+ * confirm it is unpinned. If we had a special call into the
+ * buffer manager we could optimise this so that if the block is
+ * not in shared_buffers we confirm it as unpinned.
*
* Another simple optimization would be to check if there's any
* backends running; if not, we could just skip this.
@@ -505,9 +505,9 @@ btree_xlog_vacuum(XLogRecPtr lsn, XLogRecord *record)
/*
* If the block was restored from a full page image, nothing more to do.
- * The RestoreBkpBlocks() call already pinned and took cleanup lock on
- * it. XXX: Perhaps we should call RestoreBkpBlocks() *after* the loop
- * above, to make the disk access more sequential.
+ * The RestoreBkpBlocks() call already pinned and took cleanup lock on it.
+ * XXX: Perhaps we should call RestoreBkpBlocks() *after* the loop above,
+ * to make the disk access more sequential.
*/
if (record->xl_info & XLR_BKP_BLOCK_1)
return;
@@ -567,8 +567,8 @@ btree_xlog_delete(XLogRecPtr lsn, XLogRecord *record)
xlrec = (xl_btree_delete *) XLogRecGetData(record);
/*
- * We don't need to take a cleanup lock to apply these changes.
- * See nbtree/README for details.
+ * We don't need to take a cleanup lock to apply these changes. See
+ * nbtree/README for details.
*/
buffer = XLogReadBuffer(xlrec->node, xlrec->block, false);
if (!BufferIsValid(buffer))
@@ -819,13 +819,15 @@ btree_redo(XLogRecPtr lsn, XLogRecord *record)
switch (info)
{
case XLOG_BTREE_DELETE:
+
/*
- * Btree delete records can conflict with standby queries. You might
- * think that vacuum records would conflict as well, but we've handled
- * that already. XLOG_HEAP2_CLEANUP_INFO records provide the highest xid
- * cleaned by the vacuum of the heap and so we can resolve any conflicts
- * just once when that arrives. After that any we know that no conflicts
- * exist from individual btree vacuum records on that index.
+ * Btree delete records can conflict with standby queries. You
+ * might think that vacuum records would conflict as well, but
+ * we've handled that already. XLOG_HEAP2_CLEANUP_INFO records
+ * provide the highest xid cleaned by the vacuum of the heap
+ * and so we can resolve any conflicts just once when that
+ * arrives. After that any we know that no conflicts exist
+ * from individual btree vacuum records on that index.
*/
{
xl_btree_delete *xlrec = (xl_btree_delete *) XLogRecGetData(record);
@@ -842,9 +844,11 @@ btree_redo(XLogRecPtr lsn, XLogRecord *record)
break;
case XLOG_BTREE_REUSE_PAGE:
+
/*
- * Btree reuse page records exist to provide a conflict point when we
- * reuse pages in the index via the FSM. That's all it does though.
+ * Btree reuse page records exist to provide a conflict point
+ * when we reuse pages in the index via the FSM. That's all it
+ * does though.
*/
{
xl_btree_reuse_page *xlrec = (xl_btree_reuse_page *) XLogRecGetData(record);
@@ -859,8 +863,8 @@ btree_redo(XLogRecPtr lsn, XLogRecord *record)
}
/*
- * Vacuum needs to pin and take cleanup lock on every leaf page,
- * a regular exclusive lock is enough for all other purposes.
+ * Vacuum needs to pin and take cleanup lock on every leaf page, a regular
+ * exclusive lock is enough for all other purposes.
*/
RestoreBkpBlocks(lsn, record, (info == XLOG_BTREE_VACUUM));