Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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.



In 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.


That is a serious gotcha of SQL Server. It (and Oracle) has some serious problems with unique constraints because of that kind of stuff.


Seems like a good thing to check for! So we added a rule for this: https://github.com/sqlfluff/sqlfluff/pull/1527

Including autofixing if wanted.

Will be in the next release.


I 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?


A 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.


The compiler checks syntax - if that’s all a linter did it wouldn’t be very useful.


`= NULL` is perfectly legal syntax - but it isn't doing what you think it is.


That's what parent is saying. He is contrasting a compiler (which this isn't) to a linter (which this arguably also isn't).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: