On 2019-10-22 18:06:39 -0700, David G. Johnston wrote: > On Tue, Oct 22, 2019 at 3:55 PM Peter J. Holzer <hjp-pgsql@xxxxxx> wrote: > On 2019-10-20 13:20:23 -0700, Steven Pousty wrote: > > I would think though that raising an exception is better than a > > default behavior which deletes data. > > As an app dev I am quite used to all sorts of "APIs" throwing > > exceptions and have learned to deal with them. > > > > This is my way of saying that raising an exception is an > > improvement over the current situation. May not be the "best" > > solution but definitely an improvement. > > I somewhat disagree. SQL isn't in general a language which uses > exceptions a lot. It does have the value NULL to mean "unknown", and > generally unknown combined with something else results in an unknown > value again: > > [...] > > > Throwing an exception for a pure function seems "un-SQLy" to me. In > particular, jsonb_set does something similar for json values as replace > does for strings, so it should behave similarly. > > > Now if only the vast majority of users could have and keep this level of > understanding in mind while writing complex queries so that they remember to > always add protections to compensate for the unique design decision that SQL > has taken here... I grant that SQL NULL takes a bit to get used to. However, it is a core part of the SQL language and everyone who uses SQL must understand it (I don't remember when I first stumbled across "select * from t where c = NULL" returning 0 rows, but it was probably within the first few days of using a database). And personally I find it much easier to deal with concept which are applied consistently across the whole language than those which sometimes apply and sometimes don't seemingly at random, just because a developer thought it would be convenient for the specific use-case they had in mind. hp -- _ | Peter J. Holzer | we build much bigger, better disasters now |_|_) | | because we have much more sophisticated | | | hjp@xxxxxx | management tools. __/ | http://www.hjp.at/ | -- Ross Anderson <https://www.edge.org/>
Attachment:
signature.asc
Description: PGP signature