Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Fix nbtree page split rmgr desc routine.
authorPeter Geoghegan <pg@bowt.ie>
Thu, 12 Sep 2019 22:45:01 +0000 (15:45 -0700)
committerPeter Geoghegan <pg@bowt.ie>
Thu, 12 Sep 2019 22:45:01 +0000 (15:45 -0700)
Include newitemoff in rmgr desc output for nbtree page split records.
In passing, correct an obsolete comment that claimed that newitemoff is
only logged for _L variant nbtree page split WAL records.

Both issues were oversights in commit 2c03216d831, which revamped the
WAL format.

Author: Peter Geoghegan
Backpatch: 9.5-, where the WAL format was revamped.

src/backend/access/rmgrdesc/nbtdesc.c
src/include/access/nbtree.h

index 7631cb5c73f8d0d2b747ae83cb116f85210f466f..ee7387873d1044cbb63ef9fe255c90f2c6ba4744 100644 (file)
@@ -40,8 +40,8 @@ btree_desc(StringInfo buf, XLogReaderState *record)
            {
                xl_btree_split *xlrec = (xl_btree_split *) rec;
 
-               appendStringInfo(buf, "level %u, firstright %d",
-                                xlrec->level, xlrec->firstright);
+               appendStringInfo(buf, "level %u, firstright %d, newitemoff %d",
+                                xlrec->level, xlrec->firstright, xlrec->newitemoff);
                break;
            }
        case XLOG_BTREE_VACUUM:
index a2bd73de9a58cc3a9d14068d3264b56ee8187dce..92c1e66c416c26c78d18c27e3bf810c38d10122a 100644 (file)
@@ -265,11 +265,11 @@ typedef struct xl_btree_insert
  *
  * Note: the four XLOG_BTREE_SPLIT xl_info codes all use this data record.
  * The _L and _R variants indicate whether the inserted tuple went into the
- * left or right split page (and thus, whether newitemoff and the new item
- * are stored or not).  The _ROOT variants indicate that we are splitting
- * the root page, and thus that a newroot record rather than an insert or
- * split record should follow.  Note that a split record never carries a
- * metapage update --- we'll do that in the parent-level update.
+ * left or right split page (and thus, whether the new item is stored or not).
+ * The _ROOT variants indicate that we are splitting the root page, and thus
+ * that a newroot record rather than an insert or split record should follow.
+ * Note that a split record never carries a metapage update --- we'll do that
+ * in the parent-level update.
  *
  * Backup Blk 0: original page / new left page
  *
@@ -291,7 +291,7 @@ typedef struct xl_btree_split
 {
    uint32      level;          /* tree level of page being split */
    OffsetNumber firstright;    /* first item moved to right page */
-   OffsetNumber newitemoff;    /* new item's offset (if placed on left page) */
+   OffsetNumber newitemoff;    /* new item's offset (useful for _L variants) */
 } xl_btree_split;
 
 #define SizeOfBtreeSplit   (offsetof(xl_btree_split, newitemoff) + sizeof(OffsetNumber))