Re: Why does jsonb_set() remove non-mentioned keys?

Поиск
Список
Период
Сортировка
От David G. Johnston
Тема Re: Why does jsonb_set() remove non-mentioned keys?
Дата
Msg-id CAKFQuwaEErw0+DH6w+XwzbSMYiWdcRO5Bcy2ts_1C6FTB0TxMw@mail.gmail.com
обсуждение исходный текст
Ответ на Why does jsonb_set() remove non-mentioned keys?  (Thomas Kellerer <spam_eater@gmx.net>)
Ответы Re: Why does jsonb_set() remove non-mentioned keys?  (Thomas Kellerer <spam_eater@gmx.net>)
Список pgsql-general
On Thu, Jul 4, 2019 at 6:18 AM Thomas Kellerer <spam_eater@gmx.net> wrote:
Why does

   select jsonb_set('{"foo": 1}'::jsonb, '{bar}', to_jsonb(null::int), true)

return NULL when all it should do is to add a second key?

Both functions involved are defined as being STRICT (null on null input).  You need to COALSESCE SQL NULL to JSON 'null' to obtain the result you desire.  This is a general truth when dealing with the JSON type in PostgreSQL.

select jsonb_set('{"foo": 1}'::jsonb, '{bar}', coalesce(to_jsonb(null::int), 'null'), true)

David J.

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

Предыдущее
От: Adrian Klaver
Дата:
Сообщение: Re: PostgreSQL upgrade from 9.4.2 to 9.6.12
Следующее
От: Ben Snaidero
Дата:
Сообщение: Re: pg_dump (COPY) hanging intermittently