aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/tablecmds.c
diff options
context:
space:
mode:
authorRobert Haas <rhaas@postgresql.org>2017-04-28 14:48:38 -0400
committerRobert Haas <rhaas@postgresql.org>2017-04-28 14:48:38 -0400
commit6a4dda44e02bfd5148c13b00d8f81045a2e17f2c (patch)
tree852b14efebbc939f0b5cb6eb39ba5cc491f2d542 /src/backend/commands/tablecmds.c
parente4fddfd49241dc8dfda354993bad8d5518df1873 (diff)
downloadpostgresql-6a4dda44e02bfd5148c13b00d8f81045a2e17f2c.tar.gz
postgresql-6a4dda44e02bfd5148c13b00d8f81045a2e17f2c.zip
Fix VALIDATE CONSTRAINT to consider NO INHERIT attribute.
Currently, trying to validate a NO INHERIT constraint on the parent will search for the constraint in child tables (where it is not supposed to exist), wrongly causing a "constraint does not exist" error. Amit Langote, per a report from Hans Buschmann. Discussion: http://postgr.es/m/20170421184012.24362.19@wrigleys.postgresql.org
Diffstat (limited to 'src/backend/commands/tablecmds.c')
-rw-r--r--src/backend/commands/tablecmds.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c
index 4df17c0efcb..cdcb94929af 100644
--- a/src/backend/commands/tablecmds.c
+++ b/src/backend/commands/tablecmds.c
@@ -7704,9 +7704,10 @@ ATExecValidateConstraint(Relation rel, char *constrName, bool recurse,
/*
* If we're recursing, the parent has already done this, so skip
- * it.
+ * it. Also, if the constraint is a NO INHERIT constraint, we
+ * shouldn't try to look for it in the children.
*/
- if (!recursing)
+ if (!recursing && !con->connoinherit)
children = find_all_inheritors(RelationGetRelid(rel),
lockmode, NULL);