Re: Dead code with short varlenas in toast_save_datum()

Nikita Malakhov <hukutoc@gmail.com>

From: Nikita Malakhov <hukutoc@gmail.com>
To: Nikhil Kumar Veldanda <veldanda.nikhilkumar17@gmail.com>
Cc: Michael Paquier <michael@paquier.xyz>, Postgres hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-08-05T20:07:45Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Add isolation test for TOAST value reuse during CLUSTER

  2. Add SQL test for TOAST value allocations on rewrite

  3. Add regression test for short varlenas saved in TOAST relations

Hi,

Nikhil, thank you! This case should be added to regressions.

On Tue, Aug 5, 2025 at 8:26 PM Nikhil Kumar Veldanda <
veldanda.nikhilkumar17@gmail.com> wrote:

> Hi all,
>
> On Sun, Aug 3, 2025 at 8:16 PM Michael Paquier <michael@paquier.xyz>
> wrote:
> >     if (VARATT_IS_SHORT(dval))
> >     {
> >         data_p = VARDATA_SHORT(dval);
> >         data_todo = VARSIZE_SHORT(dval) - VARHDRSZ_SHORT;
> >         toast_pointer.va_rawsize = data_todo + VARHDRSZ;    /* as if not
> short */
> >         toast_pointer.va_extinfo = data_todo;
> >     }
> >
> > Coverage link:
> >
> https://coverage.postgresql.org/src/backend/access/common/toast_internals.c.gcov.html
> >
>
> This code path is currently not covered by tests. It can be exercised
> with the following SQL pattern
>
> CREATE TABLE temp_tbl (a text, b text);
> ALTER TABLE temp_tbl SET (toast_tuple_target = 128);
> ALTER TABLE temp_tbl ALTER COLUMN a SET STORAGE EXTERNAL;
> ALTER TABLE temp_tbl ALTER COLUMN b SET STORAGE EXTERNAL;
> INSERT INTO temp_tbl values(repeat('a', 4000), repeat('a', 120));
>
> --
> Nikhil Veldanda
>
>
>

-- 
Regards,
Nikita Malakhov
Postgres Professional
The Russian Postgres Company
https://postgrespro.ru/