Re: BUG #14774: INSERT ... ON CONFLICT

From: Andres Freund <andres(at)anarazel(dot)de>
To: jym(at)outlook(dot)com
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #14774: INSERT ... ON CONFLICT
Date: 2017-08-08 18:06:23
Message-ID: 20170808180623.imtdrllz6uhn3gqg@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hi,

On 2017-08-08 17:15:00 +0000, jym(at)outlook(dot)com wrote:
> I've noticed that if there's a conflict the sequence still adds 1 even if
> the INSERT is a conflict.
>
> i.e. INSERT INTO foo(bar) VALUES ('test') ON CONFLICT bar = EXCLUDE.bar
> returning foopk
>
> bar has a UNIQUE constraint, doing this 10 times you see the Next serial in
> foopk is 10 even though there is only 1 row in the table.

That's behaving as expected. The full row, including the column that
defaults to the sequence, needs to be formed before checking for
conflicts. Sequences are not gapless, and this is just one of many
examples. Is there a specific reason this is a problem for you?

Greetings,

Andres Freund

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Rick Otten 2017-08-08 19:41:38 Re: signal 11 segfaults with parallel workers
Previous Message jym 2017-08-08 17:15:00 BUG #14774: INSERT ... ON CONFLICT