コード例 #1
0
ファイル: changetrackingdump.c プロジェクト: asubramanya/gpdb
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");
}
コード例 #2
0
ファイル: xlogdump.c プロジェクト: hanada/xlogdump
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);
	}
}
コード例 #3
0
ファイル: xlogdump.c プロジェクト: ANTIDB/xlogdump
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);
	}
}