From: | Chapman Flack <jcflack(at)acm(dot)org> |
---|---|
To: | "David E(dot) Wheeler" <david(at)justatheory(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: jsonpath: Missing Binary Execution Path? |
Date: | 2024-06-14 01:09:54 |
Message-ID: | 666B9862.5000608@acm.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 06/13/24 16:43, David E. Wheeler wrote:
> Paging Mr. Eisentraut!
I'm not Mr. Eisentraut, but I have at last talked my way into some
access to the standard, so ...
Note 487 emphasizes that JSON path predicates "are not expressions;
instead they form a separate language that can only be invoked within
a <JSON filter expression>".
The only operators usable in a general expression (that is, a
<JSON path wff> are binary + - and binary * / % and unary + -
over a <JSON accessor expression>.
Inside a filter, you get to use a <JSON path predicate>. That's where
you can use ! and && and ||. But ! can only be applied to a
<JSON delimited predicate>: either a <JSON exists path predicate>,
or any other <JSON path predicate> wrapped in parentheses.
On 06/13/24 11:32, David E. Wheeler wrote:
> david=# select jsonb_path_query('true', '$ && $');
> david=# select jsonb_path_query('true', '$.boolean() && $.boolean()');
Those don't work because, as you recognized, they're not inside filters.
> david=# select jsonb_path_query('[1, 3, 7]', '$[*] ? (@.boolean() && @.boolean())');
That doesn't work because the operands of && or || must have the grammatical
form of predicates; it's not enough that they be expressions of boolean
type. '$[*] ? (@.boolean() == true && @.boolean() == true)' ought to work
(though in any other context you'd probably call it a code smell!) because
each operand is now a <JSON comparison predicate>.
Regards,
-Chap
From | Date | Subject | |
---|---|---|---|
Next Message | Masahiko Sawada | 2024-06-14 01:21:17 | Re: Revive num_dead_tuples column of pg_stat_progress_vacuum |
Previous Message | Aaron Altman | 2024-06-14 01:07:21 | Re: Optimize numeric.c mul_var() using the Karatsuba algorithm |