mirror of
https://github.com/postgres/postgres.git
synced 2025-06-29 10:41:53 +03:00
markTargetListOrigin neglected to handle outer-scope Vars properly;
per report from Joe Conway.
This commit is contained in:
@ -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);
|
||||||
|
Reference in New Issue
Block a user