Re: Move pg_attribute.attcompression to earlier in struct for reduced size?

Robert Haas <robertmhaas@gmail.com>

From: Robert Haas <robertmhaas@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Michael Paquier <michael@paquier.xyz>, Andres Freund <andres@anarazel.de>, Dilip Kumar <dilipbalaut@gmail.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2021-05-27T11:58:33Z
Lists: pgsql-hackers
On Thu, May 27, 2021 at 12:11 AM Tom Lane <tgl@sss.pgh.pa.us> wrote:
> AFAIR, there are zero promises about how effective, or when effective,
> changes in SET STORAGE will be.  And the number of complaints about
> that has also been zero.  So I'm not sure why we need to do more for
> SET COMPRESSION.  Especially since I'm unconvinced that recompressing
> everything just to recompress everything would *ever* be worthwhile.

I think it is good to have *some* way of ensuring that what you want
the system to do, it is actually doing. If we have not a single
operation in the system anywhere that can force recompression, someone
who actually cares will be left with no option but a dump and reload.
That is probably both a whole lot slower than something in the server
itself and also a pretty silly thing to have to tell people to do.

If it helps, I'd be perfectly fine with having this be an *optional*
behavior for CLUSTER or VACUUM FULL, depending on some switch. Or we
can devise another way for the user to make it happen. But we
shouldn't just be setting a policy that users are not allowed to care
whether their data is actually compressed using the compression method
they specified.

-- 
Robert Haas
EDB: http://www.enterprisedb.com



Commits

  1. Remove forced toast recompression in VACUUM FULL/CLUSTER

  2. Rethink definition of pg_attribute.attcompression.

  3. Fix memory leak when de-toasting compressed values in VACUUM FULL/CLUSTER

  4. Re-order pg_attribute columns to eliminate some padding space.

  5. Add more TAP tests for pg_dump with attribute compression