+ /* + * Compute targetRecOff. It should typically be greater than short + * page-header since a valid record can't , but can also be zero when + * caller has supplied a page-aligned address or when we are skipping + * multi-page continuation record. It doesn't matter though because + * ReadPageInternal() will read at least short page-header worth of + * data + */ This needs some polishing, there is an unfinished sentence here.
+ targetRecOff = tmpRecPtr % XLOG_BLCKSZ; targetRecOff, pageHeaderSize and targetPagePtr could be declared inside directly the new while loop.
Thanks Michael for reviewing the patch. I've fixed these issues and new version is attached.
Can you describe the process used to generate the sample WAL segment?
I'd like to turn it into a TAP test to go along with the patch.