Re: jsonb_set array append hack?
| От | Andrew Dunstan |
|---|---|
| Тема | Re: jsonb_set array append hack? |
| Дата | |
| Msg-id | 55F71915.5080708@dunslane.net обсуждение исходный текст |
| Ответ на | jsonb_set array append hack? (Thom Brown <thom@linux.com>) |
| Ответы |
Re: jsonb_set array append hack?
|
| Список | pgsql-hackers |
On 09/14/2015 01:29 PM, Thom Brown wrote:
> Hi,
>
> I've noticed that if you use a string for an element key in jsonb_set
> with create_missing set to true, you can use it to append to an array:
>
> postgres=# SELECT jsonb_set(
> '{"name": "Joe", "vehicle_types": ["car","van"]}'::jsonb,
> '{vehicle_types,nonsense}',
> '"motorcycle"', true);
> jsonb_set
> ----------------------------------------------------------------
> {"name": "Joe", "vehicle_types": ["car", "van", "motorcycle"]}
> (1 row)
>
> What this really should match is a nested element inside
> "vehicle_types" called "nonsense". But this seems to be a hack to get
> an element added to an array. To do it properly currently requires
> specifying an arbitrary number in the hope that it will exceed the
> number of elements you have in the array.
That's a bug and we should fix it.
>
> e.g.
>
> postgres=# SELECT jsonb_set(
> '{"name": "Joe", "vehicle_types": ["car","van"]}'::jsonb,
> '{vehicle_types,100000}',
> '"motorcycle"', true);
> jsonb_set
> ----------------------------------------------------------------
> {"name": "Joe", "vehicle_types": ["car", "van", "motorcycle"]}
> (1 row)
>
> But I'm guessing people shouldn't be relying on the hack in the first
> example. Isn't this a bug? If so, wouldn't this also be a bug?:
>
> postgres=# SELECT jsonb_set(
> '{"name": "Joe", "vehicle_types": ["car","van"]}'::jsonb,
> array['vehicle_types',NULL],
> '"motorcycle"', true);
>
>
I think that's a bug too.
cheers
andrew
В списке pgsql-hackers по дате отправления: