Re: jsonb concatenate operator's semantics seem questionable - Mailing list pgsql-hackers

From Jim Nasby
Subject Re: jsonb concatenate operator's semantics seem questionable
Date
Msg-id 555BC978.1000302@BlueTreble.com
Whole thread Raw
In response to Re: jsonb concatenate operator's semantics seem questionable  (Marko Tiikkaja <marko@joh.to>)
Responses Re: jsonb concatenate operator's semantics seem questionable
List pgsql-hackers
On 5/18/15 3:15 PM, Marko Tiikkaja wrote:
> On 2015-05-18 22:10, Josh Berkus wrote:
>> On 05/18/2015 01:04 PM, Ryan Pedela wrote:
>>> In the context of splitting shallow and deep merge into two operators, I
>>> think + is better for shallow and || better for deep. The reason for +
>>> is because many programming languages have this behavior. If I see the
>>> below code in language I have never used before:
>>>
>>> objC = objA + objB
>>>
>>> My default assumption is that + performs a shallow merge. Like I said, I
>>> would rather there just be one operator.
>>
>> Thank you, that helps.  Anyone else?
>
> If everyone thinks the operators mean different things, we could just
> not add any operators and only provide functions instead.

My $0.02: I would expect || to be what I want to use to add something to 
an existing JSON document, no matter what the path of what I'm adding 
is. In other words, deep merge. I certainly wouldn't expect it to be 
shallow.

If we get this wrong now, we'll be stuck with it forever. At a minimum I 
think we should use anything other than || until we can figure this out. 
That leaves || available for whichever case we decide on.

BTW, if people are set on shallow merge being || then I'd suggest ||| as 
the deep merge operator.
-- 
Jim Nasby, Data Architect, Blue Treble Consulting
Data in Trouble? Get it in Treble! http://BlueTreble.com



pgsql-hackers by date:

Previous
From: "David G. Johnston"
Date:
Subject: Re: Change pg_cancel_*() to ignore current backend
Next
From: Peter Geoghegan
Date:
Subject: Re: INSERT ... ON CONFLICT DO UPDATE with _any_ constraint