作者
digoal
日期
2021-07-08
标签
PostgreSQL , hook , callback
背景
钩子和callback, 方便用户增强PG内核能力.
例如:
SQL限流、分布式DDL、AWR、密码安全策略、PLAN hint、GPU加速等.
hook
Available hooks
General hooks
emit_log_hook
shmem_startup_hook
Security hooks
check_password_hook
ClientAuthentication_hook
ExecutorCheckPerms_hook
object_access_hook
openssl_tls_init_hook
row_security_policy_hook_permissive
row_security_policy_hook_restrictive
Function manager hooks
needs_fmgr_hook
fmgr_hook
Planner hooks
explain_get_index_name_hook
ExplainOneQuery_hook
get_attavgwidth_hook
get_index_stats_hook
get_relation_info_hook
get_relation_stats_hook
planner_hook
join_search_hook
set_rel_pathlist_hook
set_join_pathlist_hook
create_upper_paths_hook
post_parse_analyze_hook
Executor hooks
ExecutorStart_hook
ExecutorRun_hook
ExecutorFinish_hook
ExecutorEnd_hook
ProcessUtility_hook
PL/pgSQL hooks
func_setup
func_beg
func_end
stmt_beg
stmt_end
callback
What is a callback?
- Very similar to the hooks.
- But initially designed to be set by multiple users.
- Usually installed by Register*Callback() setter functions:
- RegisterXactCallback(), RegisterSubXactCallback(),
- RegisterExprContextCallback(), etc.
- Yet, there are others like: before_shmem_exit(), on_shmem_exit().
- Mostly for internal usage.
参考
fosdem21_postgres_extensibility
https://pgpedia.info/h/hooks.html
https://github.com/AmatanHead/psql-hooks
https://www.pgcon.org/2012/schedule/events/466.en.html
https://wiki.postgresql.org/images/e/e3/Hooks_in_postgresql.pdf
https://fosdem.org/2021/schedule/event/postgresql_extensibility/attachments/slides/4348/export/events/attachments/postgresql_extensibility/slides/4348/fosdem21_postgres_extensibility.pdf
PostgreSQL 许愿链接
您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.
9.9元购买3个月阿里云RDS PostgreSQL实例
PostgreSQL 解决方案集合
德哥 / digoal's github - 公益是一辈子的事.





