| 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: | Whole Thread | Raw Message | 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 |