Re: BUG #15140: Incorrect jsonb_set behavoir

From: Dmitry Dolgov <9erthalion6(at)gmail(dot)com>
To: "Ivan E(dot) Panchenko" <i(dot)panchenko(at)postgrespro(dot)ru>, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #15140: Incorrect jsonb_set behavoir
Date: 2018-04-02 12:04:12
Message-ID: CA+q6zcWorxezaaN9RQgURkmiyjer3nT8_zO2Sp6700FaROVk5Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

> On 2 April 2018 at 12:36, PG Bug reporting form <noreply(at)postgresql(dot)org> wrote:
> The following bug has been logged on the website:
>
> Bug reference: 15140
> Logged by: Ivan Panchenko
> Email address: i(dot)panchenko(at)postgrespro(dot)ru
> PostgreSQL version: 10.3
> Operating system: any
> Description:
>
> First. Impossible to create a nested structure for a path with more than one
> new keys.
>
> postgres => select jsonb_set('{}'::jsonb, array['x', 'y'],
> to_jsonb(1::text), true);
> jsonb_set
> -----------
> {}
> (1 строка)
>
> Expected {"x": { "y" : "1" }}
>
> Second. Setting a NULL value nullifies the whole JSON
>
> postgres=> select jsonb_set('{}'::jsonb, array['x'], null, true);
> jsonb_insert
> --------------
>
> (1 строка)
>
> Expected { "x" : null }

As far as I remember, these are not really bugs, but documented behavior.

About the first one, here is [1]:

All the items of the path parameter of jsonb_set as well as jsonb_insert
except the last item must be present in the target. If create_missing is
false, all items of the path parameter of jsonb_set must be present. If
these conditions are not met the target is returned unchanged.

Although I agree this can be confusing, and we may want to change this.

About the second one, `jsonb_set` is defined as a strict function, which means
`null` arguments will produce null as a result. To avoid this you can do:

=# select jsonb_set('{}'::jsonb, array['x'], 'null', true);
jsonb_set
-------------
{"x": null}
(1 row)

1: https://www.postgresql.org/docs/devel/static/functions-json.html

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Ivan E. Panchenko 2018-04-02 14:58:15 Re: BUG #15140: Incorrect jsonb_set behavoir
Previous Message PG Bug reporting form 2018-04-02 10:36:45 BUG #15140: Incorrect jsonb_set behavoir