Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
 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 = []
Ejemplo n.º 3
0
 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 = []
Ejemplo n.º 4
0
 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'])