diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 784caa4678a..f2dadea5457 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -878,9 +878,16 @@ CreateTriggerFiringOn(CreateTrigStmt *stmt, const char *queryString, { ListCell *le; char *args; - int16 nargs = list_length(stmt->args); + int nargs = list_length(stmt->args); int len = 0; + Assert(nargs >= 0); + if (nargs > PG_INT16_MAX) + ereport(ERROR, + errcode(ERRCODE_TOO_MANY_ARGUMENTS), + errmsg("triggers cannot have more than %d arguments", + PG_INT16_MAX)); + foreach(le, stmt->args) { char *ar = strVal(lfirst(le));