postgresql Hook机制加实例详解

摘要:Hook,wiki说明文档:       

        hook实际上就是static 的函数指针.hook工作原理:每一个hook是由一个全局性的函数指针构成的。服务端进行运行初始化其为NULL,当数据库必须调用的时候,首先会检测是否为NULL,不是则优先调用函数,否则执行标准函数。

设置函数指针:当数据库载入共享库时,首先会将其载入到内存中,然后执行一个函数调用_PG_init。这个函数存在大多数共享库中是有效的。所以我们可以通过这个函数来加载我们自己的hook。

取消函数指针设置:当数据库需要卸载其共享库时,会调用函数 _PG_fini() 。我们可以再此进行设置函数指针为NULL,这样就取消设置了

hook可以修改和中断用户的操作。

下面是常用hook列表,大家可以根据列表进行对数据库相关过程进行修改,不需要直接在PG源码下修改,仅需要加一个扩展组件即可。

Hook 初始版本 说明
check_password_hook 9.0 处理用户密码时调用的hook,可以对用户的密码进行限制,增加密码的规范。
ClientAuthentication_hook 9.1 处理连接时调用的hook,可以对连接进行管理。
ExecutorStart_hook 8.4 处理查询执行开始时调用的hook
ExecutorRun_hook 8.4 处理查询执行时调用的hook
ExecutorFinish_hook 8.4 处理查询结束时调用的hook
ExecutorEnd_hook 8.4 处理查询完成后调用的hook
ExecutorCheckPerms_hook 9.1 处理访问权限时调用的hook
ProcessUtility_hook 9.0 通用hook,可以处理很多的过程,。
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值