LCOV - code coverage report
Current view: top level - src/bin/pg_waldump - rmgrdesc_utils.c (source / functions) Hit Total Coverage
Test: PostgreSQL 17devel Lines: 20 20 100.0 %
Date: 2024-03-29 00:11:46 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*-------------------------------------------------------------------------
       2             :  *
       3             :  * rmgrdesc_utils.c
       4             :  *    Support functions for rmgrdesc routines
       5             :  *
       6             :  * Copyright (c) 2023-2024, PostgreSQL Global Development Group
       7             :  *
       8             :  *
       9             :  * IDENTIFICATION
      10             :  *    src/backend/access/rmgrdesc/rmgrdesc_utils.c
      11             :  *
      12             :  *-------------------------------------------------------------------------
      13             :  */
      14             : #include "postgres.h"
      15             : 
      16             : #include "access/rmgrdesc_utils.h"
      17             : #include "storage/off.h"
      18             : 
      19             : /*
      20             :  * Helper function to print an array, in the format described in the
      21             :  * README.
      22             :  */
      23             : void
      24       12082 : array_desc(StringInfo buf, void *array, size_t elem_size, int count,
      25             :            void (*elem_desc) (StringInfo buf, void *elem, void *data),
      26             :            void *data)
      27             : {
      28       12082 :     if (count == 0)
      29             :     {
      30          16 :         appendStringInfoString(buf, " []");
      31          16 :         return;
      32             :     }
      33       12066 :     appendStringInfoString(buf, " [");
      34      191146 :     for (int i = 0; i < count; i++)
      35             :     {
      36      179080 :         elem_desc(buf, (char *) array + elem_size * i, data);
      37      179080 :         if (i < count - 1)
      38      167014 :             appendStringInfoString(buf, ", ");
      39             :     }
      40       12066 :     appendStringInfoChar(buf, ']');
      41             : }
      42             : 
      43             : void
      44      176628 : offset_elem_desc(StringInfo buf, void *offset, void *data)
      45             : {
      46      176628 :     appendStringInfo(buf, "%u", *(OffsetNumber *) offset);
      47      176628 : }
      48             : 
      49             : void
      50        1264 : redirect_elem_desc(StringInfo buf, void *offset, void *data)
      51             : {
      52        1264 :     OffsetNumber *new_offset = (OffsetNumber *) offset;
      53             : 
      54        1264 :     appendStringInfo(buf, "%u->%u", new_offset[0], new_offset[1]);
      55        1264 : }
      56             : 
      57             : void
      58          12 : oid_elem_desc(StringInfo buf, void *relid, void *data)
      59             : {
      60          12 :     appendStringInfo(buf, "%u", *(Oid *) relid);
      61          12 : }

Generated by: LCOV version 1.14