> 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