PostgreSQL源码学习执行器#7,8
本节介绍ExecProcNodeFirst函数和ExecProcNode函数。
ExecProcNodeFirst函数
//src/backend/executor/execProcnode.c/* 在调用相关节点方法之前执行一些一次性的检查 */
static TupleTableSlot *
ExecProcNodeFirst(PlanState *node)
{
/* 在第一次执行节点期间执行堆栈深度检查 */
check_stack_depth();
/* instrument内部包含了real的调用 */
if (node->instrument)
node->ExecProcNode = ExecProcNodeInstr;
else
node->ExecProcNode = node->ExecProcNodeReal;
return node->ExecProcNode(node);
}
ExecProcNode函数
//src/include/executor/executor.hstatic inline TupleTableSlot *
ExecProcNode(PlanState *node)
{
if (node->chgParam != NULL) /* something changed? */
ExecReScan(node); /* let ReScan handle this */
return node->ExecProcNode(node);
}
以上是 PostgreSQL源码学习执行器#7,8 的全部内容, 来源链接: utcz.com/z/534160.html