Re: MERGE Specification
Marko Kreen <markokr@gmail.com>
From: "Marko Kreen" <markokr@gmail.com>
To: "Robert Treat" <xzilla@users.sourceforge.net>
Cc: pgsql-hackers@postgresql.org, "Tom Lane" <tgl@sss.pgh.pa.us>, Decibel! <decibel@decibel.org>, "Martijn van Oosterhout" <kleptog@svana.org>, "Gregory Stark" <stark@enterprisedb.com>, "Simon Riggs" <simon@2ndquadrant.com>, A.M. <agentm@themactionfaction.com>
Date: 2008-04-28T08:57:39Z
Lists: pgsql-hackers
On 4/25/08, Robert Treat <xzilla@users.sourceforge.net> wrote: > On Thursday 24 April 2008 23:40, Tom Lane wrote: > > Robert Treat <xzilla@users.sourceforge.net> writes: > > > Perhaps a better option would be to implement Merge per spec, and then > > > implement a "replace into" command for the oltp scenario. This way you > > > keep the spec behavior for the spec syntax, and have a clearly non-spec > > > command for non-spec behavior. > > > > In that case, it's a fair question to ask just who will use the "spec" > > syntax. As far as I can tell from years of watching the mailing lists, > > there is plenty of demand for a concurrent-safe insert-or-update > > behavior, and *exactly zero* demand for the other. I challenge you to > > find even one request for the "spec" behavior in the mailing list > > archives. (Simon doesn't count.) > > > > > AIUI the current implementation is designed to avoid race conditions partially > at the cost of being insert friendly and somewhat update unfriendly. My guess > is that most of the people wanting this for OLTP use want an update friendly > implementation (that's certainly been the majority of cases I've needed > myself, and that I have seen others use). This seems to hint that there should be 2 variants of merge/upsert - insert-friendly and update-friendly... It seems unlikely one implementation can be both. And especially bad would be implementation that is neither. -- marko