summaryrefslogtreecommitdiff
path: root/sqlparse/engine
diff options
context:
space:
mode:
Diffstat (limited to 'sqlparse/engine')
-rw-r--r--sqlparse/engine/grouping.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/sqlparse/engine/grouping.py b/sqlparse/engine/grouping.py
index fd6af67..181dae4 100644
--- a/sqlparse/engine/grouping.py
+++ b/sqlparse/engine/grouping.py
@@ -11,6 +11,7 @@ from sqlparse.sql import *
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,
include_semicolon) for sgroup in tlist.get_sublists()
@@ -20,8 +21,10 @@ def _group_left_right(tlist, ttype, value, cls,
while token:
right = tlist.token_next(tlist.token_index(token))
left = tlist.token_prev(tlist.token_index(token))
- if (right is None or not check_right(right)
- or left is None):
+ 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):
token = tlist.token_next_match(tlist.token_index(token)+1,
ttype, value)
else:
@@ -92,7 +95,12 @@ def group_assignment(tlist):
include_semicolon=True)
def group_comparsion(tlist):
- _group_left_right(tlist, T.Operator, None, Comparsion)
+ def _parts_valid(token):
+ return (token.ttype in (T.String.Symbol, T.Name, T.Number,
+ T.Number.Integer, T.Literal)
+ or isinstance(token, (Identifier,)))
+ _group_left_right(tlist, T.Operator, None, Comparsion,
+ check_left=_parts_valid, check_right=_parts_valid)
def group_case(tlist):