Steven Niu <niush...@gmail.com> 于2025年6月9日周一 14:46写道:

> Hi,
>
> I like the idea of your change as it saves me out of converting-in-my-mind.
>
> And I suggest to create a macro to do this job.
>         #define getRmgrInfo(info) (info & XLR_RMGR_INFO_MASK)
>
> Then the code can become:
> XLogRecGetInfo(record) & ~XLR_INFO_MASK;
> -->
> getRmgrInfo(XLogRecGetInfo(record));
>

Good idea, found lots of  'XLogRecGetInfo(record) & ~XLR_INFO_MASK;'
in the code.

I add a macro XLogRecRmgrGetInfo(record) in patch 0002.

>
> Thanks,
> Steven
>
>
> 在 2025/6/9 14:23, Xiaoran Wang 写道:
> > Hi,
> > I refactored the code of extracting XLogRecord info.
> > In XLogRecord, the high 4 bits in xl_info is used by rmgr.
> >
> > typedef struct XLogRecord
> > {
> >      uint32      xl_tot_len;     /* total len of entire record */
> >      TransactionId xl_xid;       /* xact id */
> >      XLogRecPtr  xl_prev;        /* ptr to previous record in log */
> >      uint8       xl_info;        /* flag bits, see below */
> >      RmgrId      xl_rmid;        /* resource manager for this record */
> >      /* 2 bytes of padding here, initialize to zero */
> >      pg_crc32c   xl_crc;         /* CRC for this record */
> >
> >      /* XLogRecordBlockHeaders and XLogRecordDataHeader follow, no
> > padding */
> >
> > } XLogRecord;
> >
> > I found lots of the code to get the info as below
> >
> > XLogRecGetInfo(record) & ~XLR_INFO_MASK
> >
> > Actually, we can directly use XLR_RMGR_INFO_MASK(0xF0)
> > instead of XLR_INFO_MASK(0x0F), which is easier to understand.
> > Remove XLR_INFO_MASK as it is not used any more.
> >
> >
> > --
> > Best regards !
> > Xiaoran Wang
>
>
>
>

-- 
Best regards !
Xiaoran Wang

Attachment: 0002-Add-a-macro-XLogRecGetRmgrInfo.patch
Description: Binary data

Reply via email to