Re: BUG #13507: INSERT into tables with SERIAL primary keys failing about half of the time

From: John R Pierce <pierce(at)hogranch(dot)com>
To: dsrich(at)dsrich(dot)net, pgsql-bugs(at)postgresql(dot)org
Subject: Re: BUG #13507: INSERT into tables with SERIAL primary keys failing about half of the time
Date: 2015-07-21 07:38:43
Message-ID: 55ADF703.60606@hogranch.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 7/20/2015 5:39 PM, dsrich(at)dsrich(dot)net wrote:
> Table:
>
> CREATE TABLE payees
> (
> payeenum serial NOT NULL,
> payeename character varying(127) NOT NULL,
> remarks text,
> CONSTRAINT payees_pkey PRIMARY KEY (payeenum),
> CONSTRAINT payees_payeename_key UNIQUE (payeename)
> )
> WITH (
> OIDS=FALSE
> );
> ALTER TABLE payees
> OWNER TO dsrich;
> GRANT ALL ON TABLE payees TO dsrich;
> GRANT ALL ON TABLE payees TO users;
>
>
> Insert query:
>
> INSERT INTO payees (payeename, remarks) VALUES ('some string', 'some other
> string')
>
> This query (and three other versions using DEFAULT and 'RETURNING payeenum'
> clauses) fails about half the time with payees_pkey constraint violation.
>
> There is nothing else going on in the database server, and the failure
> occurs both when the query comes through Npgsql (where I first saw this) and
> through pgAdmin.
>
> The same database has another table with the same basic structure that also
> has the same problem.
>

that basic sequence of operations sure seems to work for me,

$ psql
psql (9.3.9)
Type "help" for help.

pierce=# CREATE TABLE payees
pierce-# (
pierce(# payeenum serial NOT NULL,
pierce(# payeename character varying(127) NOT NULL,
pierce(# remarks text,
pierce(# CONSTRAINT payees_pkey PRIMARY KEY (payeenum),
pierce(# CONSTRAINT payees_payeename_key UNIQUE (payeename)
pierce(# )
pierce-# WITH (
pierce(# OIDS=FALSE
pierce(# );
CREATE TABLE
pierce=# INSERT INTO payees (payeename, remarks) VALUES ('some string',
'some other
pierce'# string');
INSERT 0 1
pierce=# INSERT INTO payees (payeename, remarks) VALUES ('anohter
string', 'some other
string');
INSERT 0 1
pierce=# INSERT INTO payees (payeename, remarks) VALUES ('yo dude',
'some other
string');
INSERT 0 1

but I didn't mess about with your ALTER OWNER, GRANT as I ran all that
from the same user.

when you create a column of pseudotype SERIAL, it creates a SEQUENCE.
altering the table owner and granting users access, might not leave
those users with rights to the sequence?

--
john r pierce, recycling bits in santa cruz

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Heikki Linnakangas 2015-07-21 08:45:31 Re: BUG #13442: ISBN doesn't always roundtrip with text
Previous Message Kouhei Sutou 2015-07-21 07:31:30 Re: BUG #13500: Windows binary zip doesn't include libintl.h