Re: Extending amcheck to check toast size and compression

Mark Dilger <mark.dilger@enterprisedb.com>

From: Mark Dilger <mark.dilger@enterprisedb.com>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2021-05-04T18:24:35Z
Lists: pgsql-hackers

Attachments


> On May 4, 2021, at 9:43 AM, Justin Pryzby <pryzby@telsasoft.com> wrote:
> 
> +       /* Oversized toasted attributes should never be stored */
> +       if (toast_pointer.va_rawsize > VARLENA_SIZE_LIMIT)
> +               report_corruption(ctx,
> +                                                 psprintf("toast value %u rawsize %u exceeds limit %u",
> +                                                                  toast_pointer.va_valueid,
> +                                                                  toast_pointer.va_rawsize,
> +                                                                  VARLENA_SIZE_LIMIT));
> +
> 
> I think the comment sounds wrong since toast is precisely for storage of
> "oversized" attributes.
> 
> https://www.postgresql.org/docs/current/storage-toast.html
> | This section provides an overview of TOAST (The Oversized-Attribute Storage Technique).

Thanks for reviewing!  Changed to:

+   /* Toasted attributes too large to be untoasted should never be stored */

Commits

  1. Remove tests added by bd807be6935929bdefe74d1258ca08048f0aafa3.

  2. amcheck: Add additional TOAST pointer checks.