Re: remaining sql/json patches - Mailing list pgsql-hackers
From | Erik Rijkers |
---|---|
Subject | Re: remaining sql/json patches |
Date | |
Msg-id | b4157fa3-5b26-67dc-1b6f-2e7801d3960b@xs4all.nl Whole thread Raw |
In response to | Re: remaining sql/json patches (Amit Langote <amitlangote09@gmail.com>) |
Responses |
Re: remaining sql/json patches
|
List | pgsql-hackers |
Op 9/18/23 om 05:15 schreef Amit Langote: > On Sun, Sep 17, 2023 at 3:34 PM Erik Rijkers <er@xs4all.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
pgsql-hackers by date: