5 ms·
This is a linter which complains about spaces and newlines, but lets "WHERE col = NULL" pass (which can never be meaningful) just fine? Obviously this depends
by ThePadawan 5y ago
This is a linter which complains about spaces and newlines, but lets "WHERE col = NULL" pass (which can never be meaningful) just fine?
Obviously this depends on the rules configuration, but just judging that first smell test, it seems very ill thought out.
- justusw 5y agoI guess it depends on what you want out of a linter e.g. if you want it to check just syntax or semantics as well. Is “= NULL” syntactically correct?
- ThePadawan 5y agoA linter is supposed to tell you "you are probably making a mistake." "= NULL" is as syntactically correct in SQL as "if (x = null)" in C. If it wasn't, code highlighting or compiling would break, both of which are much much more obvious.
- deleted 5y ago[deleted]
- danachow 5y agoThe compiler checks syntax - if that’s all a linter did it wouldn’t be very useful.
- munk-a 5y ago`= NULL` is perfectly legal syntax - but it isn't doing what you think it is.
- ThePadawan 5y agoThat's what parent is saying. He is contrasting a compiler (which this isn't) to a linter (which this arguably also isn't).
- Genmutant 5y agoIn MS SQL Server, with ANSI_NULLS set to OFF, it will select all rows having a NULL value for col. AFAIK not used that often.
- marcosdumay 5y agoThat is a serious gotcha of SQL Server. It (and Oracle) has some serious problems with unique constraints because of that kind of stuff.
- tunetheweb 5y agoSeems like a good thing to check for! So we added a rule for this: https://github.com/sqlfluff/sqlfluff/pull/1527 https://github.com/sqlfluff/sqlfluff/pull/1527 Including autofixing if wanted. Will be in the next release.