Re: remaining sql/json patches

From: Amit Langote <amitlangote09(at)gmail(dot)com>
To: Erik Rijkers <er(at)xs4all(dot)nl>
Cc: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>, Andrew Dunstan <andrew(at)dunslane(dot)net>, PostgreSQL-development <pgsql-hackers(at)postgresql(dot)org>, jian he <jian(dot)universality(at)gmail(dot)com>
Subject: Re: remaining sql/json patches
Date: 2023-09-18 10:20:00
Message-ID: CA+HiwqFCQz-pCj4Bg=nZjHo+ktVqTvE7SJPUkV0C2WgXm-rOZQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi Erik,

On Mon, Sep 18, 2023 at 19:09 Erik Rijkers <er(at)xs4all(dot)nl> wrote:

> 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.

No, thanks for your testing. I’ll look into these.

>

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message shveta malik 2023-09-18 10:22:55 Re: Synchronizing slots from primary to standby
Previous Message Erik Rijkers 2023-09-18 10:12:25 Re: remaining sql/json patches