The proposed flag for jsonb_set (the renamed jsonb_replace) in the patch
I recently published is set to false, meaning that the default behaviour
is to require all elements of the path including the last to be present.
What that does is effectively UPDATE for jsonb. If the flag is true,
then the last element can be absent, in which case it's created, so this
is basically UPSERT for jsonb. The question is which should be the
default. We got into the weeds on this with suggestions of throwing
errors on missing paths, but that's going nowhere, and I want to get
discussion back onto the topic of what should be the default.
cheers
andrew