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-2023, 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 : #include "storage/relfilelocator.h" 19 : 20 : /* 21 : * Description of generic xlog record: write page regions that this record 22 : * overrides. 23 : */ 24 : void 25 0 : generic_desc(StringInfo buf, XLogReaderState *record) 26 : { 27 0 : Pointer ptr = XLogRecGetData(record), 28 0 : end = ptr + XLogRecGetDataLen(record); 29 : 30 0 : while (ptr < end) 31 : { 32 : OffsetNumber offset, 33 : length; 34 : 35 0 : memcpy(&offset, ptr, sizeof(offset)); 36 0 : ptr += sizeof(offset); 37 0 : memcpy(&length, ptr, sizeof(length)); 38 0 : ptr += sizeof(length); 39 0 : ptr += length; 40 : 41 0 : if (ptr < end) 42 0 : appendStringInfo(buf, "offset %u, length %u; ", offset, length); 43 : else 44 0 : appendStringInfo(buf, "offset %u, length %u", offset, length); 45 : } 46 0 : } 47 : 48 : /* 49 : * Identification of generic xlog record: we don't distinguish any subtypes 50 : * inside generic xlog records. 51 : */ 52 : const char * 53 0 : generic_identify(uint8 info) 54 : { 55 0 : return "Generic"; 56 : }