内容提要
在GitHub上设立了PGXN讨论区,以便更方便地讨论PGXN及相关改进。一个关于快速安装预编译二进制PostgreSQL扩展包的二进制分发格式的提案已经在macOS和Linux上创建并测试。安装过程在安装文件之前会验证兼容性。该提案现已开放供审查和反馈。
延伸解读
二进制分发格式的设计思路
该提案借鉴了 Python wheel 和 Trunk 格式,将文件按 pg_config 目录配置存储,安装时直接复制到对应目录。包名包含包名、版本、PostgreSQL 版本、操作系统、系统版本和架构,便于安装客户端匹配平台。这种设计旨在简化预编译扩展的安装,避免从源码编译的复杂性。
概念验证的实现与验证
作者通过 trunk.mk 和 install_trunk 脚本实现了概念验证,并在 macOS 和 Linux 上测试了 semver 扩展。安装过程会验证每个文件的 SHA256 校验和、Trunk 格式版本、PostgreSQL 版本和平台兼容性,确保包适合当前环境。测试表明,安装后扩展能正常创建和使用。
当前限制与后续计划
目前的概念验证仅用于证明模式可行性,并非完整可发布的解决方案。trunk.json 的内容尚未最终确定,但计划包含验证信息。作者欢迎 PGXS 项目尝试并提供反馈,后续将开发正式的命令行客户端和 SDK,支持 PGXS 和 pgrx 等构建系统。
Q&A
PGXN讨论区的目的是什么?
PGXN讨论区旨在方便讨论PGXN及相关改进,促进更多人参与讨论和反馈。
PGXN提案的主要内容是什么?
提案提出了一种快速安装预编译二进制PostgreSQL扩展包的格式,支持平台和PostgreSQL版本匹配。
如何验证安装文件的兼容性?
安装过程会在安装文件之前验证兼容性,确保包适合特定平台和Postgres版本。
新文件trunk.mk的作用是什么?
trunk.mk重构了PGXS的安装目标,以支持新的包目录格式。
如何使用install_trunk脚本进行安装?
使用install_trunk脚本时,需提供.trunk文件,脚本会解压并验证文件的完整性和兼容性后进行安装。
提案的反馈和审查如何进行?
提案现已开放供审查和反馈,欢迎PGXS项目尝试该模式并提供改进意见。