Hi Erik, On Mon, Sep 18, 2023 at 19:09 Erik Rijkers <e...@xs4all.nl> wrote:
> Op 9/18/23 om 05:15 schreef Amit Langote: > > On Sun, Sep 17, 2023 at 3:34 PM Erik Rijkers <e...@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. No, thanks for your testing. I’ll look into these. >