From d150ff57812ae01a2f78a55f33a46f9b7febf933 Mon Sep 17 00:00:00 2001
From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Fri, 24 Jan 2014 19:08:52 +0200
Subject: [PATCH] Reset unused fields in GIN data leaf page footer.

The maxoff field is not used in the new, compressed page format. Let's
reset it when converting an old-format page to the new format. The code
won't care either way, but this makes it possible to use the field for
something else in the future.
---
 src/backend/access/gin/gindatapage.c | 5 ++++-
 src/backend/access/gin/ginxlog.c     | 1 +
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/backend/access/gin/gindatapage.c b/src/backend/access/gin/gindatapage.c
index d65979b0e46..91934f0f900 100644
--- a/src/backend/access/gin/gindatapage.c
+++ b/src/backend/access/gin/gindatapage.c
@@ -817,7 +817,10 @@ dataPlaceToPageLeafRecompress(Buffer buf, disassembledLeaf *leaf,
 	}
 	Assert(newsize <= GinDataLeafMaxContentSize);
 	GinDataLeafPageSetPostingListSize(page, newsize);
-	GinPageSetCompressed(page);	 /* in case it was in pre-9.4 format before */
+
+	/* Reset these in case the page was in pre-9.4 format before */
+	GinPageSetCompressed(page);
+	GinPageGetOpaque(page)->maxoff = InvalidOffsetNumber;
 
 	/* Put WAL data */
 	recompress_xlog.length = (uint16) newsize;
diff --git a/src/backend/access/gin/ginxlog.c b/src/backend/access/gin/ginxlog.c
index 9a978ce2bdb..3e86590ca0d 100644
--- a/src/backend/access/gin/ginxlog.c
+++ b/src/backend/access/gin/ginxlog.c
@@ -153,6 +153,7 @@ ginRedoRecompress(Page page, ginxlogRecompressDataLeaf *data)
 	memcpy(segment, data->newdata, data->length - data->unmodifiedsize);
 	GinDataLeafPageSetPostingListSize(page, data->length);
 	GinPageSetCompressed(page);
+	GinPageGetOpaque(page)->maxoff = InvalidOffsetNumber;
 }
 
 static void
-- 
GitLab