postgres.git / summary / log / commit / refs
commit fb47544d0ca18312bf0b9e53e335217db5c41a08
Author: Robert Haas <rhaas@postgresql.org>
Date: Tue Feb 14 17:41:01 2017 +0000
First released in: 10.0
Minor fixes for WAL consistency checking.
Michael Paquier, reviewed and slightly revised by me.
Discussion: http://postgr.es/m/CAB7nPqRzCQb=vdfHvMtP0HMLBHU6z1aGdo4GJsUP-HP8jx+Pkw@mail.gmail.com
src/backend/access/common/bufmask.c | 2 +-
src/backend/access/heap/heapam.c | 1 -
src/backend/access/transam/xlog.c | 12 +++++++++++-
src/include/access/bufmask.h | 2 +-
4 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/backend/access/common/bufmask.c b/src/backend/access/common/bufmask.c
index 3b06115e035..10253d33545 100644
--- a/src/backend/access/common/bufmask.c
+++ b/src/backend/access/common/bufmask.c
@@ -5,7 +5,7 @@
* in a page which can be different when the WAL is generated
* and when the WAL is applied.
*
- * Portions Copyright (c) 2016, PostgreSQL Global Development Group
+ * Portions Copyright (c) 2016-2017, PostgreSQL Global Development Group
*
* Contains common routines required for masking a page.
*
diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c
index 0be48fb3ee1..af258366a20 100644
--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -9167,7 +9167,6 @@ heap_mask(char *pagedata, BlockNumber blkno)
if (ItemIdIsNormal(iid))
{
-
HeapTupleHeader page_htup = (HeapTupleHeader) page_item;
/*
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index 2dcff7f54b5..f23e1086280 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -1360,6 +1360,16 @@ checkXLogConsistency(XLogReaderState *record)
Assert(XLogRecHasBlockImage(record, block_id));
+ if (XLogRecBlockImageApply(record, block_id))
+ {
+ /*
+ * WAL record has already applied the page, so bypass the
+ * consistency check as that would result in comparing the full
+ * page stored in the record with itself.
+ */
+ continue;
+ }
+
/*
* Read the contents from the current buffer and store it in a
* temporary page.
@@ -1390,7 +1400,7 @@ checkXLogConsistency(XLogReaderState *record)
/*
* Read the contents from the backup copy, stored in WAL record and
- * store it in a temporary page. There is not need to allocate a new
+ * store it in a temporary page. There is no need to allocate a new
* page here, a local buffer is fine to hold its contents and a mask
* can be directly applied on it.
*/
diff --git a/src/include/access/bufmask.h b/src/include/access/bufmask.h
index add2dc0cd14..722dfea8d87 100644
--- a/src/include/access/bufmask.h
+++ b/src/include/access/bufmask.h
@@ -7,7 +7,7 @@
* individual rmgr, but we make things easier by providing some
* common routines to handle cases which occur in multiple rmgrs.
*
- * Portions Copyright (c) 2016, PostgreSQL Global Development Group
+ * Portions Copyright (c) 2016-2017, PostgreSQL Global Development Group
*
* src/include/access/bufmask.h
*
[parent: e28b1156122f]