Re: jsonb_set() strictness considered harmful to data

From: Abelard Hoffman <abelardhoffman(at)gmail(dot)com>
To: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: jsonb_set() strictness considered harmful to data
Date: 2019-10-21 02:58:33
Message-ID: CACEJHMjkOOSKw=4sG0EexjnG8RaBsO0qPfPF4FAujpGrVRgCgA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers

>
>
>> I would argue that only if the target parameter (the actual json value)
> is NULL should the result be NULL. The function is documented as returning
> the target, with modifications to a small part of its structure as
> specified by the other parameters. It is strange for the result to suddenly
> collapse down to NULL just because another parameter is NULL. Perhaps if
> the path is NULL, that can mean "don't update". And if create_missing is
> NULL, that should mean the same as not specifying it. I think. At a
> minimum, if we don't change it, the documentation needs to get one of those
> warning boxes alerting people that the functions will destroy their input
> entirely rather than slightly modifying it if any of the other parameters
> are NULL.
>
> My only doubt about any of this is that by the same argument, functions
> like replace() should not return NULL if the 2nd or 3rd parameter is NULL.
> I'm guessing replace() is specified by SQL and also unchanged in many
> versions so therefore not eligible for re-thinking but it still gives me
> just a bit of pause.
>

That's the essential difference though, no? With jsonb, conceptually, we
have a nested row. That's where we get confused. We think that the
operation should affect the element within the nested structure, not the
structure itself.

It would be equivalent to replace() nulling out the entire row on null.

I understand the logic behind it, but I also definitely see why it's not
intuitive.

AH

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Pawan Sharma 2019-10-21 05:15:33 CPU SPIKE
Previous Message rob stone 2019-10-21 01:18:23 Re: jsonb_set() strictness considered harmful to data

Browse pgsql-hackers by date

  From Date Subject
Next Message Mark Dilger 2019-10-21 03:02:18 Re: Fix most -Wundef warnings
Previous Message Michael Paquier 2019-10-21 02:40:20 Re: libpq: Fix wrong connection status on invalid "connect_timeout"