Re: jsonb_set() strictness considered harmful to data

Поиск
Список
Период
Сортировка
От raf
Тема Re: jsonb_set() strictness considered harmful to data
Дата
Msg-id 20191020233115.jjy6lqd4vsyrdbbo@raf.org
обсуждение исходный текст
Ответ на Re: jsonb_set() strictness considered harmful to data  (Steven Pousty <steve.pousty@gmail.com>)
Ответы Re: jsonb_set() strictness considered harmful to data  (Steven Pousty <steve.pousty@gmail.com>)
Re: jsonb_set() strictness considered harmful to data  (Steven Pousty <steve.pousty@gmail.com>)
Список pgsql-general
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




В списке pgsql-general по дате отправления:

Предыдущее
От: Andrew Dunstan
Дата:
Сообщение: Re: jsonb_set() strictness considered harmful to data
Следующее
От: rob stone
Дата:
Сообщение: Re: jsonb_set() strictness considered harmful to data