pgsql内部和c存储过程支持-它们能修改PostgreSQL内部吗



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

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

这将是重建PostgreSQL源代码的一个很好的替代方案!

大多数PostgreSQL C API文档都在源代码注释中。如果您想做的不仅仅是编写自定义函数或新的数据类型,那么可能需要一段时间才能弄清楚这些东西是如何组合在一起的,以及如何与服务器交互。

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

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

在其他一些地方,不可能覆盖现有的行为,只能扩展它。这取决于你试图做什么。

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

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

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

最新更新