The following bug has been logged online:

Bug reference:      2377
Logged by:          Pavel Golub
Email address:      [EMAIL PROTECTED]
PostgreSQL version: 8.1.0
Operating system:   Windows XP
Description:        pg_constraint didnt't updated when table columns deleted
Details: 

To illustrate the bug I'll use such schema:

CREATE TABLE test."Cars"
(
  "CarID" SERIAL,
  "Model" varchar,
  "OrderID" int4 NOT NULL,
  PRIMARY KEY ("CarID")
) 
WITHOUT OIDS;

CREATE TABLE test."Orders"
(
  "OrderID" SERIAL,
  "OrderTime" timestamp,
  "CarID" int4 DEFAULT 0,
FOREIGN KEY ("CarID")
      REFERENCES test."Cars" ("CarID") MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
);

Then to fetch information about foreign keys of table test."Orders" I'll use
such query:

SELECT ncon.nspname AS constraint_schema, 
  c.oid as constraint_table_oid,
  c.relname AS constraint_table,
  con.conname AS constraint_name,
  con.conkey, --this is the column we're watching for
  refn.nspname as ref_schema,
  refc.oid as ref_table_oid,
  refc.relname as ref_table,
  con.confkey, 
  con.confmatchtype AS match_option, 
  con.confupdtype AS update_rule, 
  con.confdeltype AS delete_rule,
  con.condeferrable,
  con.condeferred
 FROM pg_namespace ncon
 JOIN pg_constraint con ON ncon.oid = con.connamespace
 JOIN pg_class c ON con.conrelid = c.oid
 JOIN pg_class refc ON con.confrelid = refc.oid
 JOIN pg_namespace refn ON refn.oid = refc.relnamespace
 WHERE c.relkind = 'r'::"char" 
        AND con.contype = 'f'::"char"
  AND c.oid = 60464 ; --this is test."Orders" OID

This is the returned data:
"test";60464;"Orders";"Orders_CarID_fkey";"{3}";"test";60454;"Cars";"{1}";"u
";"a";"a";f;f

For now all correct. conkey equal 3.

Then we drop "OrderTime" column:

ALTER TABLE test."Orders" DROP COLUMN "OrderTime";

Then execute the same query and get the result:

"test";60464;"Orders";"Orders_CarID_fkey";"{3}";"test";60454;"Cars";"{1}";"u
";"a";"a";f;f

As you can see pg_constraint.conkey column didn't updated.

I didn't check this behavior with other kind of constraints, only on FOREIGN
KEYs.

Regards

---------------------------(end of broadcast)---------------------------
TIP 1: if posting/reading through Usenet, please send an appropriate
       subscribe-nomail command to [EMAIL PROTECTED] so that your
       message can get through to the mailing list cleanly

Reply via email to