| From: | "Tristan Partin" <tristan(at)partin(dot)io> |
|---|---|
| To: | "pgsql-hackers" <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Protect against timestamp underflow in uuidv7(interval) |
| Date: | 2026-06-23 23:39:30 |
| Message-ID: | DJGTQ0SA6X9M.1B0PG304MDM9T@partin.io |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
We were silently allowing underflowing the generated timestamp for the
UUIDv7 value:
# SELECT uuid_extract_timestamp(uuidv7('-57 years'::interval));
uuid_extract_timestamp
-----------------------------
10889-01-23 04:02:36.375+00
(1 row)
RFC 9562[0] doesn't seem to specify that this should be allowed, so
generate an error and forbid the underflow.
I checked the Rust uuid crate[1], and it also errors out with
a timestamp earlier than the Unix epoch.
[0]: https://www.rfc-editor.org/rfc/rfc9562.html
[1]: https://github.com/uuid-rs/uuid/blob/1e6a9669e30d53bae50fd52f16b7a1961fda236b/src/timestamp.rs#L198-L220
--
Tristan Partin
PostgreSQL Contributors Team
AWS (https://aws.amazon.com)
| Attachment | Content-Type | Size |
|---|---|---|
| v1-0001-Protect-against-timestamp-underflow-in-uuidv7-int.patch | text/x-patch | 2.9 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Michael Paquier | 2026-06-23 23:40:22 | Re: Handle concurrent drop when doing whole database vacuum |
| Previous Message | Dean Rasheed | 2026-06-23 23:34:26 | Re: Global temporary tables |