pg_rational
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
pg_rational | 0.0.3 | TYPE | MIT | C |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 3720 | pg_rational | No | Yes | No | Yes | No | No | - |
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| 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 | - |
Build
You can build the RPM packages for pg_rational using pig build:
Install
You can install pg_rational directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:
Install the extension using pig or apt/yum/dnf:
Create Extension:
Usage
Sources:
pg_rational provides exact fractional arithmetic in a fixed 64-bit PostgreSQL type. Use rational for values that must remain exact and for user-defined row ordering where new positions need to be inserted between existing positions without renumbering the table.
Exact Arithmetic
The extension detects arithmetic overflow instead of silently wrapping. ratt is a helper type for tuple coercion:
Conversions are available between integer values, floating-point values, and rationals. Converting a float finds a rational approximation; converting a rational to float loses exactness.
Stable User-Defined Ordering
Use an integer sequence and cast nextval() explicitly. The extension intentionally has no implicit bigint-to-rational conversion because its numerator is limited to the PostgreSQL integer range.
Indexes, Aggregates, and Caveats
rationalsupports btree and hash operator classes, so it can be used in ordered and equality indexes.- The extension supplies
min(rational),max(rational), andsum(rational)aggregates in addition to arithmetic and comparison operators. rational_intermediate(lower, upper)walks a Stern-Brocot tree to find a fraction between its arguments. Extremely narrow ranges take longer, and v0.0.3 has no maximum-depth parameter; do not expose attacker-controlled pathological bounds without a statement timeout.- Values are exact only while arithmetic stays within the type’s numerator and denominator limits. Handle overflow errors rather than falling back silently to floating point.
- Version 0.0.3 is primarily a build-compatibility and documentation release; the user-facing rational arithmetic surface remains stable.
Was this page helpful?
Thanks—your feedback helps us improve this page.
What got in the way? (optional)