parray_gin
为 text[] 提供部分匹配运算符与 GIN 索引支持
仓库
theirix/parray_gin
https://github.com/theirix/parray_gin
源码
parray_gin-1.5.0.tar.gz
parray_gin-1.5.0.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
parray_gin | 1.5.0 | FUNC | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 4860 | parray_gin | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | intarray btree_gin btree_gist pg_trgm smlar aggs_for_arrays aggs_for_vecs arraymath |
|---|
PGXN dist name and PostgreSQL extension name are both parray_gin; Pigsty packages are built for PG 14-18.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.5.0 | 1817161514 | parray_gin | - |
| RPM | PIGSTY | 1.5.0 | 1817161514 | parray_gin_$v | - |
| DEB | PIGSTY | 1.5.0 | 1817161514 | postgresql-$v-parray-gin | - |
构建
您可以使用 pig build 命令构建 parray_gin 扩展的 RPM / DEB 包:
pig build pkg parray_gin # 构建 RPM / DEB 包
安装
您可以直接安装 parray_gin 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install parray_gin; # 当前活跃 PG 版本安装
pig ext install -y parray_gin -v 18 # PG 18
pig ext install -y parray_gin -v 17 # PG 17
pig ext install -y parray_gin -v 16 # PG 16
pig ext install -y parray_gin -v 15 # PG 15
pig ext install -y parray_gin -v 14 # PG 14
dnf install -y parray_gin_18 # PG 18
dnf install -y parray_gin_17 # PG 17
dnf install -y parray_gin_16 # PG 16
dnf install -y parray_gin_15 # PG 15
dnf install -y parray_gin_14 # PG 14
apt install -y postgresql-18-parray-gin # PG 18
apt install -y postgresql-17-parray-gin # PG 17
apt install -y postgresql-16-parray-gin # PG 16
apt install -y postgresql-15-parray-gin # PG 15
apt install -y postgresql-14-parray-gin # PG 14
创建扩展:
CREATE EXTENSION parray_gin;
用法
parray_gin 为 text[] 增加一个 GIN operator class,并提供严格匹配与部分匹配操作符。上游把它描述为基于 pg_trgm trigram 分解的数组索引。
创建扩展与索引
CREATE EXTENSION parray_gin;
CREATE TABLE test_table (
id bigserial,
val text[]
);
CREATE INDEX test_tags_idx
ON test_table
USING gin (val parray_gin_ops);
可索引操作符
reference doc 说明 parray_gin_ops 支持下列操作符:
@>:严格包含。<@:严格被包含。@@>:部分包含,数组元素可以使用LIKE模式。<@@:部分被包含。
示例:
SELECT * FROM test_table WHERE val @> ARRAY['must','contain'];
SELECT * FROM test_table WHERE val @@> ARRAY['what%like%'];
SELECT * FROM test_table WHERE val <@ ARRAY['galaxy','ago','vader'];
SELECT * FROM test_table WHERE val <@@ ARRAY['%ar%','vader'];
匹配行为
严格匹配要求数组元素完全相等。部分匹配允许 'foo%' 或 '%oo%' 这类模式。由于 trigram 索引可能返回误命中,文档说明索引查找之后还会做 recheck。
注意事项
README 表示支持范围一直到 PostgreSQL 18,而 reference doc 仍写成 9.1-14。两份文档对操作符和 opclass 行为的描述是一致的,但版本说明在上游尚未完全同步。