Re: Extending amcheck to check toast size and compression

From: Mark Dilger <mark(dot)dilger(at)enterprisedb(dot)com>
To: Heikki Linnakangas <hlinnaka(at)iki(dot)fi>
Cc: Aleksander Alekseev <aleksander(at)timescale(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Extending amcheck to check toast size and compression
Date: 2021-07-14 15:38:54
Message-ID: 00CE66F2-EAAB-4676-AFD2-8D614162F9F1@enterprisedb.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

> On Jul 14, 2021, at 7:57 AM, Mark Dilger <mark(dot)dilger(at)enterprisedb(dot)com> wrote:
>
> so no valid toast pointer should contain a va_rawsize field greater than MaxAllocSize

... nor should any valid toast pointer contain a va_extinfo field encoding a va_extsize greater than va_rawsize - VARHDRSZ.

Violations of either of these properties suggest either a bug in the code which wrote the toast pointer, or that the toast pointer has been corrupted since being written, or that the page of data being read is being interpreted incorrectly, perhaps due to catalog corruption, or because the page is just random noise and not part of a valid table, etc. The amcheck code is not focused specifically on whether the toasted value can be detoasted so much as deducing that the data cannot be correct.


Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Zhihong Yu 2021-07-14 15:41:43 Re: ResourceOwner refactoring
Previous Message vignesh C 2021-07-14 15:38:53 Re: libpq compression