From: | Erik Rijkers <er(at)xs4all(dot)nl> |
---|---|
To: | Amit Langote <amitlangote09(at)gmail(dot)com> |
Cc: | Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, jian he <jian(dot)universality(at)gmail(dot)com>, Andrew Dunstan <andrew(at)dunslane(dot)net>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: remaining sql/json patches |
Date: | 2023-09-18 10:12:25 |
Message-ID: | b4157fa3-5b26-67dc-1b6f-2e7801d3960b@xs4all.nl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Op 9/18/23 om 05:15 schreef Amit Langote:
> On Sun, Sep 17, 2023 at 3:34 PM Erik Rijkers <er(at)xs4all(dot)nl> wrote:
>> Op 9/14/23 om 10:14 schreef Amit Langote:
>>>
>>>
>>
>> Hi Amit,
>>
>> Just now I built a v14-patched server and I found this crash:
>>
>> select json_query(jsonb '
>> {
>> "arr": [
>> {"arr": [2,3]}
>> , {"arr": [4,5]}
>> ]
>> }'
>> , '$.arr[*].arr ? (@ <= 3)' returning anyarray WITH WRAPPER) --crash
>> ;
>> server closed the connection unexpectedly
>> This probably means the server terminated abnormally
>> before or while processing the request.
>> connection to server was lost
>
> Thanks for the report.
>
> Attached updated version fixes the crash, but you get an error as is
> to be expected:
>
> select json_query(jsonb '
> {
> "arr": [
> {"arr": [2,3]}
> , {"arr": [4,5]}
> ]
> }'
> , '$.arr[*].arr ? (@ <= 3)' returning anyarray WITH WRAPPER);
> ERROR: cannot accept a value of type anyarray
>
> unlike when using int[]:
>
> select json_query(jsonb '
> {
> "arr": [
> {"arr": [2,3]}
> , {"arr": [4,5]}
> ]
> }'
> , '$.arr[*].arr ? (@ <= 3)' returning int[] WITH WRAPPER);
> json_query
> ------------
> {2,3}
> (1 row)
>
Thanks, Amit. Alas, there are more: for 'anyarray' I thought I'd
substitute 'interval', 'int4range', 'int8range', and sure enough they
all give similar crashes. Patched with v15:
psql -qX -e << SQL
select json_query(jsonb'{"a":[{"a":[2,3]},{"a":[4,5]}]}',
'$.a[*].a?(@<=3)'returning int[] with wrapper --ok
);
select json_query(jsonb'{"a": [{"a": [2,3]}, {"a": [4,5]}]}',
'$.a[*].a?(@<=3)'returning interval with wrapper --crash
--'$.a[*].a?(@<=3)'returning int4range with wrapper --crash
--'$.a[*].a?(@<=3)'returning int8range with wrapper --crash
--'$.a[*].a?(@<=3)'returning numeric[] with wrapper --{2,3} =ok
--'$.a[*].a?(@<=3)'returning anyarray with wrapper --fixed
--'$.a[*].a?(@<=3)'returning anyarray --null =ok
--'$.a[*].a?(@<=3)'returning int --null =ok
--'$.a[*].a?(@<=3)'returning int with wrapper --error =ok
--'$.a[*].a?(@<=3)'returning int[] with wrapper -- {2,3} =ok
);
SQL
=> server closed the connection unexpectedly, etc
Because those first three tries gave a crash (*all three*), I'm a bit
worried there may be many more.
I am sorry to be bothering you with these somewhat idiotic SQL
statements but I suppose somehow it needs to be made more solid.
Thanks!
Erik
From | Date | Subject | |
---|---|---|---|
Next Message | Amit Langote | 2023-09-18 10:20:00 | Re: remaining sql/json patches |
Previous Message | Peter Eisentraut | 2023-09-18 09:20:57 | Commitfest 2023-09 half-time |