pg_variables
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_variables | 1.2.5 | FEAT | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 2820 | pg_variables | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | session_variable orafce plisql |
|---|
Release tag 1.2.5 still ships extension SQL version 1.2.
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.2.5 | 1817161514 | pg_variables | - |
| RPM | PIGSTY | 1.2.5 | 1817161514 | pg_variables_$v | - |
| DEB | PIGSTY | 1.2.5 | 1817161514 | postgresql-$v-pg-variables | - |
构建
您可以使用 pig build 命令构建 pg_variables 扩展的 RPM / DEB 包:
pig build pkg pg_variables # 构建 RPM / DEB 包
安装
您可以直接安装 pg_variables 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_variables; # 当前活跃 PG 版本安装
pig ext install -y pg_variables -v 18 # PG 18
pig ext install -y pg_variables -v 17 # PG 17
pig ext install -y pg_variables -v 16 # PG 16
pig ext install -y pg_variables -v 15 # PG 15
pig ext install -y pg_variables -v 14 # PG 14
dnf install -y pg_variables_18 # PG 18
dnf install -y pg_variables_17 # PG 17
dnf install -y pg_variables_16 # PG 16
dnf install -y pg_variables_15 # PG 15
dnf install -y pg_variables_14 # PG 14
apt install -y postgresql-18-pg-variables # PG 18
apt install -y postgresql-17-pg-variables # PG 17
apt install -y postgresql-16-pg-variables # PG 16
apt install -y postgresql-15-pg-variables # PG 15
apt install -y postgresql-14-pg-variables # PG 14
创建扩展:
CREATE EXTENSION pg_variables;
用法
pg_variables 提供按名称 package 分组的会话级变量。变量只存在于当前 session;除非创建时指定 is_transactional := true,否则默认不参与事务。
基本读写
CREATE EXTENSION pg_variables;
SELECT pgv_set('vars', 'int1', 101);
SELECT pgv_get('vars', 'int1', NULL::int);
事务性变量会参与 savepoint 和 rollback:
BEGIN;
SELECT pgv_set('vars', 'trans_int', 101, true);
SAVEPOINT sp1;
SELECT pgv_set('vars', 'trans_int', 102, true);
ROLLBACK TO sp1;
COMMIT;
核心 API
README 记录了通用标量与数组 API:
pgv_set(package, name, value, is_transactional default false)pgv_get(package, name, NULL::type, strict default true)
同时也记录了面向 record 的 API:
pgv_insert()pgv_update()pgv_delete()pgv_select()
常用的管理辅助函数包括 pgv_exists()、pgv_remove()、pgv_free()、pgv_list() 和 pgv_stats()。
错误与 strict 行为
pgv_get() 会同时检查变量是否存在以及类型是否匹配。README 展示了 package 不存在、变量不存在或类型不匹配时会抛错;如果指定 strict := false,则在值缺失时返回 NULL。
已废弃辅助函数与版本说明
上游仍然提供一些已废弃的类型专用辅助函数,例如 pgv_set_int() / pgv_get_int() 和 pgv_set_jsonb() / pgv_get_jsonb(),但推荐使用通用的 pgv_set() / pgv_get()。
仓库 tag 已到 v1.2.5,而当前 pg_variables.control 仍声明 default_version = '1.2'。这与打包说明一致,即 release tag 已前进,但 SQL 扩展版本字符串没有同步变更。