diff options
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/regress/expected/uuid.out | 15 | ||||
-rw-r--r-- | src/test/regress/sql/uuid.sql | 12 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/test/regress/expected/uuid.out b/src/test/regress/expected/uuid.out index 798633ad51e..95392003b86 100644 --- a/src/test/regress/expected/uuid.out +++ b/src/test/regress/expected/uuid.out @@ -233,6 +233,21 @@ SELECT array_agg(id ORDER BY guid_field) FROM guid3; {1,2,3,4,5,6,7,8,9,10} (1 row) +-- Check the timestamp offsets for v7. +-- +-- generate UUIDv7 values with timestamps ranging from 1970 (the Unix epoch year) +-- to 10888 (one year before the maximum possible year), and then verify that +-- the extracted timestamps from these UUIDv7 values have not overflowed. +WITH uuidts AS ( + SELECT y, ts as ts, lag(ts) OVER (ORDER BY y) AS prev_ts + FROM (SELECT y, uuid_extract_timestamp(uuidv7((y || ' years')::interval)) AS ts + FROM generate_series(1970 - extract(year from now())::int, 10888 - extract(year from now())::int) y) +) +SELECT y, ts, prev_ts FROM uuidts WHERE ts < prev_ts; + y | ts | prev_ts +---+----+--------- +(0 rows) + -- extract functions -- version SELECT uuid_extract_version('11111111-1111-5111-8111-111111111111'); -- 5 diff --git a/src/test/regress/sql/uuid.sql b/src/test/regress/sql/uuid.sql index 110188361d1..465153a0341 100644 --- a/src/test/regress/sql/uuid.sql +++ b/src/test/regress/sql/uuid.sql @@ -119,6 +119,18 @@ SELECT count(DISTINCT guid_field) FROM guid1; INSERT INTO guid3 (guid_field) SELECT uuidv7() FROM generate_series(1, 10); SELECT array_agg(id ORDER BY guid_field) FROM guid3; +-- Check the timestamp offsets for v7. +-- +-- generate UUIDv7 values with timestamps ranging from 1970 (the Unix epoch year) +-- to 10888 (one year before the maximum possible year), and then verify that +-- the extracted timestamps from these UUIDv7 values have not overflowed. +WITH uuidts AS ( + SELECT y, ts as ts, lag(ts) OVER (ORDER BY y) AS prev_ts + FROM (SELECT y, uuid_extract_timestamp(uuidv7((y || ' years')::interval)) AS ts + FROM generate_series(1970 - extract(year from now())::int, 10888 - extract(year from now())::int) y) +) +SELECT y, ts, prev_ts FROM uuidts WHERE ts < prev_ts; + -- extract functions -- version |