diff --git a/src/pl/plpgsql/src/pl_comp.c b/src/pl/plpgsql/src/pl_comp.c index a637551..49327b2 100644 --- a/src/pl/plpgsql/src/pl_comp.c +++ b/src/pl/plpgsql/src/pl_comp.c @@ -409,6 +409,7 @@ do_compile(FunctionCallInfo fcinfo, for (i = 0; i < numargs; i++) { char buf[32]; + char *argname = NULL; Oid argtypeid = argtypes[i]; char argmode = argmodes ? argmodes[i] : PROARGMODE_IN; PLpgSQL_type *argdtype; @@ -433,9 +434,12 @@ do_compile(FunctionCallInfo fcinfo, errmsg("PL/pgSQL functions cannot accept type %s", format_type_be(argtypeid)))); + argname = (argnames && argnames[i][0] != 0) ? argnames[i] : NULL; + /* Build variable and add to datum list */ - argvariable = plpgsql_build_variable(buf, 0, - argdtype, false); + argvariable = plpgsql_build_variable(argname != NULL ? + argname : buf, + 0, argdtype, false); if (argvariable->dtype == PLPGSQL_DTYPE_VAR) { @@ -461,9 +465,9 @@ do_compile(FunctionCallInfo fcinfo, add_parameter_name(argitemtype, argvariable->dno, buf); /* If there's a name for the argument, make an alias */ - if (argnames && argnames[i][0] != '\0') + if (argname != '\0') add_parameter_name(argitemtype, argvariable->dno, - argnames[i]); + argname); } /*