From: | Andrew Dunstan <andrew(at)dunslane(dot)net> |
---|---|
To: | Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>, Oleg Bartunov <obartunov(at)gmail(dot)com> |
Subject: | Re: json_query - redundant result |
Date: | 2022-04-28 14:20:30 |
Message-ID: | a3187868-a3c9-8eb8-7ee2-41195e27c703@dunslane.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2022-04-28 Th 10:06, Pavel Stehule wrote:
>
>
> čt 28. 4. 2022 v 16:00 odesílatel Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> napsal:
>
> Andrew Dunstan <andrew(at)dunslane(dot)net> writes:
> > On 2022-04-28 Th 04:16, Pavel Stehule wrote:
> >> Is this result correct? I am expecting just [10, 30]
>
> > It's just a wrapper around jsonb_path_query, which hasn't changed.
>
> > # SELECT jsonb_path_query(jsonb '[{"a":10, "b": 20}, {"a": 30,
> > "b":100}]', '$.**.a');
> > jsonb_path_query
> > ------------------
> > 10
> > 30
> > 10
> > 30
> > (4 rows)
>
> > If that's a bug it's not a new one - release 14 gives the same
> result.
>
> I'm pretty clueless in this area, but I think this might have to
> do with
> the "lax mode" described in 9.16.2.1 <http://9.16.2.1>:
>
> https://www.postgresql.org/docs/devel/functions-json.html#FUNCTIONS-SQLJSON-PATH
>
> regression=# SELECT jsonb_path_query(jsonb '[{"a":10, "b": 20},
> {"a": 30,
> regression'# "b":100}]', '$.**.a');
> jsonb_path_query
> ------------------
> 10
> 30
> 10
> 30
> (4 rows)
>
> regression=# SELECT jsonb_path_query(jsonb '[{"a":10, "b": 20},
> {"a": 30,
> "b":100}]', 'strict $.**.a');
> jsonb_path_query
> ------------------
> 10
> 30
> (2 rows)
>
> Maybe these SQL-standard syntaxes ought to default to strict mode?
>
>
> It looks like a perfect trap, although it is documented.
>
> I don't think the default strict mode is better. Maybe disallow .** in
> lax mode?
>
>
Yeah, having strict the default for json_query and lax the default for
jsonb_path_query seems like a recipe for serious confusion.
I have no opinion about .** in lax mode.
cheers
andrew
--
Andrew Dunstan
EDB: https://www.enterprisedb.com
From | Date | Subject | |
---|---|---|---|
Next Message | Tomas Vondra | 2022-04-28 15:35:09 | Re: bogus: logical replication rows/cols combinations |
Previous Message | Peter Eisentraut | 2022-04-28 14:09:18 | Re: Dump/Restore of non-default PKs |