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 |
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 |