semver

语义版本号数据类型

概览

扩展包名版本分类许可证语言
pg_semver0.41.0TYPEPostgreSQLC
ID扩展名BinLibLoadCreateTrustReloc模式
3510semver-
相关扩展prefix ltree citext unit pgpdf pglite_fusion md5hash asn1oid

版本

类型仓库版本PG 大版本包名依赖
EXTPGDG0.41.01817161514pg_semver-
RPMPGDG0.41.01817161514semver_$v-
DEBPGDG0.41.01817161514postgresql-$v-semver-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
PGDG 0.41.0
PGDG 0.41.0
PGDG 0.41.0
PGDG 0.41.0
PGDG 0.41.0
d12.aarch64
PGDG 0.41.0
PGDG 0.41.0
PGDG 0.41.0
PGDG 0.41.0
PGDG 0.41.0
d13.x86_64
PGDG 0.41.0
PGDG 0.41.0
PGDG 0.41.0
PGDG 0.41.0
PGDG 0.41.0
d13.aarch64
PGDG 0.41.0
PGDG 0.41.0
PGDG 0.41.0
PGDG 0.41.0
PGDG 0.41.0
u22.x86_64
u22.aarch64
u24.x86_64
u24.aarch64

构建

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

pig build pkg pg_semver         # 构建 RPM 包

安装

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

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

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

pig install pg_semver;          # 当前活跃 PG 版本安装
pig ext install -y pg_semver -v 18  # PG 18
pig ext install -y pg_semver -v 17  # PG 17
pig ext install -y pg_semver -v 16  # PG 16
pig ext install -y pg_semver -v 15  # PG 15
pig ext install -y pg_semver -v 14  # PG 14
dnf install -y semver_18       # PG 18
dnf install -y semver_17       # PG 17
dnf install -y semver_16       # PG 16
dnf install -y semver_15       # PG 15
dnf install -y semver_14       # PG 14
apt install -y postgresql-18-semver   # PG 18
apt install -y postgresql-17-semver   # PG 17
apt install -y postgresql-16-semver   # PG 16
apt install -y postgresql-15-semver   # PG 15
apt install -y postgresql-14-semver   # PG 14

创建扩展

CREATE EXTENSION semver;

用法

semver: 语义版本号数据类型

semver 扩展提供了实现语义版本号 2.0.0的数据类型。

CREATE EXTENSION semver;

SELECT '1.2.1'::semver;
SELECT '1.2.0'::semver > '1.2.0-b1'::semver;  -- true(预发布版 < 正式版)

运算符

运算符说明示例结果
=等于'1.2.0'::semver = '1.2.00'::semvert
<>不等于'1.2.0'::semver <> '1.2.00'::semverf
<小于'3.4.0-b1'::semver < '3.4.0'::semvert
<=小于等于'3.4.0-b1'::semver <= '3.4.0'::semvert
>大于'3.4.0-b1'::semver > '3.4.0'::semverf
>=大于等于'3.4.0-b1'::semver >= '3.4.0'::semverf

函数

函数说明示例结果
to_semver(text)宽松解析to_semver('1.0')1.0.0
is_semver(text)验证格式is_semver('1.2.0')true
semver(text)严格转换semver('1.2.1')1.2.1
get_semver_major(semver)主版本号get_semver_major('4.2.0')4
get_semver_minor(semver)次版本号get_semver_minor('4.2.0')2
get_semver_patch(semver)补丁版本号get_semver_patch('4.2.0')0
get_semver_prerelease(semver)预发布部分get_semver_prerelease('2.1.0-b2+bfb13')b2

支持从 textnumericrealdouble precisionintegerbigintsmallint 类型的转换。

范围类型

semverrange 类型支持标准范围运算符:

SELECT '1.0.5'::semver <@ '[1.0.0, 2.0.0)'::semverrange;  -- true

聚合函数

支持 MIN(semver)MAX(semver)。可使用 Btree 和 Hash 索引。


最后修改 2026-03-14: update extension metadata (953cbd0)