前言我上篇文章刚刚写完,pgx就全面改名为了pgrx……,结果导致我都来不及把以前的文章改过来,所以以后遵循最新的命名方法。
pgrx的开发环境需求pgrx目前仅支持在linux操作系统上进行开发,并且开发的数据库插件,也仅能用在Linux的PostgreSQL数据库上。我本地的环境用的是Windows WSL2,即 Windows Subsystem for Linux,你可以通俗的理解为windows系统提供的虚拟机,你要是用vmware安装一个虚拟机,也是阔以的。注意,这里不是最低要求的版本,根据官方文档,最细的环境要求如下: GCC 7.0即以上版本 Clang 5.0 即以上版本 不会自己安装的同学,建议使用和我一样的ubuntu系统,我会在文末提供一个完整的安装脚本,你逐步执行一般基本上就可以了。如果你喜欢折腾的话,欢迎使用其他linux版本……当所有环境都齐备的情况下,就可以直接安装pgrx开发环境了,得益于Rust的强大的包管理工具cargo,在网络好(重音!)的情况下,仅需要一个命令就可以了:我这里一共下载和编译了217个包: 全部build完成而且不报错,则表示pgrx安装好了,下面进行初始化设置即可: 因为我机器上有全套环境,所以我全部设置了一圈,具体详细脚本,见附录以下都是Rust开发的基本功,有兴趣的同学去自学一下,我这就不做基础解释了
cargo pgrx dxlpgrx PGRX这个框架能够自动生成测试文件和hello 方法,如下所示:配置文件中已经把有关postgresql的所有配置都自动生成了,默认采用pg13版本来进行测试。默认生成了一个叫做hello_dxlpgrx的方法,这个方法就一个句话,输出一个问候语句,那么我们在postgresql里面来执行一下,看看效果:cargo pgrx run 这个命令会编译我们的整个程序,并且启动pg的测试命令环境:下面就可以进入测试了,首先看看这个扩展在pg里面是否可用:select * from pg_available_extensions; CREATE EXTENSION dxlpgrx; SELECT hello_dxlpgrx(); 成功打印出既定信息,则开发环境部署与代码编译均测试成功。最后给出虾神自己机器上完整安装全套开发环境的脚本,如果你也是Ubuntu 20.04.5 LTS 应该不会有其他问题。注意,如果不是此版本,可能有些许不同,比如Ubuntu 22.x的版本,有些包就是不一样的,建议初学者使用和我一样的版本。
https://github.com/tcdi/pgrx 当然,如果你能等的话,我也会逐步把这个东西讲完,预计十篇文章以上了。附录:rust 与pgrx开发完整安装脚本################################################# # #脚本在裸装的 Ubuntu 20.04.5 LTS 上测试通过 # by godxia 2023年4月 # ################################################
# 更新apt-get工具与相关的源 apt-get update -y -qq --fix-missing apt-get install -y wget gnupg apt-utils echo "deb http://apt./pub/repos/apt/ focal-pgdg main" >> /etc/apt/sources.list.d/pgdg.list wget --quiet -O - https://www./media/keys/ACCC4CF8.asc | apt-key add - apt update
# 安装必要的工具和环境 apt-get update -y --fix-missing apt-get install -y curl apt-get install -y git apt-get install -y clang-10 apt-get install -y llvm-10 apt-get install -y clang gcc make build-essential libz-dev zlib1g-dev strace libssl-dev pkg-config
# 安装postgresql 11 - 15各版本以及服务器开发包 apt-get install -y postgresql-11 postgresql-server-dev-11 apt-get install -y postgresql-12 postgresql-server-dev-12 apt-get install -y postgresql-13 postgresql-server-dev-13 apt-get install -y postgresql-14 postgresql-server-dev-14 apt-get install -y postgresql-15 postgresql-server-dev-15 apt-get install -y ruby ruby-dev rubygems build-essential gem install --no-document fpm
# 修改用户权限(组名是可以选的,只写用户名也可以) chown 你的用户名:你用户的组名 -R /usr/lib/postgresql/ chown 你的用户名:你用户的组名 -R /usr/share/postgresql/
# 切换到你的用户下面,安装rust开发环境 su 你的用户名 curl --proto '=https' --tlsv1.2 -sSf https://sh. | bash -s -- -y ENV PATH="$HOME/.cargo/bin:${PATH}"
# 安装cargo-pgrx 开发框架 cargo install --locked cargo-pgrx
# 初始化pgrx开发环境 cargo pgrx init --pg11=/usr/lib/postgresql/11/bin/pg_config --pg12=/usr/lib/postgresql/12/bin/pg_config --pg13=/usr/lib/postgresql/13/bin/pg_config --pg14=/usr/lib/postgresql/14/bin/pg_config --pg15=/usr/lib/postgresql/15/bin/pg_config
|