Re: MERGE ... RETURNING
Jeff Davis <pgsql@j-davis.com>
From: Jeff Davis <pgsql@j-davis.com>
To: Dean Rasheed <dean.a.rasheed@gmail.com>, Merlin Moncure
<mmoncure@gmail.com>
Cc: Gurjeet Singh <gurjeet@singh.im>, Isaac Morland
<isaac.morland@gmail.com>, PostgreSQL Hackers
<pgsql-hackers@lists.postgresql.org>
Date: 2023-10-30T20:08:37Z
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 →
-
Add RETURNING support to MERGE.
- c649fa24a42b 17.0 landed
-
doc: Improve a couple of places in the MERGE docs.
- 97d4262683ac 17.0 landed
- d4c573d8e81e 16.3 landed
- a875743ff402 15.7 landed
-
doc: improve description of privileges for MERGE and update glossary.
- 4bc8f29088f8 17.0 landed
- 3b6728910ace 16.2 landed
- ff772853d02e 15.6 landed
-
Fix RLS policy usage in MERGE.
- c2e08b04c9e7 17.0 cited
-
Fix leak of LLVM "fatal-on-oom" section counter.
- 4f4d73466d71 17.0 cited
-
Implement outer-level aggregates to conform to the SQL spec, with
- e649796f128b 7.4.1 cited
On Fri, 2023-10-27 at 15:46 +0100, Dean Rasheed wrote: > > One fiddly part is resolving the shift/reduce conflicts in the > grammar. Specifically, on seeing "RETURNING expr when ...", there is > ambiguity over whether the "when" is a column alias or the start of > the next merge action. I've resolved that by assigning a slightly > higher precedence to an expression without an alias, so WHEN is > assumed to not be an alias. It seems pretty ugly though (in terms of > having to duplicate so much code), and I'd be interested to know if > there's a neater way to do it. Can someone else comment on whether this is a reasonable solution to the grammar problem? > From a usability perspective, I'm still somewhat sceptical about this > approach. It's a much more verbose syntax, and it gets quite tedious > having to repeat the RETURNING list for every action, and keep them > in > sync. If we go with the single RETURNING-clause-at-the-end approach, how important is it that the action can be a part of an arbitrary expression? Perhaps something closer to your original proposal would be a good compromise (sorry to backtrack yet again...)? It couldn't be used in an arbitrary expression, but that also means that it couldn't end up in the wrong kind of expression. Regards, Jeff Davis