pg_liquid
受 Liquid 启发的 Datalog 图查询扩展
仓库
michael-golfi/pg_liquid
https://github.com/michael-golfi/pg_liquid
源码
pg_liquid-0.1.7.tar.gz
pg_liquid-0.1.7.tar.gz
概览
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2610 | pg_liquid | 否 | 是 | 否 | 是 | 否 | 否 | liquid |
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.1.7 | 1817161514 | pg_liquid | - |
| RPM | PIGSTY | 0.1.7 | 1817161514 | pg_liquid_$v | - |
| DEB | PIGSTY | 0.1.7 | 1817161514 | postgresql-$v-pg-liquid | - |
构建
您可以使用 pig build 命令构建 pg_liquid 扩展的 RPM / DEB 包:
安装
您可以直接安装 pg_liquid 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
pig
dnf
apt
创建扩展:
用法
来源:文档站点,README,v0.1.7 发行版,SQL 安装脚本
pg_liquid 将 Liquid 风格的图与复合查询引入 PostgreSQL。它在 liquid 模式中存储图状态,并提供普通查询、绑定主体的查询与最小权限读取的 SQL 入口。
核心查询接口
liquid.query(program text):执行 Liquid 事实、规则和一个最终查询。liquid.query_as(principal text, program text):以主体绑定方式执行。liquid.read_as(principal text, program text):最小权限读取封装,面向应用侧读取。
语言与建模特性
- 以
.结尾的事实和规则 - 每个程序只能有一个最终
?查询 - 通过
Edge(...)表示图边 - 形如
Type@(role=value, ...)的类型化复合项 - 查询局部递归规则
- 内建策略复合项,例如
CompoundReadByRole与liquid/acts_for
行规范化器
liquid.create_row_normalizer(...):将关系行投影为 Liquid 复合项。liquid.rebuild_row_normalizer(...):在表结构变化后重新生成绑定。liquid.drop_row_normalizer(...):删除规范化器,并可选清理已生成绑定。
注意事项
- 上游在 PostgreSQL 14 到 18 上验证该扩展。
- 随附 SQL 会从
PUBLIC撤销query_as与read_as;应按需显式授权。 - 当客户端不应声明新事实时,
read_as(...)是更安全的应用入口。
这个页面对您有帮助吗?
感谢反馈,我们会据此改进这篇文档。
哪里没有解决?(可选)