Re: jsonb array-style subscripting - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: jsonb array-style subscripting
Date
Msg-id 55D239B3.1060407@dunslane.net
Whole thread Raw
In response to Re: jsonb array-style subscripting  (Merlin Moncure <mmoncure@gmail.com>)
Responses Re: jsonb array-style subscripting
List pgsql-hackers

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.

cheers

andrew



pgsql-hackers by date:

Previous
From: Peter Geoghegan
Date:
Subject: Re: jsonb array-style subscripting
Next
From: Andres Freund
Date:
Subject: Re: replication slot restart_lsn initialization