Skip to content
pg_variables

pg_variables

pg_variables : Session-scoped variables with scalar, array, and record types

Overview

ID Extension Package Version Category License Language
2820
pg_variables
pg_variables
1.2.5
FEAT
PostgreSQL
C
Attribute Has Binary Has Library Need Load Has DDL Relocatable Trusted
--s-d-r
No
Yes
No
Yes
yes
no
Relationships
See Also
session_variable
orafce
plisql

Release tag 1.2.5 still ships extension SQL version 1.2.

Packages

Type Repo Version PG Major Compatibility Package Pattern Dependencies
EXT
PIGSTY
1.2.5
18
17
16
15
14
pg_variables -
RPM
PIGSTY
1.2.5
18
17
16
15
14
pg_variables_$v -
DEB
PIGSTY
1.2.5
18
17
16
15
14
postgresql-$v-pg-variables -
Linux / PG PG18 PG17 PG16 PG15 PG14
el8.x86_64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
el8.aarch64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
el9.x86_64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
el9.aarch64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
el10.x86_64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
el10.aarch64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
d12.x86_64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
d12.aarch64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
d13.x86_64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
d13.aarch64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
u22.x86_64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
u22.aarch64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
u24.x86_64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
u24.aarch64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
u26.x86_64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
u26.aarch64
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
PIGSTY 1.2.5
Package Version OS ORG SIZE File URL
pg_variables_18 1.2.5 el8.x86_64 pigsty 35.5 KiB pg_variables_18-1.2.5-1PIGSTY.el8.x86_64.rpm
pg_variables_18 1.2.5 el8.aarch64 pigsty 34.0 KiB pg_variables_18-1.2.5-1PIGSTY.el8.aarch64.rpm
pg_variables_18 1.2.5 el9.x86_64 pigsty 34.7 KiB pg_variables_18-1.2.5-1PIGSTY.el9.x86_64.rpm
pg_variables_18 1.2.5 el9.aarch64 pigsty 33.6 KiB pg_variables_18-1.2.5-1PIGSTY.el9.aarch64.rpm
pg_variables_18 1.2.5 el10.x86_64 pigsty 35.4 KiB pg_variables_18-1.2.5-1PIGSTY.el10.x86_64.rpm
pg_variables_18 1.2.5 el10.aarch64 pigsty 34.4 KiB pg_variables_18-1.2.5-1PIGSTY.el10.aarch64.rpm
postgresql-18-pg-variables 1.2.5 d12.x86_64 pigsty 60.0 KiB postgresql-18-pg-variables_1.2.5-1PIGSTY~bookworm_amd64.deb
postgresql-18-pg-variables 1.2.5 d12.aarch64 pigsty 59.7 KiB postgresql-18-pg-variables_1.2.5-1PIGSTY~bookworm_arm64.deb
postgresql-18-pg-variables 1.2.5 d13.x86_64 pigsty 60.2 KiB postgresql-18-pg-variables_1.2.5-1PIGSTY~trixie_amd64.deb
postgresql-18-pg-variables 1.2.5 d13.aarch64 pigsty 59.8 KiB postgresql-18-pg-variables_1.2.5-1PIGSTY~trixie_arm64.deb
postgresql-18-pg-variables 1.2.5 u22.x86_64 pigsty 65.5 KiB postgresql-18-pg-variables_1.2.5-1PIGSTY~jammy_amd64.deb
postgresql-18-pg-variables 1.2.5 u22.aarch64 pigsty 65.4 KiB postgresql-18-pg-variables_1.2.5-1PIGSTY~jammy_arm64.deb
postgresql-18-pg-variables 1.2.5 u24.x86_64 pigsty 63.1 KiB postgresql-18-pg-variables_1.2.5-1PIGSTY~noble_amd64.deb
postgresql-18-pg-variables 1.2.5 u24.aarch64 pigsty 63.4 KiB postgresql-18-pg-variables_1.2.5-1PIGSTY~noble_arm64.deb
postgresql-18-pg-variables 1.2.5 u26.x86_64 pigsty 61.6 KiB postgresql-18-pg-variables_1.2.5-1PIGSTY~resolute_amd64.deb
postgresql-18-pg-variables 1.2.5 u26.aarch64 pigsty 62.2 KiB postgresql-18-pg-variables_1.2.5-1PIGSTY~resolute_arm64.deb

Source

pig build pkg pg_variables;		# build rpm/deb

Install

Make sure PGDG and PIGSTY repo available:

pig repo add pgsql -u   # add both repo and update cache

Install this extension with pig:

pig install pg_variables;		# install via package name, for the active PG version

pig install pg_variables -v 18;   # install for PG 18
pig install pg_variables -v 17;   # install for PG 17
pig install pg_variables -v 16;   # install for PG 16
pig install pg_variables -v 15;   # install for PG 15
pig install pg_variables -v 14;   # install for PG 14

Create this extension with:

CREATE EXTENSION pg_variables;

Usage

pg_variables provides session-scoped variables grouped into named packages. Variables live only in the current session and are non-transactional by default unless created with is_transactional := true.

Basic Set And Get

CREATE EXTENSION pg_variables;

SELECT pgv_set('vars', 'int1', 101);
SELECT pgv_get('vars', 'int1', NULL::int);

Transactional variables participate in savepoints and rollbacks:

BEGIN;
SELECT pgv_set('vars', 'trans_int', 101, true);
SAVEPOINT sp1;
SELECT pgv_set('vars', 'trans_int', 102, true);
ROLLBACK TO sp1;
COMMIT;

Core APIs

The README documents generic scalar and array APIs:

  • pgv_set(package, name, value, is_transactional default false)
  • pgv_get(package, name, NULL::type, strict default true)

It also documents record-oriented APIs:

  • pgv_insert()
  • pgv_update()
  • pgv_delete()
  • pgv_select()

Useful administration helpers include pgv_exists(), pgv_remove(), pgv_free(), pgv_list(), and pgv_stats().

Error And Strictness Behavior

pgv_get() checks both existence and type. The README shows that missing packages, missing variables, or mismatched types raise errors unless strict := false, in which case NULL is returned for missing values.

Deprecated Helpers And Version Note

Upstream still ships deprecated type-specific helpers such as pgv_set_int() / pgv_get_int() and pgv_set_jsonb() / pgv_get_jsonb(), but recommends the generic pgv_set() / pgv_get() API.

The repository tag is v1.2.5, while the current pg_variables.control file still declares default_version = '1.2'. That matches the packaging note that the release tag advanced without changing the SQL extension version string.

Last updated on