Fix gin_desc routine to match the WAL format.
authorHeikki Linnakangas <heikki.linnakangas@iki.fi>
Thu, 28 Nov 2013 19:54:49 +0000 (21:54 +0200)
committerHeikki Linnakangas <heikki.linnakangas@iki.fi>
Thu, 28 Nov 2013 19:57:42 +0000 (21:57 +0200)
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

index 72d60bf8d32f9ea3930ac099046db00df3a731ad..3675e1ec5d8625cf201e8c2d84e8abfc944e6bf5 100644 (file)
@@ -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);