Deprecation warning when using multiple fields ordering in declarative

Issue #1226 resolved
Former user created an issue

At least using declarative, I get a deprecation warning from a relation that has a multiple fields order_by clause.

This is a test case:

Index: test/ext/declarative.py
===================================================================
--- test/ext/declarative.py     (revisione 5292)
+++ test/ext/declarative.py     (copia locale)
 -262,6 +262,34 @@
             Address(email='two'),
         ])])

+    def test_order_by_multi(self):
+        class Address(Base, ComparableEntity):
+            __tablename__ = 'addresses'
+
+            id = Column('id', Integer, primary_key=True)
+            email = Column('email', String(50))
+            user_id = Column('user_id', Integer, ForeignKey('users.id'))
+
+        class User(Base, ComparableEntity):
+            __tablename__ = 'users'
+
+            id = Column('id', Integer, primary_key=True)
+            name = Column('name', String(50))
+            addresses = relation("Address", order_by=(Address.email, Address.id))
+
+        Base.metadata.create_all()
+        u1 = User(name='u1', addresses=[           Address(email='two'),
+            Address(email='one'),
+        ](
+))
+        sess = create_session()
+        sess.save(u1)
+        sess.flush()
+        sess.clear()
+        import warnings
+        warnings.simplefilter('error')
+        u = sess.query(User).filter(User.name == 'u1').one()
+        a = u.addresses

     def test_as_declarative(self):
         class User(ComparableEntity):

and here is a possible fix, but I couldn't run all tests against it:

Index: lib/sqlalchemy/orm/strategies.py
===================================================================
--- lib/sqlalchemy/orm/strategies.py    (revisione 5292)
+++ lib/sqlalchemy/orm/strategies.py    (copia locale)
 -546,7 +546,7 @@
             return q.get(ident)

         if prop.order_by:
-            q = q.order_by(prop.order_by)
+            q = q.order_by(*prop.order_by)

         if self.options:
             q = q._conditional_options(*self.options)

bye, lele.

Comments (2)

  1. Log in to comment