Re: Why clearing the VM doesn't require registering vm buffer in wal record

Yura Sokolov <y.sokolov@postgrespro.ru>

From: Yura Sokolov <y.sokolov@postgrespro.ru>
To: Andres Freund <andres@anarazel.de>, Matthias van de Meent <boekewurm+postgres@gmail.com>
Cc: Melanie Plageman <melanieplageman@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Robert Haas <robertmhaas@gmail.com>, Heikki Linnakangas <hlinnaka@iki.fi>, "Andrey M. Borodin" <x4mmm@yandex-team.ru>
Date: 2026-03-12T12:22:35Z
Lists: pgsql-hackers
12.03.2026 14:25, Yura Sokolov пишет:
> 06.03.2026 00:01, Andres Freund пишет:
>> Hi,
>>
>> On 2026-03-05 15:38:24 -0500, Andres Freund wrote:
>>>> On Thu, 5 Mar 2026 at 21:16, Andres Freund <andres@anarazel.de> wrote:
>>>>>
>>>>> But it does seem like it could be a problem for incremental backup /
>>>>> walsummarizer?
>>>>
>>>> I don't think it is, because that doesn't do calculations for non-main
>>>> forks, it considers those forks always changed and includes them in
>>>> full. Or at least, that was the response I got when I raised concerns
>>>> about the FSM back when the incremental backup feature was being
>>>> developed [0].
>>>
>>> There's explicit code for ignoring the FSM, but I don't see the same for the
>>> VM. And that makes sense: VM changes are mostly WAL logged, just not
>>> completely / generically (i.e. this complaint), whereas FSM changes are not
>>> WAL logged at all.
>>
>> Unfortunately I can confirm that incremental backups end up with an outdated
>> VM.
> 
> That is why pg_probackup still archive VM at whole in incremental (WAL
> parsing) backup.
> That is why WAL-G's incremental backup in WAL-parsing mode is (was?)
> considered unstable.
> 
> I know the problem for couple of years. Excuse me I didn't write about.
> 
> I didn't recognize fix could be as simple as registering VM buffers.
> My bad. I fill so stupid :-(
Should LSN properly set as well on vm page? To maximum of concurrent
updates, of course.

-- 
regards
Yura Sokolov aka funny-falcon



Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Revamp the WAL record format.

  2. Allow I/O reliability checks using 16-bit checksums

  3. Make the visibility map crash-safe.