static void dumpCTRecord(ChangeTrackingRecord *record) { printf("(%04d/%04d): ", recs_read, recs_in_page); getSpaceName(record->relFileNode.spcNode); getDbName(record->relFileNode.dbNode); getRelName(record->relFileNode.relNode); printf("space %8s, db %8s, tblname %8s, ", spaceName, dbName, relName); printf("xlogloc [%X/%X] ", record->xlogLocation.xlogid, record->xlogLocation.xrecoff); printf("block number %4d ", record->bufferPoolBlockNum); printf("persistent tid %s ", ItemPointerToStringX(&record->persistentTid)); printf("persistent sn " INT64_FORMAT, record->persistentSerialNum); printf("\n"); }
static void print_backup_blocks(XLogRecPtr cur, XLogRecord *rec) { char *blk; int i; char buf[1024]; /* * backup blocks by full_page_write */ blk = (char*)XLogRecGetData(rec) + rec->xl_len; for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) { BkpBlock bkb; if (!(rec->xl_info & (XLR_SET_BKP_BLOCK(i)))) continue; memcpy(&bkb, blk, sizeof(BkpBlock)); getSpaceName(bkb.node.spcNode, spaceName, sizeof(spaceName)); getDbName(bkb.node.dbNode, dbName, sizeof(dbName)); getRelName(bkb.node.relNode, relName, sizeof(relName)); snprintf(buf, sizeof(buf), "bkpblock[%d]: s/d/r:%s/%s/%s blk:%u hole_off/len:%u/%u\n", i+1, spaceName, dbName, relName, bkb.block, bkb.hole_offset, bkb.hole_length); blk += sizeof(BkpBlock) + (BLCKSZ - bkb.hole_length); if (!enable_stats) printf("[cur:%u/%X, xid:%d, rmid:%d(%s), len:%d/%d, prev:%u/%X] %s", cur.xlogid, cur.xrecoff, rec->xl_xid, rec->xl_rmid, RM_names[rec->xl_rmid], rec->xl_len, rec->xl_tot_len, rec->xl_prev.xlogid, rec->xl_prev.xrecoff, buf); xlogstats.bkpblock_count++; xlogstats.bkpblock_len += (BLCKSZ - bkb.hole_length); } }
static void print_backup_blocks(XLogRecPtr cur, XLogRecord *rec) { char *blk; int i; char buf[1024]; /* * backup blocks by full_page_write */ blk = (char*)XLogRecGetData(rec) + rec->xl_len; for (i = 0; i < XLR_MAX_BKP_BLOCKS; i++) { BkpBlock bkb; if (!(rec->xl_info & (XLR_SET_BKP_BLOCK(i)))) continue; memcpy(&bkb, blk, sizeof(BkpBlock)); getSpaceName(bkb.node.spcNode, spaceName, sizeof(spaceName)); getDbName(bkb.node.dbNode, dbName, sizeof(dbName)); getRelName(bkb.node.relNode, relName, sizeof(relName)); snprintf(buf, sizeof(buf), "bkpblock[%d]: s/d/r:%s/%s/%s blk:%u hole_off/len:%u/%u\n", i+1, spaceName, dbName, relName, bkb.block, bkb.hole_offset, bkb.hole_length); blk += sizeof(BkpBlock) + (BLCKSZ - bkb.hole_length); if (!enable_stats) { PRINT_XLOGRECORD_HEADER(cur, rec); printf("%s", buf); } xlogstats.bkpblock_count++; xlogstats.bkpblock_len += (BLCKSZ - bkb.hole_length); } }