From: Tom Lane Date: Wed, 13 Jan 2010 01:17:07 +0000 (+0000) Subject: Make fixed_paramref_hook behave properly when there are 'unused' slots X-Git-Tag: REL9_0_ALPHA4~266 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=43a9a2fb89e67f61c50419264a767e7356824067;p=postgresql Make fixed_paramref_hook behave properly when there are 'unused' slots in the parameter array. Noted while experimenting with an example from Pavel. This wouldn't come up in normal use, but it ought to honor the specification that a parameter array can have unused slots. --- diff --git a/src/backend/parser/parse_param.c b/src/backend/parser/parse_param.c index 53f3d625d0..b1282a1462 100644 --- a/src/backend/parser/parse_param.c +++ b/src/backend/parser/parse_param.c @@ -17,7 +17,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/parser/parse_param.c,v 2.2 2010/01/02 16:57:50 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/parser/parse_param.c,v 2.3 2010/01/13 01:17:07 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -100,8 +100,9 @@ fixed_paramref_hook(ParseState *pstate, ParamRef *pref) int paramno = pref->number; Param *param; - /* Check parameter number is in range */ - if (paramno <= 0 || paramno > parstate->numParams) + /* Check parameter number is valid */ + if (paramno <= 0 || paramno > parstate->numParams || + !OidIsValid(parstate->paramTypes[paramno - 1])) ereport(ERROR, (errcode(ERRCODE_UNDEFINED_PARAMETER), errmsg("there is no parameter $%d", paramno),