Hello,

Ran into this little gem with a customer today:

This works:

create table foo (foo int not null, bar text);
create sequence foo_seq;
alter table foo alter column foo set default nextval('foo_seq');

pg_dump will correctly dump the table:

CREATE TABLE foo (
   foo integer DEFAULT nextval('foo_seq'::text) NOT NULL,
   bar text
);


-- -- TOC entry 3 (OID 107565218) -- Name: foo_seq; Type: SEQUENCE; Schema: public; Owner: postgres --

CREATE SEQUENCE foo_seq
   START 1
   INCREMENT 1
   MAXVALUE 9223372036854775807
   MINVALUE 1
   CACHE 1;

However if you do the following:

create table foo (foo serial not null, bar text);
create sequence foo_seq;
alter table foo alter column foo set default nextval('foo_seq');

pg_dump will give you the following:

CREATE TABLE foo (
   foo serial NOT NULL,
   bar text
);


-- -- TOC entry 3 (OID 107566148) -- Name: foo_seq; Type: SEQUENCE; Schema: public; Owner: postgres --

CREATE SEQUENCE foo_seq
   START 1
   INCREMENT 1
   MAXVALUE 9223372036854775807
   MINVALUE 1
   CACHE 1;

Which is wrong because we want the column foo to use a default of foo_seq
not foo_foo_seq.

Sincerely,

Joshua D. Drake








-- Command Prompt, Inc., home of Mammoth PostgreSQL - S/ODBC and S/JDBC Postgresql support, programming shared hosting and dedicated hosting. +1-503-667-4564 - [EMAIL PROTECTED] - http://www.commandprompt.com PostgreSQL Replicator -- production quality replication for PostgreSQL

begin:vcard
fn:Joshua Drake
n:Drake;Joshua
org:Command Prompt, Inc.
adr:;;PO Box 215 ;Cascade Locks;OR;97014;US
email;internet:[EMAIL PROTECTED]
title:Consultant
tel;work:503-667-4564
tel;fax:503-210-0334
x-mozilla-html:FALSE
url:http://www.commandprompt.com
version:2.1
end:vcard

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

Reply via email to