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 1w6VB6-004MWq-0U for pgsql-hackers@arkaria.postgresql.org; Sat, 28 Mar 2026 15:02:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w6VB4-00ES39-2L for pgsql-hackers@arkaria.postgresql.org; Sat, 28 Mar 2026 15:02:19 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w6VB4-00ES2z-1N for pgsql-hackers@lists.postgresql.org; Sat, 28 Mar 2026 15:02:18 +0000 Received: from mail-qv1-xf43.google.com ([2607:f8b0:4864:20::f43]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w6VB2-00000001VVM-33Hl for pgsql-hackers@lists.postgresql.org; Sat, 28 Mar 2026 15:02:17 +0000 Received: by mail-qv1-xf43.google.com with SMTP id 6a1803df08f44-899eabc5292so32929286d6.0 for ; Sat, 28 Mar 2026 08:02:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1774710135; x=1775314935; darn=lists.postgresql.org; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :from:references:cc:to:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=kdu5tULI+NTNG/Lxp5xJbxsn8RQHZwOLAxmEHOLG9es=; b=ZQRwgG1te6f1ULt6HH8V8P1eCUZjbKjnlEo9sul776hDLC/0WbdGwg8DevrUgXvXxm wc6m8wBSuP9gqsTswmY9SfEppf82OK6EOYzM9BuzBnRRxTRyA4GKQtJrCmmzzApkls4R QaLzFaFV9ZmjsSS5QWdnIILj/cFrZrc2rurEBP1DG6a7FPzifxQrPUvx5rYZbn2cBO0m D96MMqE+3uiAMry5JV8KJdNU3LPSHfzT8UUS8QzwcMhWJFficFyTpo6gaSUzRB9hORWl GOfLAKD6LLTbcbR57eX/dO9FfGdi6wIjXj4ZWmIClGWCfsYe7ewg446uW3tSWg0qu+lA 8LFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774710135; x=1775314935; h=content-transfer-encoding:in-reply-to:autocrypt:content-language :from:references:cc:to:subject:user-agent:mime-version:date :message-id:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=kdu5tULI+NTNG/Lxp5xJbxsn8RQHZwOLAxmEHOLG9es=; b=HbXvKEIyXD2O1rBrNCqkbfduWEYaQMV8diMUbtzg63C039qsTq3HVmZSS0dsK/TdBp ehkJpAUDudqZgl7OiJELu3wMG8aQYGKPPPXSiCCXklkWn8zBlu7unmJpGobdnZnAj9zs FGizjLdGkmlor/wZs3Sn4gAMwAa6vDbLhWVV6RSs5eoKNVxcZojalVcsntd7TbFCrqYv ql6G6YOilUV2YZ16oWlWWy1/D7gfAYU1v8ESKfbqr8aofcJRWBFVX/kCUeyWDsbpbRha 1sy7bShNWaEXCL0TNsMIqoV1TYPnyZQJ0rXZGM8wiBUt5lZlxOl8J5HNzksyC9NRIU6w xhKA== X-Forwarded-Encrypted: i=1; AJvYcCUUTJKpPH6oUzN8u68GN2JDYHNlKS5fLoKkuchuezdfZ5uAQ/5KLaEX4h+V+XR5n5J927xKZu7LIsNeCFk0@lists.postgresql.org X-Gm-Message-State: AOJu0Yx1VsOvLL+Vv7J4S/B72dkBGoum654bY5gl+biD9YeVFr6tZ3Xd IxSBRIDnCt6gTtG2niZa7O1lSA2wb1YivkYT3eNmGQJ5yzJhanUC2bsCgIWuu0lRF4A= X-Gm-Gg: ATEYQzxf4Vxts+1fHSs02fzBKl+hCTAkARVdJXMDqIttELkq30IyivS6MspMMxRT+3z xBghIQ1lsF6pvKTjy076rWJ85eLeVBL08i3AxKeP0LqvHzb7sHLLLdXTHc73bHmu/wjYmzQfpBF gQZgpry/KHHcXqzY7hvAwnTJButD4pR7Sy5KBkde5U2+R94LnvRSX+j+5Ni7hxTrwlV5MNpVswe n+Qm3949YqCofLw+JFipph/+p7fUAAFVwsfOAYZyMdpzIGbFvn3l+QK62zyAOcjgOj01ElmNqAD FnZdcht6V65fw5AwtslErj983xbaDFCC1+5O5Nb11W6Lijm/binfl9xHNngGVaUOEgg/5JcDAVd PSpoYqPCjRrOmNT+ENan9qMhornineEgaZVIhOd2IXOVrEppQok6g5eCvAKvqAFia4YTeN3czs5 FcA+20u5iRhnnnsY36QGvEsONIOkD9aw== X-Received: by 2002:a05:6214:6114:b0:894:6510:4946 with SMTP id 6a1803df08f44-89ce8d467c1mr77878036d6.10.1774710135210; Sat, 28 Mar 2026 08:02:15 -0700 (PDT) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id 6a1803df08f44-89ec6ec2266sm18866726d6.0.2026.03.28.08.02.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 28 Mar 2026 08:02:14 -0700 (PDT) Message-ID: Date: Sat, 28 Mar 2026 11:02:13 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: PATCH: jsonpath string methods: lower, upper, initcap, l/r/btrim, replace, split_part To: "David E. Wheeler" Cc: Florents Tselai , pgsql-hackers , Chao Li , =?UTF-8?Q?=C3=81lvaro_Herrera?= , Tom Lane , Peter Eisentraut , Robert Haas , Alexander Korotkov , jian he References: <202510210803.3b3vfvygxtjl@alvherre.pgsql> <87530674-E6B6-4C97-A704-78C7E07CF01F@gmail.com> <3DC56A6A-9525-4C05-B45A-9A135A66BC34@justatheory.com> <931F201B-FF38-486E-BDEE-DF9692A01E1D@justatheory.com> <1eb15091-660d-477b-acda-b61d00bc9ffb@dunslane.net> <278cb771-6008-44e5-8eaa-9d4acdb56c79@dunslane.net> <9E9B3C10-7535-4704-A04A-DF5D32C43DBE@justatheory.com> From: Andrew Dunstan Content-Language: en-US Autocrypt: addr=andrew@dunslane.net; keydata= xsBNBE7KWFkBCAClridxur2AIc7eW2AR7izbfp3EnNefie2HbLF0izW5Ik5UjX2HBXBx4syI gY6b0ugohXrr274+baoAlvSbq6cAoQuEVrk5IZFzt20b1Xkx65FwGSEj526yiKLocqkJceSq Xr9xcA5SGY+FZv441chh5SU92v4q6z+6LPpoHOh97ptAVXZYNTtU0LevyvD5lja0TzbvJm6C eFXitJfnm1pLEr0DGJCR/iUOl/N62Kh4855zZC7NHIjQHPOvV5Stz/l5ilDhvGVk+xkXFPys SjZoUr1rXhYLpiyi5sR0X9FHXT0KnGuz1F5ERO7ZTLSSQ6fJwPj6gOk9K+vvoKvoeql5ABEB AAHNJEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PsLAlwQTAQgAQQIbAwIX gAIZAQULCQgHAwUVCgkICwUWAgMBAAIeBRYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNGd BQkdEO8nAAoJEJn6f8tZ/DuBq74H/jkTR4Zi3stbw+xC7v2u3QozssK7MYPL2AsVfh7OealS h182fiWXpfvmmAB7WUHbhk9GC2RAOnHI/2d2jgKaMLAHsGYOT0YopTVIwRY43fCw/mK67yxc wmDcX+zyKfLaivNbf5A7QPLNwda98bEAMSJ8Sn652Uc6cA8t3uKGsVzbRBQOoYzjgvBCfSrE 9ql3PDNg0l4BfAqabd2f70ZUm9VAMEPrgv/v2xI7M2XiL4g5BVmqLCOwxLM8RMCotCuoweUr VO43DeBCIDwLxotMJKvGWDjBzQYlU1NPUAtNcz/gN9ITUe1VUGjyvGj4u1lxBOcQQUw7l1+T 5moZ4iZxXzvOwE0ETspYWQEIANGc4zQULOxhbqO2dyD51YhqCNRmm9oKWaqf+wmW4tpDe/VV cxAnNizd4LWCHfzpb5cHAtGkOPePMfzWVf6nvdF7d3eglbtf59+zG7O7llV0xSSoFiieQBsr GvqDInXYX/4mRRXMtyhM353/tixC9RWLs1oofyYmCPPXXY7h9R7en3B8BoVrRFcdzlIY/NFN hFGW/9dkEiGjgna2Rk6e15kln4ZvFBWUg23p93w/pqXcxY6+k/8TEk+C4R+M6w7o2PLGOjdZ +kPiUcw5H85zf/yZJwQXzisXaNduwWB6Vads9YC9dj6kPR1c4VGRqAaYL++LAEOqrlvm2Tvq QqZRtnEAEQEAAcLAfAQYAQgAJgIbDBYhBOQ+WEYd/Hy/RGkVpZn6f8tZ/DuBBQJoGNI2BQkd EODdAAoJEJn6f8tZ/DuBfw0IAKTsfD40teP/pp+bsLLMSxPXUYrrprTj7WFB5v61p6dkpSr/ qXmMlyahdxQFaPmfVgVirB1Vk/kHiWNnnGjfUV9nB2Zg9LI0Xb9/ts3LsUiRWXzG3tkMY6XL vsVOxW4XFRND9l2q+WW93aZ1DZl+fqWfYgMvsusFRhmGFOKTRfKPta2Pkv+AhA24N4+PrR5p bU4k2MO8PAGiK8eaYKGFG1bHKuAvoDoF7WXJ3FHxuWqLnKEt4dfOLm5pAe3zq1Lt6q8azT9i QWGpSAK5vQUWQHBHpiDjdPeqKZ6HiAXIIKfSmb+jrvXBqoP+D6/K7rUjG2aXiRtTIAXms9sm VRu7cmw= In-Reply-To: <9E9B3C10-7535-4704-A04A-DF5D32C43DBE@justatheory.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On 2026-03-28 Sa 10:30 AM, David E. Wheeler wrote: > On Mar 28, 2026, at 06:04, Andrew Dunstan wrote: > >> I have fixed that. Some key_name entries were missing, which was an issue. I also removed some unused variables and some duplicate tests, and did some general tidying. > Looks good to me! I’m curious what the implication of missing `key_name`s was, since the tests passed and all the functions worked. Can we create additional tests that would fail when the keys were missing? The key_name production is what allows a keyword to also be used as an object key in $.keyname syntax. The trim keywords (ltrim, rtrim, btrim) were added there, so $.ltrim as a key works. But $.lower, $.upper, $.initcap, $.replace, and $.split_part as keys would all break. There are tests added for it. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com