Re: ​jsonb @@ jsonpath operator doc: ​Only the first item of the result is taken into account

Поиск
Список
Период
Сортировка
От jian he
Тема Re: ​jsonb @@ jsonpath operator doc: ​Only the first item of the result is taken into account
Дата
Msg-id CACJufxEvB3zAKcKkNLVLWfFdRHg+StY+jrFjFvwdRZduji-www@mail.gmail.com
обсуждение исходный текст
Ответ на Re: ​jsonb @@ jsonpath operator doc: ​Only the first item of the result is taken into account  (Erik Wienhold <ewie@ewie.name>)
Ответы Re: ​jsonb @@ jsonpath operator doc: ​Only the first item of the result is taken into account  (Erik Wienhold <ewie@ewie.name>)
Список pgsql-general


On Tue, Apr 4, 2023 at 12:22 AM Erik Wienhold <ewie@ewie.name> wrote:
> On 03/04/2023 17:36 CEST Adrian Klaver <adrian.klaver@aklaver.com> wrote:
>
> On 4/3/23 08:11, Erik Wienhold wrote:
> >> On 02/04/2023 17:40 CEST Adrian Klaver <adrian.klaver@aklaver.com> wrote:
> >>
> >> That is a long way from:
> >>
> >> jsonb @@ jsonpath → boolean
> >>
> >> Returns the result of a JSON path predicate check for the specified JSON
> >> value. Only the first item of the result is taken into account. If the
> >> result is not Boolean, then NULL is returned.
> >
> > What do you mean?  I responded to the OP's question.  It's not a suggestion
> > to update the docs.  Obviously it's quite a mouthful and needs to be boiled
> > down for the docs.  Any suggestions?
>
> For me I don't see how:
>
> Predicates have existence semantics, because their operands are item
> sequences.  Pairs of items from the left and right operand's sequences
> are checked.  TRUE returned only if any pair satisfying the condition is
> found. In strict mode, even if the desired pair has already been found,
> all pairs still need to be examined to check the absence of errors.  If
> any error occurs, UNKNOWN (analogous to SQL NULL) is returned.
>
> resolves to :
>
> Only the first item of the result is taken into account.
>
> In other words reconciling "TRUE returned only if any pair satisfying
> the condition is found."  and "...first item of the result..."

I see.

Thinking about it now, I believe that "first item of the result" is redundant
(and causing the OP's confusion) because the path predicate produces only a
single item: true, false, or null.  That's what I wanted to show with the first
two jsonb_path_query examples in my initial response, where the second example
returns multiple items.

I think the gist of @@ and json_path_match is:

"Returns true if any JSON value at the given path matches the predicate.
 Returns NULL when not a path predicate or comparing different types."

--
Erik



"Returns true if any JSON value at the given path matches the predicate.
 Returns NULL when not a path predicate or comparing different types."
in first sentence, should we add something "otherwise return false." ? also, should it be "Return true"? (since only one value returned)?



В списке pgsql-general по дате отправления:

Предыдущее
От: Jonny Saxon
Дата:
Сообщение: Re: Oracle to PostgreSQL Migration
Следующее
От: walther@technowledgy.de
Дата:
Сообщение: Re: DEFINER / INVOKER conundrum