Hi Alexnader, On Wed, Apr 8, 2026 at 11:00 PM Alexander Korotkov <[email protected]> wrote:
> Hi, Satya! > > 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. Thanks, Satya
v2-0001-waitforlsn-forbid-in-functions.patch
Description: Binary data
v2-0001-waitforlsn-tests.patch
Description: Binary data
