Re: BUG #19382: Server crash at __nss_database_lookup

From: Andrey Borodin <x4mmm(at)yandex-team(dot)ru>
To: surya poondla <suryapoondla4(at)gmail(dot)com>
Cc: songjinzhou <tsinghualucky912(at)foxmail(dot)com>, dllggyx <dllggyx(at)outlook(dot)com>, pgsql-bugs <pgsql-bugs(at)lists(dot)postgresql(dot)org>
Subject: Re: BUG #19382: Server crash at __nss_database_lookup
Date: 2026-04-17 06:57:15
Message-ID: 674982B4-2824-433D-AFC4-CCBF410D9424@yandex-team.ru
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

> On 17 Apr 2026, at 04:20, surya poondla <suryapoondla4(at)gmail(dot)com> wrote:
>
> I also added a fast-path optimization in snapshot_record_composite_types() to avoid repeated type tree walks when a record is assigned in a loop — it skips the snapshot if the outermost type's tupDesc_identifier hasn't changed since the last snapshot.

Cool, but ISTM that it won’t work for domains.

if (rec->nCompTypes > 0 && rec->compTypeOids[0] == rec->rectypeid)

compTypeOids is composite, rectypeid is domain oid.
Can we make this work for domains too?

> Added both new test cases (Cases 5 and 6) to the regression. All 248 core regression tests and all 13 PL/pgSQL tests pass.

I hope it’s the last:

-- Case 7: composite variable used in RAISE NOTICE (exec_eval_datum path).
create type bug19382_foo5 as (a int, b int);
create function bug19382_test_eval_datum() returns void as $$
declare r bug19382_foo5;
begin
r.b := power(2, 30)::int4;
alter type bug19382_foo5 alter attribute b type text;
raise notice 'r = %', r; -- exec_eval_datum called here, no check
end;
$$ language plpgsql;
select bug19382_test_eval_datum();
drop function bug19382_test_eval_datum();
drop type bug19382_foo5 cascade;

Best regards, Andrey Borodin.

In response to

Browse pgsql-bugs by date

  From Date Subject
Previous Message surya poondla 2026-04-16 23:20:46 Re: BUG #19382: Server crash at __nss_database_lookup