Reset unused fields in GIN data leaf page footer.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Fri, 24 Jan 2014 17:08:52 +0000 (19:08 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Fri, 24 Jan 2014 17:10:10 +0000 (19:10 +0200)
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
src/backend/access/gin/ginxlog.c

index d65979b0e46b8f8b00debb4dd3ac9fa7cb6ba5fe..91934f0f90099f6218c4d787b13673de6bdeab0c 100644 (file)
@@ -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;
index 9a978ce2bdb1bdb8a24b4797e30ef384539d837b..3e86590ca0d3f6c555e09ed3843954d736d015a0 100644 (file)
@@ -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