summaryrefslogtreecommitdiff
path: root/sqlparse/engine
diff options
context:
space:
mode:
authorAndi Albrecht <albrecht.andi@gmail.com>2013-04-05 05:46:41 +0200
committerAndi Albrecht <albrecht.andi@gmail.com>2013-04-05 05:46:41 +0200
commit341143e294c842d700dfd3c6a6224c05d8b8b8d6 (patch)
treef58da4333925db8f320ffae40d219a758786a234 /sqlparse/engine
parentbd530692165729051a4caf28934a6e9ad32fbc3e (diff)
downloadsqlparse-341143e294c842d700dfd3c6a6224c05d8b8b8d6.tar.gz
Add order criterion to identifier in ORDER BY clause (fixes #89).
Diffstat (limited to 'sqlparse/engine')
-rw-r--r--sqlparse/engine/grouping.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/sqlparse/engine/grouping.py b/sqlparse/engine/grouping.py
index 0f39dd2..d03e483 100644
--- a/sqlparse/engine/grouping.py
+++ b/sqlparse/engine/grouping.py
@@ -332,6 +332,20 @@ def group_functions(tlist):
token = tlist.token_next_by_type(idx, T.Name)
+def group_order(tlist):
+ idx = 0
+ token = tlist.token_next_by_type(idx, T.Keyword.Order)
+ while token:
+ prev = tlist.token_prev(token)
+ if isinstance(prev, sql.Identifier):
+ ido = tlist.group_tokens(sql.Identifier,
+ tlist.tokens_between(prev, token))
+ idx = tlist.token_index(ido) + 1
+ else:
+ idx = tlist.token_index(token) + 1
+ token = tlist.token_next_by_type(idx, T.Keyword.Order)
+
+
def group(tlist):
for func in [
group_comments,
@@ -340,6 +354,7 @@ def group(tlist):
group_where,
group_case,
group_identifier,
+ group_order,
group_typecasts,
group_as,
group_aliased,