pgmp
多精度算术扩展
概览
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3700 | pgmp | 否 | 是 | 否 | 是 | 否 | 是 | - |
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 包:
BASH
安装
您可以直接安装 pgmp 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
创建扩展:
SQL
用法
来源:
pgmp 在 PostgreSQL 内提供 GNU MP 算术。它通过 mpz 增加任意大小整数,通过 mpq 增加精确有理数,并提供类型转换、算术、比较、聚合、数论、位运算与随机数函数。
核心流程
SQL
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。创建扩展时不要强制版本,并在设计升级前检查数据库实际报告的值:
SQL
pgmp 依赖 GMP 共享库。GMP 4.1 缺少上游文档列出的少数开方、位运算和随机状态函数;需要这些对象时应使用较新的 GMP。大操作数可能消耗大量后端内存和 CPU,因此面向不可信算术负载时应设置语句超时与输入限制。