On 10/20/19 4:39 AM, Floris Van Nee wrote: > > FWIW I've been bitten by this 'feature' more than once as well, > accidentally erasing a column. Now I usually write js = jsonb_set(js, > coalesce(new_column, 'null'::jsonb)) to prevent erasing the whole > column, and instead setting the value to a jsonb null value, but I > also found the STRICT behavior very surprising at first.. > > > Understood. I think the real question here is what it should do instead when the value is NULL. Your behaviour above is one suggestion, which I personally find intuitive. Another has been to remove the associated key. Another is to return the original target. And yet another is to raise an exception, which is easy to write but really punts the issue back to the application programmer who will have to decide how to ensure they never pass in a NULL parameter. Possibly we could even add an extra parameter to specify what should be done. Also, the question will arise what to do when any of the other parameters are NULL. Should we return NULL in those cases as we do now? cheers andrew -- Andrew Dunstan https://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services