From d7e76d42f286516d3bef6fecd0fc9158013da1a4 Mon Sep 17 00:00:00 2001
From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Sat, 31 May 2003 19:03:34 +0000
Subject: [PATCH] markTargetListOrigin neglected to handle outer-scope Vars
 properly; per report from Joe Conway.

---
 src/backend/parser/parse_target.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

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);
-- 
GitLab