186 #define XLogRecGetTotalLen(decoder) ((decoder)->decoded_record->xl_tot_len)
187 #define XLogRecGetPrev(decoder) ((decoder)->decoded_record->xl_prev)
188 #define XLogRecGetInfo(decoder) ((decoder)->decoded_record->xl_info)
189 #define XLogRecGetRmid(decoder) ((decoder)->decoded_record->xl_rmid)
190 #define XLogRecGetXid(decoder) ((decoder)->decoded_record->xl_xid)
191 #define XLogRecGetOrigin(decoder) ((decoder)->record_origin)
192 #define XLogRecGetData(decoder) ((decoder)->main_data)
193 #define XLogRecGetDataLen(decoder) ((decoder)->main_data_len)
194 #define XLogRecHasAnyBlockRefs(decoder) ((decoder)->max_block_id >= 0)
195 #define XLogRecHasBlockRef(decoder, block_id) \
196 ((decoder)->blocks[block_id].in_use)
197 #define XLogRecHasBlockImage(decoder, block_id) \
198 ((decoder)->blocks[block_id].has_image)
bool DecodeXLogRecord(XLogReaderState *state, XLogRecord *record, char **errmsg)
bool XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id, RelFileNode *rnode, ForkNumber *forknum, BlockNumber *blknum)
XLogReaderState * XLogReaderAllocate(XLogPageReadCB pagereadfunc, void *private_data)
XLogRecord * decoded_record
bool RestoreBlockImage(XLogReaderState *recoder, uint8 block_id, char *dst)
void XLogReaderFree(XLogReaderState *state)
int(* XLogPageReadCB)(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr, int reqLen, XLogRecPtr targetRecPtr, char *readBuf, TimeLineID *pageTLI)
char * XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len)
int errmsg(const char *fmt,...)
struct XLogRecord * XLogReadRecord(XLogReaderState *state, XLogRecPtr recptr, char **errormsg)
RepOriginId record_origin
DecodedBkpBlock blocks[XLR_MAX_BLOCK_ID+1]