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.

>

Reply via email to