90 cleanLength = cleanTupType->
natts;
98 foreach(t, targetList)
104 cleanMap[cleanResno] = tle->
resno;
108 Assert(cleanResno == cleanLength);
165 cleanLength = cleanTupType->
natts;
170 for (
i = 0;
i < cleanLength;
i++)
178 t =
lnext(targetList, t);
226 foreach(t, targetlist)
230 if (tle->resjunk && tle->resname &&
231 (strcmp(tle->resname, attrName) == 0))
270 cleanLength = cleanTupType->
natts;
284 for (
i = 0;
i < cleanLength;
i++)
296 isnull[
i] = old_isnull[
j - 1];
#define InvalidAttrNumber
static Datum values[MAXATTR]
#define Assert(condition)
JunkFilter * ExecInitJunkFilter(List *targetList, TupleTableSlot *slot)
AttrNumber ExecFindJunkAttributeInTlist(List *targetlist, const char *attrName)
AttrNumber ExecFindJunkAttribute(JunkFilter *junkfilter, const char *attrName)
TupleTableSlot * ExecFilterJunk(JunkFilter *junkfilter, TupleTableSlot *slot)
JunkFilter * ExecInitJunkFilterConversion(List *targetList, TupleDesc cleanTupType, TupleTableSlot *slot)
const TupleTableSlotOps TTSOpsVirtual
TupleTableSlot * ExecStoreVirtualTuple(TupleTableSlot *slot)
TupleDesc ExecCleanTypeFromTL(List *targetList)
void ExecSetSlotDescriptor(TupleTableSlot *slot, TupleDesc tupdesc)
TupleTableSlot * MakeSingleTupleTableSlot(TupleDesc tupdesc, const TupleTableSlotOps *tts_ops)
void * palloc0(Size size)
static ListCell * list_head(const List *l)
static ListCell * lnext(const List *l, const ListCell *c)
TupleDesc jf_cleanTupType
TupleTableSlot * jf_resultSlot
#define TupleDescAttr(tupdesc, i)
static TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)
static void slot_getallattrs(TupleTableSlot *slot)