Re: MERGE ... RETURNING

Vik Fearing <vik@postgresfriends.org>

From: Vik Fearing <vik@postgresfriends.org>
To: Jeff Davis <pgsql@j-davis.com>, Alvaro Herrera <alvherre@alvh.no-ip.org>, Dean Rasheed <dean.a.rasheed@gmail.com>
Cc: Isaac Morland <isaac.morland@gmail.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2023-07-13T00:03:26Z
Lists: pgsql-hackers

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Add RETURNING support to MERGE.

  2. doc: Improve a couple of places in the MERGE docs.

  3. doc: improve description of privileges for MERGE and update glossary.

  4. Fix RLS policy usage in MERGE.

  5. Fix leak of LLVM "fatal-on-oom" section counter.

  6. Implement outer-level aggregates to conform to the SQL spec, with

On 7/13/23 01:48, Jeff Davis wrote:
> On Wed, 2023-07-12 at 03:47 +0200, Vik Fearing wrote:
> 
>> There is no RETURNING clause in Standard SQL, and the way they would
>> do
>> this is:
>>
>>       SELECT ...
>>       FROM OLD TABLE (
>>           MERGE ...
>>       ) AS m
>>
>> The rules for that for MERGE are well defined.
> 
> I only see OLD TABLE referenced as part of a trigger definition. Where
> is it defined for MERGE?

Look up <data change delta table> for that syntax.  For how MERGE 
generates those, see 9075-2:2023 Section 14.12 <merge statement> General 
Rules 6.b and 6.c.

> In any case, as long as the SQL standard doesn't conflict, then we're
> fine. And it looks unlikely to cause a conflict right now that wouldn't
> also be a conflict with our existing RETURNING clause elsewhere, so I'm
> not seeing a problem here.

I do not see a problem either, which was what I was trying to express 
(perhaps poorly).  At least not with the syntax.  I have not yet tested 
that the returned rows match the standard.
-- 
Vik Fearing