分享

[pgrx开发postgresql数据库扩展]2.安装与开发环境的搭建

 godxiasad 2023-04-21 发布于北京
——前文再续,书接上一回。

前言

我上篇文章刚刚写完,pgx就全面改名为了pgrx……,结果导致我都来不及把以前的文章改过来,所以以后遵循最新的命名方法。

pgrx的开发环境需求

pgrx目前仅支持在linux操作系统上进行开发,并且开发的数据库插件,也仅能用在Linux的PostgreSQL数据库上。
我本地的环境用的是Windows WSL2,即 Windows Subsystem for Linux,你可以通俗的理解为windows系统提供的虚拟机,你要是用vmware安装一个虚拟机,也是阔以的。
系统的基础环境如下:

  • 操作系统版本 :Ubuntu 20.04.5 LTS

  • gcc 版本:9.4.0

  • Clang版本:10.0.0

  • rust/cargo版本:1.68.0

  • 响应需要开发扩展的postgresql 开发

注意,这里不是最低要求的版本,根据官方文档,最细的环境要求如下:

  • GCC 7.0即以上版本

  • Clang 5.0 即以上版本

不会自己安装的同学,建议使用和我一样的ubuntu系统,我会在文末提供一个完整的安装脚本,你逐步执行一般基本上就可以了。
如果你喜欢折腾的话,欢迎使用其他linux版本……
当所有环境都齐备的情况下,就可以直接安装pgrx开发环境了,得益于Rust的强大的包管理工具cargo,在网络好(重音!)的情况下,仅需要一个命令就可以了:

我这里一共下载和编译了217个包:

全部build完成而且不报错,则表示pgrx安装好了,下面进行初始化设置即可:

因为我机器上有全套环境,所以我全部设置了一圈,具体详细脚本,见附录
然后我们来测试下效果:
首先创建一个测试工程:

以下都是Rust开发的基本功,有兴趣的同学去自学一下,我这就不做基础解释了

首先创建了一个叫做"dxlpgrx"的工程:
cargo pgrx dxlpgrx

PGRX这个框架能够自动生成测试文件和hello 方法,如下所示:
先看看他的配置文件:

配置文件中已经把有关postgresql的所有配置都自动生成了,默认采用pg13版本来进行测试。
然后再看看主体lib.rs逻辑代码:

默认生成了一个叫做hello_dxlpgrx的方法,这个方法就一个句话,输出一个问候语句,那么我们在postgresql里面来执行一下,看看效果:
执行以下测试命令:
cargo pgrx run
这个命令会编译我们的整个程序,并且启动pg的测试命令环境:

编译完成之后,会提示所用的测试环境的各种信息:

下面就可以进入测试了,首先看看这个扩展在pg里面是否可用:
select * from pg_available_extensions;
可以看见,我们创建扩展已经准备就绪了:

下面来安装这个扩展:
CREATE EXTENSION dxlpgrx;
然后可以用pg自定的命令\df来查看扩展函数:

执行函数:
SELECT hello_dxlpgrx();

成功打印出既定信息,则开发环境部署与代码编译均测试成功。
最后给出虾神自己机器上完整安装全套开发环境的脚本,如果你也是Ubuntu 20.04.5 LTS 应该不会有其他问题。

注意,如果不是此版本,可能有些许不同,比如Ubuntu 22.x的版本,有些包就是不一样的,建议初学者使用和我一样的版本。

最后是pgrx的github地址:

https://github.com/tcdi/pgrx

更多具体的信息,大家可以参考官方说明
当然,如果你能等的话,我也会逐步把这个东西讲完,预计十篇文章以上了。

附录:rust 与pgrx开发完整安装脚本

###################################################脚本在裸装的 Ubuntu 20.04.5 LTS 上测试通过# by godxia 2023年4月#################################################

# 更新apt-get工具与相关的源apt-get update -y -qq --fix-missingapt-get install -y wget gnupg apt-utilsecho "deb http://apt./pub/repos/apt/ focal-pgdg main" >> /etc/apt/sources.list.d/pgdg.listwget --quiet -O - https://www./media/keys/ACCC4CF8.asc | apt-key add -apt update
# 安装必要的工具和环境apt-get update -y --fix-missingapt-get install -y curlapt-get install -y gitapt-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-11apt-get install -y postgresql-12 postgresql-server-dev-12apt-get install -y postgresql-13 postgresql-server-dev-13apt-get install -y postgresql-14 postgresql-server-dev-14apt-get install -y postgresql-15 postgresql-server-dev-15apt-get install -y ruby ruby-dev rubygems build-essentialgem 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 -- -yENV 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

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多