# HG changeset patch # User Sylvain Thénault <sylvain.thenault@logilab.fr> # Date 1276077774 -7200 # Wed Jun 09 12:02:54 2010 +0200 # Branch stable # Node ID db05b88729b2113598f0089a1c1272aa9e131dca # Parent bf5d7daf7cc937d59eded71238d9fa210893c69b IS operator doesn't exists anymore: useless and cause ambiguité with 'is' relation diff --git a/nodes.py b/nodes.py --- a/nodes.py +++ b/nodes.py @@ -466,6 +466,8 @@ self.optional= value +OPERATORS = frozenset(('=', '<', '<=', '>=', '>', 'ILIKE', 'LIKE')) + class Comparison(HSMixin, Node): """handle comparisons: @@ -477,10 +479,7 @@ Node.__init__(self) if operator == '~=': operator = 'ILIKE' - elif operator == '=' and isinstance(value, Constant) and \ - value.type is None: - operator = 'IS' - assert operator in ('=', '<', '<=', '>=', '>', 'ILIKE', 'LIKE', 'IS'), operator + assert operator in OPERATORS, operator self.operator = operator.encode() if value is not None: self.append(value) @@ -502,7 +501,7 @@ return '%s %s %s' % (self.children[0].as_string(encoding, kwargs), self.operator.encode(), self.children[1].as_string(encoding, kwargs)) - if self.operator in ('=', 'IS'): + if self.operator == '=': return self.children[0].as_string(encoding, kwargs) return '%s %s' % (self.operator.encode(), self.children[0].as_string(encoding, kwargs)) diff --git a/parser.g b/parser.g --- a/parser.g +++ b/parser.g @@ -88,7 +88,7 @@ token FALSE: r'(?i)FALSE' token NULL: r'(?i)NULL' token EXISTS: r'(?i)EXISTS' - token CMP_OP: r'(?i)<=|<|>=|>|~=|=|LIKE|ILIKE|IS' + token CMP_OP: r'(?i)<=|<|>=|>|~=|=|LIKE|ILIKE' token ADD_OP: r'\+|-' token MUL_OP: r'\*|/' token FUNCTION: r'[A-Za-z_]+\s*(?=\()' diff --git a/parser.py b/parser.py --- a/parser.py +++ b/parser.py @@ -109,7 +109,7 @@ ('FALSE', re.compile('(?i)FALSE')), ('NULL', re.compile('(?i)NULL')), ('EXISTS', re.compile('(?i)EXISTS')), - ('CMP_OP', re.compile('(?i)<=|<|>=|>|~=|=|LIKE|ILIKE|IS')), + ('CMP_OP', re.compile('(?i)<=|<|>=|>|~=|=|LIKE|ILIKE')), ('ADD_OP', re.compile('\\+|-')), ('MUL_OP', re.compile('\\*|/')), ('FUNCTION', re.compile('[A-Za-z_]+\\s*(?=\\()')),