用 pgrx 构建 PostgreSQL Rust 扩展
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/build-test-and-package-postgresql-extensions-in-rust-with-pgrx。
技能介绍
要解决的问题
在 Rust 中开发 PostgreSQL 原生扩展时,开发者常面临一套琐碎且易出错的工程环节:工具链初始化容易卡在目录残留、系统依赖缺失导致构建失败、不同 PostgreSQL 版本下打包结果不一致,以及交互式测试需要手动拼接命令与环境变量。这些工作占用大量时间,却并未直接贡献扩展逻辑本身,也容易因环境差异产生难以复现的问题。
技能如何工作
该技能围绕 pgrx 的扩展生命周期,将本地构建、测试运行与跨版本打包封装为清晰步骤。核心能力包括:
- 环境检查:在执行关键命令前提示缺失的系统依赖,避免因
pkg-config、icu4c等未安装而失败; - 命令编排:封装
cargo pgrx init的初始化流程,自动处理目录残留问题,必要时重新运行初始化; - 交互式测试:通过
cargo pgrx run在psql或pgcli中直接打开扩展,无需手动拼接启动参数; - 版本打包:生成与目标 PostgreSQL 版本对齐的扩展包,减少因版本差异导致的兼容性排查。
关键步骤依次为:准备 Rust 工具链与 PostgreSQL 开发依赖,初始化 pgrx 环境,运行交互式测试验证逻辑,最后生成可分发的扩展包。
适用边界与注意点
- 该技能聚焦本地开发与测试,不替代生产环境的部署与运维流程;
- 不提供跨平台开箱即用的配置,macOS 环境需额外更新 Xcode 与命令行工具,或完成系统升级;
- 上游项目未定义 MSRV,可能需要较新的 Rust 稳定版,建议通过
rustup获取; - 安装阶段如遇目录残留问题,需重新运行初始化命令,技能会在流程中提示该操作。
使用场景
- 当 Rust 写的 PostgreSQL 扩展需要在本地跑起来,并在 psql 里交互验证 SQL 与函数行为时
- 当团队要为不同 PostgreSQL 版本生成扩展包,排查编译、依赖或初始化失败时
- 当你准备在 macOS 上用 pgrx 开发扩展,需要检查 Xcode、命令行工具和系统依赖是否满足时
- 当 cargo pgrx init 遇到旧目录残留或初始化失败,需要按流程重新初始化并继续构建时
适合人员
- 负责用 Rust 编写 PostgreSQL 扩展的后端工程师,需要完成本地构建、测试与打包
- 维护多个 PostgreSQL 版本扩展包的技术负责人,关注兼容性与可复现构建
- 在 macOS 上初始化 pgrx 环境的开发者,需要排查 Xcode 和命令行工具配置
- 为自动化扩展开发流程配置 Agent 技能的工程师,需要明确技能边界和触发场景