postgresql/src
Michael Paquier 5173bfd044 pg_rewind: Skip copy of WAL segments generated before point of divergence
This commit makes the way WAL segments are handled from the source to
the target server slightly smarter: the copy of the WAL segments is now
skipped if these have been created before the point where source and
target have diverged (the WAL segment where the point of divergence
exists is still copied), because we know that such segments exist on
both the target and source.  Note that the on-disk size of the WAL
segments on the source and target need to match.  Hence, only the
segments generated after the point of divergence are now copied.  A
segment existing on the source but not the target is copied.

Previously, all the WAL segments were just copied in full.  This change
can make the rewind operation cheaper in some configurations, especially
for setups where some WAL retention causes many segments to remain on
the source server even after the promotion of a standby used as source
to rewind a previous primary.

A TAP test is added to track these new behaviors.  The file map printed
with --debug now includes all the information related to WAL segments,
to be able to track if these are copied or skipped, and the test relies
on the debug output generated.

Author: John Hsu <johnhyvr@gmail.com>
Author: Justin Kwan <justinpkwan@outlook.com>
Reviewed-by: Robert Haas <robertmhaas@gmail.com>
Reviewed-by: Alexander Korotkov <aekorotkov@gmail.com>
Reviewed-by: Japin Li <japinli@hotmail.com>
Reviewed-by: Michael Paquier <michael@paquier.xyz>
Reviewed-by: Srinath Reddy Sadipiralla <srinath2133@gmail.com>
Discussion: https://postgr.es/m/181b4c6fa9c.b8b725681941212.7547232617810891479@viggy28.dev
2025-10-25 09:07:31 +09:00
..
backend Fix off-by-one Asserts in FreePageBtreeInsertInternal/Leaf. 2025-10-23 12:32:06 -04:00
bin pg_rewind: Skip copy of WAL segments generated before point of divergence 2025-10-25 09:07:31 +09:00
common Fix compiler warnings around _CRT_glob 2025-10-01 17:13:52 +02:00
fe_utils Introduce frontend API able to retrieve the contents of PG_VERSION 2025-10-14 16:20:42 +09:00
include Introduce "REFRESH SEQUENCES" for subscriptions. 2025-10-23 08:30:27 +00:00
interfaces ecpg: check return value of replace_variables() 2025-10-17 10:03:15 +02:00
makefiles Remove traces of support for Sun Studio compiler 2025-09-12 07:39:05 +02:00
pl Avoid memory leak in validation of a PL/Python trigger function. 2025-10-23 14:23:26 -04:00
port Fix POSIX compliance in pgwin32_unsetenv() for "name" argument 2025-10-21 08:05:28 +09:00
template Remove traces of support for Sun Studio compiler 2025-09-12 07:39:05 +02:00
test Introduce "REFRESH SEQUENCES" for subscriptions. 2025-10-23 08:30:27 +00:00
timezone Generate GUC tables from .dat file 2025-09-03 09:45:17 +02:00
tools Introduce "REFRESH SEQUENCES" for subscriptions. 2025-10-23 08:30:27 +00:00
tutorial Fix compile of src/tutorial/funcs.c 2025-10-07 10:45:57 +02:00
.gitignore
DEVELOPERS
Makefile Remove distprep 2023-11-06 15:18:04 +01:00
Makefile.global.in Remove traces of support for Sun Studio compiler 2025-09-12 07:39:05 +02:00
Makefile.shlib Use exported symbols list on macOS for loadable modules as well 2025-06-10 07:04:43 +02:00
meson.build Update copyright for 2025 2025-01-01 11:21:55 -05:00
nls-global.mk Fix update-po for the PGXS case 2025-10-16 20:21:05 +02:00