Re: Document that PG_TRY block cannot have a return statement

From: Serpent <serpent7776(at)gmail(dot)com>
To: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re: Document that PG_TRY block cannot have a return statement
Date: 2023-09-13 12:49:17
Message-ID: CANncwrK20zn7OiwwUtEmXLcsGyU0QF_NceaPtPBtooSEKcvmQg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

What about this wording:

The code that might throw ereport(ERROR) cannot contain any non local
control flow other than ereport(ERROR) e.g.: return, goto, break, continue.
In other words once PG_TRY() is executed, either PG_CATCH() or PG_FINALLY()
must be executed as well.

I used 'code that might throw ereport(ERROR)' for XXX since this is what's
used earlier in the comment.

On Tue, 12 Sept 2023 at 17:22, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:

> Serpent <serpent7776(at)gmail(dot)com> writes:
> > I'm talking about this part:
>
> > PG_TRY();
> > {
> > ... code that might throw ereport(ERROR) ...
> > }
>
> Ah. Your phrasing needs work for clarity then. Also, "return"
> is hardly the only way to break it; break, continue, or goto
> leading out of the PG_TRY are other possibilities. Maybe more
> like "The XXX code must exit normally (by control reaching
> the end) if it does not throw ereport(ERROR)." Not quite sure
> what to use for XXX.
>
> regards, tom lane
>

Attachment Content-Type Size
0002-note-no-return-in-pg_try.patch text/x-patch 1.2 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Nazir Bilal Yavuz 2023-09-13 13:04:00 Re: BufferUsage counters' values have changed
Previous Message torikoshia 2023-09-13 12:40:46 Re: Make --help output fit within 80 columns per line