BRIN: fix bug in xlog backup block counting
Alvaro Herrera <alvherre@alvh.no-ip.org>
BRIN: fix bug in xlog backup block counting The code that generates the BRIN_XLOG_UPDATE removes the buffer reference when the page that's target for the updated tuple is freshly initialized. This is a pretty usual optimization, but was breaking the case where the revmap buffer, which is referenced in the same WAL record, is getting a backup block: the replay code was using backup block index 1, which is not valid when the update target buffer gets pruned; the revmap buffer gets assigned 0 instead. Make sure to use the correct backup block index for revmap when replaying. Bug reported by Fujii Masao.
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/access/brin/brin_xlog.c | modified | +8 −4 |