Re: UPSERT/RETURNING -> ON CONFLICT SELECT? - Mailing list pgsql-hackers

From Tom Lane
Subject Re: UPSERT/RETURNING -> ON CONFLICT SELECT?
Date
Msg-id 19806.1468429941@sss.pgh.pa.us
Whole thread Raw
In response to Re: UPSERT/RETURNING -> ON CONFLICT SELECT?  (Peter Geoghegan <pg@heroku.com>)
List pgsql-hackers
Peter Geoghegan <pg@heroku.com> writes:
> On Wed, Jul 13, 2016 at 2:49 AM, Bjørnar Ness <bjornar.ness@gmail.com> wrote:
>> But with upsert/do nothing, this will not work as "needed".
>> 
>> Would it be possible to introduce a "ON CONFLICT SELECT" argument:
>> 
>> with _foo as (
>> insert into foo(i) values(1)
>> on conflict select returning id
>> ) insert into bar(foo_id,i)
>> select id,2 from _foo;

> I gather that the point of this pseudo SQL is to show how you might be
> able to project and select the values not successfully inserted. Can't
> you just pipeline together some CTEs instead?

What's "needed" seems a little ill-defined here, anyway.  Would the SELECT
be expected to return values from the failed-to-be-inserted row, or from
the existing conflicting row?  (Is there certain to be only one
conflicting row?  With exclusion constraints I'd think not.)
        regards, tom lane



pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: application_name in process name?
Next
From: Peter Geoghegan
Date:
Subject: Re: rethinking dense_alloc (HashJoin) as a memory context