diff options
Diffstat (limited to 'src/backend/access/nbtree')
-rw-r--r-- | src/backend/access/nbtree/nbtinsert.c | 10 | ||||
-rw-r--r-- | src/backend/access/nbtree/nbtree.c | 3 | ||||
-rw-r--r-- | src/backend/access/nbtree/nbtsort.c | 3 | ||||
-rw-r--r-- | src/backend/access/nbtree/nbtutils.c | 6 |
4 files changed, 14 insertions, 8 deletions
diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c index 63e099b0fd9..6ad4f765f5b 100644 --- a/src/backend/access/nbtree/nbtinsert.c +++ b/src/backend/access/nbtree/nbtinsert.c @@ -407,11 +407,15 @@ _bt_check_unique(Relation rel, IndexTuple itup, Relation heapRel, */ ItemIdMarkDead(curitemid); opaque->btpo_flags |= BTP_HAS_GARBAGE; - /* be sure to mark the proper buffer dirty... */ + + /* + * Mark buffer with a dirty hint, since state is not + * crucial. Be sure to mark the proper buffer dirty. + */ if (nbuf != InvalidBuffer) - SetBufferCommitInfoNeedsSave(nbuf); + MarkBufferDirtyHint(nbuf); else - SetBufferCommitInfoNeedsSave(buf); + MarkBufferDirtyHint(buf); } } } diff --git a/src/backend/access/nbtree/nbtree.c b/src/backend/access/nbtree/nbtree.c index 0e041683652..621b0556390 100644 --- a/src/backend/access/nbtree/nbtree.c +++ b/src/backend/access/nbtree/nbtree.c @@ -217,6 +217,7 @@ btbuildempty(PG_FUNCTION_ARGS) _bt_initmetapage(metapage, P_NONE, 0); /* Write the page. If archiving/streaming, XLOG it. */ + PageSetChecksumInplace(metapage, BTREE_METAPAGE); smgrwrite(index->rd_smgr, INIT_FORKNUM, BTREE_METAPAGE, (char *) metapage, true); if (XLogIsNeeded()) @@ -1051,7 +1052,7 @@ restart: opaque->btpo_cycleid == vstate->cycleid) { opaque->btpo_cycleid = 0; - SetBufferCommitInfoNeedsSave(buf); + MarkBufferDirtyHint(buf); } } diff --git a/src/backend/access/nbtree/nbtsort.c b/src/backend/access/nbtree/nbtsort.c index abd99954e93..52c5a2676ef 100644 --- a/src/backend/access/nbtree/nbtsort.c +++ b/src/backend/access/nbtree/nbtsort.c @@ -288,12 +288,15 @@ _bt_blwritepage(BTWriteState *wstate, Page page, BlockNumber blkno) { if (!wstate->btws_zeropage) wstate->btws_zeropage = (Page) palloc0(BLCKSZ); + /* don't set checksum for all-zero page */ smgrextend(wstate->index->rd_smgr, MAIN_FORKNUM, wstate->btws_pages_written++, (char *) wstate->btws_zeropage, true); } + PageSetChecksumInplace(page, blkno); + /* * Now write the page. There's no need for smgr to schedule an fsync for * this write; we'll do it ourselves before ending the build. diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c index 04e1ac4a9bd..fe53ec1fe0a 100644 --- a/src/backend/access/nbtree/nbtutils.c +++ b/src/backend/access/nbtree/nbtutils.c @@ -1781,9 +1781,7 @@ _bt_killitems(IndexScanDesc scan, bool haveLock) } /* - * Since this can be redone later if needed, it's treated the same as a - * commit-hint-bit status update for heap tuples: we mark the buffer dirty - * but don't make a WAL log entry. + * Since this can be redone later if needed, mark as dirty hint. * * Whenever we mark anything LP_DEAD, we also set the page's * BTP_HAS_GARBAGE flag, which is likewise just a hint. @@ -1791,7 +1789,7 @@ _bt_killitems(IndexScanDesc scan, bool haveLock) if (killedsomething) { opaque->btpo_flags |= BTP_HAS_GARBAGE; - SetBufferCommitInfoNeedsSave(so->currPos.buf); + MarkBufferDirtyHint(so->currPos.buf); } if (!haveLock) |