From: | Andrew Dunstan <andrew(at)dunslane(dot)net> |
---|---|
To: | Peter Eisentraut <peter(at)eisentraut(dot)org>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: json_query conditional wrapper bug |
Date: | 2024-09-04 20:10:37 |
Message-ID: | f22384c9-feda-4e3a-ae3d-1ea5f403d6d9@dunslane.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2024-09-04 We 6:16 AM, Peter Eisentraut wrote:
> 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.
Agree the code definitely looks wrong. If anything the test should
probably be reversed:
wrap = count > 1 || !(
IsAJsonbScalar(singleton) ||
(singleton->type == jbvBinary &&
JsonContainerIsScalar(singleton->val.binary.data)));
i.e. in the count = 1 case wrap unless it's a scalar or a binary
wrapping a scalar. The code could do with a comment about the logic.
I know we're very close to release but we should fix this as it's a new
feature.
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2024-09-04 20:26:45 | Re: psql: fix variable existence tab completion |
Previous Message | Noah Misch | 2024-09-04 19:57:20 | Re: race condition in pg_class |