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

Started by PG Bug reporting formabout 4 years ago2 messagesdocs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

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.

#2Julien Rouhaud
rjuju123@gmail.com
In reply to: PG Bug reporting form (#1)
Re: SQL "RETURNING * | output_expression [ [ AS ]" is wrong

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]https://www.postgresql.org/docs/current/plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW. 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