Re: jsonpath: Missing Binary Execution Path?
От | David G. Johnston |
---|---|
Тема | Re: jsonpath: Missing Binary Execution Path? |
Дата | |
Msg-id | CAKFQuwbZ491CqcbFpin7a6Z-idC65cUJWGCL_855tQ5-90LYKg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: jsonpath: Missing Binary Execution Path? (Chapman Flack <jcflack@acm.org>) |
Ответы |
Re: jsonpath: Missing Binary Execution Path?
|
Список | pgsql-hackers |
On Thu, Jun 13, 2024 at 6:10 PM Chapman Flack <jcflack@acm.org> wrote:
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.
I'm content that the operators in the 'filter operators' table need to be within filter but then I cannot reconcile why this example worked:
david=# select jsonb_path_query('1', '$ >= 1');
jsonb_path_query
------------------
true
(1 row)
jsonb_path_query
------------------
true
(1 row)
David J.
В списке pgsql-hackers по дате отправления: