From: Tom Lane Date: Sat, 31 May 2003 19:03:34 +0000 (+0000) Subject: markTargetListOrigin neglected to handle outer-scope Vars properly; X-Git-Tag: REL7_4_BETA1~495 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d7e76d42f286516d3bef6fecd0fc9158013da1a4;p=thirdparty%2Fpostgresql.git markTargetListOrigin neglected to handle outer-scope Vars properly; per report from Joe Conway. --- diff --git a/src/backend/parser/parse_target.c b/src/backend/parser/parse_target.c index 10892bc292d..0b36e6b5e58 100644 --- a/src/backend/parser/parse_target.c +++ b/src/backend/parser/parse_target.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.101 2003/05/06 00:20:32 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/parser/parse_target.c,v 1.102 2003/05/31 19:03:34 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -236,11 +236,18 @@ markTargetListOrigins(ParseState *pstate, List *targetlist) static void markTargetListOrigin(ParseState *pstate, Resdom *res, Var *var) { + Index levelsup; RangeTblEntry *rte; AttrNumber attnum; if (var == NULL || !IsA(var, Var)) return; + levelsup = var->varlevelsup; + while (levelsup-- > 0) + { + pstate = pstate->parentParseState; + Assert(pstate != NULL); + } Assert(var->varno > 0 && (int) var->varno <= length(pstate->p_rtable)); rte = rt_fetch(var->varno, pstate->p_rtable);