Re: [HACKERS] MERGE SQL Statement for PG11
Peter Geoghegan <pg@bowt.ie>
From: Peter Geoghegan <pg@bowt.ie>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Pavan Deolasee <pavan.deolasee@gmail.com>,
Tomas Vondra <tomas.vondra@2ndquadrant.com>, Simon Riggs <simon@2ndquadrant.com>,
Alvaro Herrera <alvherre@alvh.no-ip.org>, Andrew Dunstan <andrew.dunstan@2ndquadrant.com>, Pavan Deolasee <pavan.deolasee@2ndquadrant.com>,
Stephen Frost <sfrost@snowman.net>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2018-03-08T22:46:13Z
Lists: pgsql-hackers
On Thu, Mar 8, 2018 at 6:52 AM, Robert Haas <robertmhaas@gmail.com> wrote: >> I removed this code since it was wrong. We might want to add some basic >> checks for existence of volatile functions in the WHEN or SET clauses. But I >> agree, it's no different than regular UPDATEs. So may be not a big deal. > > I just caught up on this thread. I'm definitely glad to see that code > go because, wow, that is all kinds of wrong. I don't see a real need > to add any kind of replacement check, either. Prohibiting volatile > functions here doesn't seem likely to accomplish anything useful. It > seems like the most we'd want to do is mention this the documentation > somehow, and I'm not even sure we really need to do that much. Thanks in large part to Pavan's excellent work, the situation in nodeModifyTable.c is much clearer than it was a few weeks ago. It's now obvious that MERGE is very similar to UPDATE ... FROM, which doesn't have any restrictions on volatile functions. I don't see any sense in prohibiting volatile functions in either case, because it should be obvious to users that that's just asking for trouble. I can believe that someone would make that mistake, just about, but they'd have to be writing their DML statement on auto-pilot. -- Peter Geoghegan
Commits
-
Add support for MERGE SQL command
- 7103ebb7aae8 15.0 landed
-
Add API of sorts for transition table handling in trigger.c
- 3a46a45f6f00 15.0 landed
-
Revert MERGE patch
- 08ea7a2291db 11.0 cited
-
Fix several bugs related to ON CONFLICT's EXCLUDED pseudo relation.
- ad2278379244 9.6.0 cited