summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sqlparse/engine/grouping.py3
-rw-r--r--tests/test_grouping.py12
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]