From: | Laurenz Albe <laurenz(dot)albe(at)cybertec(dot)at> |
---|---|
To: | Peter Eisentraut <peter(dot)eisentraut(at)enterprisedb(dot)com>, pgsql-committers(at)lists(dot)postgresql(dot)org |
Subject: | Re: pgsql: SQL-standard function body |
Date: | 2021-04-12 19:00:20 |
Message-ID: | a07142b8d7c541db97bf9403e1646d0fbf6cf614.camel@cybertec.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-committers |
On Mon, 2021-04-12 at 17:25 +0200, Peter Eisentraut wrote:
> On 10.04.21 03:38, Laurenz Albe wrote:
> > On Fri, 2021-04-09 at 19:44 +0200, I wrote:
> > > > SQL-standard function body
> > > >
> > > > psql needs some new intelligence to keep track of function body
> > > > boundaries so that it doesn't send off statements when it sees
> > > > semicolons that are inside a function body.
> > >
> > > This causes psql to fail to recognize the semicolon in the following
> > > statement as the end of a statement:
> > >
> > > IMPORT FOREIGN SCHEMA x FROM SERVER y INTO z OPTIONS (case 'lower');
> > >
> > > The cause is the "case", which is recognized as the start of a function
> > > body.
> > >
> > > Would it be an option to recognize BEGIN and CASE as starting a
> > > function body only if they are *not* inside parentheses, like in
> > > the attached?
> >
> > Here is an improved patch, which treats END in the same fashion
> > (not properly indented for readability).
>
> Thanks, I took another look at this and augmented your change with a
> change that tracks whether the statement starts with CREATE [OR REPLACE]
> {FUNCTION|PROCEDURE}. That should make it pretty safe. What do you think?
Thanks, that is fine with me and more than I asked for.
That should definitely exclude all false positive matches.
Yours,
Laurenz Albe
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2021-04-12 22:58:27 | pgsql: Remove no-longer-relevant test case. |
Previous Message | Tom Lane | 2021-04-12 18:38:04 | pgsql: Fix old bug with coercing the result of a COLLATE expression. |