Re: Fwd: [PATCH] Add zstd compression for TOAST using extended header format

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: Robert Treat <rob(at)xzilla(dot)net>
Cc: Dharin Shah <dharinshah95(at)gmail(dot)com>, Peter Eisentraut <peter(at)eisentraut(dot)org>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Fwd: [PATCH] Add zstd compression for TOAST using extended header format
Date: 2025-12-25 00:24:57
Message-ID: aUyEWfBXYBLKGkKQ@paquier.xyz
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers pgsql-hackers

On Wed, Dec 24, 2025 at 11:50:48AM -0500, Robert Treat wrote:
> Agreed that I can't see pglz being removed any time soon, if ever.
> Thinking through what a conversion process would look like seems
> unwieldy at best, so I think we definitely need it for backwards
> compatibility, plus I think it is useful to have a self-contained
> option. I'd almost suggest we should look at replacing lz4, but I
> don't think that is significantly easier, it just has a smaller, more
> invested, blast radius.

Backward-compatibility requirements make a replacement of LZ4
basically impossible to me, for the same reasons as pglz. We could
not replace the bit used in the va_extinfo to track if LZ4 compression
is used, either. One thing that I do wonder is if it would make
things simpler in the long-run if we introduced a new separated vartag
for LZ4-compressed external TOAST pointers as well. At least we'd
have a leaner design: it means that we have to keep the
varatt_external available on read, but we could update to the new
format when writing entries. Or perhaps that's not worth the
complication based on the last sentence you are writing..

> That said, I do suspect ztsd could quickly
> become a popular recommendation and/or default among users /
> consultants / service providers.

.. Because I strongly suspect that this is going to be true, and that
zstd would just be a better replacement over lz4. That's a trend that
I see is already going on for wal_compression.

Note that I am not on board with simply reusing varatt_external for
zstd-compressed entries, neither do I think that this is the best move
ever. It makes the core patch simpler, but it makes things like
ToastCompressionId more complicated to think about. If anything, I'd
consider a rename of varatt_external as the best way to go with an
intermediate "translation" structure only used in memory as I am
proposing on the other thread (something that others seem meh enough
about but I am not seeing alternate proposals floating around,
either). This would make things like detoast_external_attr() less
confusing, I think, as the latest patch posted on this thread is
actually proving with its shortcut for toast_fetch_datum as one
example of something I'd rather not do..
--
Michael

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Dharin Shah 2025-12-25 00:54:46 Re: Fwd: [PATCH] Add zstd compression for TOAST using extended header format
Previous Message Robert Treat 2025-12-24 16:50:48 Re: Fwd: [PATCH] Add zstd compression for TOAST using extended header format

Browse pgsql-hackers by date

  From Date Subject
Next Message Fujii Masao 2025-12-25 00:44:53 Re: DOCS - "\d mytable" also shows any publications that publish mytable
Previous Message Chao Li 2025-12-25 00:21:52 Re: doc: update the default of data checksums in the doc of pg_rewind