diff options
| -rw-r--r-- | sqlparse/keywords.py | 2 | ||||
| -rw-r--r-- | tests/test_grouping.py | 12 |
2 files changed, 12 insertions, 2 deletions
diff --git a/sqlparse/keywords.py b/sqlparse/keywords.py index 3123531..68ced92 100644 --- a/sqlparse/keywords.py +++ b/sqlparse/keywords.py @@ -44,7 +44,7 @@ SQL_REGEX = { (r'(?<!\w)[$:?]\w+', tokens.Name.Placeholder), (r'\\\w+', tokens.Command), - + (r'(NOT\s+)?(IN)\b', tokens.Operator.Comparison), # FIXME(andi): VALUES shouldn't be listed here # see https://github.com/andialbrecht/sqlparse/pull/64 # AS and IN are special, it may be followed by a parenthesis, but diff --git a/tests/test_grouping.py b/tests/test_grouping.py index 683954e..879ba29 100644 --- a/tests/test_grouping.py +++ b/tests/test_grouping.py @@ -371,10 +371,20 @@ def test_grouping_function_not_in(): # issue183 p = sqlparse.parse('in(1, 2)')[0] assert len(p.tokens) == 2 - assert p.tokens[0].ttype == T.Keyword + assert p.tokens[0].ttype == T.Comparison assert isinstance(p.tokens[1], sql.Parenthesis) +def test_in_comparison(): + # issue566 + p = sqlparse.parse('a in (1, 2)')[0] + assert len(p.tokens) == 1 + assert isinstance(p.tokens[0], sql.Comparison) + assert len(p.tokens[0].tokens) == 5 + assert p.tokens[0].left.value == 'a' + assert p.tokens[0].right.value == '(1, 2)' + + def test_grouping_varchar(): p = sqlparse.parse('"text" Varchar(50) NOT NULL')[0] assert isinstance(p.tokens[2], sql.Function) |
