mirror of
https://github.com/postgres/postgres.git
synced 2025-04-27 22:56:53 +03:00
Check for out-of-range varoattno in deparse_context_for_subplan.
I have seen this case in CVS tip due to new "physical tlist" optimization for subqueries. I believe it probably can't happen in existing releases, but the check is not going to hurt anything, so backpatch to 8.0 just in case.
This commit is contained in:
parent
0182951bc8
commit
184ba4d5ed
@ -3,7 +3,7 @@
|
||||
* back to source text
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.203 2005/07/02 17:01:50 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.204 2005/07/15 18:39:59 tgl Exp $
|
||||
*
|
||||
* This software is copyrighted by Jan Wieck - Hamburg.
|
||||
*
|
||||
@ -1510,11 +1510,17 @@ deparse_context_for_subplan(const char *name, List *tlist,
|
||||
if (var->varnoold > 0 && var->varnoold <= rtablelength)
|
||||
{
|
||||
RangeTblEntry *varrte = rt_fetch(var->varnoold, rtable);
|
||||
char *varname;
|
||||
AttrNumber varattnum = var->varoattno;
|
||||
|
||||
varname = get_rte_attribute_name(varrte, var->varoattno);
|
||||
attrs = lappend(attrs, makeString(varname));
|
||||
continue;
|
||||
/* need this test in case it's referencing a resjunk col */
|
||||
if (varattnum <= list_length(varrte->eref->colnames))
|
||||
{
|
||||
char *varname;
|
||||
|
||||
varname = get_rte_attribute_name(varrte, varattnum);
|
||||
attrs = lappend(attrs, makeString(varname));
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* Fallback if can't get name */
|
||||
|
Loading…
x
Reference in New Issue
Block a user