Fix incremental backup interaction with XLOG_DBASE_CREATE_FILE_COPY.
Robert Haas <rhaas@postgresql.org>
Fix incremental backup interaction with XLOG_DBASE_CREATE_FILE_COPY. After XLOG_DBASE_CREATE_FILE_COPY, a correct incremental backup needs to copy in full everything with the database and tablespace OID mentioned in that record; but that record doesn't specifically mention the blocks, or even the relfilenumbers, of the affected relations. As a result, we were failing to copy data that we should have copied. To fix, enter the DB OID and tablespace OID into the block reference table with relfilenumber 0 and limit block 0; and treat that as a limit block of 0 for every relfilenumber whose DB OID and tablespace OID match. Also, add a test case. Patch by me, reviewed by Noah Misch. Discussion: http://postgr.es/m/CA+Tgmob0xa=ByvGLMdAgkUZyVQE=r4nyYZ_VEa40FCfEDFnTKA@mail.gmail.com
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/backup/basebackup_incremental.c | modified | +17 −1 |
| src/backend/postmaster/walsummarizer.c | modified | +75 −0 |
| src/bin/pg_combinebackup/meson.build | modified | +1 −0 |
| src/bin/pg_combinebackup/t/006_db_file_copy.pl | added | +58 −0 |
Discussion
- incremental backup mishandles XLOG_DBASE_CREATE_FILE_COPY 5 messages · 2024-02-23 → 2024-03-04