planner_hook
查询规划入口
接管查询规划入口,返回可执行的计划。
当前查看 PostgreSQL 18。
说明
查询即将生成 PlannedStmt 时调用此钩子。它接收分析和重写后的查询以及规划参数,返回计划语句。扩展可包装 standard_planner 来观测或调整规划过程,也可以提供自己的规划实现。
- 接口类型
- planner_hook_type
- 声明头文件
- src/include/optimizer/planner.h
- 调用阶段
- 查询规划
- 初始值
- NULL(未安装钩子)
接口签名
typedef PlannedStmt *(*planner_hook_type) (Query *parse, const char *query_string, int cursorOptions, ParamListInfo boundParams);
extern PGDLLIMPORT planner_hook_type planner_hook;串接已有钩子
钩子变量只保存一个函数指针。扩展安装时应保存旧值;需要保留原行为时先调用旧钩子,旧值为空则调用相应的 standard_ 实现。直接再次调用同名公共入口可能重新进入自己的钩子。
调用位置
src/backend/optimizer/plan/planner.c:316
相关条目
文档与源码
查看来源构建
- 版本
- 18
- 构建
- REL_18_STABLE
- 来源指纹
753057e340da8f22e57c9a409ea7a235fd6a46bd
同类条目
create_upper_paths_hook上层查询路径get_relation_info_hook关系规划信息join_search_hook连接顺序搜索set_join_pathlist_hook连接访问路径set_rel_pathlist_hook关系访问路径
返回扩展钩子 · 此条目的收录范围为 PostgreSQL 10 至 20;起点不一定是实际引入版本。