pgsql: Mark commit and abort WAL records with XLR_SPECIAL_REL_UPDATE.

From: Heikki Linnakangas <heikki(dot)linnakangas(at)iki(dot)fi>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Mark commit and abort WAL records with XLR_SPECIAL_REL_UPDATE.
Date: 2020-08-17 07:55:03
Message-ID: E1k7Zyx-0005zi-3k@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

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

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/a28d731a1187e8d9d8c2b6319375fcbf0a8debd5

Modified Files
--------------
src/backend/access/transam/xact.c | 2 ++
src/bin/pg_rewind/parsexlog.c | 13 +++++++++++++
src/bin/pg_rewind/t/001_basic.pl | 15 ++++++++++++++-
3 files changed, 29 insertions(+), 1 deletion(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Heikki Linnakangas 2020-08-17 14:19:47 pgsql: Fix printing last progress report line in client programs.
Previous Message Heikki Linnakangas 2020-08-17 07:14:04 pgsql: Fix printing last progress report line in client programs.