> From: Noah Misch [n...@leadboat.com]
> Sent: Monday, July 16, 2012 8:42 PM
> On Mon, Jul 16, 2012 at 04:49:46PM +0530, Amit Kapila wrote:

>> > Care to prepare a patch with a test case addition?
>>  Let me know if above is sufficient or shall I include anything more in
>> patch.

> I can't think of anything else.

Patch is attached with this mail.

> As a side question for the list, should we fix this differently in 9.2 to
> avoid forcing an initdb for the next beta?  Perhaps have
> ATExecDropConstraint() only respect connoinherit for CONSTRAINT_CHECK?

Let me know if anything needs to be done for this?

With Regards,
Amit Kapila.
diff --git a/src/backend/catalog/index.c b/src/backend/catalog/index.c
index 0c51923..1546d48 100644
--- a/src/backend/catalog/index.c
+++ b/src/backend/catalog/index.c
@@ -1154,7 +1154,7 @@ index_constraint_create(Relation heapRelation,
                                                                   NULL,
                                                                   true,        
        /* islocal */
                                                                   0,   /* 
inhcount */
-                                                                  false);      
        /* noinherit */
+                                                                  true);       
        /* noinherit */
 
        /*
         * Register the index as internally dependent on the constraint.
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index d69809a..0461b15 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -6052,7 +6052,7 @@ ATAddForeignKeyConstraint(AlteredTableInfo *tab, Relation 
rel,
                                                                          NULL,
                                                                          true, 
        /* islocal */
                                                                          0,    
        /* inhcount */
-                                                                         
false);       /* isnoinherit */
+                                                                         
true);        /* isnoinherit */
 
        /*
         * Create the triggers that will enforce the constraint.
diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c
index faa7f0c..b74f577 100644
--- a/src/backend/commands/trigger.c
+++ b/src/backend/commands/trigger.c
@@ -459,7 +459,7 @@ CreateTrigger(CreateTrigStmt *stmt, const char *queryString,
                                                                                
          NULL,
                                                                                
          true,         /* islocal */
                                                                                
          0,            /* inhcount */
-                                                                               
          false);       /* isnoinherit */
+                                                                               
          true);        /* isnoinherit */
        }
 
        /*
diff --git a/src/test/regress/expected/inherit.out 
b/src/test/regress/expected/inherit.out
index 3128154..5ab9386 100644
--- a/src/test/regress/expected/inherit.out
+++ b/src/test/regress/expected/inherit.out
@@ -969,6 +969,123 @@ DETAIL:  drop cascades to table inht2
 drop cascades to table inhts
 drop cascades to table inht3
 drop cascades to table inht4
+-- Test non-inheritable indices [UNIQUE, EXCLUDE] contraints
+CREATE TABLE test_constraints (id int, val1 varchar, val2 int, UNIQUE(val1, 
val2));
+CREATE TABLE test_constraints_inh () INHERITS (test_constraints);
+\d+ test_constraints
+                        Table "public.test_constraints"
+ Column |       Type        | Modifiers | Storage  | Stats target | 
Description 
+--------+-------------------+-----------+----------+--------------+-------------
+ id     | integer           |           | plain    |              | 
+ val1   | character varying |           | extended |              | 
+ val2   | integer           |           | plain    |              | 
+Indexes:
+    "test_constraints_val1_val2_key" UNIQUE CONSTRAINT, btree (val1, val2)
+Child tables: test_constraints_inh
+Has OIDs: no
+
+ALTER TABLE ONLY test_constraints DROP CONSTRAINT 
test_constraints_val1_val2_key;
+\d+ test_constraints
+                        Table "public.test_constraints"
+ Column |       Type        | Modifiers | Storage  | Stats target | 
Description 
+--------+-------------------+-----------+----------+--------------+-------------
+ id     | integer           |           | plain    |              | 
+ val1   | character varying |           | extended |              | 
+ val2   | integer           |           | plain    |              | 
+Child tables: test_constraints_inh
+Has OIDs: no
+
+\d+ test_constraints_inh
+                      Table "public.test_constraints_inh"
+ Column |       Type        | Modifiers | Storage  | Stats target | 
Description 
+--------+-------------------+-----------+----------+--------------+-------------
+ id     | integer           |           | plain    |              | 
+ val1   | character varying |           | extended |              | 
+ val2   | integer           |           | plain    |              | 
+Inherits: test_constraints
+Has OIDs: no
+
+DROP TABLE test_constraints_inh;
+DROP TABLE test_constraints;
+CREATE TABLE circles (
+    c circle,
+    EXCLUDE USING gist (c WITH &&)
+);
+CREATE TABLE circles_inh () INHERITS (circles);
+\d+ circles
+                       Table "public.circles"
+ Column |  Type  | Modifiers | Storage | Stats target | Description 
+--------+--------+-----------+---------+--------------+-------------
+ c      | circle |           | plain   |              | 
+Indexes:
+    "circles_c_excl" EXCLUDE USING gist (c WITH &&)
+Child tables: circles_inh
+Has OIDs: no
+
+ALTER TABLE circles DROP CONSTRAINT circles_c_excl;
+\d+ circles
+                       Table "public.circles"
+ Column |  Type  | Modifiers | Storage | Stats target | Description 
+--------+--------+-----------+---------+--------------+-------------
+ c      | circle |           | plain   |              | 
+Child tables: circles_inh
+Has OIDs: no
+
+\d+ circles_inh
+                     Table "public.circles_inh"
+ Column |  Type  | Modifiers | Storage | Stats target | Description 
+--------+--------+-----------+---------+--------------+-------------
+ c      | circle |           | plain   |              | 
+Inherits: circles
+Has OIDs: no
+
+DROP TABLE circles_inh;
+DROP TABLE circles;
+-- Test non-inheritable foreign key contraints
+CREATE TABLE test_primary_constraints(id int PRIMARY KEY);
+CREATE TABLE test_foreign_constraints(id1 int REFERENCES 
test_primary_constraints(id));
+CREATE TABLE test_foreign_constraints_inh () INHERITS 
(test_foreign_constraints);
+\d+ test_primary_constraints
+               Table "public.test_primary_constraints"
+ Column |  Type   | Modifiers | Storage | Stats target | Description 
+--------+---------+-----------+---------+--------------+-------------
+ id     | integer | not null  | plain   |              | 
+Indexes:
+    "test_primary_constraints_pkey" PRIMARY KEY, btree (id)
+Referenced by:
+    TABLE "test_foreign_constraints" CONSTRAINT 
"test_foreign_constraints_id1_fkey" FOREIGN KEY (id1) REFERENCES 
test_primary_constraints(id)
+Has OIDs: no
+
+\d+ test_foreign_constraints
+               Table "public.test_foreign_constraints"
+ Column |  Type   | Modifiers | Storage | Stats target | Description 
+--------+---------+-----------+---------+--------------+-------------
+ id1    | integer |           | plain   |              | 
+Foreign-key constraints:
+    "test_foreign_constraints_id1_fkey" FOREIGN KEY (id1) REFERENCES 
test_primary_constraints(id)
+Child tables: test_foreign_constraints_inh
+Has OIDs: no
+
+ALTER TABLE test_foreign_constraints DROP CONSTRAINT 
test_foreign_constraints_id1_fkey;
+\d+ test_foreign_constraints
+               Table "public.test_foreign_constraints"
+ Column |  Type   | Modifiers | Storage | Stats target | Description 
+--------+---------+-----------+---------+--------------+-------------
+ id1    | integer |           | plain   |              | 
+Child tables: test_foreign_constraints_inh
+Has OIDs: no
+
+\d+ test_foreign_constraints_inh
+             Table "public.test_foreign_constraints_inh"
+ Column |  Type   | Modifiers | Storage | Stats target | Description 
+--------+---------+-----------+---------+--------------+-------------
+ id1    | integer |           | plain   |              | 
+Inherits: test_foreign_constraints
+Has OIDs: no
+
+DROP TABLE test_foreign_constraints_inh;
+DROP TABLE test_foreign_constraints;
+DROP TABLE test_primary_constraints;
 --
 -- Test parameterized append plans for inheritance trees
 --
diff --git a/src/test/regress/sql/inherit.sql b/src/test/regress/sql/inherit.sql
index 6e6921a..b4d9e40 100644
--- a/src/test/regress/sql/inherit.sql
+++ b/src/test/regress/sql/inherit.sql
@@ -291,6 +291,42 @@ SELECT a.attrelid::regclass, a.attname, a.attinhcount, 
e.expected
 
 DROP TABLE inht1, inhs1 CASCADE;
 
+
+-- Test non-inheritable indices [UNIQUE, EXCLUDE] contraints
+CREATE TABLE test_constraints (id int, val1 varchar, val2 int, UNIQUE(val1, 
val2));
+CREATE TABLE test_constraints_inh () INHERITS (test_constraints);
+\d+ test_constraints
+ALTER TABLE ONLY test_constraints DROP CONSTRAINT 
test_constraints_val1_val2_key;
+\d+ test_constraints
+\d+ test_constraints_inh
+DROP TABLE test_constraints_inh;
+DROP TABLE test_constraints;
+
+CREATE TABLE circles (
+    c circle,
+    EXCLUDE USING gist (c WITH &&)
+);
+CREATE TABLE circles_inh () INHERITS (circles);
+\d+ circles
+ALTER TABLE circles DROP CONSTRAINT circles_c_excl;
+\d+ circles
+\d+ circles_inh
+DROP TABLE circles_inh;
+DROP TABLE circles;
+
+-- Test non-inheritable foreign key contraints
+CREATE TABLE test_primary_constraints(id int PRIMARY KEY);
+CREATE TABLE test_foreign_constraints(id1 int REFERENCES 
test_primary_constraints(id));
+CREATE TABLE test_foreign_constraints_inh () INHERITS 
(test_foreign_constraints);
+\d+ test_primary_constraints
+\d+ test_foreign_constraints
+ALTER TABLE test_foreign_constraints DROP CONSTRAINT 
test_foreign_constraints_id1_fkey;
+\d+ test_foreign_constraints
+\d+ test_foreign_constraints_inh
+DROP TABLE test_foreign_constraints_inh;
+DROP TABLE test_foreign_constraints;
+DROP TABLE test_primary_constraints;
+
 --
 -- Test parameterized append plans for inheritance trees
 --
-- 
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to