diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 537590304e8..b393ee87ad1 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -885,9 +885,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));