diff options
Diffstat (limited to 'src/backend/executor/nodeTableFuncscan.c')
-rw-r--r-- | src/backend/executor/nodeTableFuncscan.c | 15 |
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; } |