Re: jsonb_set array append hack? - Mailing list pgsql-hackers

From Thom Brown
Subject Re: jsonb_set array append hack?
Date
Msg-id CAA-aLv5n=K_8y+-cSwLgxrQpjVdGUfgpyoM5MgpxN5eqyAeMZg@mail.gmail.com
Whole thread Raw
In response to Re: jsonb_set array append hack?  (Andrew Dunstan <andrew@dunslane.net>)
Responses Re: jsonb_set array append hack?  (Dmitry Dolgov <9erthalion6@gmail.com>)
List pgsql-hackers
On 21 September 2015 at 22:21, Andrew Dunstan <andrew@dunslane.net> wrote:


On 09/21/2015 12:13 PM, Dmitry Dolgov wrote:
> I would expect some kind of error.  We're trying to address a position in an array, and we're instead passing a key.  If it completes successfully, the chances are it isn't what the user intended.

Thanks for the explanation. So, basically, it should be like this, am I right?

postgres=# SELECT jsonb_set(
    '{"name": "Joe", "vehicle_types": ["car", "van"]}'::jsonb,
    '{vehicle_types, nonsense}',
    '"motorcycle"', true);
ERROR:  path element at the position 2 is not an integer


That seems reasonable. For that matter, we should probably disallow NULL path elements also, shouldn't we?

I'd say yes.  If someone really wants to name a field "null", they'll just have to quote it in the path. (e.g. '{contact,"null"}')

--
Thom

pgsql-hackers by date:

Previous
From: Josh Berkus
Date:
Subject: Re: Streaming Replication clusters and load balancing
Next
From: Thomas Munro
Date:
Subject: Re: Obsolete use of volatile in walsender.c, walreceiver.c, walreceiverfuncs.c?