Re: Jsonpath ** vs lax mode

Alexander Korotkov <aekorotkov@gmail.com>

From: Alexander Korotkov <aekorotkov@gmail.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: pgsql-hackers <pgsql-hackers@postgresql.org>, Nikita Glukhov <n.gluhov@postgrespro.ru>, Oleg Bartunov <obartunov@postgrespro.ru>, Teodor Sigaev <teodor@postgrespro.ru>, Tom Lane <tgl@sss.pgh.pa.us>
Date: 2021-01-28T21:44:17Z
Lists: pgsql-hackers

Attachments

On Mon, Jan 25, 2021 at 6:33 PM Alexander Korotkov <aekorotkov@gmail.com> wrote:
> On Thu, Jan 21, 2021 at 4:35 PM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote:
> > On 2021-Jan-21, Alexander Korotkov wrote:
> >
> > > Requiring strict mode for ** is a solution, but probably too restrictive...
> > >
> > > What do you think about making just subsequent accessor after ** not
> > > to unwrap arrays.  That would be a bit tricky to implement, but
> > > probably that would better satisfy the user needs.
> >
> > Hmm, why is it too restrictive?  If the user needs to further drill into
> > the JSON, can't they chain json_path_query calls, specifying (or
> > defaulting to) lax mode for the part doesn't include the ** expression?
>
> For sure, there are some walkarounds.  But I don't think all the
> lax-mode queries involving ** are affected.  So, it might happen that
> we force users to use strict-mode or chain call even if it's not
> necessary.  I'm tending to just fix the doc and wait if there are mode
> complaints :)

The patch, which clarifies this situation in the docs is attached.
I'm going to push it if no objections.

------
Regards,
Alexander Korotkov

Commits

  1. Document behavior of the .** jsonpath accessor in the lax mode