datafusion-sqlparse/tests
Nickolay Ponomarev 82dc581639 Fix precedence for the NOT operator (2/4)
I checked the docs of a few of the most popular RDBMSes, and it seems
there's consensus that the precedence of `NOT` is higher than `AND`,
but lower than `IS NULL`.

Postgresql[1], Oracle[2] and MySQL[3] docs say that explicitly.

T-SQL docs[4] do mention it's higher than `AND`, and while they don't
explicitly mention IS NULL, this snippet:

    select * from (select 1 as a)x
    where (not x.a) is null

...is a parsing error, while the following works like IS NOT NULL:

    select * from (select 1 as a)x
    where not x.a is null

sqlite doesn't seem to mention `NOT` precedence, but I assume it works
similarly.

[1] https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-OPERATORS
[2] https://docs.oracle.com/cd/B19306_01/server.102/b14200/conditions001.htm#i1034834
[3] https://dev.mysql.com/doc/refman/8.0/en/operator-precedence.html
[4] https://docs.microsoft.com/en-us/sql/t-sql/language-elements/operator-precedence-transact-sql?view=sql-server-2017
2019-02-07 05:24:55 +03:00
..
sqlparser_ansi.rs Only use parse_expr() when we expect an expression (0/4) 2019-02-07 05:24:54 +03:00
sqlparser_generic.rs Fix precedence for the NOT operator (2/4) 2019-02-07 05:24:55 +03:00
sqlparser_postgres.rs Only use parse_expr() when we expect an expression (0/4) 2019-02-07 05:24:54 +03:00