]> granicus.if.org Git - postgresql/commitdiff
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);