pgsql内部和c存储过程支持 - 他们可以修改PostgreSQL内部吗?

时间:2017-01-19 19:14:40

标签: database postgresql

pgsql存储过程支持内部和c语言。

这些非常有趣,但我找不到很多可以做的例子。此外,我想知道他们是否允许通过存储过程修改(或覆盖)一些PostgreSQL内部?

这将是重建PostgreSQL源代码的一个不错的选择!

1 个答案:

答案 0 :(得分:1)

大多数PostgreSQL C API文档都在源代码注释中。如果你想做的不仅仅是编写自定义函数或新数据类型,还需要花一些时间来弄清楚事物如何组合在一起以及如何与服务器进行交互。

您不能简单地使用扩展名替换PostgreSQL中的现有函数。您需要依赖现有的扩展点,如系统目录,钩子等。特别要查看ProcessUtility_hookExecutorStart_hook等。

这些钩子可以覆盖或扩展PostgreSQL行为。

在其他一些地方,它无法覆盖现有行为,您只能扩展它。这取决于你想要做什么。

有许多有用的工具,如动态共享内存,后台工作程序,shared_preload_libraries等,允许您构建更大,更复杂的扩展,可以独立于各个数据库会话。

首先阅读postgres内部的PostgreSQL手册部分。然后阅读contrib /中的一些扩展。然后是一般的PostgreSQL开发者文档,一些与PostgreSQL开发相关的会议演示文稿等。

目前还没有一个详细的扩展指南文档库。