From: | Joe Nelson <joe(at)begriffs(dot)com> |
---|---|
To: | pgsql-hackers(at)postgresql(dot)org |
Subject: | POC: rational number type (fractions) |
Date: | 2020-02-08 04:25:54 |
Message-ID: | 20200208042554.GE42864@begriffs.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi hackers, attached is a proof of concept patch adding a new base type
called "rational" to represent fractions. It includes arithmetic,
simplification, conversion to/from float, finding intermediates with a
stern-brocot tree, custom aggregates, and btree/hash indices.
The primary motivation was as a column type to support user-defined
ordering of rows (with the ability to dynamically rearrange rows). The
postgres wiki has a page [0] about this using pairs of integers to
represent fractions, but it's not particularly elegant.
I wrote about options for implementing user-defined order in an article
[1] and ended up creating a postgres extension, pg_rational [2], to
provide the new type. People have been using the extension, but told me
they wished they could use it on hosted platforms like Amazon RDS which
have a limited set of whitelisted extensions. Thus I'm submitting this
patch to discuss getting the feature in core postgres.
For usage, see the included regression test. To see how it works for the
user-defined order use case see my article. I haven't included docs in
the patch since the interface may change with community feedback.
0: https://wiki.postgresql.org/wiki/User-specified_ordering_with_fractions
1: https://begriffs.com/posts/2018-03-20-user-defined-order.html
2: https://github.com/begriffs/pg_rational
--
Joe Nelson https://begriffs.com
Attachment | Content-Type | Size |
---|---|---|
rational-01.patch | text/x-patch | 55.2 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Masahiko Sawada | 2020-02-08 05:48:54 | Re: Internal key management system |
Previous Message | Fujii Masao | 2020-02-08 03:06:06 | Re: Does recovery write to backup_label ? |