From 97c19e6c38ebc5e300539f6985ef3e05398c8f46 Mon Sep 17 00:00:00 2001
From: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: Thu, 28 Nov 2013 21:54:49 +0200
Subject: [PATCH] Fix gin_desc routine to match the WAL format.

In the GIN incomplete-splits patch, I used BlockIdDatas to store the block
number of left and right children, when inserting a downlink after a split
to an internal page posting list page. But gin_desc thought they were stored
as BlockNumbers.
---
 src/backend/access/rmgrdesc/gindesc.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/backend/access/rmgrdesc/gindesc.c b/src/backend/access/rmgrdesc/gindesc.c
index 72d60bf8d32..3675e1ec5d8 100644
--- a/src/backend/access/rmgrdesc/gindesc.c
+++ b/src/backend/access/rmgrdesc/gindesc.c
@@ -56,9 +56,9 @@ gin_desc(StringInfo buf, uint8 xl_info, char *rec)
 					BlockNumber leftChildBlkno;
 					BlockNumber rightChildBlkno;
 
-					memcpy(&leftChildBlkno, payload, sizeof(BlockNumber));
-					payload += sizeof(BlockNumber);
-					memcpy(&rightChildBlkno, payload, sizeof(BlockNumber));
+					leftChildBlkno = BlockIdGetBlockNumber((BlockId) payload);
+					payload += sizeof(BlockIdData);
+					rightChildBlkno = BlockIdGetBlockNumber((BlockId) payload);
 					payload += sizeof(BlockNumber);
 					appendStringInfo(buf, " children: %u/%u",
 									 leftChildBlkno, rightChildBlkno);
-- 
GitLab