plr
概览
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3100 | plr | 否 | 是 | 否 | 是 | 否 | 是 | - |
Release/control and current RPM/DEB matrix use 8.4.8.9. Control declares relocatable=true. Local package matrix includes both EL10 architectures for PostgreSQL 14-18.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PGDG | 8.4.8.9 | 1817161514 | plr | - |
| RPM | PGDG | 8.4.8.9 | 1817161514 | plr_$v | - |
| DEB | PGDG | 8.4.8.9 | 1817161514 | postgresql-$v-plr | - |
安装
您可以直接安装 plr 扩展包的预置二进制包,首先确保 PGDG 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
创建扩展:
用法
来源:
plr 允许在 PostgreSQL 中使用 R 编程语言编写函数,提供对 R 统计和数据分析功能的完整访问。
创建函数
使用命名参数:
参数处理
- 未命名参数以
arg1、arg2等形式访问;显式命名的参数会替换对应的argN变量。 - SQL 标量 NULL 转为 R NULL,数组内的空元素转为 R
NA。STRICT函数会跳过整个参数为 NULL 的调用,但不会跳过包含空元素的数组。 - 复合类型(行)以 R data.frame 形式传递
- 一维数组转为 R 向量,二维数组转为矩阵,三维数组转为 R 数组;不支持更高维数。
通过 SPI 访问数据库
调用准备参数化查询的函数之前,应在同一连接中初始化类型 OID 变量:
集合返回函数
返回 R 向量以产生标量值集合:
窗口函数
窗口函数接收 farg1..fargN(窗口帧内的值向量)、fnumrows(帧大小)和 prownum(分区中的当前行位置)。
全局变量
使用 R 的全局环境在函数调用之间保持数据:
实用辅助函数
触发器函数
PL/R 支持触发器函数,可以访问 pg.tg.name、pg.tg.relname、pg.tg.when、pg.tg.level、pg.tg.op、pg.tg.new 和 pg.tg.old。
运行环境与权限
本文对应 PL/R 8.4.8.7。PL/R 是不受信任的过程语言:创建其函数需要超级用户,R 代码能够以 PostgreSQL 操作系统用户的权限访问文件和进程,因此应审查函数体和 EXECUTE 授权。R 共享库必须可用;在 Unix 系统上,上游要求启动前将 R_HOME 设置到 PostgreSQL 服务进程的环境中,仅在交互式客户端终端设置并不能配置服务。
SQL 标量 NULL 转换为 R NULL,数组内的空元素则转换为 R NA;将函数声明为 STRICT 可以避免以空参数调用。R 全局状态属于单个后端进程,既不是跨会话共享状态,也不是持久数据库表。上游撤销了 PUBLIC 对 plr_set_rhome(text) 等修改环境的辅助函数的执行权限;应由管理员管理运行环境,而不是向应用角色开放这些函数。普通使用无需共享预加载。
这个页面对您有帮助吗?
感谢反馈,我们会据此改进这篇文档。
哪里没有解决?(可选)