LCOV - code coverage report
Current view: top level - src/backend/access/rmgrdesc - brindesc.c (source / functions) Hit Total Coverage
Test: PostgreSQL 18devel Lines: 40 56 71.4 %
Date: 2024-11-21 09:14:53 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        6444 : brin_desc(StringInfo buf, XLogReaderState *record)
      21             : {
      22        6444 :     char       *rec = XLogRecGetData(record);
      23        6444 :     uint8       info = XLogRecGetInfo(record) & ~XLR_INFO_MASK;
      24             : 
      25        6444 :     info &= XLOG_BRIN_OPMASK;
      26        6444 :     if (info == XLOG_BRIN_CREATE_INDEX)
      27             :     {
      28           0 :         xl_brin_createidx *xlrec = (xl_brin_createidx *) rec;
      29             : 
      30           0 :         appendStringInfo(buf, "v%d pagesPerRange %u",
      31           0 :                          xlrec->version, xlrec->pagesPerRange);
      32             :     }
      33        6444 :     else if (info == XLOG_BRIN_INSERT)
      34             :     {
      35        2804 :         xl_brin_insert *xlrec = (xl_brin_insert *) rec;
      36             : 
      37        2804 :         appendStringInfo(buf, "heapBlk %u pagesPerRange %u offnum %u",
      38             :                          xlrec->heapBlk,
      39             :                          xlrec->pagesPerRange,
      40        2804 :                          xlrec->offnum);
      41             :     }
      42        3640 :     else if (info == XLOG_BRIN_UPDATE)
      43             :     {
      44         590 :         xl_brin_update *xlrec = (xl_brin_update *) rec;
      45             : 
      46         590 :         appendStringInfo(buf, "heapBlk %u pagesPerRange %u old offnum %u, new offnum %u",
      47             :                          xlrec->insert.heapBlk,
      48             :                          xlrec->insert.pagesPerRange,
      49         590 :                          xlrec->oldOffnum,
      50         590 :                          xlrec->insert.offnum);
      51             :     }
      52        3050 :     else if (info == XLOG_BRIN_SAMEPAGE_UPDATE)
      53             :     {
      54        3048 :         xl_brin_samepage_update *xlrec = (xl_brin_samepage_update *) rec;
      55             : 
      56        3048 :         appendStringInfo(buf, "offnum %u", xlrec->offnum);
      57             :     }
      58           2 :     else if (info == XLOG_BRIN_REVMAP_EXTEND)
      59             :     {
      60           2 :         xl_brin_revmap_extend *xlrec = (xl_brin_revmap_extend *) rec;
      61             : 
      62           2 :         appendStringInfo(buf, "targetBlk %u", xlrec->targetBlk);
      63             :     }
      64           0 :     else if (info == XLOG_BRIN_DESUMMARIZE)
      65             :     {
      66           0 :         xl_brin_desummarize *xlrec = (xl_brin_desummarize *) rec;
      67             : 
      68           0 :         appendStringInfo(buf, "pagesPerRange %u, heapBlk %u, page offset %u",
      69           0 :                          xlrec->pagesPerRange, xlrec->heapBlk, xlrec->regOffset);
      70             :     }
      71        6444 : }
      72             : 
      73             : const char *
      74        6444 : brin_identify(uint8 info)
      75             : {
      76        6444 :     const char *id = NULL;
      77             : 
      78        6444 :     switch (info & ~XLR_INFO_MASK)
      79             :     {
      80           0 :         case XLOG_BRIN_CREATE_INDEX:
      81           0 :             id = "CREATE_INDEX";
      82           0 :             break;
      83        2804 :         case XLOG_BRIN_INSERT:
      84        2804 :             id = "INSERT";
      85        2804 :             break;
      86           0 :         case XLOG_BRIN_INSERT | XLOG_BRIN_INIT_PAGE:
      87           0 :             id = "INSERT+INIT";
      88           0 :             break;
      89         580 :         case XLOG_BRIN_UPDATE:
      90         580 :             id = "UPDATE";
      91         580 :             break;
      92          10 :         case XLOG_BRIN_UPDATE | XLOG_BRIN_INIT_PAGE:
      93          10 :             id = "UPDATE+INIT";
      94          10 :             break;
      95        3048 :         case XLOG_BRIN_SAMEPAGE_UPDATE:
      96        3048 :             id = "SAMEPAGE_UPDATE";
      97        3048 :             break;
      98           2 :         case XLOG_BRIN_REVMAP_EXTEND:
      99           2 :             id = "REVMAP_EXTEND";
     100           2 :             break;
     101           0 :         case XLOG_BRIN_DESUMMARIZE:
     102           0 :             id = "DESUMMARIZE";
     103           0 :             break;
     104             :     }
     105             : 
     106        6444 :     return id;
     107             : }

Generated by: LCOV version 1.14