plpgsql_wrap v1.0 发布

发布于 2026-05-20,HexaCluster
相关开源软件

plpgsql_wrap 是一个 PostgreSQL 扩展/语言,用于对 PL/pgSQL 源码进行混淆,让用户无法直接阅读源码,但数据库仍可正常执行。它主要用于在向第三方交付存储过程/函数时保护知识产权或敏感业务逻辑,理念上类似于 Oracle 的 WRAP 工具。

HexaCluster 宣布 plpgsql_wrap v1.0 发布:这是该项目的首个公开版本,兼容 PostgreSQL 12 及以上

工作方式(概要)

  • LANGUAGE plpgsql_wrap 编写/创建存储过程。
  • 源码会先被校验,然后使用 AES-256-GCM 直接加密写入系统目录表 pg_proc.prosrc
  • 不知道密钥的情况下,用户无法再以明文方式查看存储过程源码。
  • pg_dump 也不会导出明文源码;导出结果可直接还原。
  • 也支持在 CREATE 时直接提供预先 wrap 好的加密 blob。

它与 LANGUAGE plpgsql 的行为基本一致,仅语言名变为 plpgsql_wrap

示例

```sql CREATE OR REPLACE FUNCTION public.calculate_bonus(emp_id int, yr int) RETURNS numeric LANGUAGE plpgsql_wrap AS $$ DECLARE v_salary numeric; BEGIN SELECT salary INTO v_salary FROM employees WHERE id = emp_id; RETURN v_salary * 0.15; -- confidential formula END; $$;

SELECT calculate_bonus(42, 2024); ```

链接

  • 项目页:https://github.com/HexaCluster/plpgsql_wrap