上一篇:
【0364】Postgres内核 解码先前读取的 XLOG record 之 decode headers ( 9 )
1. 解码 block data
在上一篇文章中,讲解 Postgres内核 实现将读取的 record 解码出头信息的源码实现。 本文将作为续篇,继续讲解Postgres内核解析 XLOG record 中 block data 的实现。
我们已经解析了片段头(fragment headers),并验证了片段中有效载荷的总长度等于剩余的数据量。将每个片段的数据复制到一个单独的缓冲区。我们可以只设置指向 readRecordBuf 的指针,但是为了方便调用者,我们需要对齐数据。但是,不会复制备份映像(Backup images);他们不需要对齐。
该过程由 for (block_id = 0; block_id <= state->max_block_id; block_id++) {}
实现。