RmgrData desc;
uint32 fpi_len = 0;
StringInfoData rec_desc;
+ StringInfoData rec_blk_ref;
int i = 0;
desc = GetRmgr(XLogRecGetRmid(record));
initStringInfo(&rec_desc);
desc.rm_desc(&rec_desc, record);
+ if (XLogRecHasAnyBlockRefs(record))
+ {
+ initStringInfo(&rec_blk_ref);
+ XLogRecGetBlockRefInfo(record, false, true, &rec_blk_ref, &fpi_len);
+ }
+
values[i++] = LSNGetDatum(record->ReadRecPtr);
values[i++] = LSNGetDatum(record->EndRecPtr);
values[i++] = LSNGetDatum(XLogRecGetPrev(record));
values[i++] = CStringGetTextDatum(id);
values[i++] = UInt32GetDatum(XLogRecGetTotalLen(record));
values[i++] = UInt32GetDatum(XLogRecGetDataLen(record));
-
values[i++] = UInt32GetDatum(fpi_len);
if (rec_desc.len > 0)
else
nulls[i++] = true;
- /* Block references. */
if (XLogRecHasAnyBlockRefs(record))
- {
- StringInfoData rec_blk_ref;
-
- initStringInfo(&rec_blk_ref);
- XLogRecGetBlockRefInfo(record, false, true, &rec_blk_ref, &fpi_len);
values[i++] = CStringGetTextDatum(rec_blk_ref.data);
- }
else
nulls[i++] = true;