def __load(self, filename): try: with open(filename, 'rb') as file: pgctl_data = file.read(PG_CONTROL_SIZE) self.systemidentifier, = struct.unpack_from('Q', pgctl_data, memoffset['ControlFileData.system_identifier']) self.catalog_version_no, = struct.unpack_from('I', pgctl_data, memoffset['ControlFileData.catalog_version_no']) self.dbstate, = struct.unpack_from(pgstruct.get_type_format('DBState'), pgctl_data, memoffset['ControlFileData.state']) self.checkPoint, = struct.unpack_from('Q', pgctl_data, memoffset['ControlFileData.checkPoint']) self.minRecoveryPoint, = struct.unpack_from('Q', pgctl_data, memoffset['ControlFileData.minRecoveryPoint']) self.minRecoveryPointTLI, = struct.unpack_from('I', pgctl_data, memoffset['ControlFileData.minRecoveryPointTLI']) self.checkPointCopy = CheckPoint(pgctl_data, memoffset['ControlFileData.checkPointCopy']) self.xlog_blcksz, = struct.unpack_from('I', pgctl_data, memoffset['ControlFileData.xlog_blcksz']) self.xlog_seg_size, = struct.unpack_from('I', pgctl_data, memoffset['ControlFileData.xlog_seg_size']) self.blcksz, = struct.unpack_from('I', pgctl_data, memoffset['ControlFileData.blcksz']) self.relseg_size, = struct.unpack_from('I', pgctl_data, memoffset['ControlFileData.relseg_size']) self.nameDataLen, = struct.unpack_from('I', pgctl_data, memoffset['ControlFileData.nameDataLen']) self.float8ByVal, = struct.unpack_from(pgstruct.get_type_format('bool'), pgctl_data, memoffset['ControlFileData.float8ByVal']) self.float4ByVal, = struct.unpack_from(pgstruct.get_type_format('bool'), pgctl_data, memoffset['ControlFileData.float4ByVal']) self.crc, = struct.unpack_from('I', pgctl_data, memoffset['ControlFileData.crc']) crcdatas = [] crcdatas.append((pgctl_data, memoffset['ControlFileData.crc'])); if not upgcrc.crceq(crcdatas, self.crc): logger.error('pg_control has invalid CRC') raise UPgException('pg_control has invalid CRC') except IOError: logger.error("Error in reading control file!") raise
def __init__(self, record_buf): self.xl_tot_len, = struct.unpack_from('I', record_buf, memoffset['XLogRecord.xl_tot_len']) self.xl_xid, = struct.unpack_from('I', record_buf, memoffset['XLogRecord.xl_xid']) self.xl_prev, = struct.unpack_from('Q', record_buf, memoffset['XLogRecord.xl_prev']) self.xl_info, = struct.unpack_from('B', record_buf, memoffset['XLogRecord.xl_info']) self.xl_rmid, = struct.unpack_from(pgstruct.get_type_format('RmgrId'), record_buf, memoffset['XLogRecord.xl_rmid']) self.xl_crc, = struct.unpack_from('I', record_buf, memoffset['XLogRecord.xl_crc']) self.blocks = []
def __init__(self, record_buf): self.xl_tot_len, = struct.unpack_from( 'I', record_buf, memoffset['XLogRecord.xl_tot_len']) self.xl_xid, = struct.unpack_from('I', record_buf, memoffset['XLogRecord.xl_xid']) self.xl_prev, = struct.unpack_from('Q', record_buf, memoffset['XLogRecord.xl_prev']) self.xl_info, = struct.unpack_from('B', record_buf, memoffset['XLogRecord.xl_info']) self.xl_rmid, = struct.unpack_from(pgstruct.get_type_format('RmgrId'), record_buf, memoffset['XLogRecord.xl_rmid']) self.xl_crc, = struct.unpack_from('I', record_buf, memoffset['XLogRecord.xl_crc']) self.blocks = []
def __init__(self, beginaddr, startpos): self.redo, = struct.unpack_from('Q', beginaddr, startpos + memoffset['CheckPoint.redo']) self.ThisTimeLineID, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.ThisTimeLineID']) self.PrevTimeLineID, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.PrevTimeLineID']) self.fullPageWrites, = struct.unpack_from(pgstruct.get_type_format('bool'), beginaddr, startpos + memoffset['CheckPoint.fullPageWrites']) self.nextXidEpoch, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.nextXidEpoch']) self.nextXid, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.nextXid']) self.nextOid, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.nextOid']) self.nextMulti, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.nextMulti']) self.nextMultiOffset, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.nextMultiOffset']) self.oldestXid, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.oldestXid']) self.oldestXidDB, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.oldestXidDB']) self.oldestMulti, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.oldestMulti']) self.oldestMultiDB, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.oldestMultiDB']) self.time, = struct.unpack_from('Q', beginaddr, startpos + memoffset['CheckPoint.time']) self.oldestCommitTs, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.oldestCommitTs']) self.newestCommitTs, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.newestCommitTs']) self.oldestActiveXid, = struct.unpack_from('I', beginaddr, startpos + memoffset['CheckPoint.oldestActiveXid'])