diff --git a/src/backend/access/gin/ginfast.c b/src/backend/access/gin/ginfast.c index fb6710e7e49..71f6cb3741e 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 f66938a1303..2344ec25bcf 100644 --- a/src/backend/access/gin/ginxlog.c +++ b/src/backend/access/gin/ginxlog.c @@ -587,6 +587,11 @@ ginRedoInsertListPage(XLogRecPtr lsn, XLogRecord *record) tupsize; IndexTuple tuples = (IndexTuple) (XLogRecGetData(record) + sizeof(ginxlogInsertListPage)); + /* + * If we have a full-page image, 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_1) return; @@ -617,6 +622,7 @@ ginRedoInsertListPage(XLogRecPtr lsn, XLogRecord *record) elog(ERROR, "failed to add item to index page"); tuples = (IndexTuple) (((char *) tuples) + tupsize); + off++; } PageSetLSN(page, lsn);