Line data Source code
1 : /*------------------------------------------------------------------------- 2 : * 3 : * committsdesc.c 4 : * rmgr descriptor routines for access/transam/commit_ts.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/committsdesc.c 12 : * 13 : *------------------------------------------------------------------------- 14 : */ 15 : #include "postgres.h" 16 : 17 : #include "access/commit_ts.h" 18 : 19 : 20 : void 21 0 : commit_ts_desc(StringInfo buf, XLogReaderState *record) 22 : { 23 0 : char *rec = XLogRecGetData(record); 24 0 : uint8 info = XLogRecGetInfo(record) & ~XLR_INFO_MASK; 25 : 26 0 : if (info == COMMIT_TS_ZEROPAGE) 27 : { 28 : int64 pageno; 29 : 30 0 : memcpy(&pageno, rec, sizeof(pageno)); 31 0 : appendStringInfo(buf, "%lld", (long long) pageno); 32 : } 33 0 : else if (info == COMMIT_TS_TRUNCATE) 34 : { 35 0 : xl_commit_ts_truncate *trunc = (xl_commit_ts_truncate *) rec; 36 : 37 0 : appendStringInfo(buf, "pageno %lld, oldestXid %u", 38 0 : (long long) trunc->pageno, trunc->oldestXid); 39 : } 40 0 : } 41 : 42 : const char * 43 0 : commit_ts_identify(uint8 info) 44 : { 45 0 : switch (info) 46 : { 47 0 : case COMMIT_TS_ZEROPAGE: 48 0 : return "ZEROPAGE"; 49 0 : case COMMIT_TS_TRUNCATE: 50 0 : return "TRUNCATE"; 51 0 : default: 52 0 : return NULL; 53 : } 54 : }