文章目录
-
- 整体架构
- 关键结构体
-
-
- PlannerInfo (pathnodes.h:195)
- PlannerGlobal (pathnodes.h:95)
-
- 函数栈关键函数
-
-
- pg_plan_query (postgres.c:885)
- planner (planner.c:274)
- standard_planner (planner.c:287)
- subquery_planner (planner.c:628)
-
整体架构
关键结构体
PlannerInfo (pathnodes.h:195)
plan和 optimiz时候需要的query信息
在所有的planner活动中,PlannerInfo这个结构通常被称为root。
除了原始查询之外,它还包含到所有planner的工作状态的链接。
需要注意的是目前规划器会大规模修改传入的Query数据结构;
总有一天这种情况会停止。
typedef struct PlannerInfo PlannerInfo; (pathnodes.h:195)
PlannerInfo的属性成员很多,会贯穿整个查询优化过程。这里不做单独展示