Re: jsonb_set() strictness considered harmful to data

From: Andrew Dunstan <andrew(dot)dunstan(at)2ndquadrant(dot)com>
To: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
Cc: Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>, "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, Floris Van Nee <florisvannee(at)optiver(dot)com>, Ariadne Conill <ariadne(at)dereferenced(dot)org>, Mark Felder <feld(at)freebsd(dot)org>, "pgsql-generallists(dot)postgresql(dot)org" <pgsql-general(at)lists(dot)postgresql(dot)org>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: Re: jsonb_set() strictness considered harmful to data
Date: 2019-11-15 20:01:19
Message-ID: a0dab101-7645-b011-888f-7323202f3b6f@2ndQuadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-hackers


On 11/15/19 2:14 PM, Pavel Stehule wrote:
> Hi
>
>
>
> For release 13+, I have given some more thought to what should be
> done.
> I think the bar for altering the behaviour of a function should be
> rather higher than we have in the present case, and the longer the
> function has been sanctioned by time the higher the bar should be.
> However, I think there is a case to be made for providing a non-strict
> jsonb_set type function. To advance th4e discussion, attached is a POC
> patch that does that. This can also be done as an extension, meaning
> that users of back branches could deploy it immediately. I've tested
> this against release 12, but I think it could go probably all the way
> back to 9.5. The new function is named jsonb_ set_lax, but I'm open to
> bikeshedding.
>
>
> I am sending a review of this patch
>
> 1. this patch does what was proposed and it is based on discussion.
>
> 2. there are not any problem with patching or compilation, all regress
> tests passed.
>
> 4. code looks well and it is well commented.
>
> 5. the patch has enough regress tests
>
> My notes:
>
> a) missing documentation
>
> b) error message is not finalized
>
> +       ereport(ERROR,
> +               (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
> +                errmsg("null jsonb value")));
>
> Any other looks well, and this function can be very handy.
>
>

Thanks for the review. I will add some docco.

What would be a better error message? "null jsonb replacement not
permitted"?

cheers

andrew

--
Andrew Dunstan https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Dave Hughes 2019-11-15 20:17:17 Re: Authentication: MD5 to SCRAM-SHA-256 error
Previous Message Adrian Klaver 2019-11-15 19:53:32 Re: access to original-statement predicates in an INSTEAD-OF row trigger

Browse pgsql-hackers by date

  From Date Subject
Next Message Pavel Stehule 2019-11-15 20:45:59 Re: jsonb_set() strictness considered harmful to data
Previous Message Andres Freund 2019-11-15 19:59:34 Re: [HACKERS] pg_shmem_allocations view