Mark commit and abort WAL records with XLR_SPECIAL_REL_UPDATE.
Heikki Linnakangas <heikki.linnakangas@iki.fi>
Mark commit and abort WAL records with XLR_SPECIAL_REL_UPDATE. If a commit or abort record includes "dropped relfilenodes", then replaying the record will remove data files. That is surely a "special rel update", but the records were not marked as such. Fix that, teach pg_rewind to expect and ignore them, and add a test case to cover it. It's always been like this, but no backporting for fear of breaking existing applications. If an application parsed the WAL but was not handling commit/abort records, it would stop working. That might be a good thing if it really needed to handle the dropped rels, but it will be caught when the application is updated to work with PostgreSQL v14 anyway. Discussion: https://www.postgresql.org/message-id/07b33e2c-46a6-86a1-5f9e-a7da73fddb95%40iki.fi Reviewed-by: Amit Kapila, Michael Paquier
Files
| Path | Change | +/− |
|---|---|---|
| src/backend/access/transam/xact.c | modified | +2 −0 |
| src/bin/pg_rewind/parsexlog.c | modified | +13 −0 |
| src/bin/pg_rewind/t/001_basic.pl | modified | +14 −1 |
Discussion
- Commit/abort WAL records with dropped rels missing XLR_SPECIAL_REL_UPDATE 4 messages · 2020-08-14 → 2020-08-17