I am certainly not tied to the '-' operator, but I think the ability to remove 
items from a numeric json array,  based on a value would be something that 
would benefit many users.

-----Original Message-----
From: David E. Wheeler <[email protected]> 
Sent: Wednesday, June 11, 2025 2:48 PM
To: Tom Lane <[email protected]>
Cc: Robert Haas <[email protected]>; Mark Dake 
<[email protected]>; [email protected]
Subject: Re: Inconsistent Behavior in JSONB Numeric Array Deletion

On Jun 11, 2025, at 17:43, Tom Lane <[email protected]> wrote:

> I fear that that would cause some problems.  Consider
> 
> regression=# select '["foo", "bar"]'::jsonb - 'bar'; ?column?
> ----------
> ["foo"]
> (1 row)
> 
> Right now we resolve the unlabeled literal as type text.
> But if jsonb - jsonb existed, we'd decide it's jsonb, thanks to the 
> heuristic that prefers same-type-as-the-other-input (rule 2a at [1]).  
> So it's pretty nearly certain that adding jsonb - jsonb would break 
> some existing queries; or worse, silently cause them to do something 
> different.
> Maybe that's acceptable, but it's a demerit of this proposal.

Ah. It’s a pity the existing operator behaves differently for different rhs 
operands. But maybe add a new one that’s defined to operator on contents rather 
than keys/indexes and deprecate (or un-document) the content behavior in the 
`-` operator?

Best,

Davi



Reply via email to