Re: Compress prune/freeze records with Delta Frame of Reference algorithm

Heikki Linnakangas <hlinnaka@iki.fi>

From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Evgeny Voropaev <evgeny.voropaev@tantorlabs.com>, Andres Freund <andres@anarazel.de>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>, Andrey Borodin <x4mmm@yandex-team.ru>
Date: 2026-04-14T09:02:28Z
Lists: pgsql-hackers
On 24/03/2026 16:28, Evgeny Voropaev wrote:
> Also I hope, independently of its usage in prune/freeze records, the 
> DFoR itself might be used for compression sequences in other places of PG.

Yeah, that would make this huge amount of new code much more palatable.

I had a similar thought when I added src/backend/lib/integerset.c, I 
planned to also use it for holding the dead TID list in vacuum for 
starters, and possibly for more things in the future. That plan was 
foiled because we got parallel VACUUM instead, which moved the TID list 
to shared memory, and I didn't account for that in integerset.c. So now 
integerset.c is only used for GiST vacuum, which is a pretty narrow use 
case.

Can this DFoR code replace integerset.c easily? Can we use it for the 
vacuum dead TID list? For GIN posting lists? Where else?

- Heikki




Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Fix a set of typos and grammar issues across the tree