Line data Source code
1 : /*------------------------------------------------------------------------- 2 : * 3 : * genericdesc.c 4 : * rmgr descriptor routines for access/transam/generic_xlog.c 5 : * 6 : * 7 : * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group 8 : * Portions Copyright (c) 1994, Regents of the University of California 9 : * 10 : * src/backend/access/rmgrdesc/genericdesc.c 11 : * 12 : *------------------------------------------------------------------------- 13 : */ 14 : #include "postgres.h" 15 : 16 : #include "access/generic_xlog.h" 17 : #include "lib/stringinfo.h" 18 : 19 : /* 20 : * Description of generic xlog record: write page regions that this record 21 : * overrides. 22 : */ 23 : void 24 0 : generic_desc(StringInfo buf, XLogReaderState *record) 25 : { 26 0 : Pointer ptr = XLogRecGetData(record), 27 0 : end = ptr + XLogRecGetDataLen(record); 28 : 29 0 : while (ptr < end) 30 : { 31 : OffsetNumber offset, 32 : length; 33 : 34 0 : memcpy(&offset, ptr, sizeof(offset)); 35 0 : ptr += sizeof(offset); 36 0 : memcpy(&length, ptr, sizeof(length)); 37 0 : ptr += sizeof(length); 38 0 : ptr += length; 39 : 40 0 : if (ptr < end) 41 0 : appendStringInfo(buf, "offset %u, length %u; ", offset, length); 42 : else 43 0 : appendStringInfo(buf, "offset %u, length %u", offset, length); 44 : } 45 0 : } 46 : 47 : /* 48 : * Identification of generic xlog record: we don't distinguish any subtypes 49 : * inside generic xlog records. 50 : */ 51 : const char * 52 0 : generic_identify(uint8 info) 53 : { 54 0 : return "Generic"; 55 : }