Re: pgsql: SQL-standard function body - Mailing list pgsql-committers

From Andres Freund
Subject Re: pgsql: SQL-standard function body
Date
Msg-id 20210407225806.majgznh4lk34hjvu@alap3.anarazel.de
Whole thread Raw
In response to pgsql: SQL-standard function body  (Peter Eisentraut <peter@eisentraut.org>)
Responses Re: pgsql: SQL-standard function body  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-committers
Hi,

On 2021-04-07 19:53:35 +0000, Peter Eisentraut wrote:
> SQL-standard function body
> 
> 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.
> 
> Instead of the PostgreSQL-specific AS $$ string literal $$ syntax,
> this allows writing out the SQL statements making up the body
> unquoted, either as a single statement:
> 
>     CREATE FUNCTION add(a integer, b integer) RETURNS integer
>         LANGUAGE SQL
>         RETURN a + b;
> 
> or as a block
> 
>     CREATE PROCEDURE insert_data(a integer, b integer)
>     LANGUAGE SQL
>     BEGIN ATOMIC
>       INSERT INTO tbl VALUES (a);
>       INSERT INTO tbl VALUES (b);
>     END;
> 
> The function body is parsed at function definition time and stored as
> expression nodes in a new pg_proc column prosqlbody.  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.
> 
> Tested-by: Jaime Casanova <jcasanov@systemguards.com.ec>
> Reviewed-by: Julien Rouhaud <rjuju123@gmail.com>
> Discussion: https://www.postgresql.org/message-id/flat/1c11f1eb-f00c-43b7-799d-2d44132c02d7@2ndquadrant.com
> 
> Branch
> ------
> master
> 
> Details
> -------
> https://git.postgresql.org/pg/commitdiff/e717a9a18b2e34c9c40e5259ad4d31cd7e420750

This is turning the BF red:
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=rhinoceros&dt=2021-04-07%2022%3A52%3A19

Might be force_parallel_mode=regress related.

Greetings,

Andres Freund



pgsql-committers by date:

Previous
From: Michael Paquier
Date:
Subject: Re: pgsql: Add some information about authenticated identity via log_connec
Next
From: Tom Lane
Date:
Subject: Re: pgsql: SQL-standard function body