Skip to content

Files

Latest commit

Dec 15, 2023
f400df2 · Dec 15, 2023

History

History
124 lines (36 loc) · 4.23 KB

20191210_02.md

File metadata and controls

124 lines (36 loc) · 4.23 KB

PostgreSQL hook 钩子介绍 - 过滤器、空壳、无中生有

作者

digoal

日期

2019-12-10

标签

PostgreSQL , hook


背景

很多人家里会加自来水的前置过滤器,在要加过滤器的地方切段水管,把过滤器装上后水通过过滤器再往下流。

hook 在PostgreSQL中也可以看作是一种内置的过滤器,但它是个空壳,过滤器里什么都没有,你可以实现这个hook,也就是往过滤器里加东西。

例如这个hook,当ExecutorFinish_hook什么都没有时,就是个空壳,你可以在外面实现这个空壳,让他变成有东西,那么hook的代码就会被执行。起到“过滤器”效果。

void    
ExecutorFinish(QueryDesc *queryDesc)    
{    
        if (ExecutorFinish_hook)                      // 如果定义了这个HOOK,那么跳转到如下执行。    
                (*ExecutorFinish_hook) (queryDesc);    
        else    
                standard_ExecutorFinish(queryDesc);    
}   

《PostgreSQL 数据库资源限制 + HOOK(limit guc) - 降低攻击伤害、自动SQL优化等》

《PostgreSQL HooK 介绍》

《PostgreSQL 回收站功能 - 基于HOOK的recycle bin pgtrashcan》

https://www.dalibo.org/_media/hooks_in_postgresql2.pdf

Hooks in PostgreSQL

您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.

digoal's wechat