plv8
PL/JavaScript (v8) 可信过程程序语言
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
plv8 | 3.2.4 | LANG | PostgreSQL | C++ |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3010 | plv8 | 否 | 是 | 否 | 是 | 否 | 否 | pg_catalog |
| 相关扩展 | plpgsql pg_jsonschema jsquery plperl plpython3u pg_tle pllua plluau |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 3.2.4 | 1817161514 | plv8 | - |
| RPM | PIGSTY | 3.2.4 | 1817161514 | plv8_$v | - |
| DEB | PIGSTY | 3.2.4 | 1817161514 | postgresql-$v-plv8 | - |
构建
您可以使用 pig build 命令构建 plv8 扩展的 RPM / DEB 包:
pig build pkg plv8 # 构建 RPM / DEB 包
安装
您可以直接安装 plv8 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install plv8; # 当前活跃 PG 版本安装
pig ext install -y plv8 -v 18 # PG 18
pig ext install -y plv8 -v 17 # PG 17
pig ext install -y plv8 -v 16 # PG 16
pig ext install -y plv8 -v 15 # PG 15
pig ext install -y plv8 -v 14 # PG 14
dnf install -y plv8_18 # PG 18
dnf install -y plv8_17 # PG 17
dnf install -y plv8_16 # PG 16
dnf install -y plv8_15 # PG 15
dnf install -y plv8_14 # PG 14
apt install -y postgresql-18-plv8 # PG 18
apt install -y postgresql-17-plv8 # PG 17
apt install -y postgresql-16-plv8 # PG 16
apt install -y postgresql-15-plv8 # PG 15
apt install -y postgresql-14-plv8 # PG 14
创建扩展:
CREATE EXTENSION plv8;
用法
CREATE EXTENSION plv8;
SELECT plv8_version();
SELECT plv8_info();
DO $$ plv8.elog(NOTICE, plv8.version); $$ LANGUAGE plv8;
示例:
CREATE FUNCTION plv8_test(keys TEXT[], vals TEXT[]) RETURNS JSON AS $$
var o = {};
for(var i=0; i<keys.length; i++){
o[keys[i]] = vals[i];
}
return o;
$$ LANGUAGE plv8 IMMUTABLE STRICT;
SELECT plv8_test(ARRAY['name', 'age'], ARRAY['Tom', '29']);
构建
Plv8 在 EL10(x86/arm)上构建会遇到以下问题:
- 找不到 g++ 的问题
- g++ 14 需要包含
<algorithm>头文件的问题 - LTO 问题,g++14 链接时优化(Link Time Optimization)相关错误