pgmp
多精度算术扩展
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pgmp | 1.0.6 | TYPE | LGPL-3.0 | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3700 | pgmp | 否 | 是 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | 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 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.0.6 | 1817161514 | pgmp | - |
| RPM | PIGSTY | 1.0.6 | 1817161514 | pgmp_$v | - |
| DEB | PIGSTY | 1.0.6 | 1817161514 | postgresql-$v-pgmp | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 el8.x86_64.pg15 : pgmp_15 pgmp_15-1.0.6-1PIGSTY.el8.x86_64.rpm
pgmp_15-1.0.6-1PGDG.rhel8.10.x86_64.rpm
pgmp_15-1.0.4-4.rhel8.x86_64.rpm
| PIGSTY 1.0.6 el8.x86_64.pg14 : pgmp_14 pgmp_14-1.0.6-1PIGSTY.el8.x86_64.rpm
pgmp_14-1.0.6-1PGDG.rhel8.10.x86_64.rpm
pgmp_14-1.0.4-4.rhel8.x86_64.rpm
|
| el8.aarch64 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 el8.aarch64.pg15 : pgmp_15 pgmp_15-1.0.6-1PIGSTY.el8.aarch64.rpm
pgmp_15-1.0.6-1PGDG.rhel8.10.aarch64.rpm
pgmp_15-1.0.4-4.rhel8.aarch64.rpm
| PIGSTY 1.0.6 el8.aarch64.pg14 : pgmp_14 pgmp_14-1.0.6-1PIGSTY.el8.aarch64.rpm
pgmp_14-1.0.6-1PGDG.rhel8.10.aarch64.rpm
pgmp_14-1.0.4-4.rhel8.aarch64.rpm
|
| el9.x86_64 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 el9.x86_64.pg15 : pgmp_15 pgmp_15-1.0.6-1PIGSTY.el9.x86_64.rpm
pgmp_15-1.0.5-6PGDG.rhel9.8.x86_64.rpm
pgmp_15-1.0.4-4.rhel9.x86_64.rpm
| PIGSTY 1.0.6 el9.x86_64.pg14 : pgmp_14 pgmp_14-1.0.6-1PIGSTY.el9.x86_64.rpm
pgmp_14-1.0.5-6PGDG.rhel9.8.x86_64.rpm
|
| el9.aarch64 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 |
| el10.x86_64 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 |
| el10.aarch64 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 | PIGSTY 1.0.6 |
| d12.x86_64 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 |
| d12.aarch64 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 |
| d13.x86_64 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 |
| d13.aarch64 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 |
| u22.x86_64 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 |
| u22.aarch64 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 |
| u24.x86_64 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 |
| u24.aarch64 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 |
| u26.x86_64 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 |
| u26.aarch64 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 | PGDG 1.0.6 |
构建
您可以使用 pig build 命令构建 pgmp 扩展的 RPM / DEB 包:
pig build pkg pgmp # 构建 RPM / DEB 包
安装
您可以直接安装 pgmp 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
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 索引。
- 整数辅助函数包括指定舍入方向的除法、幂、开方、素性测试、
gcd、lcm、阶乘、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,因此面向不可信算术负载时应设置语句超时与输入限制。