From: Heikki Linnakangas <hlinnaka@iki.fi>
To: Peter Geoghegan <pg@heroku.com>
To: Andres Freund <andres@anarazel.de>
Cc: Jeff Janes <jeff.janes@gmail.com>
Cc: Stephen Frost <sfrost@snowman.net>
Cc: Dean Rasheed <dean.a.rasheed@gmail.com>
Cc: Bruce Momjian <bruce@momjian.us>
Cc: Pg Hackers <pgsql-hackers@postgresql.org>
Subject: Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0
Date: Wed, 06 May 2015 22:51:43 +0300
Message-ID: <554A70CF.8090608@iki.fi> (raw)
In-Reply-To: <CAM3SWZS2aWL56NnMcgcGJcUETMBavL9w_-miyAV1q2PLG6OBNA@mail.gmail.com>
References: <CAM3SWZTGE0z5_E8wRi9wt3qgOiMpSwtwr5uDcZDGhRZ1_pz6vg@mail.gmail.com>
<20150505154030.GI9855@alap3.anarazel.de>
<CAM3SWZTU8FgwoMb-vKZv_LsQb75nH=NP9+dCdTj9S4GScMtk=A@mail.gmail.com>
<20150506152007.GN9855@alap3.anarazel.de>
<CAM3SWZS2aWL56NnMcgcGJcUETMBavL9w_-miyAV1q2PLG6OBNA@mail.gmail.com>
List-Unsubscribe: <mailto:majordomo@postgresql.org?body=unsub%20pgsql-hackers>
On 05/06/2015 10:47 PM, Peter Geoghegan wrote:
> On Wed, May 6, 2015 at 8:20 AM, Andres Freund <andres@anarazel.de> wrote:
>> On 2015-05-05 15:00:56 -0700, Peter Geoghegan wrote:
>>> Locking the row is not "nothing", though. If you want to lock the row,
>>> use an UPSERT with a tautologically false WHERE clause (like "WHERE
>>> false").
>>
>> That's not the same. For one it "breaks" RETURNING which is a death
>> knell, for another it's not exactly obvious.
>
> DO NOTHING already doesn't project non-inserted tuples, in a way that
> fits with the way we won't do that when a before trigger returns NULL.
> So I don't know what you mean about RETURNING behavior.
>
> It may not be all that obvious, but then the requirement that you
> mention isn't either. I really strongly feel that DO NOTHING should do
> nothing. For the pgloader use-case, which is what I have in mind with
> that variant, that could literally make the difference between
> dirtying an enormous number of buffers and dirtying only a few. This
> will *frequently* be the case. And it's not as if the idea of an
> INSERT IGNORE is new or in any way novel. As I mentioned, many systems
> have a comparable command.
>
> So, yes, DO NOTHING does very little - and that is its appeal.
> Supporting this behavior does not short change those who actually care
> about the existing tuple sticking around for the duration of their
> transaction - they have a way of doing that. If you want to document
> INSERT IGNORE as being primarily an ETL-orientated thing, that would
> make sense, but let's not hobble that use case.
Yeah, I agree that DO NOTHING should not lock the rows. It might make
sense to have a DO LOCK variant, which locks the rows, although I don't
immediately see what the use case would be.
- Heikki
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-admin@postgresql.org
Cc: hlinnaka@iki.fi, pg@heroku.com, andres@anarazel.de, jeff.janes@gmail.com, sfrost@snowman.net, dean.a.rasheed@gmail.com, bruce@momjian.us, pgsql-hackers@postgresql.org
Subject: Re: INSERT ... ON CONFLICT UPDATE/IGNORE 4.0
In-Reply-To: <554A70CF.8090608@iki.fi>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox