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.94.2) (envelope-from ) id 1uUKlA-001aHZ-IO for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Jun 2025 07:41:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uUKl8-0010pd-MU for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Jun 2025 07:41:31 +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.94.2) (envelope-from ) id 1uUKl8-0010pO-BR for pgsql-hackers@lists.postgresql.org; Wed, 25 Jun 2025 07:41:31 +0000 Received: from mail-vk1-xa2c.google.com ([2607:f8b0:4864:20::a2c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uUKl6-003ynK-1v for pgsql-hackers@postgresql.org; Wed, 25 Jun 2025 07:41:30 +0000 Received: by mail-vk1-xa2c.google.com with SMTP id 71dfb90a1353d-532dbe71e4eso1557975e0c.2 for ; Wed, 25 Jun 2025 00:41:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750837286; x=1751442086; darn=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=v/bY362GtaX7G36bpYjw3bG0TA/BiE/Kr4fbTJ5QoHg=; b=Nrxvz7wlagpQV/QAsCpJES103hrKM4U/7QsB+xRi+VWK9cTwpY+vWxwxaG5NhfAQbo M7tgLsgUInicB03FiQiMSmAgsLfM2i8te8E1o6hzvdhGwOSFhVVK+2mP2cjaZEIXOQ6n aT+FEFsKK10HgKDjZpK2smA/9JJHhmhSYgF+SoxpsdaRVn3kwxwC7TNN99CJf8vPSffu 9Z++Q2WhS5vmPGHNxGXNFKnzwztn2kGVsIyw8LX+l3diHvAi8iSAMGFsxIp8PVHDJzQ3 wOi1JUQZpLC9B9jnGIsMXOwSyJL0OIv626COUGMENtYFMI3VVOGoMSasIIsswmTshMTK CvcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750837286; x=1751442086; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=v/bY362GtaX7G36bpYjw3bG0TA/BiE/Kr4fbTJ5QoHg=; b=xT0GAKUedWd6Rg8FwpVxPzpHqXSf7sAy4uHazg1DWOZfDMjTOzKaN3P5171BZz3hkN mzVcISUGyCa7+a7YZPWHbOJlBZL7Fr7hdnkNEtvzQ5JPbeW2/T/ljN9mKDDASLgXemDM JcJKXB7aW/UOOu6cYo/qzr4LtKkpCQitP0UlLeqb9Lgo/aZyWKWLNIgDFYJPaceQg+BB k8eFPvtEc0ILpeEpNzfKbCQeguF62xM5H+PUPxT8Y9YX6zZ/WZfiSBfGr8TqV7S48unM nGeDuEO5sGbi290qqiyOKNdxk5L0w4bUqLL/CSyzCb6wwZgNH8caJvu1S8RJbie0y5S/ 3glQ== X-Forwarded-Encrypted: i=1; AJvYcCV4ubFAwzpAAar3gYL9CntQRIpCixyd2aslPk7eScPw8HGLtfKZf/A7fX18TXn3tZs/ckZfCkEV00oO+NCz@postgresql.org X-Gm-Message-State: AOJu0YzYgyekAMdlnxV+9/qldakm9zU2ruPr5BInRMoOGL5E7U/1sTOz nyLfT5yXdTMwnNOYmnFWEoaMQkXt913igyoA3kBxBJ+OjnhXUdlJ2n9eRPJgGaIeGtZWem5N5kY L5Y72S3d67dlPmH7p7Cxp8YIxZ3M9n4Q= X-Gm-Gg: ASbGncvX6xTZ6NiFisSKvNKvsI29acdt0B0u8A6PcOlpqwwU0jiBSnTOi+0fYFHHiug YNVHQEMlopyl29ZLwWdKsEmp7H6IScS3MMG2kcEChsFwzUb/lz0r3QbWTyE4mQeuvZT8q4KT8ms Zli0Hq8tQIGvBB8qOd3NYxqTANW+BUaIx2S6IKYeK/CIhY7f9nuOlfUK9GGnUVoSpOv9UqAP07U ro= X-Google-Smtp-Source: AGHT+IFIi5YhIfllQV8pa7xeXGo+B7kl0ERyyHOhy5mvmECVdO0d/LhmuB+EatI+0wjSGsJF0z/qFylzUMx9xGFUQlw= X-Received: by 2002:a05:6122:892:b0:530:5308:42ec with SMTP id 71dfb90a1353d-532ef4ba0e4mr1079178e0c.8.1750837286495; Wed, 25 Jun 2025 00:41:26 -0700 (PDT) MIME-Version: 1.0 References: <21fa36b4-6d56-4556-b524-9e3955b922c8@eisentraut.org> In-Reply-To: From: jian he Date: Wed, 25 Jun 2025 15:40:50 +0800 X-Gm-Features: Ac12FXxRX1FC_NhEkWkKNKmL3XWCz4yfg4jKLEO6Zo0paOoFlC0Pbas31e3-OdE Message-ID: Subject: Re: SQL:2023 JSON simplified accessor support To: Alexandra Wang Cc: Nikita Malakhov , Vik Fearing , Mark Dilger , Matheus Alcantara , Peter Eisentraut , Andrew Dunstan , Nikita Glukhov , PostgreSQL Hackers , "David E. Wheeler" Content-Type: multipart/mixed; boundary="00000000000085b0b80638609218" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000085b0b80638609218 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jun 25, 2025 at 1:56=E2=80=AFPM jian he wrote: > > hi. CREATE TABLE test_jsonb_dot_notation AS SELECT '{"a": [1, 2, {"b": "c"}, {"b": "d", "e": "f", "x": {"y": "yyy", "z": "zzz"}}], "b": [3, 4, {"b": "g", "x": {"y": "YYY", "z": "ZZZ"}}]}'::jsonb jb; CREATE VIEW v1 AS SELECT (jb).a[3].x.y FROM test_jsonb_dot_notation; CREATE VIEW v2 AS SELECT (jb).a[3:].x.y[:-1] FROM test_jsonb_dot_notation; CREATE VIEW v3 AS SELECT (jb).a[:3].x.y[-1:] FROM test_jsonb_dot_notation; \sv v2 \sv v3 will trigger segment fault. also do we need ban subscript slicing, when upper bound is less than lower bound, for example: SELECT (jb).a[3:].x.y[0:'-1'::integer] AS y FROM test_jsonb_dot_notation; please check the attached minor refactoring, which addresses the above issu= e based on patches v11-0001 through v11-0006. --00000000000085b0b80638609218 Content-Type: application/octet-stream; name="v11-0001-misc-refactoring-SubscriptingRef-deparsing.no-cfbot" Content-Disposition: attachment; filename="v11-0001-misc-refactoring-SubscriptingRef-deparsing.no-cfbot" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mcbna9b70 RnJvbSBjMmFkMjZlZmRlZGI0N2YyNDU1YTI5NzkzMmRjYTM2MzgwZTM3NDBkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFdlZCwgMjUgSnVuIDIwMjUgMTU6MzE6MjYgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx MSAxLzFdIG1pc2MgcmVmYWN0b3JpbmcgU3Vic2NyaXB0aW5nUmVmIGRlcGFyc2luZwoKLS0tCiBz cmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgICB8ICA2ICsrKysrLQogc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9qc29uYi5vdXQgfCAyMCArKysrKysrKysrKysrKysrKystLQogc3Jj L3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsICAgICAgfCAgOCArKysrKysrKwogMyBmaWxlcyBj aGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9y dWxldXRpbHMuYwppbmRleCBjMThlMDhkZWUyOS4uZmRkOGIyMjQ5MDYgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKQEAgLTkzMzQsNiArOTMzNCwxMCBAQCBnZXRfcnVsZV9leHByKE5vZGUg Km5vZGUsIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAkJCQkgKi8KIAkJCQluZWVkX3BhcmVu cyA9ICFJc0Eoc2JzcmVmLT5yZWZleHByLCBWYXIpICYmCiAJCQkJCSFJc0Eoc2JzcmVmLT5yZWZl eHByLCBGaWVsZFNlbGVjdCk7CisKKwkJCQlpZiAoc2JzcmVmLT5yZWZqc29uYnBhdGggIT0gTlVM TCkKKwkJCQkJbmVlZF9wYXJlbnMgPSB0cnVlOworCiAJCQkJaWYgKG5lZWRfcGFyZW5zKQogCQkJ CQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CiAJCQkJZ2V0X3J1bGVfZXhwcigoTm9k ZSAqKSBzYnNyZWYtPnJlZmV4cHIsIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CkBAIC0xMzAwOCw3 ICsxMzAxMiw3IEBAIHByaW50U3Vic2NyaXB0cyhTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiwgZGVw YXJzZV9jb250ZXh0ICpjb250ZXh0KQogCXsKIAkJTm9kZQkgICAqdXAgPSAoTm9kZSAqKSBsZmly c3QodXBsaXN0X2l0ZW0pOwogCi0JCWlmIChJc0EodXAsIFN0cmluZykpCisJCWlmICh1cCAhPSBO VUxMICYmIElzQSh1cCwgU3RyaW5nKSkKIAkJewogCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVm LCAnLicpOwogCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3RlX2lkZW50aWZpZXIo c3RyVmFsKHVwKSkpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9qc29u Yi5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2pzb25iLm91dAppbmRleCAxMTQyMDBl MGU0My4uNWQ1MzZlYTVjOTUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQv anNvbmIub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvanNvbmIub3V0CkBAIC02 MDM4LDcgKzYwMzgsNyBAQCBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAodC5q YikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CiAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAgU2VxIFNjYW4gb24gcHVibGljLnRlc3RfanNvbmJfZG90X25v dGF0aW9uIHQKLSAgIE91dHB1dDogamIuYQorICAgT3V0cHV0OiAoamIpLmEKICgyIHJvd3MpCiAK IFNFTEVDVCAodC5qYikuYSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uIHQ7CkBAIC02MDUx LDcgKzYwNTEsNyBAQCBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpIFNFTEVDVCAoamIpLmFb MV0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsKICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIFNlcSBTY2FuIG9uIHB1YmxpYy50ZXN0X2pzb25iX2RvdF9ub3RhdGlvbgot ICAgT3V0cHV0OiBqYi5hWzFdCisgICBPdXRwdXQ6IChqYikuYVsxXQogKDIgcm93cykKIAogU0VM RUNUIChqYikuYVsxXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwpAQCAtNjA2MCw2ICs2 MDYwLDIyIEBAIFNFTEVDVCAoamIpLmFbMV0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK ICAyCiAoMSByb3cpCiAKK0NSRUFURSBWSUVXIHYxIEFTIFNFTEVDVCAoamIpLmFbM10ueC55IEZS T00gdGVzdF9qc29uYl9kb3Rfbm90YXRpb247CitDUkVBVEUgVklFVyB2MiBBUyBTRUxFQ1QgKGpi KS5hWzM6XS54LnlbOi0xXSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworQ1JFQVRFIFZJ RVcgdjMgQVMgU0VMRUNUIChqYikuYVs6M10ueC55Wy0xOl0gRlJPTSB0ZXN0X2pzb25iX2RvdF9u b3RhdGlvbjsKK1xzdiB2MQorQ1JFQVRFIE9SIFJFUExBQ0UgVklFVyBwdWJsaWMudjEgQVMKKyBT RUxFQ1QgKGpiKS5hWzNdLngueSBBUyB5CisgICBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9u Citcc3YgdjIKK0NSRUFURSBPUiBSRVBMQUNFIFZJRVcgcHVibGljLnYyIEFTCisgU0VMRUNUIChq YikuYVszOl0ueC55WzA6Jy0xJzo6aW50ZWdlcl0gQVMgeQorICAgRlJPTSB0ZXN0X2pzb25iX2Rv dF9ub3RhdGlvbgorXHN2IHYzCitDUkVBVEUgT1IgUkVQTEFDRSBWSUVXIHB1YmxpYy52MyBBUwor IFNFTEVDVCAoamIpLmFbMDozXS54LnlbJy0xJzo6aW50ZWdlcjpdIEFTIHkKKyAgIEZST00gdGVz dF9qc29uYl9kb3Rfbm90YXRpb24KK0RST1AgVklFVyB2MSwgdjIsIHYzOwogLS0ganNvbmIgYXJy YXkgYWNjZXNzIGluIHBscGdzcWwKIERPICQkCiBERUNMQVJFCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9qc29uYi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9qc29uYi5zcWwK aW5kZXggNGJkMzk5MGZiNTUuLjZhYTcxYzdjM2E0IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9qc29uYi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvanNvbmIuc3FsCkBA IC0xNjM0LDYgKzE2MzQsMTQgQEAgU0VMRUNUICh0LmpiKS5hIEZST00gdGVzdF9qc29uYl9kb3Rf bm90YXRpb24gdDsKIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIChqYikuYVsx XSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOwogU0VMRUNUIChqYikuYVsxXSBGUk9NIHRl c3RfanNvbmJfZG90X25vdGF0aW9uOwogCitDUkVBVEUgVklFVyB2MSBBUyBTRUxFQ1QgKGpiKS5h WzNdLngueSBGUk9NIHRlc3RfanNvbmJfZG90X25vdGF0aW9uOworQ1JFQVRFIFZJRVcgdjIgQVMg U0VMRUNUIChqYikuYVszOl0ueC55WzotMV0gRlJPTSB0ZXN0X2pzb25iX2RvdF9ub3RhdGlvbjsK K0NSRUFURSBWSUVXIHYzIEFTIFNFTEVDVCAoamIpLmFbOjNdLngueVstMTpdIEZST00gdGVzdF9q c29uYl9kb3Rfbm90YXRpb247Citcc3YgdjEKK1xzdiB2MgorXHN2IHYzCitEUk9QIFZJRVcgdjEs IHYyLCB2MzsKKwogLS0ganNvbmIgYXJyYXkgYWNjZXNzIGluIHBscGdzcWwKIERPICQkCiBERUNM QVJFCi0tIAoyLjM0LjEKCg== --00000000000085b0b80638609218--