aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/access/gin/ginfast.c3
-rw-r--r--src/backend/access/gin/ginxlog.c7
2 files changed, 7 insertions, 3 deletions
diff --git a/src/backend/access/gin/ginfast.c b/src/backend/access/gin/ginfast.c
index 55df02ace6a..d6f2b69f14d 100644
--- a/src/backend/access/gin/ginfast.c
+++ b/src/backend/access/gin/ginfast.c
@@ -119,8 +119,7 @@ writeListPage(Relation index, Buffer buffer,
rdata[0].len = sizeof(ginxlogInsertListPage);
rdata[0].next = rdata + 1;
- rdata[1].buffer = buffer;
- rdata[1].buffer_std = true;
+ rdata[1].buffer = InvalidBuffer;
rdata[1].data = workspace;
rdata[1].len = size;
rdata[1].next = NULL;
diff --git a/src/backend/access/gin/ginxlog.c b/src/backend/access/gin/ginxlog.c
index bd4b0427f50..2d524539286 100644
--- a/src/backend/access/gin/ginxlog.c
+++ b/src/backend/access/gin/ginxlog.c
@@ -620,7 +620,11 @@ ginRedoInsertListPage(XLogRecPtr lsn, XLogRecord *record)
tupsize;
IndexTuple tuples = (IndexTuple) (XLogRecGetData(record) + sizeof(ginxlogInsertListPage));
- /* If we have a full-page image, restore it and we're done */
+ /*
+ * If we have a full-page image, restore it and we're done. (As the code
+ * stands, we never create full-page images, but we used to. Cope if
+ * we're reading WAL generated with an older minor version.)
+ */
if (record->xl_info & XLR_BKP_BLOCK(0))
{
(void) RestoreBackupBlock(lsn, record, 0, false, false);
@@ -654,6 +658,7 @@ ginRedoInsertListPage(XLogRecPtr lsn, XLogRecord *record)
elog(ERROR, "failed to add item to index page");
tuples = (IndexTuple) (((char *) tuples) + tupsize);
+ off++;
}
PageSetLSN(page, lsn);