Hallo,
es gibt ja hier den einen oder anderen, der PostgreSQL macht. Ich habe da etwas, was ich für komisch halte. Es handelt sich um 8.1.11 als Server - ist nicht mehr das Neueste, ich weiß, aber es ist ein SLES und da muß es super sein ...
psql> CREATE TABLE a1 (id BIGSERIAL PRIMARY KEY, name TEXT); psql> \d+ a1 Column | Type | Modifiers | Description --------+--------+-------------------------------------------------+------------- id | bigint | not null default nextval('a1_id_seq'::regclass) | name | text | | Indexes: "a1_pkey" PRIMARY KEY, btree (id) Has OIDs: no
Wenn ich das per pg_dump ausspucke, kommt da erwartungsgemäß die Table-Definition und dann im Dump noc hein ein
ALTER TABLE ONLY a1 ADD CONSTRAINT a1_pkey PRIMARY KEY (id);
Soweit so gut.
Jetzt habe ich die Tabelle und auch den Index umbenannt:
psql> ALTER TABLE a1 RENAME TO a2; psql> ALTER INDEX a1_pkey RENAME TO a2_pkey; psql> \d+ a2 Column | Type | Modifiers | Description --------+--------+-------------------------------------------------+------------- id | bigint | not null default nextval('a1_id_seq'::regclass) | name | text | | Indexes: "a2_pkey" PRIMARY KEY, btree (id) Has OIDs: no
Sieht auch noch gut aus, Tabelle und Index haben neue Namen. Jetzt aber im pg_dump, erscheint immer noch
ALTER TABLE ONLY a2 ADD CONSTRAINT a1_pkey PRIMARY KEY (id);
Und mein a2_pkey wird nirgens erwähnt.
Bug oder Feature? Oder mache ich etwas falsch? Am "pg_dump" scheint es nicht zu liegen, wenn ich auf einer anderen Maschine ein pg_dump (8.3.6) nehme, dann ist das genauso falsch, außer ich mache das o.a. Experiment auch mit dem 8.3.6 Server, dann ist es, wie ich's erwartet hätte.
Viele Grüße Heiko