aboutsummaryrefslogtreecommitdiff
path: root/src/backend/parser/parse_target.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2003-05-31 19:03:34 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2003-05-31 19:03:34 +0000
commitd7e76d42f286516d3bef6fecd0fc9158013da1a4 (patch)
treea53299e64b3a7a60a48c77278c97aca0e9d26997 /src/backend/parser/parse_target.c
parente70a8ee97d7f0fe42b262ede0dbf2af829061218 (diff)
downloadpostgresql-d7e76d42f286516d3bef6fecd0fc9158013da1a4.tar.gz
postgresql-d7e76d42f286516d3bef6fecd0fc9158013da1a4.zip
markTargetListOrigin neglected to handle outer-scope Vars properly;
per report from Joe Conway.
Diffstat (limited to 'src/backend/parser/parse_target.c')
-rw-r--r--src/backend/parser/parse_target.c9
1 files changed, 8 insertions, 1 deletions
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);