|
|
@ -8,7 +8,7 @@ |
|
|
|
* |
|
|
|
* |
|
|
|
* |
|
|
|
* |
|
|
|
* IDENTIFICATION |
|
|
|
* 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 |
|
|
|
static void |
|
|
|
markTargetListOrigin(ParseState *pstate, Resdom *res, Var *var) |
|
|
|
markTargetListOrigin(ParseState *pstate, Resdom *res, Var *var) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
Index levelsup; |
|
|
|
RangeTblEntry *rte; |
|
|
|
RangeTblEntry *rte; |
|
|
|
AttrNumber attnum; |
|
|
|
AttrNumber attnum; |
|
|
|
|
|
|
|
|
|
|
|
if (var == NULL || !IsA(var, Var)) |
|
|
|
if (var == NULL || !IsA(var, Var)) |
|
|
|
return; |
|
|
|
return; |
|
|
|
|
|
|
|
levelsup = var->varlevelsup; |
|
|
|
|
|
|
|
while (levelsup-- > 0) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
pstate = pstate->parentParseState; |
|
|
|
|
|
|
|
Assert(pstate != NULL); |
|
|
|
|
|
|
|
} |
|
|
|
Assert(var->varno > 0 && |
|
|
|
Assert(var->varno > 0 && |
|
|
|
(int) var->varno <= length(pstate->p_rtable)); |
|
|
|
(int) var->varno <= length(pstate->p_rtable)); |
|
|
|
rte = rt_fetch(var->varno, pstate->p_rtable); |
|
|
|
rte = rt_fetch(var->varno, pstate->p_rtable); |
|
|
|