pgsql: Fix timestamp overflow in UUIDv7 implementation.
От | Masahiko Sawada |
---|---|
Тема | pgsql: Fix timestamp overflow in UUIDv7 implementation. |
Дата | |
Msg-id | E1tyCk2-001S6I-1Y@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix timestamp overflow in UUIDv7 implementation. The uuidv7_interval() function previously converted a shifted microsecond-precision timestamp (64-bit integer) to another 64-bit integer representing a timestamp with nanosecond precision. This conversion caused overflow for dates beyond the year 2262. The millisecond and sub-millisecond parts were then extracted from this nanosecond-precision timestamp and stored in UUIDv7 values. With this commit, the millisecond and sub-millisecond parts are stored directly into the UUIDv7 value without being converted back to a nanosecond precision timestamp. Following RFC 9562, the timestamp is stored as an unsigned integer, enabling support for dates up to the year 10889. Reported and fixed by Andrey Borodin, with cosmetic changes and regression tests by me. Reported-by: Andrey Borodin <x4mmm@yandex-team.ru> Author: Andrey Borodin <x4mmm@yandex-team.ru> Discussion: https://postgr.es/m/96DEC2D9-659A-40E8-B7BA-AF5D162A9E21@yandex-team.ru Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/a5419bc72e22337a16655aa28e2e20ecb65f65c3 Modified Files -------------- src/backend/utils/adt/uuid.c | 34 +++++++++++++++++----------------- src/test/regress/expected/uuid.out | 15 +++++++++++++++ src/test/regress/sql/uuid.sql | 12 ++++++++++++ 3 files changed, 44 insertions(+), 17 deletions(-)
В списке pgsql-committers по дате отправления: