提交 184ba4d5 编写于 作者: T Tom Lane

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.
上级 0182951b
......@@ -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 */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册