Re: WAIT FOR NO_THROW option could use some documentation

From: SATYANARAYANA NARLAPURAM <satyanarlapuram(at)gmail(dot)com>
To: Robert Haas <robertmhaas(at)gmail(dot)com>
Cc: Peter Eisentraut <peter(at)eisentraut(dot)org>, Xuneng Zhou <xunengzhou(at)gmail(dot)com>, Kiran Kaki <itskkpg(at)gmail(dot)com>, Rithvika Devisetti <devisettirithvika(at)gmail(dot)com>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: WAIT FOR NO_THROW option could use some documentation
Date: 2026-09-04 00:26:22
Message-ID: CAHg+QDcZruKkzjaebtMoMQMd4LuG8sxtJPS=Hpx2Rxtddn+HOg@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Thu, Sep 3, 2026 at 4:20 PM Robert Haas <robertmhaas(at)gmail(dot)com> wrote:

> On Thu, Sep 3, 2026 at 4:39 PM Peter Eisentraut <peter(at)eisentraut(dot)org>
> wrote:
> > On 03.09.26 17:21, SATYANARAYANA NARLAPURAM wrote:
> > > Maybe something along these lines - "NO_THROW option safely prevents
> the
> > > database
> > > from aborting an active transaction, allowing subsequent queries within
> > > the transaction
> > > to proceed without losing prior work"?
> >
> > Maybe that's what it is meant for, but that seems separate from the
> > status reporting mechanism. It could also send an error message to the
> > client but not abort the transaction on the server.
>
> I think sending an error without aborting the transaction on the
> server would invite too much confusion. But I also wonder if the
> documentation's claim that this option will just cause the server to
> categorically not throw errors can really be correct. In most places
> where we have an error-suppression facility of some kind, it's much
> more narrowly scoped.
>

Agree with Robert on this. I would say the error suppression is narrow here
as well.
When an incorrect mode or LSN is provided, it throws an error even with the
NO_THROW option.

postgres=# WAIT FOR LSN '0/306EEk0' WITH (TIMEOUT '100ms', NO_THROW, MODE
primary_flush);
ERROR: invalid input syntax for type pg_lsn: "0/306EEk0"
postgres=# WAIT FOR LSN '0/306EE0' WITH (TIMEOUT '100ms', NO_THROW, MODE
primary_flush2);
ERROR: unrecognized value for WAIT option "mode": "primary_flush2"

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Noah Misch 2026-09-04 00:29:24 Re: CREATE SCHEMA ... CREATE DOMAIN support
Previous Message Bharath Rupireddy 2026-09-04 00:23:00 Re: Use WALReadFromBuffers in more places