update returning order by syntax error question

From: raf <raf(at)raf(dot)org>
To: pgsql-general(at)postgresql(dot)org
Subject: update returning order by syntax error question
Date: 2019-09-12 03:17:43
Message-ID: 20190912031743.jfbfj7e5ri5is36t@raf.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi,

postgresql-9.6.15

I just tried something like:

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

assuming it would work but it didn't.
That's OK. I found on stackoverflow
that a CTE can be used to do it:

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

What surprises me is the syntax error:

ERROR: syntax error at or near "t"
LINE 2: tblname t
^
If the syntax was invalid because an update returning
statement can't appear in a from clause, I'd expect the
error to be at the token "update".

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".

Anyone care to explain why the error is what it is?
It's no big deal. I'm just curious.

cheers,
raf

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Luca Ferrari 2019-09-12 05:33:55 Re: update returning order by syntax error question
Previous Message Thomas Munro 2019-09-11 23:00:34 Re: ERROR: too many dynamic shared memory segments