LCOV - code coverage report
Current view: top level - src/bin/pg_waldump - brindesc.c (source / functions) Hit Total Coverage
Test: PostgreSQL 18devel Lines: 43 56 76.8 %
Date: 2024-12-02 18:14:50 Functions: 2 2 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*-------------------------------------------------------------------------
       2             :  *
       3             :  * brindesc.c
       4             :  *    rmgr descriptor routines for BRIN indexes
       5             :  *
       6             :  * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
       7             :  * Portions Copyright (c) 1994, Regents of the University of California
       8             :  *
       9             :  *
      10             :  * IDENTIFICATION
      11             :  *    src/backend/access/rmgrdesc/brindesc.c
      12             :  *
      13             :  *-------------------------------------------------------------------------
      14             :  */
      15             : #include "postgres.h"
      16             : 
      17             : #include "access/brin_xlog.h"
      18             : 
      19             : void
      20      120060 : brin_desc(StringInfo buf, XLogReaderState *record)
      21             : {
      22      120060 :     char       *rec = XLogRecGetData(record);
      23      120060 :     uint8       info = XLogRecGetInfo(record) & ~XLR_INFO_MASK;
      24             : 
      25      120060 :     info &= XLOG_BRIN_OPMASK;
      26      120060 :     if (info == XLOG_BRIN_CREATE_INDEX)
      27             :     {
      28          12 :         xl_brin_createidx *xlrec = (xl_brin_createidx *) rec;
      29             : 
      30          12 :         appendStringInfo(buf, "v%d pagesPerRange %u",
      31          12 :                          xlrec->version, xlrec->pagesPerRange);
      32             :     }
      33      120048 :     else if (info == XLOG_BRIN_INSERT)
      34             :     {
      35          12 :         xl_brin_insert *xlrec = (xl_brin_insert *) rec;
      36             : 
      37          12 :         appendStringInfo(buf, "heapBlk %u pagesPerRange %u offnum %u",
      38             :                          xlrec->heapBlk,
      39             :                          xlrec->pagesPerRange,
      40          12 :                          xlrec->offnum);
      41             :     }
      42      120036 :     else if (info == XLOG_BRIN_UPDATE)
      43             :     {
      44           0 :         xl_brin_update *xlrec = (xl_brin_update *) rec;
      45             : 
      46           0 :         appendStringInfo(buf, "heapBlk %u pagesPerRange %u old offnum %u, new offnum %u",
      47             :                          xlrec->insert.heapBlk,
      48             :                          xlrec->insert.pagesPerRange,
      49           0 :                          xlrec->oldOffnum,
      50           0 :                          xlrec->insert.offnum);
      51             :     }
      52      120036 :     else if (info == XLOG_BRIN_SAMEPAGE_UPDATE)
      53             :     {
      54      120012 :         xl_brin_samepage_update *xlrec = (xl_brin_samepage_update *) rec;
      55             : 
      56      120012 :         appendStringInfo(buf, "offnum %u", xlrec->offnum);
      57             :     }
      58          24 :     else if (info == XLOG_BRIN_REVMAP_EXTEND)
      59             :     {
      60          12 :         xl_brin_revmap_extend *xlrec = (xl_brin_revmap_extend *) rec;
      61             : 
      62          12 :         appendStringInfo(buf, "targetBlk %u", xlrec->targetBlk);
      63             :     }
      64          12 :     else if (info == XLOG_BRIN_DESUMMARIZE)
      65             :     {
      66          12 :         xl_brin_desummarize *xlrec = (xl_brin_desummarize *) rec;
      67             : 
      68          12 :         appendStringInfo(buf, "pagesPerRange %u, heapBlk %u, page offset %u",
      69          12 :                          xlrec->pagesPerRange, xlrec->heapBlk, xlrec->regOffset);
      70             :     }
      71      120060 : }
      72             : 
      73             : const char *
      74      120070 : brin_identify(uint8 info)
      75             : {
      76      120070 :     const char *id = NULL;
      77             : 
      78      120070 :     switch (info & ~XLR_INFO_MASK)
      79             :     {
      80          14 :         case XLOG_BRIN_CREATE_INDEX:
      81          14 :             id = "CREATE_INDEX";
      82          14 :             break;
      83           0 :         case XLOG_BRIN_INSERT:
      84           0 :             id = "INSERT";
      85           0 :             break;
      86          14 :         case XLOG_BRIN_INSERT | XLOG_BRIN_INIT_PAGE:
      87          14 :             id = "INSERT+INIT";
      88          14 :             break;
      89           0 :         case XLOG_BRIN_UPDATE:
      90           0 :             id = "UPDATE";
      91           0 :             break;
      92           0 :         case XLOG_BRIN_UPDATE | XLOG_BRIN_INIT_PAGE:
      93           0 :             id = "UPDATE+INIT";
      94           0 :             break;
      95      120014 :         case XLOG_BRIN_SAMEPAGE_UPDATE:
      96      120014 :             id = "SAMEPAGE_UPDATE";
      97      120014 :             break;
      98          14 :         case XLOG_BRIN_REVMAP_EXTEND:
      99          14 :             id = "REVMAP_EXTEND";
     100          14 :             break;
     101          14 :         case XLOG_BRIN_DESUMMARIZE:
     102          14 :             id = "DESUMMARIZE";
     103          14 :             break;
     104             :     }
     105             : 
     106      120070 :     return id;
     107             : }

Generated by: LCOV version 1.14