{
registered_buffer *regbuf;
- /* WILL_INIT and NO_IMAGE don't make sense with FORCE_IMAGE */
- Assert(!((flags & REGBUF_FORCE_IMAGE) &&
- (flags & (REGBUF_WILL_INIT | REGBUF_NO_IMAGE))));
+ /* NO_IMAGE doesn't make sense with FORCE_IMAGE */
+ Assert(!((flags & REGBUF_FORCE_IMAGE) && (flags & (REGBUF_NO_IMAGE))));
Assert(begininsert_called);
if (num_registered_buffers > max_registered_buffers)
/* Determine if this block needs to be backed up */
if (regbuf->flags & REGBUF_FORCE_IMAGE)
needs_backup = true;
- else if (regbuf->flags & (REGBUF_WILL_INIT | REGBUF_NO_IMAGE))
+ else if (regbuf->flags & REGBUF_NO_IMAGE)
needs_backup = false;
else if (!doPageWrites)
needs_backup = false;
rdt->len = SizeOfXLogRecordBlockData;
}
- if (regbuf->flags & REGBUF_WILL_INIT)
+ if ((regbuf->flags & REGBUF_WILL_INIT) == REGBUF_WILL_INIT)
bkpb->fork_flags |= BKPBLOCK_WILL_INIT;
rdt->data = (char *) bkpb;
elog(PANIC, "failed to restore backup block with ID %d", block_id);
}
- /* Found it, apply the update */
if (!(bkpb->fork_flags & BKPBLOCK_HAS_IMAGE))
return InvalidBuffer;
+ /* Found it, apply the update */
return RestoreBackupBlockContents(lsn, bkpb,
(XLogRecordBlockImage *) blk,
get_cleanup_lock,
#define XLR_NORMAL_RDATAS 20
/* flags for XLogRegisterBuffer */
-#define REGBUF_FORCE_IMAGE (1<<0) /* force a full-page image */
-#define REGBUF_WILL_INIT (1<<1) /* page will be re-initialized at replay
- * (implies NO_IMAGE) */
-#define REGBUF_NO_IMAGE (1<<2) /* don't take a full-page image */
-#define REGBUF_STANDARD (1<<3) /* page follows "standard" page layout,
+#define REGBUF_FORCE_IMAGE 0x01 /* force a full-page image */
+#define REGBUF_NO_IMAGE 0x02 /* don't take a full-page image */
+#define REGBUF_WILL_INIT (0x04 | 0x02) /* page will be re-initialized at
+ * replay (implies NO_IMAGE) */
+#define REGBUF_STANDARD 0x08 /* page follows "standard" page layout,
* (data between pd_lower and pd_upper
* will be skipped) */
-#define REGBUF_KEEP_DATA (1<<4) /* don't omit data if a full-page image is
+#define REGBUF_KEEP_DATA 0x10 /* don't omit data if a full-page image is
* taken */
/* prototypes for public functions in xloginsert.c: */