Insert aborted, but Sequence increased

From: Hugo Jonker <hugo(at)gewis(dot)win(dot)tue(dot)nl>
To: pgsql-bugs(at)postgresql(dot)org
Subject: Insert aborted, but Sequence increased
Date: 2002-07-08 15:29:14
Message-ID: 20020708172914.Q19515@gewis.win.tue.nl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hi,

While using Postgres, I encountered some unexpected behaviour.

In short:
---------
Upon doing a faulty INSERT which left a column with default value
nextval('sequence') unspecified, the INSERT aborted due to an error.
However, a call had been placed to nextval('sequence'), thus
increasing the sequence, while this value never got used.

I certainly didn't expect this.

Detailed report:
----------------
Table projectlist looks like:

wwf-projects=# \d projectlist
Table "projectlist"
Column | Type | Modifiers
-------------+-----------------------+--------------------------------------------------------
id | integer | not null default nextval('"projectlist_id_seq"'::text)
dbms_host | character varying(30) | not null
dbms_port | numeric(5,0) | not null
dbms_type | character varying(10) | not null
db_name | character varying(20) | not null
admin_login | character varying(20) | not null
admin_pwd | character varying(20) | not null
Unique keys: projectlist_id_key

We have a SEQUENCE for id:

wwf-projects=# select currval('"projectlist_id_seq"'::text);
currval
---------
6
(1 row)

Now if we try to perform a faulty INSERT, the INSERT aborts. However,
the SEQUENCE is increased!:

wwf-projects=# insert into projectlist (dbms_host, dbms_port, dbms_type,
db_name, admin_login, admin_pwd) values ('webadmict.tue.nl','5432',
'hugotest-2', 'test', 'test');
ERROR: ExecAppend: Fail to add null value in not null attribute admin_pwd

wwf-projects=# select currval('"projectlist_id_seq"'::text);
currval
---------
7
(1 row)

So 'currval' increased due to an INSERT that was aborted.
(Yes, the insert is definately not in the table).

I'm not sure if one can call this a bug, but it is unexpected behaviour
-- to me, at least.

Regards,

Hugo Jonker.
PS: My apologies about not being on the list, but it was taking longer than
expected to get on.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Tomisaw Kityski 2002-07-08 20:01:33 SERIAL type, NOT NULL constraint and rule
Previous Message eric 2002-07-08 14:41:01 segfault which isn't supposed to happen (including example code)