Re: [HACKERS] Custom compression methods

Justin Pryzby <pryzby@telsasoft.com>

From: Justin Pryzby <pryzby@telsasoft.com>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Alvaro Herrera <alvherre@alvh.no-ip.org>, Dilip Kumar <dilipbalaut@gmail.com>, Andres Freund <andres@anarazel.de>, Tomas Vondra <tomas.vondra@2ndquadrant.com>, David Steele <david@pgmasters.net>, Ildus Kurbangaliev <i.kurbangaliev@gmail.com>, Dmitry Dolgov <9erthalion6@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2021-03-22T15:13:20Z
Lists: pgsql-hackers
On Mon, Mar 22, 2021 at 11:05:19AM -0400, Robert Haas wrote:
> On Mon, Mar 22, 2021 at 10:44 AM Justin Pryzby <pryzby@telsasoft.com> wrote:
> > Thanks.  I just realized that if you also push the GUC change, then the docs
> > should change from <string> to <enum>
> >
> > doc/src/sgml/config.sgml:      <term><varname>default_toast_compression</varname> (<type>string</type>)
> 
> I've now also committed your 0005. As for 0006, aside from the note
> above, which is a good one, is there any particular reason why this
> patch is labelled as WIP? I think this change makes sense and we
> should just do it unless there's some problem with it.

The first iteration was pretty rough, and there's still some question in my
mind about where default_toast_compression_options[] should be defined.  If
it's in the header file, then I could use lengthof() - but then it probably
gets multiply defined.  In the latest patch, there's multiple "externs".  Maybe
guc.c doesn't need the extern, since it includes toast_compression.h.  But then
it's the only "struct config_enum_entry" which has an "extern" outside of
guc.c.

Also, it looks like you added default_toast_compression out of order, so maybe
you'd fix that at the same time.

-- 
Justin



Commits

  1. docs: Update TOAST storage docs for configurable compression.

  2. Further tweaking of pg_dump's handling of default_toast_compression.

  3. Fix interaction of TOAST compression with expression indexes.

  4. Tidy up more loose ends related to configurable TOAST compression.

  5. Short-circuit slice requests that are for more than the object's size.

  6. Mostly-cosmetic adjustments of TOAST-related macros.

  7. Remove useless configure probe for <lz4/lz4.h>.

  8. Error on invalid TOAST compression in CREATE or ALTER TABLE.

  9. docs: Fix omissions related to configurable TOAST compression.

  10. More code cleanup for configurable TOAST compression.

  11. Bring configure support for LZ4 up to snuff.

  12. Make compression.sql regression test independent of default.

  13. Use valid compression method in brin_form_tuple

  14. Fix up pg_dump's handling of per-attribute compression options.

  15. Allow configurable LZ4 TOAST compression.

  16. Fix inconsistencies in the code

  17. Mostly-cosmetic improvements in memory chunk header alignment coding.

  18. Allow numeric to use a more compact, 2-byte header in many cases.