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 1sln46-001ChX-Ge for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Sep 2024 10:16:43 +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 1sln44-007dQc-Dy for pgsql-hackers@arkaria.postgresql.org; Wed, 04 Sep 2024 10:16:40 +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 1sln43-007dQT-3T for pgsql-hackers@lists.postgresql.org; Wed, 04 Sep 2024 10:16:40 +0000 Received: from fout2-smtp.messagingengine.com ([103.168.172.145]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sln40-0006PF-4G for pgsql-hackers@postgresql.org; Wed, 04 Sep 2024 10:16:38 +0000 Received: from phl-compute-07.internal (phl-compute-07.phl.internal [10.202.2.47]) by mailfout.phl.internal (Postfix) with ESMTP id E38F31380214 for ; Wed, 4 Sep 2024 06:16:33 -0400 (EDT) Received: from phl-mailfrontend-02 ([10.202.2.163]) by phl-compute-07.internal (MEProxy); Wed, 04 Sep 2024 06:16:33 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=eisentraut.org; h=cc:content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm3; t=1725444993; x=1725531393; bh=G+2xbeDqkZ 6lJJ0BcueuT8zY97t9SXzlaFWfiTiiIEM=; b=dRE2qA9oL5l6B0Mj+3gxyCpVu2 tw8FVkVzcF0+BkYnAet9dcL/uiSwrTPxraGzwnkiH8vUELYP0neRFrd5Ik9iplmJ W3vsAaqNmWkac0Cj19c+y4OS8QSvFWM0zB2Su/vc81fX8it6ZnZ8hv3ataY5OmsU F6ZlbP8JaqovuD22JFO9W4rucGk+7zuUSBSLV/p1uKrm5raKqKolS1IL/WbxEQCs q4VPNZ/5rC6h/oow7IvMf1t3MSb0wkDDGH45edqe4/JJFlfIARkGqUbe7kGAezkA PB/7JChmT7ax7VXxBTI/St9pw6zTE+xfpLL53e9RlWxCpC/e9O8jzTb7+V8g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:content-type:date:date :feedback-id:feedback-id:from:from:in-reply-to:in-reply-to :message-id:mime-version:references:reply-to:subject:subject:to :to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s= fm1; t=1725444993; x=1725531393; bh=G+2xbeDqkZ6lJJ0BcueuT8zY97t9 SXzlaFWfiTiiIEM=; b=C9vgg+XMWo8CRwpB/cDKm6zLgQ9m+zhbtNnZDR/a5Cwu Y29p1Zgrcz2uqStoyqEPizEfMWCd9inYUUFHIQLnB5MX19GxTeZAsrnoA4Kwi0BM KYg8aWOcZgUM4KtKW2tLmSsWG8d3UZ1jeOp7+7b7rK+qEdabP98iWyaiCMltf/Zr ScdH+842o8jRmzZZsbViAB8MpXB0hUHHysPXql//Fd6oL9l3WLdtej4k4uplqR/R 8EIKK6RJ6uRehFodfF/jBN9hSo+Do6wHAQeuIe06New00kpMY8Nmc6C668LUp9fc BSBUl06anOCtfjklWo/vSihgSh8rslT7zSZxYrjCYg== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeeftddrudehjedgvdehucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggvpdfu rfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucenucfjughrpegtkfffgg gfuffhvfhfjgesmhdtreertddvjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgr uhhtuceophgvthgvrhesvghishgvnhhtrhgruhhtrdhorhhgqeenucggtffrrghtthgvrh hnpeevkeefudegheejiefftdfhuddtleefveevffdtffefudevgedtfefhjedvjefggfen ucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvghtvg hrsegvihhsvghnthhrrghuthdrohhrghdpnhgspghrtghpthhtohepuddpmhhouggvpehs mhhtphhouhhtpdhrtghpthhtohepphhgshhqlhdqhhgrtghkvghrshesphhoshhtghhrvg hsqhhlrdhorhhg X-ME-Proxy: Feedback-ID: ie0a040ee:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Wed, 4 Sep 2024 06:16:33 -0400 (EDT) Content-Type: multipart/mixed; boundary="------------fuCc1w0q4jXrRAzHBOccfMK4" Message-ID: <0919c21e-af83-458b-8e40-1228429eaaa4@eisentraut.org> Date: Wed, 4 Sep 2024 12:16:31 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: json_query conditional wrapper bug From: Peter Eisentraut To: pgsql-hackers References: <8022e067-818b-45d3-8fab-6e0d94d03626@eisentraut.org> Content-Language: en-US In-Reply-To: <8022e067-818b-45d3-8fab-6e0d94d03626@eisentraut.org> 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. --------------fuCc1w0q4jXrRAzHBOccfMK4 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 28.08.24 11:21, Peter Eisentraut wrote: > These are ok: > > select json_query('{"a": 1, "b": 42}'::jsonb, 'lax $.b' without wrapper); >  json_query > ------------ >  42 > > select json_query('{"a": 1, "b": 42}'::jsonb, 'lax $.b' with > unconditional wrapper); >  json_query > ------------ >  [42] > > But this appears to be wrong: > > select json_query('{"a": 1, "b": 42}'::jsonb, 'lax $.b' with conditional > wrapper); >  json_query > ------------ >  [42] > > This should return an unwrapped 42. If I make the code change illustrated in the attached patch, then I get the correct result here. And various regression test results change, which, to me, all look more correct after this patch. I don't know what the code I removed was supposed to accomplish, but it seems to be wrong somehow. In the current implementation, the WITH CONDITIONAL WRAPPER clause doesn't appear to work correctly in any case I could identify. --------------fuCc1w0q4jXrRAzHBOccfMK4 Content-Type: text/plain; charset=UTF-8; name="0001-WIP-Fix-JSON_QUERY-WITH-CONDITIONAL-WRAPPER.patch" Content-Disposition: attachment; filename="0001-WIP-Fix-JSON_QUERY-WITH-CONDITIONAL-WRAPPER.patch" Content-Transfer-Encoding: base64 RnJvbSBlYThhMzY1ODRhYmY2Y2VhMGEwNWFjNDNhZDhkMTAxMDEyYjE0MzEzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogV2VkLCA0IFNlcCAyMDI0IDEyOjA5OjM1ICswMjAwClN1YmplY3Q6 IFtQQVRDSF0gV0lQOiBGaXggSlNPTl9RVUVSWSBXSVRIIENPTkRJVElPTkFMIFdSQVBQRVIK Ci0tLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRoX2V4ZWMuYyAgICAgICB8ICA1 ICstLS0tCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9zcWxqc29uX3F1ZXJ5ZnVuY3Muc3FsIHwg MTAgKysrKystLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDkgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L2pzb25wYXRo X2V4ZWMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29ucGF0aF9leGVjLmMKaW5kZXgg ZTNlZTAwOTNkNGQuLmE1NWEzNDY4NWYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9hZHQvanNvbnBhdGhfZXhlYy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9qc29u cGF0aF9leGVjLmMKQEAgLTM5NTcsMTAgKzM5NTcsNyBAQCBKc29uUGF0aFF1ZXJ5KERhdHVt IGpiLCBKc29uUGF0aCAqanAsIEpzb25XcmFwcGVyIHdyYXBwZXIsIGJvb2wgKmVtcHR5LAog CWVsc2UgaWYgKHdyYXBwZXIgPT0gSlNXX1VOQ09ORElUSU9OQUwpCiAJCXdyYXAgPSB0cnVl OwogCWVsc2UgaWYgKHdyYXBwZXIgPT0gSlNXX0NPTkRJVElPTkFMKQotCQl3cmFwID0gY291 bnQgPiAxIHx8Ci0JCQlJc0FKc29uYlNjYWxhcihzaW5nbGV0b24pIHx8Ci0JCQkoc2luZ2xl dG9uLT50eXBlID09IGpidkJpbmFyeSAmJgotCQkJIEpzb25Db250YWluZXJJc1NjYWxhcihz aW5nbGV0b24tPnZhbC5iaW5hcnkuZGF0YSkpOworCQl3cmFwID0gY291bnQgPiAxOwogCWVs c2UKIAl7CiAJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQganNvbiB3cmFwcGVyICVkIiwg KGludCkgd3JhcHBlcik7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9zcWxq c29uX3F1ZXJ5ZnVuY3Muc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9xdWVy eWZ1bmNzLnNxbAppbmRleCAyMWZmNzc4N2EyOC4uYTczNDI0MTZhOWMgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3NxbGpzb25fcXVlcnlmdW5jcy5zcWwKKysrIGIvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvc3FsanNvbl9xdWVyeWZ1bmNzLnNxbApAQCAtMTQ2LDExICsx NDYsMTEgQEAgQ1JFQVRFIERPTUFJTiByZ2IgQVMgcmFpbmJvdyBDSEVDSyAoVkFMVUUgSU4g KCdyZWQnLCAnZ3JlZW4nLCAnYmx1ZScpKTsKIFNFTEVDVCBKU09OX1ZBTFVFKE5VTEw6Ompz b25iLCAnJCcpOwogCiBTRUxFQ1QKLQlKU09OX1FVRVJZKGpzLCAnJCcpLAotCUpTT05fUVVF UlkoanMsICckJyBXSVRIT1VUIFdSQVBQRVIpLAotCUpTT05fUVVFUlkoanMsICckJyBXSVRI IENPTkRJVElPTkFMIFdSQVBQRVIpLAotCUpTT05fUVVFUlkoanMsICckJyBXSVRIIFVOQ09O RElUSU9OQUwgQVJSQVkgV1JBUFBFUiksCi0JSlNPTl9RVUVSWShqcywgJyQnIFdJVEggQVJS QVkgV1JBUFBFUikKKwlKU09OX1FVRVJZKGpzLCAnJCcpIEFTICJ1bnNwZWMiLAorCUpTT05f UVVFUlkoanMsICckJyBXSVRIT1VUIFdSQVBQRVIpIEFTICJ3aXRob3V0IiwKKwlKU09OX1FV RVJZKGpzLCAnJCcgV0lUSCBDT05ESVRJT05BTCBXUkFQUEVSKSBBUyAid2l0aCBjb25kIiwK KwlKU09OX1FVRVJZKGpzLCAnJCcgV0lUSCBVTkNPTkRJVElPTkFMIEFSUkFZIFdSQVBQRVIp IEFTICJ3aXRoIHVuY29uZCIsCisJSlNPTl9RVUVSWShqcywgJyQnIFdJVEggQVJSQVkgV1JB UFBFUikgQVMgIndpdGgiCiBGUk9NCiAJKFZBTFVFUwogCQkoanNvbmIgJ251bGwnKSwKLS0g CjIuNDYuMAoK --------------fuCc1w0q4jXrRAzHBOccfMK4--