diff options
author | Robert Haas <rhaas@postgresql.org> | 2017-04-28 14:48:38 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2017-04-28 14:48:44 -0400 |
commit | 8a9c83bfaf889702401f532fbe2adaf604ca1bd6 (patch) | |
tree | 8c30fbf4cf14e65e63db7d38e48d6b170349fd60 /src/backend/commands/tablecmds.c | |
parent | 29e8c881dd077fd94d3f35a341c266f72e9285f2 (diff) | |
download | postgresql-8a9c83bfaf889702401f532fbe2adaf604ca1bd6.tar.gz postgresql-8a9c83bfaf889702401f532fbe2adaf604ca1bd6.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.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 608b0b19c49..5fe367d46b4 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -6903,9 +6903,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); |