Re: JSONB operator unanticipated behaviour

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: JSONB operator unanticipated behaviour
Дата
Msg-id c8663245-c568-9071-817b-06a288fd4e0d@aklaver.com
обсуждение исходный текст
Ответ на JSONB operator unanticipated behaviour  (Brian Mendoza <brian@rotamap.net>)
Ответы Re: JSONB operator unanticipated behaviour
Список pgsql-general
On 5/18/23 06:17, Brian Mendoza wrote:
> Hello,
> 
> I have encountered unanticipated behaviour with a JSONB operator, and 
> wanted to make sure I am not misunderstanding its intended use.
> 
> When using the @> operator, I get this result.
> 
> select '{"a": [1]}'::jsonb @> '{"a": []}'::jsonb;
>   ?column?
> ----------
>   t
> (1 row)
> 
> However, given the phrasing in the documentation, I would have expected 
> False.
> 
> "Does the left JSON value contain the right JSON path/value entries at 
> the top level?"
> 
> Particularly given the following:
> 
> select '[1]'::jsonb = '[]'::jsonb;
>   ?column?
> ----------
>   f
> (1 row)
> 
> So the keys are the same, the values (when compared directly) are not, 
> but @> returns True. Have I misunderstood the usage of the operator?
> 
> The above queries have been run on postgres 14, if that helps.

Have you looked at the containment examples?:

https://www.postgresql.org/docs/current/datatype-json.html#JSON-CONTAINMENT

I'm thinking this:

-- A top-level key and an empty object is contained:
SELECT '{"foo": {"bar": "baz"}}'::jsonb @> '{"foo": {}}'::jsonb;

and/or this

"The general principle is that the contained object must match the 
containing object as to structure and data contents, possibly after 
discarding some non-matching array elements or object key/value pairs 
from the containing object. "

applies.

> 
> -- 
> Brian Mendoza
> brian@rotamap.net <mailto:brian@rotamap.net>
> 
> Rotamap
> www.rotamap.net <https://www.rotamap.net>
> 020 7631 1555
> 3 Tottenham Street London W1T 2AF
> Registered in England No. 04551928

-- 
Adrian Klaver
adrian.klaver@aklaver.com




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

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: Is there a good way to handle sum types (or tagged unions) in PostgreSQL?
Следующее
От: Brian Mendoza
Дата:
Сообщение: Re: JSONB operator unanticipated behaviour