David G. Johnston schrieb am 04.07.2019 um 18:20:
> On Thu, Jul 4, 2019 at 6:18 AM Thomas Kellerer <spam_eater@gmx.net <mailto: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.
But jsonb_set() doesn't change (or shouldn't) the whole value, only one key.
I can understand that the "bar" key would not be set (because of the NULL), but removing a key that isn't even part of
thetarget path looks like a bug to.
Thomas