内容提要
本文提出了改进PostgreSQL扩展文件组织和搜索路径的建议,以解决用户在不修改Postgres安装的情况下添加扩展的挑战。建议包括将扩展文件集中在一个目录中,并引入新配置参数,以简化安装和查找过程,从而提高扩展管理效率,特别是在容器和macOS环境中。
关键要点
-
提出改进PostgreSQL扩展文件组织和搜索路径的建议。
-
用户面临的挑战是需要在不修改Postgres安装的情况下添加扩展。
-
Debian系统中,创建扩展包的用户账户缺乏向Postgres安装添加文件的权限。
-
Christoph Berg的补丁通过添加第二个查找路径解决了扩展和动态模块的问题。
-
Peter Eisentraut提出的补丁提供了更典型的搜索路径模式,但未考虑与扩展一起提供的共享模块。
-
OCI镜像是不可变的,安装持久扩展需要创建持久卷并映射到特定目录。
-
CloudNativePg社区希望消除对持久卷的需求,依赖于每个扩展的单独镜像。
-
macOS的Postgres.app支持扩展,但安装扩展会破坏Apple的签名验证。
-
建议将扩展文件集中在一个目录中,以简化安装和查找过程。
-
引入新的pg_config参数以返回默认安装扩展的目录。
-
添加扩展查找路径GUC,列出Postgres将搜索的所有目录。
-
更新CREATE EXTENSION命令以在扩展路径中查找扩展控制文件。
-
更新PGXS的扩展安装行为以符合新的布局。
-
提出的文件布局和扩展路径GUC解决了打包测试和OCI/Kubernetes的用例。
-
为扩展模块预加载添加新的GUC,以便在会话中预加载共享模块。
-
未来考虑修改CREATE EXTENSION以支持仅包含共享模块的扩展。
-
RFC不包括如何管理第三方共享库的问题。