Re: Doc limitation update proposal: include out-of-line OID usage per TOAST-ed columns

Jakub Wartak <jakub.wartak@enterprisedb.com>

From: Jakub Wartak <jakub.wartak@enterprisedb.com>
To: Nikita Malakhov <hukutoc@gmail.com>
Cc: Gurjeet Singh <gurjeet@singh.im>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2023-04-26T10:18:39Z
Lists: pgsql-hackers

Attachments

Hi,

>> These 2 discussions show that it's a painful experience to run into
>> this problem, and that the hackers have ideas on how to fix it, but
>> those fixes haven't materialized for years. So I would say that, yes,
>> this info belongs in the hard-limits section, because who knows how
>> long it'll take this to be fixed.
>>
>> Please submit a patch.
>>
> This is a production case for large databases with high update rates, but is mistaken
> with reaching table size limit, although size limit is processed correctly.
>
> The note on TOAST limitation does not mention that TOAST values are not actually
> updated on UPDATE operation - old value is marked as dead and new one is inserted,
> and dead values should be vacuumed before value OID could be reused. The worst
> is that the INSERT/UPDATE clause does not fail if there is no OID available - it is
> looped in an infinite loop of sorting out OIDs.

OK, so here is the documentation patch proposal. I've also added two
rows touching the subject of pg_largeobjects, as it is also related to
the OIDs topic. Please feel free to send adjusted patches.

Regards,
-J.

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Document limit on the number of out-of-line values per table

  2. Log when GetNewOidWithIndex() fails to find unused OID many times.