From 848973f63de36ff3f90a8b7412dc3ee55fbd95f0 Mon Sep 17 00:00:00 2001 From: Ryan Wooden Date: Wed, 21 Oct 2015 07:33:56 -0300 Subject: Limit number of tokens checked in group_identifier. This significantly improves performance when grouping a large list of IDs. --- sqlparse/engine/grouping.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'sqlparse/engine') diff --git a/sqlparse/engine/grouping.py b/sqlparse/engine/grouping.py index a317044..b30e564 100644 --- a/sqlparse/engine/grouping.py +++ b/sqlparse/engine/grouping.py @@ -188,9 +188,12 @@ def group_identifier(tlist): t1 = tl.token_next_by_type( i, (T.String.Symbol, T.Name, T.Literal.Number.Integer, T.Literal.Number.Float)) - t2 = tl.token_next_by_instance(i, (sql.Function, sql.Parenthesis)) + + i1 = tl.token_index(t1) if t1 else None + t2_end = None if i1 is None else i1 + 1 + t2 = tl.token_next_by_instance(i, (sql.Function, sql.Parenthesis), end=t2_end) + if t1 and t2: - i1 = tl.token_index(t1) i2 = tl.token_index(t2) if i1 > i2: return t2 -- cgit v1.2.1