Hi Alexander, On Thu, Apr 9, 2026 at 5:28 AM Alexander Korotkov <[email protected]> wrote:
> On Thu, Apr 9, 2026 at 10:27 AM SATYANARAYANA NARLAPURAM > <[email protected]> wrote: > > On Wed, Apr 8, 2026 at 11:00 PM Alexander Korotkov <[email protected]> > wrote: > >> On Thu, Apr 9, 2026 at 5:03 AM SATYANARAYANA NARLAPURAM > >> <[email protected]> wrote: > >> > An assertion failure (server crash in assert-enabled builds) occurs > when WAIT FOR LSN ... INTO is used inside PL/pgSQL DO blocks or within void > procedures. > >> > > >> > Repro: > >> > > >> > -- Run this on a standby > >> > > >> > CREATE PROCEDURE test_wait() > >> > LANGUAGE plpgsql AS $$ > >> > DECLARE > >> > result text; > >> > BEGIN > >> > WAIT FOR LSN '0/1234' INTO result; > >> > RAISE NOTICE '%', result; > >> > END; > >> > $$; > >> > CALL test_wait(); > >> > > >> > > >> > The WAIT FOR itself succeeds, but the very next PL/pgSQL statement > that requires a snapshot crashes the backend with: > >> > > >> > TRAP: failed Assert("portal->portalSnapshot == NULL"), > >> > File: "pquery.c", Line: 1776 > >> > > >> > Attached patches for both the test case and a potential fix. Please > review. > >> > >> Thank you for reporting. But I doubt the fix is correct. Even that > >> this particular might work OK, I don't think it's safe to release > >> snapshots belonging to functions/procedures: it might affect them. I > >> tend to think we must forbid wrapping WAIT FOR LSN with > >> functions/procedures. I'll explore more on this today. > > > > > > Agreed, attached a v2 patch with your suggestion on preventing it running > > from procedures. > > Thank you. I've slightly revised your patch. I'm going to push it if > no objections. > LGTM, thank you!
