Thread: SQL "RETURNING * | output_expression [ [ AS ]" is wrong

SQL "RETURNING * | output_expression [ [ AS ]" is wrong

From
PG Doc comments form
Date:
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/14/sql-update.html
Description:

https://www.postgresql.org/docs/14/sql-update.html

Hi! AFAIK, UPDATE .... RETURNING works with INTO varname, not AS

Documentation says: 
UPDATE
[ WITH [ RECURSIVE ] with_query [, ...] ]
UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
    SET { column_name = { expression | DEFAULT } |
          ( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [,
...] ) |
          ( column_name [, ...] ) = ( sub-SELECT )
        } [, ...]
    [ FROM from_item [, ...] ]
    [ WHERE condition | WHERE CURRENT OF cursor_name ]
    [ RETURNING * | output_expression [ [ AS ] output_name ] [, ...] ]

BUT it does not work, it does:
UPDATE
[ WITH [ RECURSIVE ] with_query [, ...] ]
UPDATE [ ONLY ] table_name [ * ] [ [ AS ] alias ]
    SET { column_name = { expression | DEFAULT } |
          ( column_name [, ...] ) = [ ROW ] ( { expression | DEFAULT } [,
...] ) |
          ( column_name [, ...] ) = ( sub-SELECT )
        } [, ...]
    [ FROM from_item [, ...] ]
    [ WHERE condition | WHERE CURRENT OF cursor_name ]
    [ RETURNING * | output_expression [ [ INTO ] output_name ] [, ...] ]

Regards, 
Miguel.

Re: SQL "RETURNING * | output_expression [ [ AS ]" is wrong

From
Julien Rouhaud
Date:
Hi,

On Mon, Mar 21, 2022 at 10:09:55AM +0000, PG Doc comments form wrote:
> The following documentation comment has been logged on the website:
>
> Hi! AFAIK, UPDATE .... RETURNING works with INTO varname, not AS

I think you're confusing with plpgsql's INTO [1].  The documented syntax works
as expected:

# UPDATE tt SET id = 2 WHERE id = 1 RETURNING id AS new_id;
 new_id
--------
      2
(1 row)

[1] https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW