]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
fixed/added coverage for list extension; [ticket:855]
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 6 Nov 2007 19:19:30 +0000 (19:19 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 6 Nov 2007 19:19:30 +0000 (19:19 +0000)
lib/sqlalchemy/orm/strategies.py
test/orm/eager_relations.py

index be783fb3999f9c14847ecc2345fe8b4175e1e61c..aea1ffdda65e105b216ebfde5ff8542adc33670b 100644 (file)
@@ -533,14 +533,14 @@ class EagerLoader(AbstractRelationLoader):
         if self.secondaryjoin is not None:
             context.eager_joins = sql.outerjoin(towrap, clauses.secondary, clauses.primaryjoin).outerjoin(clauses.alias, clauses.secondaryjoin)
             if self.order_by is False and self.secondary.default_order_by() is not None:
-                context.eager_order_by.append(*clauses.secondary.default_order_by())
+                context.eager_order_by += clauses.secondary.default_order_by()
         else:
             context.eager_joins = towrap.outerjoin(clauses.alias, clauses.primaryjoin)
             if self.order_by is False and clauses.alias.default_order_by() is not None:
-                context.eager_order_by.append(*clauses.alias.default_order_by())
+                context.eager_order_by += clauses.alias.default_order_by()
 
         if clauses.order_by:
-            context.eager_order_by.append(*util.to_list(clauses.order_by))
+            context.eager_order_by += util.to_list(clauses.order_by)
         
         for value in self.select_mapper.iterate_properties:
             context.exec_with_path(self.select_mapper, value.key, value.setup, context, parentclauses=clauses, parentmapper=self.select_mapper)
index cd971a7f021f6dadbf8b7eff2fec251b0d6b22f5..a091a42ea3dec8981b0ca709fbfa20bbcfc15d46 100644 (file)
@@ -56,6 +56,26 @@ class EagerTest(QueryTest):
             User(id=10, addresses=[])
         ] == q.all()
 
+    def test_orderby_multi(self):
+        mapper(User, users, properties = {
+            'addresses':relation(mapper(Address, addresses), lazy=False, order_by=[addresses.c.email_address, addresses.c.id]),
+        })
+        q = create_session().query(User)
+        assert [
+            User(id=7, addresses=[
+                Address(id=1)
+            ]), 
+            User(id=8, addresses=[
+                Address(id=3, email_address='ed@bettyboop.com'),
+                Address(id=4, email_address='ed@lala.com'),
+                Address(id=2, email_address='ed@wood.com')
+            ]), 
+            User(id=9, addresses=[
+                Address(id=5)
+            ]), 
+            User(id=10, addresses=[])
+        ] == q.all()
+
     def test_orderby_secondary(self):
         """tests that a regular mapper select on a single table can order by a relation to a second table"""