Re: [HACKERS] Custom compression methods

Dilip Kumar <dilipbalaut@gmail.com>

From: Dilip Kumar <dilipbalaut@gmail.com>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: Robert Haas <robertmhaas@gmail.com>, Tomas Vondra <tomas.vondra@2ndquadrant.com>, Alexander Korotkov <a.korotkov@postgrespro.ru>, David Steele <david@pgmasters.net>, Ildus Kurbangaliev <i.kurbangaliev@gmail.com>, Dmitry Dolgov <9erthalion6@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-03-01T05:56:49Z
Lists: pgsql-hackers
On Sat, Feb 27, 2021 at 9:35 PM Justin Pryzby <pryzby@telsasoft.com> wrote:
>
> > Subject: [PATCH v28 3/4] Add default_toast_compression GUC
>
> This part isn't working.  My first patch worked somewhat better: due to doing
> strcmp() with the default GUC, it avoided using the cached AM OID.  (But it
> would've failed with more than 2 AMs, since the cache wasn't invalidated, since
> I couldn't tell when it was needed).
>
> Your patch does this:
>
> |postgres=# SET default_toast_compression=lz4 ;
> |postgres=# CREATE TABLE t(a text);
> |postgres=# \d+ t
> | a      | text |           |          |         | extended | pglz        |              |
>
> assign_default_toast_compression() should set
> default_toast_compression_oid=InvalidOid, rather than
> default_toast_compression=NULL.

I will fix this.

> In my original patch, that was commented, since I was confused, not realizing
> that the GUC machinery itself assigns to the string value.  We should assign to
> the cached Oid, instead.

> Reading my own patch, I see that in AccessMethodCallback() should also say
> InvalidOid.
> | default_toast_compression_oid = false;
> The false assignment was copied from namespace.c: baseSearchPathValid.

I will fix this.

So as of now, we can make this patch such that it is enough to work
with the built-in method and later we can add another enhancement
patch that can work with the custom compression methods.

-- 
Regards,
Dilip Kumar
EnterpriseDB: http://www.enterprisedb.com



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.