195 #define XLogRecGetTotalLen(decoder) ((decoder)->decoded_record->xl_tot_len)
196 #define XLogRecGetPrev(decoder) ((decoder)->decoded_record->xl_prev)
197 #define XLogRecGetInfo(decoder) ((decoder)->decoded_record->xl_info)
198 #define XLogRecGetRmid(decoder) ((decoder)->decoded_record->xl_rmid)
199 #define XLogRecGetXid(decoder) ((decoder)->decoded_record->xl_xid)
200 #define XLogRecGetOrigin(decoder) ((decoder)->record_origin)
201 #define XLogRecGetData(decoder) ((decoder)->main_data)
202 #define XLogRecGetDataLen(decoder) ((decoder)->main_data_len)
203 #define XLogRecHasAnyBlockRefs(decoder) ((decoder)->max_block_id >= 0)
204 #define XLogRecHasBlockRef(decoder, block_id) \
205 ((decoder)->blocks[block_id].in_use)
206 #define XLogRecHasBlockImage(decoder, block_id) \
207 ((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]
void XLogReaderInvalReadState(XLogReaderState *state)