Steven Pousty wrote: > I would think though that raising an exception is better than a > default behavior which deletes data. I can't help but feel the need to make the point that the function is not deleting anything. It is just returning null. The deletion of data is being performed by an update statement that uses the function's return value to set a column value. I don't agree that raising an exception in the function is a good idea (perhaps unless it's valid to assume that this function will only ever be used in such a context). Making the column not null (as already suggested) and having the update statement itself raise the exception seems more appropriate if an exception is desirable. But that presumes an accurate understanding of the behaviour of jsonb_set. Really, I think the best fix would be in the documentation so that everyone who finds the function in the documentation understands its behaviour immediately. I didn't even know there was such a thing as a strict function or what it means and the documentation for jsonb_set doesn't mention that it is a strict function and the examples of its use don't demonstrate this behaviour. I'm referring to https://www.postgresql.org/docs/9.5/functions-json.html. All of this contributes to the astonishment encountered here. Least astonishment can probably be achieved with additional documentation but it has to be where the reader is looking when they first encounter the function in the documentation so that their expectations are set correctly and set early. And documentation can be "fixed" sooner than postgresql 13. Perhaps an audit of the documentation for all strict functions would be a good idea to see if they need work. Knowing that a function won't be executed at all and will effectively return null when given a null argument might be important to know for other functions as well. cheers, raf