On Wednesday, 11 March, 2020 09:24, Justin Ng <justin.ng.1...@outlook.com> wrote:
>Sometimes, when querying data, rather than letting NULLs propagate, >it might be better to throw an error if NULLs are not expected from an >expression. >The presence of NULLs might indicate an error in logic, data, or both. Yes, it very well might. I believe there is a term for a programmer that uses sentinels and then forgets to handle them. There is even a diagnostic code for it. Some people offend themselves when they see the code, however, because it lets their secret out of the bag. >So, the COALESCE(x, ABS(-9223372036854775808)) construct is a hack to >sanity-check queries. It is not a "hack" because it does not work. It is what is called a "failed attempt" at a hack. However, your assessment that coalesce is not "short-circuiting" is incorrect. If x is not null, then x is returned and the constant expression is not returned. If the constant expression were a correlated expression, then it would not be evaluated in the candidate context. If x were null and the expression was not constant (and thus required evaluation) then it would be evaluated within the current context and its result returned. The documentation DOES NOT say that the arguments to coalesce will not be evaluated, merely that the first one that is not-null will be returned. https://sqlite.org/lang_corefunc.html#coalesce >Something like THROW_IF_NULL(x) You could certainly write a function that did that. It would certainly be better than a "hack" that does not even work. -- The fact that there's a Highway to Hell but only a Stairway to Heaven says a lot about anticipated traffic volume. _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users