简化 PLV8 安装过程
介绍一个紧凑的基于 Debian/Alpine 的 Docker 镜像,用于 PostgreSQL 上的 PLV8,包括最新的版本 16.2 和 15.6:
支持的平台:
用于 PostgreSQL 的 PLV8 结合了 JavaScript 和 SQL 的功能,为开发人员提供了灵活性、最少的编码、高性能和无限的可能性。
安装和集成简便
广泛的架构支持
节省时间的效率
持续支持和更新
初步操作
这个镜像的安装方式与标准的 Postgres 镜像相同,唯一的区别是添加了 PLV8 扩展。

首先应执行一个脚本来创建扩展:
CREATE EXTENSION plv8;
复制
然后您可以执行 SQL 查询:
DO $$
     plv8.elog(NOTICE, plv8.version);
$$ LANGUAGE plv8;
复制
之后,您将能够看到已安装的 PLV8 扩展的版本。
图像修改
由于 BigInt 序列化问题,此镜像有两种变体:
默认构建(在 PLV8 v3.0.0 及更高版本中,默认情况下 BigInt 数字将转换为字符串)
具有 BigInt 序列化支持的特殊模式
CREATE TABLE test
(
     id SERIAL PRIMARY KEY NOT NULL,
     comment text
);

INSERT INTO test(comment)
        
VALUES ('abc'), ('def');

CREATE OR REPLACE FUNCTION get_count(table_name text)
     RETURNS jsonb
     LANGUAGE plv8 IMMUTABLE AS
$$
        const sql = `SELECT COUNT(*) AS cnt FROM "${table_name}"`;
        const data = plv8.execute(sql);
        return data[0];
$$;

SELECT * FROM get_count('test');

复制
测试工作中的差异:
结果:
sibedge/postgres-plv8: {"cnt": "2"}
sibedge/postgres-plv8-bigint: {"cnt": 2}
CREATE TABLE test
(
id SERIAL PRIMARY KEY NOT NULL,
comment text
);

INSERT INTO test(comment)
VALUES ('abc'), ('def');

CREATE OR REPLACE FUNCTION get_count(table_name text)
RETURNS jsonb
LANGUAGE plv8 IMMUTABLE AS
$$
const sql = `SELECT COUNT(*) AS cnt FROM "${table_name}"`;
const data = plv8.execute(sql);
return data[0];
$$;

SELECT * FROM get_count('test');

需要定制的 Docker 镜像吗?
请求根据您独特的规格定制的构建。
我们的团队准备为您打造完美的解决方案。
带着爱从 sibedge