Re: Sequences/defaults and pg_dump - Mailing list pgsql-general

From Bruce Momjian
Subject Re: Sequences/defaults and pg_dump
Date
Msg-id 200602071534.k17FYMC04892@candle.pha.pa.us
Whole thread Raw
In response to Re: Sequences/defaults and pg_dump  (Nikolay Samokhvalov <samokhvalov@gmail.com>)
List pgsql-general
Nikolay Samokhvalov wrote:
> On 2/7/06, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> > Nikolay Samokhvalov <samokhvalov@gmail.com> writes:
> > > testseq=# CREATE TABLE test(id SERIAL, data TEXT);
> > > NOTICE:  CREATE TABLE will create implicit sequence "test_id_seq" for
> > > serial column "test.id"
> > > CREATE TABLE
> > > ***
> > > ALTER TABLE test ALTER COLUMN id SET DEFAULT nextval('test_id_seq') * 10;
> >
> > The correct solution to this is to forbid ALTER COLUMN SET DEFAULT on
> > a serial column, but we haven't gotten around to enforcing that yet.
> That's wrong!
> Forget about SERIAL. I have INTEGER column with some expression as
> DEFAULT in it. I use sequence in that expression and want this to be
> dumped correctly.
> The bug doesn't concerns SERIALs, in concerns general usage of sequences.

Uh, I can't reproduce the failure:

    test=> CREATE SEQUENCE xx;
    CREATE SEQUENCE
    test=> CREATE TABLE test5(id integer DEFAULT nextval('xx'), data TEXT);
    CREATE TABLE
    test=> ALTER TABLE test5 ALTER COLUMN id SET DEFAULT nextval('test_id_seq') * 10;
    ALTER TABLE

pg_dump has:

    CREATE TABLE test2 (
        id integer DEFAULT (nextval('test_id_seq'::regclass) * 10),
        data text
    );

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

pgsql-general by date:

Previous
From: Ludwig Isaac Lim
Date:
Subject: Re: Clarification Regarding Vacuum and template1
Next
From: Tom Lane
Date:
Subject: Re: Sequences/defaults and pg_dump