]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Deprecate Mapper.order_by
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 19 Apr 2016 20:11:23 +0000 (16:11 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 19 Apr 2016 22:17:45 +0000 (18:17 -0400)
This is an old parameter no longer relevant to how SQLAlchemy
works, once the Query object was introduced.  By deprecating it
we establish that we aren't supporting non-working use cases
and that we encourage applications to move off of the use of this
parameter.

Fixes: #3394
Change-Id: I25b9a38142a1537bbcb27d3e8b66a8b265140072

18 files changed:
doc/build/changelog/changelog_11.rst
doc/build/changelog/migration_11.rst
lib/sqlalchemy/orm/mapper.py
test/aaa_profiling/test_memusage.py
test/ext/declarative/test_reflection.py
test/orm/inheritance/_poly_fixtures.py
test/orm/inheritance/test_poly_linked_list.py
test/orm/inheritance/test_polymorphic_rel.py
test/orm/test_association.py
test/orm/test_deferred.py
test/orm/test_eager_relations.py
test/orm/test_froms.py
test/orm/test_joins.py
test/orm/test_mapper.py
test/orm/test_onetoone.py
test/orm/test_relationships.py
test/orm/test_subquery_relations.py
test/orm/test_unitofwork.py

index 959bf9ee4d068450b5d2fe7b82060da3ec0536a7..cb42d61a4cbbe94c64d7b2ec2034aff2951bec4c 100644 (file)
 .. changelog::
     :version: 1.1.0b1
 
+    .. change::
+        :tags: change, orm
+        :tickets: 3394
+
+        The :paramref:`.Mapper.order_by` parameter is deprecated.
+        This is an old parameter no longer relevant to how SQLAlchemy
+        works, once the Query object was introduced.  By deprecating it
+        we establish that we aren't supporting non-working use cases
+        and that we encourage applications to move off of the use of this
+        parameter.
+
+        .. seealso::
+
+            :ref:`change_3394`
+
     .. change::
         :tags: feature, postgresql
 
index 2991d14144766f0c96c4d856c94b906ef8994349..7dd0717821750346987e7e67d1c9bd8d61f07ccc 100644 (file)
@@ -900,6 +900,24 @@ when a non-eagerly-loaded attribute is accessed for read::
 
 :ticket:`3512`
 
+.. _change_3394:
+
+Mapper.order_by is deprecated
+-----------------------------
+
+This old parameter from the very first versions of SQLAlchemy was part of
+the original design of the ORM which featured the :class:`.Mapper` object
+as a public-facing query structure.   This role has long since been replaced
+by the :class:`.Query` object, where we use :meth:`.Query.order_by` to
+indicate the ordering of results in a way that works consistently for any
+combination of SELECT statements, entities and SQL expressions.   There are
+many areas in which :paramref:`.Mapper.order_by` doesn't work as expected
+(or what would be expected is not clear), such as when queries are combined
+into unions; these cases are not supported.
+
+
+:ticket:`3394`
+
 New Features and Improvements - Core
 ====================================
 
index 2236b2f76172d27db8e8ef40a1999fec92e5e9af..06d903e9cfbd4baf8d620ccb5fd88ad1c7d10600 100644 (file)
@@ -320,6 +320,10 @@ class Mapper(InspectionAttr):
            ordering for entities.  By default mappers have no pre-defined
            ordering.
 
+           .. deprecated:: 1.1 The :paramref:`.Mapper.order_by` parameter
+              is deprecated.   Use :meth:`.Query.order_by` to determine the
+              ordering of a result set.
+
         :param passive_deletes: Indicates DELETE behavior of foreign key
            columns when a joined-table inheritance entity is being deleted.
            Defaults to ``False`` for a base mapper; for an inheriting mapper,
@@ -564,6 +568,11 @@ class Mapper(InspectionAttr):
 
         if order_by is not False:
             self.order_by = util.to_list(order_by)
+            util.warn_deprecated(
+                "Mapper.order_by is deprecated."
+                "Use Query.order_by() in order to affect the ordering of ORM "
+                "result sets.")
+
         else:
             self.order_by = order_by
 
index 63883daac6bb785a5588ea1981a1767e34668b3c..6529b7a1da7ee9b2266a8e8592b4cd47026d41ed 100644 (file)
@@ -150,8 +150,7 @@ class MemUsageTest(EnsureZeroed):
 
         m1 = mapper(A, table1, properties={
             "bs": relationship(B, cascade="all, delete",
-                               order_by=table2.c.col1)},
-                    order_by=table1.c.col1)
+                               order_by=table2.c.col1)})
         m2 = mapper(B, table2)
 
         m3 = mapper(A, table1, non_primary=True)
@@ -170,7 +169,7 @@ class MemUsageTest(EnsureZeroed):
             sess.flush()
             sess.expunge_all()
 
-            alist = sess.query(A).all()
+            alist = sess.query(A).order_by(A.col1).all()
             eq_(
                 [
                     A(col2="a1", bs=[B(col2="b1"), B(col2="b2")]),
@@ -220,7 +219,6 @@ class MemUsageTest(EnsureZeroed):
         m1 = mapper(A, table1, properties={
             "bs": relationship(B, cascade="all, delete",
                                order_by=table2.c.col1)},
-                    order_by=table1.c.col1,
                     _compiled_cache_size=10
                     )
         m2 = mapper(B, table2,
@@ -249,7 +247,7 @@ class MemUsageTest(EnsureZeroed):
             sess.flush()
             sess.expunge_all()
 
-            alist = sess.query(A).all()
+            alist = sess.query(A).order_by(A.col1).all()
             eq_(
                 [
                     A(col2="a1", bs=[B(col2="b1"), B(col2="b2")]),
index c7f7bc05d133833bef5e25dfaefdda983bede515..84b675b3d03ac3f56af3e4bc7a2e395f2c558cfb 100644 (file)
@@ -281,7 +281,7 @@ class DeferredReflectionTest(DeferredReflectBase):
             @decl.declared_attr
             def __mapper_args__(cls):
                 return {
-                    "order_by": cls.__table__.c.name
+                    "primary_key": cls.__table__.c.id
                 }
 
         decl.DeferredReflection.prepare(testing.db)
@@ -294,7 +294,7 @@ class DeferredReflectionTest(DeferredReflectBase):
         ])
         sess.commit()
         eq_(
-            sess.query(User).all(),
+            sess.query(User).order_by(User.name).all(),
             [
                 User(name='A'),
                 User(name='C'),
index 689d19d338c91143e0a97a38a84f678906ef8d18..c70cd90622129ce33009d220b245caec889aedf5 100644 (file)
@@ -250,7 +250,6 @@ class _PolymorphicFixtureBase(fixtures.MappedTest, AssertsCompiledSQL):
             with_polymorphic=person_with_polymorphic,
             polymorphic_on=people.c.type,
             polymorphic_identity='person',
-            order_by=people.c.person_id,
             properties={
                 'paperwork':relationship(
                     Paperwork,
index f131feca7f052eea78796e0c6c707d90c6b35a5e..aead3e00b6f64b887a5178da368135fb72858fa9 100644 (file)
@@ -77,8 +77,7 @@ class PolymorphicCircularTest(fixtures.MappedTest):
                                         backref=backref('prev', foreignkey=join.c.id, uselist=False),
                                         uselist=False, primaryjoin=join.c.id==join.c.related_id),
                                     'data':relationship(mapper(Data, data))
-                                    },
-                            order_by=table1.c.id)
+                                    })
             configure_mappers()
             assert False
         except:
@@ -100,8 +99,7 @@ class PolymorphicCircularTest(fixtures.MappedTest):
                                    backref=backref('prev', remote_side=table1.c.id, uselist=False),
                                    uselist=False, primaryjoin=table1.c.id==table1.c.related_id),
                                'data':relationship(mapper(Data, data), lazy='joined', order_by=data.c.id)
-                                },
-                                order_by=table1.c.id
+                                }
                         )
 
         table1b_mapper = mapper(Table1B, inherits=table1_mapper, polymorphic_identity='table1b')
@@ -168,7 +166,8 @@ class PolymorphicCircularTest(fixtures.MappedTest):
 
         # clear and query forwards
         sess.expunge_all()
-        node = sess.query(Table1).filter(Table1.id==t.id).first()
+        node = sess.query(Table1).order_by(Table1.id).\
+            filter(Table1.id==t.id).first()
         assertlist = []
         while (node):
             assertlist.append(node)
@@ -180,7 +179,8 @@ class PolymorphicCircularTest(fixtures.MappedTest):
 
         # clear and query backwards
         sess.expunge_all()
-        node = sess.query(Table1).filter(Table1.id==obj.id).first()
+        node = sess.query(Table1).order_by(Table1.id).\
+            filter(Table1.id==obj.id).first()
         assertlist = []
         while (node):
             assertlist.insert(0, node)
index c82c30d5929ad8823d5f84f9cfa2473b095535ab..79278ba3e3eb9a916da542294d5bb2d242a5e5df 100644 (file)
@@ -47,7 +47,9 @@ class _PolymorphicTestBase(object):
 
         sess = create_session()
         def go():
-            eq_(sess.query(Person).all(), all_employees)
+            eq_(
+                sess.query(Person).order_by(Person.person_id).all(),
+                all_employees)
         count = {'':14, 'Polymorphic':9}.get(self.select_type, 10)
         self.assert_sql_count(testing.db, go, count)
 
@@ -57,7 +59,7 @@ class _PolymorphicTestBase(object):
 
         sess = create_session()
         def go():
-            eq_(sess.query(Person)
+            eq_(sess.query(Person).order_by(Person.person_id)
                     .options(joinedload(Engineer.machines))[1:3],
                 all_employees[1:3])
         count = {'':6, 'Polymorphic':3}.get(self.select_type, 4)
@@ -66,7 +68,7 @@ class _PolymorphicTestBase(object):
     def test_primary_eager_aliasing_two(self):
         sess = create_session()
         def go():
-            eq_(sess.query(Person)
+            eq_(sess.query(Person).order_by(Person.person_id)
                     .options(subqueryload(Engineer.machines)).all(),
                 all_employees)
         count = {'':14, 'Polymorphic':7}.get(self.select_type, 8)
@@ -79,6 +81,7 @@ class _PolymorphicTestBase(object):
         sess = create_session()
         def go():
             eq_(sess.query(Person).with_polymorphic('*')
+                    .order_by(Person.person_id)
                     .options(joinedload(Engineer.machines))[1:3],
                 all_employees[1:3])
         self.assert_sql_count(testing.db, go, 3)
@@ -183,6 +186,7 @@ class _PolymorphicTestBase(object):
     def test_join_from_polymorphic_nonaliased_two(self):
         sess = create_session()
         eq_(sess.query(Person)
+                .order_by(Person.person_id)
                 .join('paperwork', aliased=False)
                 .filter(Paperwork.description.like('%#2%')).all(),
             [e1, m1])
@@ -190,6 +194,7 @@ class _PolymorphicTestBase(object):
     def test_join_from_polymorphic_nonaliased_three(self):
         sess = create_session()
         eq_(sess.query(Engineer)
+                .order_by(Person.person_id)
                 .join('paperwork', aliased=False)
                 .filter(Paperwork.description.like('%#2%')).all(),
             [e1])
@@ -197,6 +202,7 @@ class _PolymorphicTestBase(object):
     def test_join_from_polymorphic_nonaliased_four(self):
         sess = create_session()
         eq_(sess.query(Person)
+                .order_by(Person.person_id)
                 .join('paperwork', aliased=False)
                 .filter(Person.name.like('%dog%'))
                 .filter(Paperwork.description.like('%#2%')).all(),
@@ -205,6 +211,7 @@ class _PolymorphicTestBase(object):
     def test_join_from_polymorphic_aliased_one(self):
         sess = create_session()
         eq_(sess.query(Person)
+                .order_by(Person.person_id)
                 .join('paperwork', aliased=True)
                 .filter(Paperwork.description.like('%review%')).all(),
             [b1, m1])
@@ -212,6 +219,7 @@ class _PolymorphicTestBase(object):
     def test_join_from_polymorphic_aliased_two(self):
         sess = create_session()
         eq_(sess.query(Person)
+                .order_by(Person.person_id)
                 .join('paperwork', aliased=True)
                 .filter(Paperwork.description.like('%#2%')).all(),
             [e1, m1])
@@ -219,6 +227,7 @@ class _PolymorphicTestBase(object):
     def test_join_from_polymorphic_aliased_three(self):
         sess = create_session()
         eq_(sess.query(Engineer)
+                .order_by(Person.person_id)
                 .join('paperwork', aliased=True)
                 .filter(Paperwork.description.like('%#2%')).all(),
             [e1])
@@ -226,6 +235,7 @@ class _PolymorphicTestBase(object):
     def test_join_from_polymorphic_aliased_four(self):
         sess = create_session()
         eq_(sess.query(Person)
+                .order_by(Person.person_id)
                 .join('paperwork', aliased=True)
                 .filter(Person.name.like('%dog%'))
                 .filter(Paperwork.description.like('%#2%')).all(),
@@ -235,6 +245,7 @@ class _PolymorphicTestBase(object):
         sess = create_session()
         eq_(sess.query(Person)
                 .with_polymorphic(Manager)
+                .order_by(Person.person_id)
                 .join('paperwork')
                 .filter(Paperwork.description.like('%review%')).all(),
             [b1, m1])
@@ -243,6 +254,7 @@ class _PolymorphicTestBase(object):
         sess = create_session()
         eq_(sess.query(Person)
                 .with_polymorphic([Manager, Engineer])
+                .order_by(Person.person_id)
                 .join('paperwork')
                 .filter(Paperwork.description.like('%#2%')).all(),
             [e1, m1])
@@ -251,6 +263,7 @@ class _PolymorphicTestBase(object):
         sess = create_session()
         eq_(sess.query(Person)
                 .with_polymorphic([Manager, Engineer])
+                .order_by(Person.person_id)
                 .join('paperwork')
                 .filter(Person.name.like('%dog%'))
                 .filter(Paperwork.description.like('%#2%')).all(),
@@ -269,6 +282,7 @@ class _PolymorphicTestBase(object):
         sess = create_session()
         eq_(sess.query(Person)
                 .with_polymorphic([Manager, Engineer])
+                .order_by(Person.person_id)
                 .join('paperwork', aliased=True)
                 .filter(Paperwork.description.like('%#2%')).all(),
             [e1, m1])
@@ -277,6 +291,7 @@ class _PolymorphicTestBase(object):
         sess = create_session()
         eq_(sess.query(Person)
                 .with_polymorphic([Manager, Engineer])
+                .order_by(Person.person_id)
                 .join('paperwork', aliased=True)
                 .filter(Person.name.like('%dog%'))
                 .filter(Paperwork.description.like('%#2%')).all(),
@@ -326,14 +341,17 @@ class _PolymorphicTestBase(object):
         sess = create_session()
         any_ = Engineer.machines.any(
             Machine.name == "Commodore 64")
-        eq_(sess.query(Person).filter(any_).all(), [e2, e3])
+        eq_(
+            sess.query(Person).order_by(Person.person_id).filter(any_).all(),
+            [e2, e3])
 
     def test_polymorphic_any_nine(self):
         sess = create_session()
         any_ = Person.paperwork.any(
             Paperwork.description == "review #2")
-        eq_(sess.query(Person).filter(any_).all(), [m1])
-
+        eq_(
+            sess.query(Person).order_by(Person.person_id).filter(any_).all(),
+            [m1])
 
     def test_join_from_columns_or_subclass_one(self):
         sess = create_session()
@@ -541,7 +559,7 @@ class _PolymorphicTestBase(object):
         sess = create_session()
         def go():
             eq_(sess.query(Person)
-                    .with_polymorphic('*').all(),
+                    .with_polymorphic('*').order_by(Person.person_id).all(),
                 self._emps_wo_relationships_fixture())
         self.assert_sql_count(testing.db, go, 1)
 
@@ -588,7 +606,8 @@ class _PolymorphicTestBase(object):
         sess = create_session()
         # compare to entities without related collections to prevent
         # additional lazy SQL from firing on loaded entities
-        eq_(sess.query(Person).with_polymorphic('*').all(),
+        eq_(sess.query(Person).with_polymorphic('*').
+            order_by(Person.person_id).all(),
             self._emps_wo_relationships_fixture())
 
 
@@ -944,9 +963,11 @@ class _PolymorphicTestBase(object):
 
     def test_filter_on_baseclass(self):
         sess = create_session()
-        eq_(sess.query(Person).all(), all_employees)
-        eq_(sess.query(Person).first(), all_employees[0])
-        eq_(sess.query(Person)
+        eq_(sess.query(Person).order_by(Person.person_id).all(), all_employees)
+        eq_(
+            sess.query(Person).order_by(Person.person_id).first(),
+            all_employees[0])
+        eq_(sess.query(Person).order_by(Person.person_id)
                 .filter(Person.person_id == e2.person_id).one(),
             e2)
 
@@ -954,6 +975,7 @@ class _PolymorphicTestBase(object):
         sess = create_session()
         palias = aliased(Person)
         eq_(sess.query(palias)
+                .order_by(palias.person_id)
                 .filter(palias.name.in_(['dilbert', 'wally'])).all(),
             [e1, e2])
 
@@ -1029,6 +1051,7 @@ class _PolymorphicTestBase(object):
             'Elbonia, Inc.')]
         eq_(sess.query(Engineer, Company.name)
                 .join(Company.employees)
+                .order_by(Person.person_id)
                 .filter(Person.type == 'engineer').all(),
             expected)
 
@@ -1357,6 +1380,7 @@ class PolymorphicPolymorphicTest(_PolymorphicTestBase, _PolymorphicPolymorphic):
         palias = aliased(Person)
         self.assert_compile(
             sess.query(palias, Company.name)
+                .order_by(palias.person_id)
                 .join(Person, Company.employees)
                 .filter(palias.name == 'dilbert'),
             "SELECT anon_1.people_person_id AS anon_1_people_person_id, "
@@ -1408,6 +1432,7 @@ class PolymorphicPolymorphicTest(_PolymorphicTestBase, _PolymorphicPolymorphic):
         self.assert_compile(
             sess.query(palias, Company.name)
                 .select_from(palias)
+                .order_by(palias.person_id)
                 .join(Person, Company.employees)
                 .filter(palias.name == 'dilbert'),
             "SELECT people_1.person_id AS people_1_person_id, "
index 376cfaa84fb4e457377f26caa6649964bfb2821d..bcd2131fb5d0707cd2615123d379b08ae61635e8 100644 (file)
@@ -59,11 +59,12 @@ class AssociationTest(fixtures.MappedTest):
         mapper(Keyword, keywords)
         mapper(KeywordAssociation, item_keywords, properties={
             'keyword':relationship(Keyword, lazy='joined')},
-               primary_key=[item_keywords.c.item_id, item_keywords.c.keyword_id],
-               order_by=[item_keywords.c.data])
+               primary_key=
+                    [item_keywords.c.item_id, item_keywords.c.keyword_id])
 
         mapper(Item, items, properties={
             'keywords' : relationship(KeywordAssociation,
+                                  order_by=item_keywords.c.data,
                                   cascade="all, delete-orphan")
         })
 
index 7f449c40ac6f36aaa4d91bcf63a0a65c4674dc9a..957e1d41957baf2d7776e97bcf860a1c9e6fb647 100644 (file)
@@ -19,13 +19,13 @@ class DeferredTest(AssertsCompiledSQL, _fixtures.FixtureTest):
         Order, orders = self.classes.Order, self.tables.orders
 
 
-        mapper(Order, orders, order_by=orders.c.id, properties={
+        mapper(Order, orders, properties={
             'description': deferred(orders.c.description)})
 
         o = Order()
         self.assert_(o.description is None)
 
-        q = create_session().query(Order)
+        q = create_session().query(Order).order_by(Order.id)
         def go():
             l = q.all()
             o2 = l[2]
@@ -47,7 +47,7 @@ class DeferredTest(AssertsCompiledSQL, _fixtures.FixtureTest):
         Order, orders = self.classes.Order, self.tables.orders
 
 
-        mapper(Order, orders, order_by=orders.c.id, properties={
+        mapper(Order, orders, properties={
             'id': deferred(orders.c.id)})
 
         # right now, it's not that graceful :)
@@ -107,7 +107,7 @@ class DeferredTest(AssertsCompiledSQL, _fixtures.FixtureTest):
         orders, Order = self.tables.orders, self.classes.Order
 
 
-        mapper(Order, orders, order_by=orders.c.id, properties=dict(
+        mapper(Order, orders, properties=dict(
             description=deferred(orders.c.description, group='primary'),
             opened=deferred(orders.c.isopen, group='primary')))
 
@@ -122,7 +122,7 @@ class DeferredTest(AssertsCompiledSQL, _fixtures.FixtureTest):
     def test_unsaved_group_2(self):
         orders, Order = self.tables.orders, self.classes.Order
 
-        mapper(Order, orders, order_by=orders.c.id, properties=dict(
+        mapper(Order, orders, properties=dict(
             description=deferred(orders.c.description, group='primary'),
             opened=deferred(orders.c.isopen, group='primary')))
 
@@ -685,7 +685,8 @@ class InheritanceTest(_Polymorphic):
 
     def test_load_only_subclass(self):
         s = Session()
-        q = s.query(Manager).options(load_only("status", "manager_name"))
+        q = s.query(Manager).order_by(Manager.person_id).\
+            options(load_only("status", "manager_name"))
         self.assert_compile(
             q,
             "SELECT managers.person_id AS managers_person_id, "
@@ -695,12 +696,13 @@ class InheritanceTest(_Polymorphic):
             "managers.manager_name AS managers_manager_name "
             "FROM people JOIN managers "
             "ON people.person_id = managers.person_id "
-            "ORDER BY people.person_id"
+            "ORDER BY managers.person_id"
         )
 
     def test_load_only_subclass_and_superclass(self):
         s = Session()
-        q = s.query(Boss).options(load_only("status", "manager_name"))
+        q = s.query(Boss).order_by(Person.person_id).\
+            options(load_only("status", "manager_name"))
         self.assert_compile(
             q,
             "SELECT managers.person_id AS managers_person_id, "
@@ -716,7 +718,8 @@ class InheritanceTest(_Polymorphic):
     def test_load_only_alias_subclass(self):
         s = Session()
         m1 = aliased(Manager, flat=True)
-        q = s.query(m1).options(load_only("status", "manager_name"))
+        q = s.query(m1).order_by(m1.person_id).\
+            options(load_only("status", "manager_name"))
         self.assert_compile(
             q,
             "SELECT managers_1.person_id AS managers_1_person_id, "
@@ -726,7 +729,7 @@ class InheritanceTest(_Polymorphic):
             "managers_1.manager_name AS managers_1_manager_name "
             "FROM people AS people_1 JOIN managers AS "
             "managers_1 ON people_1.person_id = managers_1.person_id "
-            "ORDER BY people_1.person_id"
+            "ORDER BY managers_1.person_id"
         )
 
     def test_load_only_subclass_from_relationship_polymorphic(self):
@@ -778,7 +781,7 @@ class InheritanceTest(_Polymorphic):
         # exclude the primary key
 
         s = Session()
-        q = s.query(Manager).options(
+        q = s.query(Manager).order_by(Person.person_id).options(
             defer(".*"), undefer("status"))
         self.assert_compile(
             q,
@@ -789,7 +792,7 @@ class InheritanceTest(_Polymorphic):
 
     def test_defer_super_name_on_subclass(self):
         s = Session()
-        q = s.query(Manager).options(defer("name"))
+        q = s.query(Manager).order_by(Person.person_id).options(defer("name"))
         self.assert_compile(
             q,
             "SELECT managers.person_id AS managers_person_id, "
index 3ad641b8fc2e28de9db868ca29a685d852eafa37..9f707c791e334f4e9f5f5d204f89c98b3c3f2b61 100644 (file)
@@ -3095,7 +3095,7 @@ class SelfReferentialEagerTest(fixtures.MappedTest):
 
         mapper(Node, nodes, properties={
             'children': relationship(Node, lazy='select', order_by=nodes.c.id)
-        }, order_by=nodes.c.id)
+        })
         sess = create_session()
         n1 = Node(data='n1')
         n1.append(Node(data='n11'))
@@ -3110,6 +3110,7 @@ class SelfReferentialEagerTest(fixtures.MappedTest):
 
         def go():
             d = sess.query(Node).filter_by(data='n1').\
+                order_by(Node.id).\
                 options(joinedload('children.children')).first()
             eq_(Node(data='n1', children=[
                 Node(data='n11'),
@@ -3123,7 +3124,7 @@ class SelfReferentialEagerTest(fixtures.MappedTest):
         self.assert_sql_count(testing.db, go, 2)
 
         def go():
-            sess.query(Node).filter_by(data='n1').\
+            sess.query(Node).order_by(Node.id).filter_by(data='n1').\
                 options(joinedload('children.children')).first()
 
         # test that the query isn't wrapping the initial query for eager
index 4246df1f68db4ec5e64b6abb1dcbc5a505e7fbb0..f6f7d9d77e4bc20c254ac0a1fd65490ccdedf9d3 100644 (file)
@@ -1845,6 +1845,7 @@ class SelectFromTest(QueryTest, AssertsCompiledSQL):
             options(joinedload('addresses')).first(),
             User(name='jack', addresses=[Address(id=1)]))
 
+    @testing.uses_deprecated("Mapper.order_by")
     def test_join_mapper_order_by(self):
         """test that mapper-level order_by is adapted to a selectable."""
 
index e7e943e8d506f01c763886d8ef2b79e3977840d4..e14af635d72fe0f998e929879b60c5801133d57e 100644 (file)
@@ -144,7 +144,6 @@ class InheritedJoinTest(fixtures.MappedTest, AssertsCompiledSQL):
         mapper(Person, people,
             polymorphic_on=people.c.type,
             polymorphic_identity='person',
-            order_by=people.c.person_id,
             properties={
                 'paperwork':relationship(Paperwork, order_by=paperwork.c.paperwork_id)
             })
@@ -220,6 +219,7 @@ class InheritedJoinTest(fixtures.MappedTest, AssertsCompiledSQL):
 
         self.assert_compile(
             sess.query(Person).with_polymorphic(Manager).
+                    order_by(Person.person_id).
                     join('paperwork').filter(Paperwork.description.like('%review%')),
                 "SELECT people.person_id AS people_person_id, people.company_id AS"
                 " people_company_id, "
@@ -243,6 +243,7 @@ class InheritedJoinTest(fixtures.MappedTest, AssertsCompiledSQL):
 
         self.assert_compile(
             sess.query(Person).with_polymorphic(Manager).
+                    order_by(Person.person_id).
                     join('paperwork', aliased=True).
                     filter(Paperwork.description.like('%review%')),
             "SELECT people.person_id AS people_person_id, people.company_id AS people_company_id, "
index d4eed4d9246b185ce5df69e89e06fff17022a563..69a03968199732d4cc317d22bcdad0835ae4d9d5 100644 (file)
@@ -1124,6 +1124,7 @@ class MapperTest(_fixtures.FixtureTest, AssertsCompiledSQL):
 
         eq_(l, [self.static.user_result[0]])
 
+    @testing.uses_deprecated("Mapper.order_by")
     def test_cancel_order_by(self):
         users, User = self.tables.users, self.classes.User
 
@@ -1164,9 +1165,9 @@ class MapperTest(_fixtures.FixtureTest, AssertsCompiledSQL):
                       users.c.id == addresses.c.user_id,
                       group_by=[c for c in users.c]).alias('myselect')
 
-        mapper(User, s, order_by=s.c.id)
+        mapper(User, s)
         sess = create_session()
-        l = sess.query(User).all()
+        l = sess.query(User).order_by(s.c.id).all()
 
         for idx, total in enumerate((14, 16)):
             eq_(l[idx].concat, l[idx].id * 2)
@@ -2118,7 +2119,7 @@ class DeepOptionsTest(_fixtures.FixtureTest):
             items=relationship(Item, order_items,
                                order_by=items.c.id)))
 
-        mapper(User, users, order_by=users.c.id, properties=dict(
+        mapper(User, users, properties=dict(
             orders=relationship(Order, order_by=orders.c.id)))
 
     def test_deep_options_1(self):
@@ -2127,7 +2128,7 @@ class DeepOptionsTest(_fixtures.FixtureTest):
         sess = create_session()
 
         # joinedload nothing.
-        u = sess.query(User).all()
+        u = sess.query(User).order_by(User.id).all()
 
         def go():
             u[0].orders[1].items[0].keywords[1]
@@ -2141,6 +2142,7 @@ class DeepOptionsTest(_fixtures.FixtureTest):
         sess = create_session()
 
         l = (sess.query(User).
+             order_by(User.id).
              options(sa.orm.joinedload_all('orders.items.keywords'))).all()
 
         def go():
@@ -2163,6 +2165,7 @@ class DeepOptionsTest(_fixtures.FixtureTest):
 
         # same thing, with separate options calls
         q2 = (sess.query(User).
+              order_by(User.id).
               options(sa.orm.joinedload('orders')).
               options(sa.orm.joinedload('orders.items')).
               options(sa.orm.joinedload('orders.items.keywords')))
@@ -2188,7 +2191,7 @@ class DeepOptionsTest(_fixtures.FixtureTest):
         # joinedload "keywords" on items.  it will lazy load "orders", then
         # lazy load the "items" on the order, but on "items" it will eager
         # load the "keywords"
-        q3 = sess.query(User).options(
+        q3 = sess.query(User).order_by(User.id).options(
             sa.orm.joinedload('orders.items.keywords'))
         u = q3.all()
 
@@ -2197,7 +2200,7 @@ class DeepOptionsTest(_fixtures.FixtureTest):
         self.sql_count_(2, go)
 
         sess = create_session()
-        q3 = sess.query(User).options(
+        q3 = sess.query(User).order_by(User.id).options(
             sa.orm.joinedload(User.orders, Order.items, Item.keywords))
         u = q3.all()
 
index 19b13c4ddc07d8e3d7cedb6a33e657f232eac690..39efd09dd30ba105ecf0a686ec5d1fee0669f8c1 100644 (file)
@@ -37,7 +37,6 @@ class O2OTest(fixtures.MappedTest):
 
         mapper(Port, port)
         mapper(Jack, jack,
-               order_by=[jack.c.number],
                properties=dict(
                    port=relationship(Port, backref='jack',
                                  uselist=False,
index 061187330321618a6eb0a3202728236ded7c263f..00d41604ca234b1cd2c440bae34a7cf1b0abb463 100644 (file)
@@ -1309,7 +1309,6 @@ class RelationshipToSelectableTest(fixtures.MappedTest):
         mapper(
             Container,
             container_select,
-            order_by=sa.asc(container_select.c.type),
             properties=dict(
                 lineItems=relationship(
                     LineItem,
@@ -1343,7 +1342,8 @@ class RelationshipToSelectableTest(fixtures.MappedTest):
             session.add(li)
         session.flush()
         session.expunge_all()
-        newcon = session.query(Container).first()
+        newcon = session.query(Container).\
+            order_by(container_select.c.type).first()
         assert con.policyNum == newcon.policyNum
         assert len(newcon.lineItems) == 10
         for old, new in zip(con.lineItems, newcon.lineItems):
index 0f8ffb6e728a2e085d26a0ceda622e5ebc4e4a38..032f24a5e555f37b6d4f8d2cb9d90fc50b2c82e4 100644 (file)
@@ -671,6 +671,7 @@ class EagerTest(_fixtures.FixtureTest, testing.AssertsCompiledSQL):
         l = q.order_by(sa.desc(User.id)).limit(2).offset(2).all()
         eq_(list(reversed(self.static.user_all_result[0:2])), l)
 
+    @testing.uses_deprecated("Mapper.order_by")
     def test_mapper_order_by(self):
         users, User, Address, addresses = (self.tables.users,
                                 self.classes.User,
@@ -1544,7 +1545,7 @@ class SelfReferentialTest(fixtures.MappedTest):
 
         mapper(Node, nodes, properties={
             'children':relationship(Node, order_by=nodes.c.id)
-        }, order_by=nodes.c.id)
+        })
         sess = create_session()
         n1 = Node(data='n1')
         n1.append(Node(data='n11'))
@@ -1557,7 +1558,7 @@ class SelfReferentialTest(fixtures.MappedTest):
         sess.flush()
         sess.expunge_all()
         def go():
-            d = sess.query(Node).filter_by(data='n1').\
+            d = sess.query(Node).filter_by(data='n1').order_by(Node.id).\
                         options(subqueryload_all('children.children')).first()
             eq_(Node(data='n1', children=[
                 Node(data='n11'),
index 2f67943f1eef4db3498ff300b9cc8295ea8919ac..21cb1dd12c06e86fbb943fde1f650eacf185eeda 100644 (file)
@@ -2178,11 +2178,15 @@ class SaveTest3(fixtures.MappedTest):
         session.flush()
         assert assoc.count().scalar() == 0
 
+
 class BooleanColTest(fixtures.MappedTest):
     @classmethod
     def define_tables(cls, metadata):
-        Table('t1_t', metadata,
-            Column('id', Integer, primary_key=True, test_needs_autoincrement=True),
+        Table(
+            't1_t', metadata,
+            Column(
+                'id', Integer,
+                primary_key=True, test_needs_autoincrement=True),
             Column('name', String(30)),
             Column('value', sa.Boolean))
 
@@ -2192,7 +2196,7 @@ class BooleanColTest(fixtures.MappedTest):
         # use the regular mapper
         class T(fixtures.ComparableEntity):
             pass
-        orm_mapper(T, t1_t, order_by=t1_t.c.id)
+        orm_mapper(T, t1_t)
 
         sess = create_session()
         t1 = T(value=True, name="t1")
@@ -2205,21 +2209,35 @@ class BooleanColTest(fixtures.MappedTest):
         for clear in (False, True):
             if clear:
                 sess.expunge_all()
-            eq_(sess.query(T).all(), [T(value=True, name="t1"), T(value=False, name="t2"), T(value=True, name="t3")])
+            eq_(
+                sess.query(T).order_by(T.id).all(),
+                [
+                    T(value=True, name="t1"),
+                    T(value=False, name="t2"), T(value=True, name="t3")])
             if clear:
                 sess.expunge_all()
-            eq_(sess.query(T).filter(T.value==True).all(), [T(value=True, name="t1"),T(value=True, name="t3")])
+            eq_(
+                sess.query(T).filter(T.value == True).order_by(T.id).all(),
+                [T(value=True, name="t1"), T(value=True, name="t3")])
             if clear:
                 sess.expunge_all()
-            eq_(sess.query(T).filter(T.value==False).all(), [T(value=False, name="t2")])
+            eq_(
+                sess.query(T).filter(T.value == False).order_by(T.id).all(),
+                [T(value=False, name="t2")])
 
         t2 = sess.query(T).get(t2.id)
         t2.value = True
         sess.flush()
-        eq_(sess.query(T).filter(T.value==True).all(), [T(value=True, name="t1"), T(value=True, name="t2"), T(value=True, name="t3")])
+        eq_(
+            sess.query(T).filter(T.value == True).order_by(T.id).all(),
+            [
+                T(value=True, name="t1"),
+                T(value=True, name="t2"), T(value=True, name="t3")])
         t2.value = False
         sess.flush()
-        eq_(sess.query(T).filter(T.value==True).all(), [T(value=True, name="t1"),T(value=True, name="t3")])
+        eq_(
+            sess.query(T).filter(T.value == True).order_by(T.id).all(),
+            [T(value=True, name="t1"), T(value=True, name="t3")])
 
 
 class RowSwitchTest(fixtures.MappedTest):