Re: SQL-standard function body

Поиск
Список
Период
Сортировка
От Robert Haas
Тема Re: SQL-standard function body
Дата
Msg-id CA+TgmoZ-FXU0iyevFETN0sGYw0RKTSCFxKONGE+2nVJEM5_8OQ@mail.gmail.com
обсуждение исходный текст
Ответ на SQL-standard function body  (Peter Eisentraut <peter.eisentraut@2ndquadrant.com>)
Ответы Re: SQL-standard function body  (Stephen Frost <sfrost@snowman.net>)
Re: SQL-standard function body  (Pavel Stehule <pavel.stehule@gmail.com>)
Re: SQL-standard function body  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: SQL-standard function body  (Thomas Munro <thomas.munro@gmail.com>)
Список pgsql-hackers
On Tue, Jun 30, 2020 at 1:49 PM Peter Eisentraut
<peter.eisentraut@2ndquadrant.com> wrote:
> This adds support for writing CREATE FUNCTION and CREATE PROCEDURE
> statements for language SQL with a function body that conforms to the
> SQL standard and is portable to other implementations.

With what other implementations is it compatible?

> The function body is parsed at function definition time and stored as
> expression nodes in probin.  So at run time, no further parsing is
> required.
>
> However, this form does not support polymorphic arguments, because
> there is no more parse analysis done at call time.
>
> Dependencies between the function and the objects it uses are fully
> tracked.
>
> A new RETURN statement is introduced.  This can only be used inside
> function bodies.  Internally, it is treated much like a SELECT
> statement.
>
> 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.
>
> Also, per SQL standard, LANGUAGE SQL is the default, so it does not
> need to be specified anymore.

Hmm, this all seems like a pretty big semantic change. IIUC, right
now, a SQL function can only contain one statement, but it seems like
with this patch you can have a block in there with a bunch of
statements, sorta like plpgsql. But probably you don't have all of the
functionality of plpgsql available. Also, the fact that you're doing
parsing earlier means that e.g. creating a table and inserting into it
won't work. Maybe that's fine. But it almost seems like you are
inventing a whole new PL....

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



В списке pgsql-hackers по дате отправления:

Предыдущее
От: Peter Eisentraut
Дата:
Сообщение: SQL-standard function body
Следующее
От: Stephen Frost
Дата:
Сообщение: Re: SQL-standard function body