> 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 On 20 September 2015 at 23:50, Thom Brown <t...@linux.com> wrote: > On 20 September 2015 at 16:17, Dmitry Dolgov <9erthali...@gmail.com> > wrote: > >> I'm sorry, but I'm not sure, what behavior is expected in this case? >> Right now the following logic was implemented: >> "we trying to set an element inside an array, but we've got a >> non-integer path item >> ("nonsense" in this particular case), so we're going to add a new >> element at the end of array by default" >> >> If it's wrong, should we refuse to perform such kind of operations, or >> should we replace >> "vehicle_type": ["car", "van"] >> to >> "vehicle_type: {"nonsense": "motorcycle"} >> ? >> > > (please bottom-post) > > 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. > > Thom >
non_integer_in_path.patch
Description: Binary data
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers