summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkoljonen <koljonen@outlook.com>2016-05-14 21:54:50 +0200
committerkoljonen <koljonen@outlook.com>2016-05-14 22:04:31 +0200
commit26b5385babe69ced19e02dc4643a91f6aaf3a1a6 (patch)
tree85b8ff545d1de29b6623d66b2d6417695bfa8320
parent9ab1464ea9c1d0296d698d9637ed3e3cd92326f9 (diff)
downloadsqlparse-26b5385babe69ced19e02dc4643a91f6aaf3a1a6.tar.gz
Recognize USING as a keyword in 'USING(', not just in 'USING ('
These were previously caught by (r'[^\W\d_]\w*(?=[.(])', tokens.Name), so I added a special regex just above that one.
-rw-r--r--sqlparse/lexer.py1
-rw-r--r--tests/test_grouping.py7
2 files changed, 8 insertions, 0 deletions
diff --git a/sqlparse/lexer.py b/sqlparse/lexer.py
index 7dd013e..cf931e9 100644
--- a/sqlparse/lexer.py
+++ b/sqlparse/lexer.py
@@ -187,6 +187,7 @@ class _Lexer(object):
# IN is special, it may be followed by a parenthesis, but
# is never a functino, see issue183
(r'in\b(?=[ (])?', tokens.Keyword),
+ (r'USING(?=\()', is_keyword),
(r'[^\W\d_]\w*(?=[.(])', tokens.Name), # see issue39
(r'[-]?0x[0-9a-fA-F]+', tokens.Number.Hexadecimal),
(r'[-]?[0-9]*(\.[0-9]+)?[eE][-]?[0-9]+', tokens.Number.Float),
diff --git a/tests/test_grouping.py b/tests/test_grouping.py
index 7dc1269..89610f8 100644
--- a/tests/test_grouping.py
+++ b/tests/test_grouping.py
@@ -380,6 +380,13 @@ def test_begin():
assert isinstance(p.tokens[0], sql.Begin)
+def test_keyword_followed_by_parenthesis():
+ p = sqlparse.parse('USING(somecol')[0]
+ assert len(p.tokens) == 3
+ assert p.tokens[0].ttype == T.Keyword
+ assert p.tokens[1].ttype == T.Punctuation
+
+
def test_nested_begin():
p = sqlparse.parse('BEGIN foo BEGIN bar END END')[0]
assert len(p.tokens) == 1