semver

Semantic version data type

Overview

PackageVersionCategoryLicenseLanguage
pg_semver0.41.0TYPEPostgreSQLC
IDExtensionBinLibLoadCreateTrustRelocSchema
3510semverNoYesNoYesNoYes-
Relatedprefix ltree citext unit pgpdf pglite_fusion md5hash asn1oid

Version

TypeRepoVersionPG VerPackageDeps
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

Build

You can build the RPM packages for pg_semver using pig build:

pig build pkg pg_semver         # build RPM packages

Install

You can install pg_semver directly. First, make sure the PGDG repository is added and enabled:

pig repo add pgdg -u          # Add PGDG repo and update cache

Install the extension using pig or apt/yum/dnf:

pig install pg_semver;          # Install for current active PG version
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:

CREATE EXTENSION semver;

Usage

semver: semantic versioning data type

The semver extension provides a data type implementing Semantic Versioning 2.0.0.

CREATE EXTENSION semver;

SELECT '1.2.1'::semver;
SELECT '1.2.0'::semver > '1.2.0-b1'::semver;  -- true (prerelease < release)

Operators

OperatorDescriptionExampleResult
=Equal'1.2.0'::semver = '1.2.00'::semvert
<>Not equal'1.2.0'::semver <> '1.2.00'::semverf
<Less than'3.4.0-b1'::semver < '3.4.0'::semvert
<=Less or equal'3.4.0-b1'::semver <= '3.4.0'::semvert
>Greater than'3.4.0-b1'::semver > '3.4.0'::semverf
>=Greater or equal'3.4.0-b1'::semver >= '3.4.0'::semverf

Functions

FunctionDescriptionExampleResult
to_semver(text)Permissive parseto_semver('1.0')1.0.0
is_semver(text)Validate formatis_semver('1.2.0')true
semver(text)Strict castsemver('1.2.1')1.2.1
get_semver_major(semver)Major versionget_semver_major('4.2.0')4
get_semver_minor(semver)Minor versionget_semver_minor('4.2.0')2
get_semver_patch(semver)Patch versionget_semver_patch('4.2.0')0
get_semver_prerelease(semver)Prerelease partget_semver_prerelease('2.1.0-b2+bfb13')b2

Supports casts from text, numeric, real, double precision, integer, bigint, smallint.

Range Type

The semverrange type supports standard range operators:

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

Aggregate Functions

MIN(semver) and MAX(semver) are supported. Btree and hash indexes are available.


Last Modified 2026-03-12: add pg extension catalog (95749bf)