diff options
Diffstat (limited to 'src/backend/catalog/pg_constraint.c')
-rw-r--r-- | src/backend/catalog/pg_constraint.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/backend/catalog/pg_constraint.c b/src/backend/catalog/pg_constraint.c index 1e2df031a84..54f3fb50a57 100644 --- a/src/backend/catalog/pg_constraint.c +++ b/src/backend/catalog/pg_constraint.c @@ -27,6 +27,7 @@ #include "catalog/pg_operator.h" #include "catalog/pg_type.h" #include "commands/defrem.h" +#include "common/int.h" #include "utils/array.h" #include "utils/builtins.h" #include "utils/fmgroids.h" @@ -74,7 +75,7 @@ CreateConstraintEntry(const char *constraintName, Node *conExpr, const char *conBin, bool conIsLocal, - int conInhCount, + int16 conInhCount, bool conNoInherit, bool conPeriod, bool is_internal) @@ -849,11 +850,12 @@ ConstraintSetParentConstraint(Oid childConstrId, childConstrId); constrForm->conislocal = false; - constrForm->coninhcount++; - if (constrForm->coninhcount < 0) + if (pg_add_s16_overflow(constrForm->coninhcount, 1, + &constrForm->coninhcount)) ereport(ERROR, errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), errmsg("too many inheritance parents")); + constrForm->conparentid = parentConstrId; CatalogTupleUpdate(constrRel, &tuple->t_self, newtup); |