pg_liquid

受 Liquid 启发的 Datalog 图查询扩展

概览

扩展包名版本分类许可证语言
pg_liquid0.1.7FEATMITC
ID扩展名BinLibLoadCreateTrustReloc模式
2705pg_liquidliquid
相关扩展age jsquery pg_jsonschema pg_search

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY0.1.71817161514pg_liquid-
RPMPIGSTY0.1.71817161514pg_liquid_$v-
DEBPIGSTY0.1.71817161514postgresql-$v-pg-liquid-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
u22.x86_64
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
u22.aarch64
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
u24.x86_64
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
u24.aarch64
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7
PIGSTY 0.1.7

构建

您可以使用 pig build 命令构建 pg_liquid 扩展的 RPM / DEB 包:

pig build pkg pg_liquid         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_liquid 扩展包的预置二进制包,首先确保 PGDGPIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

pig install pg_liquid;          # 当前活跃 PG 版本安装
pig ext install -y pg_liquid -v 18  # PG 18
pig ext install -y pg_liquid -v 17  # PG 17
pig ext install -y pg_liquid -v 16  # PG 16
pig ext install -y pg_liquid -v 15  # PG 15
pig ext install -y pg_liquid -v 14  # PG 14
dnf install -y pg_liquid_18       # PG 18
dnf install -y pg_liquid_17       # PG 17
dnf install -y pg_liquid_16       # PG 16
dnf install -y pg_liquid_15       # PG 15
dnf install -y pg_liquid_14       # PG 14
apt install -y postgresql-18-pg-liquid   # PG 18
apt install -y postgresql-17-pg-liquid   # PG 17
apt install -y postgresql-16-pg-liquid   # PG 16
apt install -y postgresql-15-pg-liquid   # PG 15
apt install -y postgresql-14-pg-liquid   # PG 14

创建扩展

CREATE EXTENSION pg_liquid;

用法

语法:

CREATE EXTENSION pg_liquid;
SELECT liquid.query('Edge("a","b"). Edge("b","c"). Path(X,Y) :- Edge(X,Y). Path(X,Y) :- Edge(X,Z), Path(Z,Y). Path("a",Y)?');

来源:README文档站

pg_liquid 将 Liquid 博客语言及其数据模型映射到原生 PostgreSQL 存储与执行环境。该扩展提供 SQL 入口,用于运行 Liquid 风格程序、按主体查询,以及管理将关系行投影为 Liquid 复合体的行归一化器。

核心函数

上游 README 列出的主要函数包括:

  • liquid.query(program text)
  • liquid.query_as(principal text, program text)
  • liquid.read_as(principal text, program text)

这些函数分别支持普通执行、按主体查询和 CLS 感知读取。

语言特性

当前 README 说明支持的程序特性包括:

  • % 注释
  • . 结尾的事实与规则定义
  • 一个终结 ? 查询
  • Edge(...)
  • 形如 Type@(cid=..., role=...) 的命名复合体
  • 查询局部递归规则

示例形态

程序以文本形式传入,可定义事实、规则和最终查询:

SELECT liquid.query($$
  Edge("a","b").
  Edge("b","c").
  Path(X,Y) :- Edge(X,Y).
  Path(X,Y) :- Edge(X,Z), Path(Z,Y).
  Path("a",Y)?
$$);

说明

项目 README 指向 VitePress 文档站作为主要文档入口,并说明运行和部署细节也记录在该站点中。该扩展当前以 PGXN 包版本 0.1.1 发布,并已在 PostgreSQL 14 到 18 上验证。


最后修改 2026-04-10: extension update (13b4540)