From: | Andrey Borodin <x4mmm(at)yandex-team(dot)ru> |
---|---|
To: | Erik Nordström <erik(at)tigerdata(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: Fix for typo in UUIDv7 timestamp extraction |
Date: | 2025-08-13 09:52:04 |
Message-ID: | 14A13066-25E8-4916-A1A3-8282D53F2B1E@yandex-team.ru |
Views: | Whole Thread | Raw Message | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi Erik!
> On 13 Aug 2025, at 11:05, Erik Nordström <erik(at)tigerdata(dot)com> wrote:
>
> I think I found a small typo in the function that extracts a timestamp from a UUIDv7 (uuid_extract_timestamp). Unless I am mistaken, the constant US_PER_MS should be used instead of NS_PER_US when converting milliseconds to microseconds. Fortunately, these constants are the same so the calculation is still correct.
Wow, that's a very good level of proofreading! Yes, you are correct, it's must be US_PER_MS.
>
> Anyway, attaching a patch to fix this typo.
LGTM.
>
> On a related note, I am wondering why this function doesn't extract and use the sub-millisecond information in the rand_a bits? These bits are added when generating the UUID, but they don't seem to be extracted. Hopefully somebody could shed some light on this and whether it would be a worthwhile addition.
UUID might be formed by any external system, rand_a bits are not guaranteed to be non-random. Well, in some sense, reading time is reading random number, but anyway, we don't know for sure how those bits are used. And even in Postgres usage of sub-millisecond fractions depends on OS.
I think we can have a function in an extensions, that does pretend that UUID was generated by known algorithm. Or even SQL function to extract microseconds.
Thanks!
Best regards, Andrey Borodin.
From | Date | Subject | |
---|---|---|---|
Next Message | Shinya Kato | 2025-08-13 09:53:59 | Re: Improve tab completion for various SET/RESET forms |
Previous Message | Shlok Kyal | 2025-08-13 09:21:42 | Re: Skipping schema changes in publication |