On Thu, Jul 4, 2019 at 6:18 AM Thomas Kellerer <spam_ea...@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.

Reply via email to