diff --git a/src/common/backend/catalog/pg_proc.cpp b/src/common/backend/catalog/pg_proc.cpp index ef465b2ca..52677a2e6 100644 --- a/src/common/backend/catalog/pg_proc.cpp +++ b/src/common/backend/catalog/pg_proc.cpp @@ -1147,13 +1147,13 @@ Oid ProcedureCreate(const char* procedureName, Oid procNamespace, Oid propackage } bool existOutParam = false; - if (allParameterTypes != PointerGetDatum(NULL)) { + if (allParameterTypes != PointerGetDatum(NULL) && paramModes != NULL) { for (i = 0; i < allParamCount; i++) { + if (paramModes[i] == PROARGMODE_IN || paramModes[i] == PROARGMODE_VARIADIC) + continue; /* ignore input-only params */ if (paramModes[i] == PROARGMODE_OUT || paramModes[i] == PROARGMODE_INOUT) { existOutParam = true; } - if (paramModes == NULL || paramModes[i] == PROARGMODE_IN || paramModes[i] == PROARGMODE_VARIADIC) - continue; /* ignore input-only params */ switch (allParams[i]) { case ANYARRAYOID: