summaryrefslogtreecommitdiff
path: root/src/backend/access/brin/brin_pageops.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/brin/brin_pageops.c')
-rw-r--r--src/backend/access/brin/brin_pageops.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/backend/access/brin/brin_pageops.c b/src/backend/access/brin/brin_pageops.c
index b0f86f3663..09db5c6f8f 100644
--- a/src/backend/access/brin/brin_pageops.c
+++ b/src/backend/access/brin/brin_pageops.c
@@ -476,7 +476,7 @@ brin_page_init(Page page, uint16 type)
}
/*
- * Initialize a new BRIN index' metapage.
+ * Initialize a new BRIN index's metapage.
*/
void
brin_metapage_init(Page page, BlockNumber pagesPerRange, uint16 version)
@@ -497,6 +497,14 @@ brin_metapage_init(Page page, BlockNumber pagesPerRange, uint16 version)
* revmap page to be created when the index is.
*/
metadata->lastRevmapPage = 0;
+
+ /*
+ * Set pd_lower just past the end of the metadata. This is essential,
+ * because without doing so, metadata will be lost if xlog.c compresses
+ * the page.
+ */
+ ((PageHeader) page)->pd_lower =
+ ((char *) metadata + sizeof(BrinMetaPageData)) - (char *) page;
}
/*