Appendix S. 扩展的钩子列表

扩展可以使用许多钩子来扩展内部功能。 钩子可以修改不同位置的行为,包括在运行 SQL 语句时。

下面列出了可用的钩子列表

Table S.1. 钩子列表

位置钩子描述
analyze.hpost_parse_analyze_hook插件在分析解析结束时获得控制的钩子
lt_post_parse_analyze_stmt_hook插件在语句分析解析结束时获得控制的钩子
planner.hplanner_hook插件在 planner() 中获得控制的钩子
create_upper_paths_hook插件在 grouping_planner() 规划上层关系时获得控制的钩子
pre_create_ordinary_grouping_paths_hook插件在 create_ordinary_grouping_paths 之前获得控制的钩子
lt_distribute_qual_to_rels_hook插件在将条件分配给关系时获得控制的钩子
paths.hset_rel_pathlist_hook插件在 set_rel_pathlist() 中获得控制的钩子
set_join_pathlist_hook插件在 add_paths_to_joinrel() 中获得控制的钩子
join_search_hook插件替换 standard_join_search() 的钩子
pushdown_quals_to_subquery_hook插件决定是否将 quals 推入子查询的钩子
planmain.hsupport_semijoin_to_inner_join_hook插件转换半连接为内连接时获得控制的钩子
lt_order_qual_clauses_hook插件在排序 quals 子句时获得控制的钩子
Executor.hExecutorStart_hook插件在 ExecutorStart() 中获得控制的钩子
ExecutorRun_hook插件在 ExecutorRun() 中获得控制的钩子
ExecutorFinish_hook插件在 ExecutorFinish() 中获得控制的钩子
ExecutorEnd_hook插件在 ExecutorEnd() 中获得控制的钩子
ExecutorCheckPerms_hook插件在 ExecCheckRTPerms() 中获得控制的钩子
Utility.hProcessUtility_hook插件在 ProcessUtility() 中获得控制的钩子
plancat.hget_relation_info_hook插件在 get_relation_info() 中获得控制的钩子
auth.hClientAuthentication_hook插件在 ClientAuthentication() 中获得控制的钩子
explain.hExplainOneQuery_hook插件在 ExplainOneQuery() 中获得控制的钩子
explain_get_index_name_hook插件在 explain_get_index_name() 中获得控制的钩子
user.hcheck_password_hook检查 CreateRole() 和 AlterRole() 中的密码的钩子
elog.hemit_log_hook在消息发送到服务器日志之前拦截消息的钩子
fmgr.hneeds_fmgr_hook函数调用的钩子
fmgr_hook函数调用的钩子
lsyscache.hget_attavgwidth_hook插件在 get_attavgwidth() 中获得控制的钩子
selfuncs.hget_relation_stats_hook我们要求统计信息时插件获得控制的钩子
get_index_stats_hook我们要求索引统计信息时插件获得控制的钩子
objectaccess.hobject_access_hook插件提供与此签名匹配的钩子函数
libpq-be.hopenssl_tls_init_hookSSL 的初始化钩子,如果适用,则默认设置密码回调函数
rowsecurity.hrow_security_policy_hook_permissive允许扩展添加自己的安全策略的钩子,用于添加与其他宽容策略结合的策略,使用 OR 运算。
ipc.hshmem_startup_hook允许扩展设置其 shmem 分配的钩子。
prep.hlt_judge_can_pull_up_hook插件决定是否提取子查询的钩子
lt_judge_sublink_can_pull_up_hook插件决定是否提取子链接的钩子