aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor/nodeTableFuncscan.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/executor/nodeTableFuncscan.c')
-rw-r--r--src/backend/executor/nodeTableFuncscan.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/backend/executor/nodeTableFuncscan.c b/src/backend/executor/nodeTableFuncscan.c
index b03d2ef7622..165fae8c83b 100644
--- a/src/backend/executor/nodeTableFuncscan.c
+++ b/src/backend/executor/nodeTableFuncscan.c
@@ -202,7 +202,7 @@ ExecInitTableFuncScan(TableFuncScan *node, EState *estate, int eflags)
{
Oid in_funcid;
- getTypeInputInfo(tupdesc->attrs[i]->atttypid,
+ getTypeInputInfo(TupleDescAttr(tupdesc, i)->atttypid,
&in_funcid, &scanstate->typioparams[i]);
fmgr_info(in_funcid, &scanstate->in_functions[i]);
}
@@ -390,6 +390,7 @@ tfuncInitialize(TableFuncScanState *tstate, ExprContext *econtext, Datum doc)
foreach(lc1, tstate->colexprs)
{
char *colfilter;
+ Form_pg_attribute att = TupleDescAttr(tupdesc, colno);
if (colno != ordinalitycol)
{
@@ -403,11 +404,11 @@ tfuncInitialize(TableFuncScanState *tstate, ExprContext *econtext, Datum doc)
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("column filter expression must not be null"),
errdetail("Filter for column \"%s\" is null.",
- NameStr(tupdesc->attrs[colno]->attname))));
+ NameStr(att->attname))));
colfilter = TextDatumGetCString(value);
}
else
- colfilter = NameStr(tupdesc->attrs[colno]->attname);
+ colfilter = NameStr(att->attname);
routine->SetColumnFilter(tstate, colfilter, colno);
}
@@ -453,6 +454,8 @@ tfuncLoadRows(TableFuncScanState *tstate, ExprContext *econtext)
*/
for (colno = 0; colno < natts; colno++)
{
+ Form_pg_attribute att = TupleDescAttr(tupdesc, colno);
+
if (colno == ordinalitycol)
{
/* Fast path for ordinality column */
@@ -465,8 +468,8 @@ tfuncLoadRows(TableFuncScanState *tstate, ExprContext *econtext)
values[colno] = routine->GetValue(tstate,
colno,
- tupdesc->attrs[colno]->atttypid,
- tupdesc->attrs[colno]->atttypmod,
+ att->atttypid,
+ att->atttypmod,
&isnull);
/* No value? Evaluate and apply the default, if any */
@@ -484,7 +487,7 @@ tfuncLoadRows(TableFuncScanState *tstate, ExprContext *econtext)
ereport(ERROR,
(errcode(ERRCODE_NULL_VALUE_NOT_ALLOWED),
errmsg("null is not allowed in column \"%s\"",
- NameStr(tupdesc->attrs[colno]->attname))));
+ NameStr(att->attname))));
nulls[colno] = isnull;
}