diff options
| -rw-r--r-- | sqlparse/engine/grouping.py | 3 | ||||
| -rw-r--r-- | tests/test_grouping.py | 12 |
2 files changed, 14 insertions, 1 deletions
diff --git a/sqlparse/engine/grouping.py b/sqlparse/engine/grouping.py index 41e123e..8068015 100644 --- a/sqlparse/engine/grouping.py +++ b/sqlparse/engine/grouping.py @@ -96,7 +96,8 @@ def group_comparsion(tlist): def group_case(tlist): - _group_matching(tlist, T.Keyword, 'CASE', T.Keyword, 'END', Case, True) + _group_matching(tlist, T.Keyword, 'CASE', T.Keyword, 'END', Case, + include_semicolon=True, recurse=True) def group_identifier(tlist): diff --git a/tests/test_grouping.py b/tests/test_grouping.py index 26e5d10..f3617ad 100644 --- a/tests/test_grouping.py +++ b/tests/test_grouping.py @@ -55,6 +55,18 @@ class TestGrouping(TestCaseBase): self.assertEqual(t.get_name(), '*') self.assertEqual(t.is_wildcard(), True) + def test_identifier_list(self): + p = sqlparse.parse('a, b, c')[0] + self.assert_(isinstance(p.tokens[0], IdentifierList)) + p = sqlparse.parse('(a, b, c)')[0] + self.assert_(isinstance(p.tokens[0].tokens[1], IdentifierList)) + + def test_identifier_list_case(self): + p = sqlparse.parse('a, case when 1 then 2 else 3 end as b, c')[0] + self.assert_(isinstance(p.tokens[0], IdentifierList)) + p = sqlparse.parse('(a, case when 1 then 2 else 3 end as b, c)')[0] + self.assert_(isinstance(p.tokens[0].tokens[1], IdentifierList)) + def test_where(self): s = 'select * from foo where bar = 1 order by id desc' p = sqlparse.parse(s)[0] |
