本节介绍ExecProcNodeFirst函数和ExecProcNode函数。
ExecProcNodeFirst函数
//src/backend/executor/execProcnode.c
static TupleTableSlot *
ExecProcNodeFirst(PlanState *node)
{
check_stack_depth();
if (node->instrument)
node->ExecProcNode = ExecProcNodeInstr;
else
node->ExecProcNode = node->ExecProcNodeReal;
return node->ExecProcNode(node);
}
ExecProcNode函数
//src/include/executor/executor.h
static inline TupleTableSlot *
ExecProcNode(PlanState *node)
{
if (node->chgParam != NULL)
ExecReScan(node);
return node->ExecProcNode(node);
}