summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2025-10-08 13:57:04 +0900
committerMichael Paquier <michael@paquier.xyz>2025-10-08 14:02:26 +0900
commit138da727a174219da2d408382e50f8628f1fa38f (patch)
tree17d814677775d6c2c4cd66629b7912ba854ef9ad
parentb71bae41a0cdda879db39d9946d2cc4af910bed1 (diff)
Improve description of some WAL records for GIN
The following information is added in the description of some GIN records: - In INSERT_LISTPAGE, the number of tuples and the right link block. - In UPDATE_META_PAGE, the number of tuples, the previous tail block, and the right link block. - In SPLIT, the left and right children blocks. Author: Kirill Reshke <reshkekirill@gmail.com> Reviewed-by: Michael Paquier <michael@paquier.xyz> Reviewed-by: Andrey Borodin <x4mmm@yandex-team.ru> Discussion: https://postgr.es/m/CALdSSPgnAt5L=D_xGXRXLYO5FK1H31_eYEESxdU1n-r4g+6GqA@mail.gmail.com
-rw-r--r--src/backend/access/rmgrdesc/gindesc.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/backend/access/rmgrdesc/gindesc.c b/src/backend/access/rmgrdesc/gindesc.c
index 229675775ff..075c4a0ae93 100644
--- a/src/backend/access/rmgrdesc/gindesc.c
+++ b/src/backend/access/rmgrdesc/gindesc.c
@@ -130,6 +130,9 @@ gin_desc(StringInfo buf, XLogReaderState *record)
appendStringInfo(buf, " isdata: %c isleaf: %c",
(xlrec->flags & GIN_INSERT_ISDATA) ? 'T' : 'F',
(xlrec->flags & GIN_INSERT_ISLEAF) ? 'T' : 'F');
+ if (xlrec->leftChildBlkno != InvalidBlockNumber)
+ appendStringInfo(buf, " children: %u/%u",
+ xlrec->leftChildBlkno, xlrec->rightChildBlkno);
}
break;
case XLOG_GIN_VACUUM_PAGE:
@@ -150,10 +153,27 @@ gin_desc(StringInfo buf, XLogReaderState *record)
/* no further information */
break;
case XLOG_GIN_UPDATE_META_PAGE:
- /* no further information */
+ {
+ ginxlogUpdateMeta *xlrec = (ginxlogUpdateMeta *) rec;
+
+ appendStringInfo(buf, "ntuples: %d", xlrec->ntuples);
+ if (xlrec->prevTail != InvalidBlockNumber)
+ appendStringInfo(buf, " prevTail: %u",
+ xlrec->prevTail);
+ if (xlrec->newRightlink != InvalidBlockNumber)
+ appendStringInfo(buf, " newRightLink: %u",
+ xlrec->newRightlink);
+ }
break;
case XLOG_GIN_INSERT_LISTPAGE:
- /* no further information */
+ {
+ ginxlogInsertListPage *xlrec = (ginxlogInsertListPage *) rec;
+
+ appendStringInfo(buf, "ntuples: %d", xlrec->ntuples);
+ if (xlrec->rightlink != InvalidBlockNumber)
+ appendStringInfo(buf, " rightlink: %u",
+ xlrec->rightlink);
+ }
break;
case XLOG_GIN_DELETE_LISTPAGE:
appendStringInfo(buf, "ndeleted: %d",