pgmp

多精度算术扩展

概览

扩展包名版本分类许可证语言
pgmp1.0.6TYPELGPL-3.0C
ID扩展名BinLibLoadCreateTrustReloc模式
3700pgmp-
相关扩展unit numeral pg_rational uint uint128 seg cube

PIGSTY RPM and DEB packages are aligned at 1.0.6 for PostgreSQL 14 through 18.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.0.61817161514pgmp-
RPMPIGSTY1.0.61817161514pgmp_$v-
DEBPIGSTY1.0.61817161514postgresql-$v-pgmp-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64
el8.aarch64
el9.x86_64
el9.aarch64
el10.x86_64
el10.aarch64
d12.x86_64
d12.aarch64
d13.x86_64
d13.aarch64
u22.x86_64
u22.aarch64
u24.x86_64
u24.aarch64
u26.x86_64
u26.aarch64

构建

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

pig build pkg pgmp         # 构建 RPM / DEB 包

安装

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

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

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

pig install pgmp;          # 当前活跃 PG 版本安装
pig ext install -y pgmp -v 18  # PG 18
pig ext install -y pgmp -v 17  # PG 17
pig ext install -y pgmp -v 16  # PG 16
pig ext install -y pgmp -v 15  # PG 15
pig ext install -y pgmp -v 14  # PG 14
dnf install -y pgmp_18       # PG 18
dnf install -y pgmp_17       # PG 17
dnf install -y pgmp_16       # PG 16
dnf install -y pgmp_15       # PG 15
dnf install -y pgmp_14       # PG 14
apt install -y postgresql-18-pgmp   # PG 18
apt install -y postgresql-17-pgmp   # PG 17
apt install -y postgresql-16-pgmp   # PG 16
apt install -y postgresql-15-pgmp   # PG 15
apt install -y postgresql-14-pgmp   # PG 14

创建扩展

CREATE EXTENSION pgmp;

用法

来源:

pgmp 在 PostgreSQL 内提供 GNU MP 算术。它通过 mpz 增加任意大小整数,通过 mpq 增加精确有理数,并提供类型转换、算术、比较、聚合、数论、位运算与随机数函数。

核心流程

CREATE EXTENSION pgmp;

SELECT '123456789012345678901234567890'::mpz * 2;
SELECT mpq(1::mpz, 3::mpz) + mpq(1::mpz, 6::mpz);
SELECT gcd(48::mpz, 18::mpz);
SELECT nextprime(100000000000000000000::mpz);

mpz 是任意大小整数类型,但仍受 PostgreSQL 单值大小限制。mpq 保存规范化的分子和分母,因此在显式转换为近似类型之前,分数运算保持精确。

重要对象

  • mpz(text) 与类型转换可从十进制或受支持的带基数前缀形式构造整数。
  • mpq(text)mpq(mpz, mpz) 用于构造有理数。
  • 两种类型均支持普通比较以及 btree 或 hash 索引。
  • 整数辅助函数包括指定舍入方向的除法、幂、开方、素性测试、gcdlcm、阶乘、Fibonacci 与 Lucas 数、位运算和随机状态函数。
  • 有理数辅助函数包括分子分母访问、求逆、分母限制、算术、比较与聚合。
  • gmp_version()gmp_max_bitcnt() 提供库信息。

需要精确十进制或有理数语义时,不要使用浮点输入;应通过文本、整数,或显式分子和分母构造数值。

1.0.6 版本说明

1.0.6 发行版增加 PostgreSQL 19 构建兼容性,在元数据中把 PostgreSQL 14 设为支持下限,并为幂、Fibonacci 与 Lucas 数路径补充缺失的 unsigned-long 范围检查。

上游发行版版本为 1.0.6,但该标签下的 pgmp.control 当前声明 SQL 扩展版本为 1.1。创建扩展时不要强制版本,并在设计升级前检查数据库实际报告的值:

SELECT extversion
FROM pg_extension
WHERE extname = 'pgmp';

pgmp 依赖 GMP 共享库。GMP 4.1 缺少上游文档列出的少数开方、位运算和随机状态函数;需要这些对象时应使用较新的 GMP。大操作数可能消耗大量后端内存和 CPU,因此面向不可信算术负载时应设置语句超时与输入限制。


最后修改:2026-07-30: extension update 2026-07-30 (7373242)