Re: jsonb array-style subscripting
Merlin Moncure <mmoncure@gmail.com>
From: Merlin Moncure <mmoncure@gmail.com>
To: Andrew Dunstan <andrew@dunslane.net>
Cc: Dmitry Dolgov <9erthalion6@gmail.com>,
PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2015-08-17T20:51:37Z
Lists: pgsql-hackers
On Mon, Aug 17, 2015 at 2:44 PM, Andrew Dunstan <andrew@dunslane.net> wrote: > > > On 08/17/2015 03:26 PM, Merlin Moncure wrote: >> >> >> I'm not sure if this: >> update test_jsonb_subscript set test_json['a']['a1']['a2'] = 42; >> >> ...is a good idea. postgres operators tend to return immutable copies >> of the item they are referring to. In other words, you'd never see a >> column operator on the 'left' side of the equals in an update >> statement. I think you need to look at a function to get the behavior >> you want: >> >> update test_jsonb_subscript set test_json = jsonb_modify(test_json, >> '[a][a1][a2] = 42');] >> >> ...as a hypothetical example. The idea is you need to make a >> function that provides the ability to make the complete json you want. >> Update statements always make a copy of the record anyways. >> > > > Why should jsonb be different from an array? You can assign to an array > element, using exactly this syntax, except that the index expressions have > to be integers. > > This was discussed at pgcon and generally met with approval. There is some > demand for it. If Dmitry hadn't done this I would probably have done it > myself. Yeah, this all makes sense. I withdraw the statement. merlin
Commits
-
Throw error when assigning jsonb scalar instead of a composite object
- aa6e46daf530 14.0 landed
-
Filling array gaps during jsonb subscripting
- 81fcc72e6622 14.0 landed
-
Implementation of subscripting for jsonb
- 676887a3b0b8 14.0 landed