diff options
| author | Andi Albrecht <albrecht.andi@gmail.com> | 2009-04-24 15:16:49 +0200 |
|---|---|---|
| committer | Andi Albrecht <albrecht.andi@gmail.com> | 2009-04-24 15:16:49 +0200 |
| commit | 1fed923e6ccc06b09417e3026d8694328c1dd68f (patch) | |
| tree | 205e3ea59e25523bab50e0cd5fab568111643a82 | |
| parent | be3b2d73ef118fa5bbf1549e2f9a71baae709cea (diff) | |
| download | sqlparse-1fed923e6ccc06b09417e3026d8694328c1dd68f.tar.gz | |
Recurse into subgroups when grouping case statements.
| -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] |
