Skip to content

Commit 8147927

Browse files
committed
Merge pull request andialbrecht#143 from fusionbox/master
Handle modulo operator without spaces
2 parents 8f5f638 + 8ffe95a commit 8147927

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

sqlparse/lexer.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,8 @@ class Lexer(object):
180180
(r'\$([^\W\d]\w*)?\$', tokens.Name.Builtin),
181181
(r'\?{1}', tokens.Name.Placeholder),
182182
(r'%\(\w+\)s', tokens.Name.Placeholder),
183-
(r'[$:?%]\w+', tokens.Name.Placeholder),
183+
(r'%s', tokens.Name.Placeholder),
184+
(r'[$:?]\w+', tokens.Name.Placeholder),
184185
# FIXME(andi): VALUES shouldn't be listed here
185186
# see https://github.com/andialbrecht/sqlparse/pull/64
186187
(r'VALUES', tokens.Keyword),

tests/test_parse.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,10 @@ def _get_tokens(sql):
9999
self.assert_(t[-1].ttype is sqlparse.tokens.Name.Placeholder)
100100
self.assertEqual(t[-1].value, '$a')
101101

102+
def test_modulo_not_placeholder(self):
103+
tokens = list(sqlparse.lexer.tokenize('x %3'))
104+
self.assertEqual(tokens[2][0], sqlparse.tokens.Operator)
105+
102106
def test_access_symbol(self): # see issue27
103107
t = sqlparse.parse('select a.[foo bar] as foo')[0].tokens
104108
self.assert_(isinstance(t[-1], sqlparse.sql.Identifier))

0 commit comments

Comments
 (0)