xl_hash_squeeze_page xlrec;
XLogRecPtr recptr;
int i;
+ bool mod_wbuf = false;
xlrec.prevblkno = prevblkno;
xlrec.nextblkno = nextblkno;
if (xlrec.ntups > 0)
{
XLogRegisterBuffer(1, wbuf, REGBUF_STANDARD);
+
+ /* Remember that wbuf is modified. */
+ mod_wbuf = true;
+
XLogRegisterBufData(1, (char *) itup_offsets,
nitups * sizeof(OffsetNumber));
for (i = 0; i < nitups; i++)
wbuf_flags = REGBUF_STANDARD;
if (!xlrec.is_prev_bucket_same_wrt)
+ {
wbuf_flags |= REGBUF_NO_CHANGE;
+ }
+ else
+ {
+ /* Remember that wbuf is modified. */
+ mod_wbuf = true;
+ }
XLogRegisterBuffer(1, wbuf, wbuf_flags);
}
recptr = XLogInsert(RM_HASH_ID, XLOG_HASH_SQUEEZE_PAGE);
- PageSetLSN(BufferGetPage(wbuf), recptr);
+ /* Set LSN iff wbuf is modified. */
+ if (mod_wbuf)
+ PageSetLSN(BufferGetPage(wbuf), recptr);
+
PageSetLSN(BufferGetPage(ovflbuf), recptr);
if (BufferIsValid(prevbuf) && !xlrec.is_prev_bucket_same_wrt)