On 16/07/18 18:10, Tom Lane wrote:
Heikki Linnakangas <hlinn...@iki.fi> writes:
On 16/07/18 04:40, David Fetter wrote:
Per a discussion with Andrew Gierth and Vik Fearing, both of whom
helped make this happen, please find attached a patch which makes it
possible to get SQL standard behavior for "= NULL", which is an error.
It's been upgraded to a warning, and can still be downgraded to
silence (off) and MS-SQL-compatible behavior (on).
I don't agree with changing the default to 'warn'. "foo = NULL" is
perfectly legal SQL, even if it's not very useful in practice.
I think that there's a very narrow argument to be made that SQL doesn't
allow a NULL literal with context-determined type in this context. But
we decided to generalize that restriction long ago, and suddenly deciding
to enforce it only in this one context makes no sense to me. The idea
that we would ever decide that it's an error seems flat out ridiculous.
TBH I'm not really excited about investing any work in this area at all.
Considering how seldom we hear any questions about transform_null_equals
anymore[1], I'm wondering if we couldn't just rip the "feature" out
entirely.
Yeah, I was wondering about that too. But Fabien brought up a completely
new use-case for this: people learning SQL. For beginners who don't
understand the behavior of NULLs yet, I can see a warning or error being
useful training wheels. Perhaps a completely new "training_wheels=on"
option, which could check may for many other beginner errors, too, would
be better for that.
- Heikki