]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Pulled out values test that uses boolean evaluation in the SELECT in order to appropr...
authorMichael Trier <mtrier@gmail.com>
Fri, 14 Nov 2008 03:57:07 +0000 (03:57 +0000)
committerMichael Trier <mtrier@gmail.com>
Fri, 14 Nov 2008 03:57:07 +0000 (03:57 +0000)
lib/sqlalchemy/databases/mssql.py
test/orm/query.py

index f9d8b8f1f98233e19dbe409e42409d00090c9929..ac803cfd778606d9d012c1d8669642587cae822d 100644 (file)
@@ -1016,9 +1016,10 @@ class MSSQLCompiler(compiler.DefaultCompiler):
         return super(MSSQLCompiler, self).visit_column(column, result_map=result_map, **kwargs)
 
     def visit_binary(self, binary, **kwargs):
-        """Move bind parameters to the right-hand side of an operator, where possible."""
-        #import pdb
-        #pdb.set_trace()
+        """Move bind parameters to the right-hand side of an operator, where
+        possible.
+
+        """
         if isinstance(binary.left, expression._BindParamClause) and binary.operator == operator.eq \
             and not isinstance(binary.right, expression._BindParamClause):
             return self.process(expression._BinaryExpression(binary.right, binary.left, binary.operator), **kwargs)
index 556fc6ceacfd893d6fb13cadc2da925516ae72f6..4121ac0e1913fe84297239f1d1c7777e63485f17 100644 (file)
@@ -1495,9 +1495,6 @@ class MixedEntitiesTest(QueryTest):
         q2 = q.order_by(User.id).values(User.name, User.name + " " + cast(User.id, String))
         self.assertEquals(list(q2), [(u'jack', u'jack 7'), (u'ed', u'ed 8'), (u'fred', u'fred 9'), (u'chuck', u'chuck 10')])
         
-        q2 = q.group_by([User.name.like('%j%')]).order_by(desc(User.name.like('%j%'))).values(User.name.like('%j%'), func.count(User.name.like('%j%')))
-        self.assertEquals(list(q2), [(True, 1), (False, 3)])
-        
         q2 = q.join('addresses').filter(User.name.like('%e%')).order_by(User.id, Address.id).values(User.name, Address.email_address)
         self.assertEquals(list(q2), [(u'ed', u'ed@wood.com'), (u'ed', u'ed@bettyboop.com'), (u'ed', u'ed@lala.com'), (u'fred', u'fred@fred.com')])
         
@@ -1525,7 +1522,16 @@ class MixedEntitiesTest(QueryTest):
         # whereas this uses users.c.xxx, is not aliased and creates a new join
         q2 = q.select_from(sel).filter(users.c.id==8).filter(users.c.id>sel.c.id).values(users.c.name, sel.c.name, User.name)
         self.assertEquals(list(q2), [(u'ed', u'jack', u'jack')])
-    
+
+    @testing.fails_on('mssql')
+    def test_values_with_boolean_selects(self):
+        """Tests a values clause that works with select boolean evaluations"""
+        sess = create_session()
+
+        q = sess.query(User)
+        q2 = q.group_by([User.name.like('%j%')]).order_by(desc(User.name.like('%j%'))).values(User.name.like('%j%'), func.count(User.name.like('%j%')))
+        self.assertEquals(list(q2), [(True, 1), (False, 3)])
+
     def test_scalar_subquery(self):
         """test that a subquery constructed from ORM attributes doesn't leak out 
         those entities to the outermost query.