Search Postgresql Archives

Re: update returning order by syntax error question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 9/12/19 6:44 AM, Tom Lane wrote:
raf <raf@xxxxxxx> writes:
It's almost as if the parser sees "update" as a possible
table name (rather than a reserved word) and "tblname"
as the alias for that table and it's expecting a comma
or left/right/full etc. when it seess the "t".

No, it's *exactly* as if that.  UPDATE is an unreserved
keyword so it's fully legitimate as a table name.
If you made the syntax be what the grammar is expecting:

regression=# select * from (update t cross join update t2);
ERROR:  relation "update" does not exist
LINE 1: select * from (update t cross join update t2);


I am not following.
PostgreSQL 11.5

The OP had:

with u as
  (update tblname t set ... where ... returning ...)
  select * from u order by ...;


I tested with:

WITH u AS (
    UPDATE up_test t SET col_2 = col_2 + 1 WHERE id < 3
    RETURNING *
)
SELECT * FROM u;
BEGIN
 id | col1 | col_2
----+------+-------
  1 | t    |     2
  2 | NULL |     3
(2 rows)

I'm missing something.

                        ^

			regards, tom lane





--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux