non-assocative operators

Issue #1984 resolved
Mike Bayer repo owner created an issue

wowee:

from sqlalchemy.sql import column
from sqlalchemy import Integer

x = column('x', Integer)
y = column('y', Integer)
z = column('z', Integer)

expr = x - (y - z)
print expr

assuming you fix #1983:

x - y - z

bzzt

probable fix:

--- a/lib/sqlalchemy/sql/expression.py  Wed Nov 24 12:27:22 2010 -0500
+++ b/lib/sqlalchemy/sql/expression.py  Wed Nov 24 18:21:38 2010 -0500
@@ -37,7 +37,7 @@
 functions = util.importlater("sqlalchemy.sql", "functions")
 sqlutil = util.importlater("sqlalchemy.sql", "util")
 sqltypes = util.importlater("sqlalchemy", "types")
-default = util.importlater("sqlalchemy.engine", "default")
+default = util.importlater("sqlalchemy.engine.default")

 __all__ = [
     'Alias', 'ClauseElement', 'ColumnCollection', 'ColumnElement',
@@ -2989,6 +2989,8 @@
         if self.operator is not against and \
                 operators.is_precedent(self.operator, against):
             return _Grouping(self)
+        elif self.operator is against and not operators.is_commutative(self.operator):
+            return _Grouping(self)
         else:
             return self

Comments (3)

  1. Log in to comment