Thread: BUG #2336: will not drop implicitly created sequence

BUG #2336: will not drop implicitly created sequence

From
"Chris Mair"
Date:
The following bug has been logged online:

Bug reference:      2336
Logged by:          Chris Mair
Email address:      chris@1006.org
PostgreSQL version: 8.1.3
Operating system:   MacOS X 10.3.9
Description:        will not drop implicitly created sequence
Details:

Ok, so this is probably not a bug at all - just slightly unexpected
behaviour.

This piece of SQL:
---------------------------------------------------
create table test2 (id serial, txt varchar);
    -- (will create implicit sequence "test2_id_seq")
alter table test2 alter id set default 123;
drop sequence test2_id_seq;
---------------------------------------------------

would say:
---------------------------------------------------
ERROR:  2BP01: cannot drop sequence test2_id_seq because table test2 column
id requires it
HINT:  You may drop table test2 column id instead.
LOCATION:  recursiveDeletion, dependency.c:472
---------------------------------------------------

as if test2.id would still use the sequence.

Contrast this with the same thing done with an explicitly declared
sequence:
---------------------------------------------------
create sequence test1_id_seq;
create table test1 (id int not null default nextval('test1_id_seq'), txt
varchar);
alter table test1 alter id set default 123;
drop sequence test1_id_seq;
---------------------------------------------------

which will just work fine.

Re: BUG #2336: will not drop implicitly created sequence

From
Bruce Momjian
Date:
TODO has:

    * %Disallow changing default expression of a SERIAL column

so we know it is a bug.

---------------------------------------------------------------------------

Chris Mair wrote:
>
> The following bug has been logged online:
>
> Bug reference:      2336
> Logged by:          Chris Mair
> Email address:      chris@1006.org
> PostgreSQL version: 8.1.3
> Operating system:   MacOS X 10.3.9
> Description:        will not drop implicitly created sequence
> Details:
>
> Ok, so this is probably not a bug at all - just slightly unexpected
> behaviour.
>
> This piece of SQL:
> ---------------------------------------------------
> create table test2 (id serial, txt varchar);
>     -- (will create implicit sequence "test2_id_seq")
> alter table test2 alter id set default 123;
> drop sequence test2_id_seq;
> ---------------------------------------------------
>
> would say:
> ---------------------------------------------------
> ERROR:  2BP01: cannot drop sequence test2_id_seq because table test2 column
> id requires it
> HINT:  You may drop table test2 column id instead.
> LOCATION:  recursiveDeletion, dependency.c:472
> ---------------------------------------------------
>
> as if test2.id would still use the sequence.
>
> Contrast this with the same thing done with an explicitly declared
> sequence:
> ---------------------------------------------------
> create sequence test1_id_seq;
> create table test1 (id int not null default nextval('test1_id_seq'), txt
> varchar);
> alter table test1 alter id set default 123;
> drop sequence test1_id_seq;
> ---------------------------------------------------
>
> which will just work fine.
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Have you searched our list archives?
>
>                http://archives.postgresql.org
>

--
  Bruce Momjian   http://candle.pha.pa.us
  SRA OSS, Inc.   http://www.sraoss.com

  + If your life is a hard drive, Christ can be your backup. +