pg_rational
使用BIGINT表示的有理数数据类型
仓库
begriffs/pg_rational
https://github.com/begriffs/pg_rational
源码
pg_rational-0.0.3.tar.gz
pg_rational-0.0.3.tar.gz
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_rational | 0.0.3 | TYPE | MIT | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 3720 | pg_rational | 否 | 是 | 否 | 是 | 否 | 否 | - |
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | MIXED | 0.0.3 | 1817161514 | pg_rational | - |
| RPM | PIGSTY | 0.0.3 | 1817161514 | pg_rational_$v | - |
| DEB | PGDG | 0.0.3 | 1817161514 | postgresql-$v-rational | - |
构建
您可以使用 pig build 命令构建 pg_rational 扩展的 RPM 包:
BASH
安装
您可以直接安装 pg_rational 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
BASH
使用 pig 或者是 apt/yum/dnf 安装扩展:
安装
BASH
pig
BASH
dnf
BASH
apt
BASH
创建扩展:
SQL
用法
来源:
pg_rational 通过固定的 64 位 PostgreSQL 类型提供精确分数运算。对于必须保持精确的数值,以及需要在现有位置之间插入新位置而无需重新编号整张表的用户自定义行排序,可以使用 rational。
精确运算
SQL
扩展会检测算术溢出,而不是静默回绕。ratt 是用于元组强制转换的辅助类型:
SQL
整数值、浮点值与有理数之间可以相互转换。浮点数转换会寻找有理数近似值;将有理数转换成浮点数则会失去精确性。
稳定的用户自定义排序
SQL
请使用 integer 序列,并显式转换 nextval()。该扩展有意不提供从 bigint 到 rational 的隐式转换,因为其分子受 PostgreSQL integer 范围限制。
索引、聚合与注意事项
rational支持 btree 和 hash 操作符类,因此可用于排序索引和等值索引。- 除算术及比较操作符外,该扩展还提供
min(rational)、max(rational)和sum(rational)聚合函数。 rational_intermediate(lower, upper)沿 Stern-Brocot 树查找两个参数之间的分数。范围极窄时耗时会更长,而 v0.0.3 没有最大深度参数;在没有语句超时保护的情况下,不要向攻击者开放由其控制的病态边界。- 只有当算术运算保持在该类型的分子和分母限制内时,值才是精确的。应处理溢出错误,不要静默回退为浮点数。
- 版本 0.0.3 主要是构建兼容性和文档发行版;面向用户的有理数运算接口保持稳定。