diff options
author | Andi Albrecht <albrecht.andi@gmail.com> | 2013-03-18 06:11:46 +0100 |
---|---|---|
committer | Andi Albrecht <albrecht.andi@gmail.com> | 2013-03-18 06:11:46 +0100 |
commit | abb8ce291e275e9879154ee0f22e881de8cf0ca4 (patch) | |
tree | e0d9b6cb7aa9eae98f04e24d631d7584171f8885 /sqlparse/engine | |
parent | 58134785ce80f43529c328e1c36a45739f3d84eb (diff) | |
download | sqlparse-abb8ce291e275e9879154ee0f22e881de8cf0ca4.tar.gz |
Fix internals of _group_left_right, avoid identifying keywords as aliased identifiers.
Diffstat (limited to 'sqlparse/engine')
-rw-r--r-- | sqlparse/engine/grouping.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/sqlparse/engine/grouping.py b/sqlparse/engine/grouping.py index 0b64d21..0f39dd2 100644 --- a/sqlparse/engine/grouping.py +++ b/sqlparse/engine/grouping.py @@ -15,7 +15,7 @@ def _group_left_right(tlist, ttype, value, cls, check_right=lambda t: True, check_left=lambda t: True, include_semicolon=False): - [_group_left_right(sgroup, ttype, value, cls, check_right, + [_group_left_right(sgroup, ttype, value, cls, check_right, check_left, include_semicolon) for sgroup in tlist.get_sublists() if not isinstance(sgroup, cls)] idx = 0 @@ -26,7 +26,7 @@ def _group_left_right(tlist, ttype, value, cls, if right is None or not check_right(right): token = tlist.token_next_match(tlist.token_index(token) + 1, ttype, value) - elif left is None or not check_right(left): + elif left is None or not check_left(left): token = tlist.token_next_match(tlist.token_index(token) + 1, ttype, value) else: @@ -105,8 +105,13 @@ def group_as(tlist): # Currently limited to DML/DDL. Maybe additional more non SQL reserved # keywords should appear here (see issue8). return not token.ttype in (T.DML, T.DDL) + + def _left_valid(token): + return token.ttype is not T.Keyword + _group_left_right(tlist, T.Keyword, 'AS', sql.Identifier, - check_right=_right_valid) + check_right=_right_valid, + check_left=_left_valid) def group_assignment(tlist): |