From: | Adrian Klaver <adrian(dot)klaver(at)aklaver(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, raf <raf(at)raf(dot)org> |
Cc: | pgsql-general(at)postgresql(dot)org |
Subject: | Re: update returning order by syntax error question |
Date: | 2019-09-12 14:31:54 |
Message-ID: | 94b68d28-9cab-b640-3693-477f029991ff@aklaver.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On 9/12/19 6:44 AM, Tom Lane wrote:
> raf <raf(at)raf(dot)org> 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(dot)klaver(at)aklaver(dot)com
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2019-09-12 14:38:15 | Re: update returning order by syntax error question |
Previous Message | Basques, Bob (CI-StPaul) | 2019-09-12 14:27:30 | Re: Web GUI for PG table ? |