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 1w8NcC-000TX2-0T for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 19:22:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w8NcA-007ozB-36 for pgsql-hackers@arkaria.postgresql.org; Thu, 02 Apr 2026 19:22:03 +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 1w8NcA-007oz1-1e for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 19:22:03 +0000 Received: from mail-qk1-x744.google.com ([2607:f8b0:4864:20::744]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w8Nc7-00000000FZQ-2YM4 for pgsql-hackers@lists.postgresql.org; Thu, 02 Apr 2026 19:22:02 +0000 Received: by mail-qk1-x744.google.com with SMTP id af79cd13be357-8c9f6b78ca4so168921985a.0 for ; Thu, 02 Apr 2026 12:21:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dunslane-net.20230601.gappssmtp.com; s=20230601; t=1775157718; x=1775762518; darn=lists.postgresql.org; h=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=BT7zstGNtjYMM2I10iwTCSvqOI0v/bc+tY7hT0PA1aI=; b=IPmk2HtJ+BKc8EIjqfWcWqxUgrpqsJeivp2M/S2ZiDfuXvbwGEkQ6SyF7qcx5ewkRM m5oBDM8LbueAIEZTZL/dzbEF7I84tcscWLSSzgiBYLt4zutJDWvzQkeL+sqL41hQwqfh tGm0Hc2FytUOQymVP+N6ecOo7oQowJ9FejCiuDbVYZ5IRZHJ6bn4+7yD7LRR/jdhLDQX KIIQtUl/htzNzPROjC17SUQOlAingiS2iEJUa2RGkrTAkwRMnaPbn+Hcn+mbKQTfro6Q 7Tj67yr054LQLym+/IkXgP033lhCyKMYq926+aHJMj7S99lJYauBX+AILolfNLk0a8Ja vwyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775157718; x=1775762518; h=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=BT7zstGNtjYMM2I10iwTCSvqOI0v/bc+tY7hT0PA1aI=; b=dRM37koqotx4fX2luI/pCeXw3INcLynmijUuL4cgu5wYnku6MMOKEXG9Ygo6FXa3tT P+dN3hcy9Dz8BvQ9ziZLAdH3SwxbuiC2JuIN6LA7Ch9zB59l+9dmIkkCUQqqv0LpLeH0 P6OX3AdBSLmBmTGG2PGJsZG8LHXQVSvPH29YueamJ7CEUq5wbX/PkJRKwvyrLMnQoJzg BRNccEJXhFKtuXIGwStwYM22gwbG/AEDnH3D0kya1fpKoxfV1oLzC0yL/tZMfyYApJ4W FMLLc7KB6C/XoJjjNz9tDOiobyJ/FUFmCPPGq+cyKfvnTBhXWw9sVZsq9lY7HZ55+9K/ MemQ== X-Forwarded-Encrypted: i=1; AJvYcCVisfHjrrHaLf5bQgpQFUy6/HGQKAPeeB/IMm5JXtQma9krt8MNjliD0Ao7JzJ5PQdOBadqM7KevQ/pzJaL@lists.postgresql.org X-Gm-Message-State: AOJu0YwA7M6KnEERxZXYMalWMHdoxDbJBTOAmGSPpvz0cHQxs2ExiSMu VXsOtTwWNxKqzwAHl+DVj1/QCjdC2xiEzuTJs4nNeLvGP3M6rzR7wU5/Fvq5JVIVKs4= X-Gm-Gg: ATEYQzyqf7d9u1zzbgUkSRhZZS/U/BUsjE2yVBLM5lISv1sQH4E+wqzsPeqA7RLagmR BokWm+u6TXLsKyKFyIr2NXinJCIff0m3a7QcPxKntOqicOEo/m3DmF5yBsMihDSnxN8hEJEUIys +W8I77CSMHbCG8EHx9OFufdz/leEk5ThnRpztG4NbOpl7B1gCveGGkA7OaD1BzDMe38l6FKOp5N rlkgnDuXjBWeHZ61NtfcnUxRiT8sf4TjbX1M/xh/YrZsm+uiDKKccHigW0COUaHYhUwHLuXUl6q DW2JUP62pJbb5+E3ggKe1SwKlEtCCQ2S0wuz/k6J+aVgGIk/rl3anMG99VeZqZ6UM7gH4yNnvJo 5RPmlLSno2mLsZ9J7w/MWlx8S2SUa2IkOGB6Iy/ak7Wcokkhacbzu0JxyDmHCtjlrl65DH5HqEC z5pUujUdvPR8hHLu+rUOTSegzP6lDMlA== X-Received: by 2002:a05:620a:448f:b0:8cd:8fc7:831f with SMTP id af79cd13be357-8d41e439993mr76157285a.56.1775157717476; Thu, 02 Apr 2026 12:21:57 -0700 (PDT) Received: from ?IPV6:2605:a601:a6b0:500::1cb? ([2605:a601:a6b0:500::1cb]) by smtp.googlemail.com with ESMTPSA id af79cd13be357-8d40495cd32sm49450585a.22.2026.04.02.12.21.56 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 02 Apr 2026 12:21:56 -0700 (PDT) Content-Type: multipart/alternative; boundary="------------xQ3EypWBR83lZYAIGHJHJjIA" Message-ID: <88a392fd-d732-45a7-bcfc-291258849fbe@dunslane.net> Date: Thu, 2 Apr 2026 15:21:54 -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> <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> <34758556-D3D0-42C3-9A1B-CBF64336ADBC@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: <34758556-D3D0-42C3-9A1B-CBF64336ADBC@justatheory.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------xQ3EypWBR83lZYAIGHJHJjIA Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2026-03-28 Sa 11:58 AM, David E. Wheeler wrote: > On Mar 28, 2026, at 11:02, Andrew Dunstan wrote: > >> 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. > Ooh, right. It has been so long since I looked at this stuff that I forgot. Thanks for the reminder. > >> There are tests added for it. > And for this! > Committed. cheers andrew -- Andrew Dunstan EDB:https://www.enterprisedb.com --------------xQ3EypWBR83lZYAIGHJHJjIA Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 7bit


On 2026-03-28 Sa 11:58 AM, David E. Wheeler wrote:
On Mar 28, 2026, at 11:02, Andrew Dunstan <andrew@dunslane.net> wrote:

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.
Ooh, right. It has been so long since I looked at this stuff that I forgot. Thanks for the reminder.

There are tests added for it.
And for this!



Committed.


cheers


andrew

--
Andrew Dunstan
EDB: https://www.enterprisedb.com
--------------xQ3EypWBR83lZYAIGHJHJjIA--