Skip to content

Commit 4140d2e

Browse files
fredywandialbrecht
authored andcommitted
Fix from( parsing issue (fixes andialbrecht#446)
1 parent afd05ee commit 4140d2e

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

sqlparse/keywords.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def is_keyword(value):
4747
# see https://github.com/andialbrecht/sqlparse/pull/64
4848
# IN is special, it may be followed by a parenthesis, but
4949
# is never a function, see issue183
50-
(r'(CASE|IN|VALUES|USING)\b', tokens.Keyword),
50+
(r'(CASE|IN|VALUES|USING|FROM)\b', tokens.Keyword),
5151

5252
(r'(@|##|#)[A-ZÀ-Ü]\w+', tokens.Name),
5353

tests/test_parse.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,24 @@ def test_get_real_name():
435435
assert 't' == stmts[0].get_alias()
436436

437437

438+
def test_from_subquery():
439+
# issue 446
440+
s = u'from(select 1)'
441+
stmts = sqlparse.parse(s)
442+
assert len(stmts) == 1
443+
assert len(stmts[0].tokens) == 2
444+
assert stmts[0].tokens[0].value == 'from'
445+
assert stmts[0].tokens[0].ttype == T.Keyword
446+
447+
s = u'from (select 1)'
448+
stmts = sqlparse.parse(s)
449+
assert len(stmts) == 1
450+
assert len(stmts[0].tokens) == 3
451+
assert stmts[0].tokens[0].value == 'from'
452+
assert stmts[0].tokens[0].ttype == T.Keyword
453+
assert stmts[0].tokens[1].ttype == T.Whitespace
454+
455+
438456
def test_parenthesis():
439457
tokens = sqlparse.parse("(\n\n1\n\n)")[0].tokens[0].tokens
440458
assert list(map(lambda t: t.ttype, tokens)) == [T.Punctuation,

0 commit comments

Comments
 (0)