- 基于PostgreSql 9.5.13
在我们查看Postgresql源码时,经常发现Hook的使用. 例如:1
2
3
4
5
6
7
8
9
10
11PlannedStmt *
planner(Query *parse, int cursorOptions, ParamListInfo boundParams)
{
PlannedStmt *result;
if (planner_hook)
result = (*planner_hook) (parse, cursorOptions, boundParams);
else
result = standard_planner(parse, cursorOptions, boundParams);
return result;
}
Hook是Window消息处理机制的一个平台,应用程序可以在上面设置子程序以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。
当消息到达后,在目标窗口处理函数之前处理它, 钩子机制允许应用程序截获处理Window消息或特定事件。 即钩子先获取控制权,进行加工处理。
Postgresql中的Hook机制,更多是中断与替换操作。改变其标准流程。