From 43a9a2fb89e67f61c50419264a767e7356824067 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 13 Jan 2010 01:17:07 +0000 Subject: [PATCH] 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. --- src/backend/parser/parse_param.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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), -- 2.40.0