Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wSP7U-003A3m-1S for pgsql-hackers@arkaria.postgresql.org; Thu, 28 May 2026 01:01:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wSP7S-00ARzi-0M for pgsql-hackers@arkaria.postgresql.org; Thu, 28 May 2026 01:01:07 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wSP7R-00ARza-2X for pgsql-hackers@lists.postgresql.org; Thu, 28 May 2026 01:01:06 +0000 Received: from mail-dy1-x132d.google.com ([2607:f8b0:4864:20::132d]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wSP7Q-00000001mLM-2GxY for pgsql-hackers@lists.postgresql.org; Thu, 28 May 2026 01:01:06 +0000 Received: by mail-dy1-x132d.google.com with SMTP id 5a478bee46e88-304cf518c9dso751779eec.1 for ; Wed, 27 May 2026 18:01:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1779930062; cv=none; d=google.com; s=arc-20240605; b=QNpFXhYU3BQIzSn3c9qR21sA8EDjPPcoqcA6oFoBLZFjFxZfhwdDKJXtz5OzbLkCeW Eka2C63oKVScZLI0AqF9XL1jS7MGZE/ifdx/xmxx6x6I/8wr06Xg4Q2cc84RhVUgKp1u UVthOj/u8OFCMlGxSpa0YlyNDsj4CLn97kqHj4v81XkROVy+NfUa+hNxjR/8DsKBPo2S Qt0+0lu9MZVXxYi8wz5AFGwO7zgPmR+oIg5/sM/Tex4paPBckFibM6AogfKS/P46yTX8 ekXeGHtdnijn/xkRJ70sHhAQuuTk1Z1AlN20ZVMdYAdrrGIaGr0F1Qt8kOsbU0cL1HTu Tb7g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Y2v1joovmljxiYYTEPV1YVRmZnVFwByjtL/YQCbEmLQ=; fh=HF6gZ5MoBNHJILfZDA1ds0h4IA/YrUb0+alOEJJMVms=; b=QxHS66Mmh0vwCmP5LljC9x3LsM7aplzh4zPhfjcKDaRHb5f50Psa6QHr6eWkhs1ouz KyGG/YjP2jLEqbrLB7t0eqtt7qr+rsiFMCxwkzAkxdvgFOAgCkzAUN6ID4L266uP0brm OjHdB24GIVWjFLgRJMpYTdz6wkJkq8XCKaoSqdC6aCg0Sk6Gv0Q0w5b19JIm3WDWKKLr vxVS2IuPZ5aAOrVWd9Zu9kd7Rfh+rOUtyCJq39uoWEZk1VXWMCXCCf3+j4N0/kKXuQwj gcTlGt3MvDroWknRPgGPbY+YbSL1Bymn6SFbYa79v2fQnj4J1GVJD1uPZBYR6SBMUOQA elPQ==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779930062; x=1780534862; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Y2v1joovmljxiYYTEPV1YVRmZnVFwByjtL/YQCbEmLQ=; b=C6mjsRWC+6JybzjHeJgTtrEgpwD40A/Jop3X/Id2TAjOnFg8RjFk6796OOnqHvdJ+4 QYHPPtm0XMnIfLx6tpoSjTHjLdrXP8kDQAHGPgxPfdq0JGWMe9wr1KoFEGvwgbNTFo+q ibtAtYiItTEgErMAzLK2Sfc773W4ntJWx9HZ/SSTTkbp/HpQIjVDBi8p5ZiopC/yKkQI oNzaAseolKohOcJxPJXqgve8G3VjKUgopEP7dE6UeXq8YpduZYLtrXfVluuKmsWBPl/K rZCVcK8xLGFzE/vgCDamwx52AwhC3U5Vkq35lGHs8gOnJbVEr9UCofhwr0J6M8aXLanW f9oQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779930062; x=1780534862; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Y2v1joovmljxiYYTEPV1YVRmZnVFwByjtL/YQCbEmLQ=; b=e6wv5NOW8dGrzjVRkgpOefEZ+tsfuQeP+nliv3MFVYe7rPGaNBKrlrAgH7pczps2pr dRlk9fd4/DUyZra47wZWLV5KvMbMMTOEUQxLirgdl4uv5GuDinZACXZoWoiAKgMKbmNf W14eypfICj2biFsf3JfhOJzxdTIxvWStXbmKQO1MCyD3VbLn16mSwi41CDyGJ+EHxzHA 50YnbUZ3rrSYR00Q+SVH8WHA6jeg/68f0S7PIG07lvYOxKr8wQ/4FgWGM9yNgXhjIw8w HDuaQWhXyaYYqLk/hgxvmrxiB2tOkbfRj+Beluim5vmx6GgVcjgh7qz+dellP5jcrlIA jh+A== X-Forwarded-Encrypted: i=1; AFNElJ+K/aweYJTyGFJ38fnnANVo7RBvpQ6afZv0Fg5dhu1owFiC06O+67i4chbmLOMhbLTdvXtYkBfLIljp/V41@lists.postgresql.org X-Gm-Message-State: AOJu0YxYJoJDDI6LVONyL9KWXW9E91nCkPpPHgR35xUlHXUDLP/0ObXV M94g9/DiLSz7AgiP4cLn/RCRKKUFn0431a2wkadLShRgHiP306/3M8sp3S7Wau/6gs7TzNQfjGB kJYeGdBEhlzPT5YCfEExxOq+sjAshN0w= X-Gm-Gg: Acq92OHzU8LhCcv5ZJGyP7Gs71FhWc4dUVkaV0PgtOeOO7pOlBroIZegozn9wrn63lz spHlRvaFb+q8xBv5fMzFWezczW/3ABmpgTbDuS9sZNu32I31ro1cKFEUL3poC4WM0/Kp4vxFEMM 7l3zQZaPOGP11B39rsMPk/PIxcsYPggI00Jnr6ph4nqk+qs391SU2wsBs9r1JS1Zbxjyc5TTeLu 0+IAOwaV4OxfJ8O658xqW21JqzQLUJdUpM/xaJYDvqvhFJz1PaPitmqxka8X+emq4K2/lfFw0FG IyEtF1Yyw5rs3SIy X-Received: by 2002:a05:7301:e2b:b0:2d0:239a:23c9 with SMTP id 5a478bee46e88-30449183e3cmr12320708eec.16.1779930061938; Wed, 27 May 2026 18:01:01 -0700 (PDT) MIME-Version: 1.0 References: <799A70FA-6E5C-4118-99EB-2FBBE1CBAC54@thebuild.com> <966B5430-8ECD-48FA-B56F-22452D9CDBBF@yandex-team.ru> In-Reply-To: From: Baji Shaik Date: Wed, 27 May 2026 20:00:50 -0500 X-Gm-Features: AVHnY4KqDSDv7jnljVKWTRa_a4yfHueNK49G8EFdzeCy9N4Lh42nppxVTXD5YNc Message-ID: Subject: Re: uuidv7 improperly accepts dates before 1970-01-01 To: Masahiko Sawada Cc: Christophe Pettus , Andrey Borodin , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000001194f70652d643b0" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001194f70652d643b0 Content-Type: multipart/alternative; boundary="0000000000001194f60652d643ae" --0000000000001194f60652d643ae Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello Masahiko, On Wed, May 27, 2026 at 7:02=E2=80=AFPM Masahiko Sawada wrote: > I guess it would be safer to raise an error in such cases rather than > silently allowing wraparound. Otherwise, users might only realize that > their UUIDv7 values are no longer sortable years down the road, which > would be disastrous. Moreover, raising an error would be consistent > with how PostgreSQL natively handles timestamp + interval overflows. > +1. I ran into the same issue while testing, specifically, uuidv7('infinity'::interval) overflows int64 during the epoch conversion and produces a UUID with an incorrect timestamp. There's no valid use case for infinity as a shift offset. I have a small patch that adds a TIMESTAMP_NOT_FINITE check after timestamptz_pl_interval(), which catches both infinity and -infinity. Happy to extend it to also cover the 48-bit upper/lower bound checks if we agree on the direction. Thanks, Baji Shaik --0000000000001194f60652d643ae Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello Masahiko,

On W= ed, May 27, 2026 at 7:02=E2=80=AFPM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
I guess it would be safer to raise a= n error in such cases rather than
silently allowing wraparound. Otherwise, users might only realize that
their UUIDv7 values are no longer sortable years down the road, which
would be disastrous. Moreover, raising an error would be consistent
with how PostgreSQL natively handles timestamp + interval overflows.

+1.=C2=A0 I ran into the same issue while testing,= specifically,
uuidv7('infinity'::interval) overflows int64 duri= ng the epoch
conversion and produces a UUID with an incorrect timestamp.= =C2=A0
There's n= o valid use case for infinity as a shift offset.

I have a small patc= h that adds a TIMESTAMP_NOT_FINITE check after
timestamptz_pl_interval()= , which catches both infinity and
-infinity.=C2=A0 Happy to extend it to= also cover the 48-bit upper/lower
bound checks if we agree on the = direction.=C2=A0

Thanks,
Baji Shaik
--0000000000001194f60652d643ae-- --0000000000001194f70652d643b0 Content-Type: application/octet-stream; name="0001-Fix-uuidv7-with-infinite-interval-causing-integer-ov.patch" Content-Disposition: attachment; filename="0001-Fix-uuidv7-with-infinite-interval-causing-integer-ov.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mposclld0 RnJvbSBkYzI4YTA4YjJmZTE3OTkwMDUxNDU0ZjRkYjkzNWEwZWY0ZDAyM2QzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCYWppIFNoYWlrIDxiYWppLnBnZGV2QGdtYWlsLmNvbT4KRGF0 ZTogV2VkLCAyNyBNYXkgMjAyNiAxOTo0MzoxNSAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIEZpeCB1 dWlkdjcoKSB3aXRoIGluZmluaXRlIGludGVydmFsIGNhdXNpbmcgaW50ZWdlciBvdmVyZmxvdwoK dXVpZHY3KCdpbmZpbml0eSc6OmludGVydmFsKSBhbmQgdXVpZHY3KCctaW5maW5pdHknOjppbnRl cnZhbCkgY2F1c2UKaW50ZWdlciBvdmVyZmxvdyB3aGVuIGNvbnZlcnRpbmcgdGhlIGluZmluaXRl IFRpbWVzdGFtcFR6IGJhY2sgdG8gYQpVbml4IGVwb2NoIG1pY3Jvc2Vjb25kIHZhbHVlLiAgdGlt ZXN0YW1wdHpfcGxfaW50ZXJ2YWwoKSByZXR1cm5zIHRoZQpzcGVjaWFsIGluZmluaXR5L25lZ2F0 aXZlLWluZmluaXR5IFRpbWVzdGFtcFR6IHZhbHVlcywgYW5kIHRoZQpzdWJzZXF1ZW50IGFkZGl0 aW9uIG9mIHRoZSBlcG9jaCBvZmZzZXQgb3ZlcmZsb3dzIGludDY0LCBwcm9kdWNpbmcgYQpnYXJi YWdlIHRpbWVzdGFtcC4KCkZpeCBieSBjaGVja2luZyBUSU1FU1RBTVBfTk9UX0ZJTklURSh0cykg aW1tZWRpYXRlbHkgYWZ0ZXIgdGhlCmludGVydmFsIGFyaXRobWV0aWMgYW5kIHJlamVjdGluZyB3 aXRoIGEgY2xlYXIgZXJyb3IuCi0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3V1aWQuYyAgICAg ICB8IDcgKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC91dWlkLm91dCB8IDUgKysr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3V1aWQuc3FsICAgICAgfCA0ICsrKysKIDMgZmlsZXMg Y2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L2FkdC91dWlkLmMgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdXVpZC5jCmluZGV4IDZlZTM3NTJh Yzc4Li4yYmJhMDdiYjA5YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3V1aWQu YworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvdXVpZC5jCkBAIC02ODcsNiArNjg3LDEzIEBA IHV1aWR2N19pbnRlcnZhbChQR19GVU5DVElPTl9BUkdTKQogCQkJCQkJCQkJCQkJIFRpbWVzdGFt cFR6R2V0RGF0dW0odHMpLAogCQkJCQkJCQkJCQkJIEludGVydmFsUEdldERhdHVtKHNoaWZ0KSkp OwogCisKKwkvKiBSZWplY3QgaW5maW5pdGUgdGltZXN0YW1wcyAqLworCWlmIChUSU1FU1RBTVBf Tk9UX0ZJTklURSh0cykpCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9E QVRFVElNRV9WQUxVRV9PVVRfT0ZfUkFOR0UpLAorCQkJCSBlcnJtc2coInRpbWVzdGFtcCBvdXQg b2YgcmFuZ2UgZm9yIFVVSUQgdmVyc2lvbiA3IikpKTsKKwogCS8qIENvbnZlcnQgYSBUaW1lc3Rh bXBUeiB2YWx1ZSBiYWNrIHRvIGFuIFVOSVggZXBvY2ggdGltZXN0YW1wICovCiAJdXMgPSB0cyAr IChQT1NUR1JFU19FUE9DSF9KREFURSAtIFVOSVhfRVBPQ0hfSkRBVEUpICogU0VDU19QRVJfREFZ ICogVVNFQ1NfUEVSX1NFQzsKIApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC91dWlkLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXVpZC5vdXQKaW5kZXggOWM1 ZGRhOWU5YWIuLjQzODg3MzlmNDYyIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3V1aWQub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdXVpZC5vdXQKQEAg LTI4MCw2ICsyODAsMTEgQEAgU0VMRUNUIHV1aWRfZXh0cmFjdF92ZXJzaW9uKCcxMTExMTExMS0x MTExLTExMTEtMTExMS0xMTExMTExMTExMTEnKTsgIC0tIG51bGwKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAgICAgICAgICAgICAgICAgICAgIAogKDEgcm93KQorLS0gdXVpZHY3KGludGVydmFs KSByZWplY3RzIGluZmluaXRlIGludGVydmFscworU0VMRUNUIHV1aWR2NygnaW5maW5pdHknOjpp bnRlcnZhbCk7CitFUlJPUjogIHRpbWVzdGFtcCBvdXQgb2YgcmFuZ2UgZm9yIFVVSUQgdmVyc2lv biA3CitTRUxFQ1QgdXVpZHY3KCctaW5maW5pdHknOjppbnRlcnZhbCk7CitFUlJPUjogIHRpbWVz dGFtcCBvdXQgb2YgcmFuZ2UgZm9yIFVVSUQgdmVyc2lvbiA3CiAKIFNFTEVDVCB1dWlkX2V4dHJh Y3RfdmVyc2lvbih1dWlkdjQoKSk7ICAtLSA0CiAgdXVpZF9leHRyYWN0X3ZlcnNpb24gCmRpZmYg LS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC91dWlkLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3V1aWQuc3FsCmluZGV4IDhjYzJhZDQwNjE0Li5kOWYwNDAxODgwYiAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9zcWwvdXVpZC5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwv dXVpZC5zcWwKQEAgLTE0Niw2ICsxNDYsMTAgQEAgU0VMRUNUIHksIHRzLCBwcmV2X3RzIEZST00g dXVpZHRzIFdIRVJFIHRzIDwgcHJldl90czsKIFNFTEVDVCB1dWlkX2V4dHJhY3RfdmVyc2lvbign MTExMTExMTEtMTExMS01MTExLTgxMTEtMTExMTExMTExMTExJyk7ICAtLSA1CiBTRUxFQ1QgdXVp ZF9leHRyYWN0X3ZlcnNpb24oZ2VuX3JhbmRvbV91dWlkKCkpOyAgLS0gNAogU0VMRUNUIHV1aWRf ZXh0cmFjdF92ZXJzaW9uKCcxMTExMTExMS0xMTExLTExMTEtMTExMS0xMTExMTExMTExMTEnKTsg IC0tIG51bGwKKworLS0gdXVpZHY3KGludGVydmFsKSByZWplY3RzIGluZmluaXRlIGludGVydmFs cworU0VMRUNUIHV1aWR2NygnaW5maW5pdHknOjppbnRlcnZhbCk7CitTRUxFQ1QgdXVpZHY3KCct aW5maW5pdHknOjppbnRlcnZhbCk7CiBTRUxFQ1QgdXVpZF9leHRyYWN0X3ZlcnNpb24odXVpZHY0 KCkpOyAgLS0gNAogU0VMRUNUIHV1aWRfZXh0cmFjdF92ZXJzaW9uKHV1aWR2NygpKTsgIC0tIDcK IAotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --0000000000001194f70652d643b0--