From cb4aff931dbc2027a9e504368a128d1fbbc5b1d8 Mon Sep 17 00:00:00 2001 From: spigwitmer Date: Wed, 5 Feb 2014 08:49:15 -0800 Subject: Fix Function.get_parameters() returning empty list for SQL functions that have a single nested function as a param --- sqlparse/sql.py | 6 +++--- tests/test_parse.py | 5 +++++ 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/sqlparse/sql.py b/sqlparse/sql.py index 4664142..b8e4090 100644 --- a/sqlparse/sql.py +++ b/sqlparse/sql.py @@ -626,9 +626,9 @@ class Function(TokenList): for t in parenthesis.tokens: if isinstance(t, IdentifierList): return t.get_identifiers() - elif isinstance(t, Identifier): - return [t,] - elif t.ttype in T.Literal: + elif isinstance(t, Identifier) or \ + isinstance(t, Function) or \ + t.ttype in T.Literal: return [t,] return [] diff --git a/tests/test_parse.py b/tests/test_parse.py index 27da5b5..6d7f7df 100644 --- a/tests/test_parse.py +++ b/tests/test_parse.py @@ -121,6 +121,11 @@ class SQLParseTest(TestCaseBase): self.assertEqual(len(t), 1) self.assert_(t[0].ttype is T.Number.Integer) + def test_nested_function(self): + t = sqlparse.parse('foo(bar(5))')[0].tokens[0].get_parameters() + self.assertEqual(len(t), 1) + self.assert_(type(t[0]) is sqlparse.sql.Function) + def test_quoted_identifier(): t = sqlparse.parse('select x.y as "z" from foo')[0].tokens -- cgit v1.2.1