Re: BUG #12991: RESTART IDENTITY is not doing anything - Mailing list pgsql-bugs

From David G. Johnston
Subject Re: BUG #12991: RESTART IDENTITY is not doing anything
Date
Msg-id CAKFQuwaigg-sX_=3xALrba9E73sDK90RO6rbEcE9xpE_y18CQA@mail.gmail.com
Whole thread Raw
In response to Re: BUG #12991: RESTART IDENTITY is not doing anything  (Antoine Goutenoir <antoine@goutenoir.com>)
List pgsql-bugs
On Tue, Apr 7, 2015 at 12:06 PM, Antoine Goutenoir <antoine@goutenoir.com>
wrote:

> On Tue, Apr 7, 2015 at 5:02 PM, Andres Freund <andres@anarazel.de> wrote:
>
>> On 2015-04-07 04:07:56 +0000, antoine@goutenoir.com wrote:
>> > Example, say Article has `id` as primary key :
>>
>> How is that table defined? Restart identity will only work if the
>> sequence is 'owned' by the id column. That happens if you either create
>> it by specifying 'serial' as the column type, or if you explicitly use
>> ALTER SEQUENCE ... OWNED BY table.col;
>>
>
> Oh, I created (actually, Doctrine created) those with :
>
> CREATE TABLE Article (id INT NOT NULL, name VARCHAR(16) NOT NULL, PRIMARY
> KEY(id));
> CREATE SEQUENCE Article_id_seq INCREMENT BY 1 MINVALUE 1 START 1;
>
> Instead of :
>
> CREATE SEQUENCE Article_id_seq INCREMENT BY 1 MINVALUE 1 START 1 OWNED BY
> Article.id;
>
>
=E2=80=8BYou seem to be missing something here because the reported Doctrin=
e code
does nothing to change the Article.id field to use the sequence.
Typically, you would do:

CREATE TABLE Article (id serial)

And the resultant column definition would include:

[...] id integer DEFAULT =E2=80=8B

=E2=80=8Bnextval('sequence_name_here')=E2=80=8B [...]

=E2=80=8BThat particular code doesn't directly impact "Ownership"=E2=80=8B =
though, which is
strictly (I think) the mechanism by which RESTART works.

David J.

pgsql-bugs by date:

Previous
From: Antoine Goutenoir
Date:
Subject: Re: BUG #12991: RESTART IDENTITY is not doing anything
Next
From: Kevin Grittner
Date:
Subject: Re: BUG #12990: Missing pg_multixact/members files (appears to have wrapped, then truncated)