Line data Source code
1 : /*------------------------------------------------------------------------- 2 : * 3 : * smgrdesc.c 4 : * rmgr descriptor routines for catalog/storage.c 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/smgrdesc.c 12 : * 13 : *------------------------------------------------------------------------- 14 : */ 15 : #include "postgres.h" 16 : 17 : #include "catalog/storage_xlog.h" 18 : 19 : 20 : void 21 2 : smgr_desc(StringInfo buf, XLogReaderState *record) 22 : { 23 2 : char *rec = XLogRecGetData(record); 24 2 : uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK; 25 : 26 2 : if (info == XLOG_SMGR_CREATE) 27 : { 28 2 : xl_smgr_create *xlrec = (xl_smgr_create *) rec; 29 2 : char *path = relpathperm(xlrec->rlocator, xlrec->forkNum); 30 : 31 2 : appendStringInfoString(buf, path); 32 2 : pfree(path); 33 : } 34 0 : else if (info == XLOG_SMGR_TRUNCATE) 35 : { 36 0 : xl_smgr_truncate *xlrec = (xl_smgr_truncate *) rec; 37 0 : char *path = relpathperm(xlrec->rlocator, MAIN_FORKNUM); 38 : 39 0 : appendStringInfo(buf, "%s to %u blocks flags %d", path, 40 : xlrec->blkno, xlrec->flags); 41 0 : pfree(path); 42 : } 43 2 : } 44 : 45 : const char * 46 2 : smgr_identify(uint8 info) 47 : { 48 2 : const char *id = NULL; 49 : 50 2 : switch (info & ~XLR_INFO_MASK) 51 : { 52 2 : case XLOG_SMGR_CREATE: 53 2 : id = "CREATE"; 54 2 : break; 55 0 : case XLOG_SMGR_TRUNCATE: 56 0 : id = "TRUNCATE"; 57 0 : break; 58 : } 59 : 60 2 : return id; 61 : }