Protect against timestamp underflow in uuidv7(interval)

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

Responses

Browse pgsql-hackers by date

  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