From: Mike Bayer Date: Wed, 4 Jul 2007 16:24:30 +0000 (+0000) Subject: removed superfluous reapplying of options to self X-Git-Tag: rel_0_3_9~49 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9769be92bfd089bc9c23fee01576cf8782a448f4;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git removed superfluous reapplying of options to self --- diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index c29933ef93..2ad7047027 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -494,8 +494,6 @@ class Query(object): for opt in util.flatten_iterator(args): q.with_options.append(opt) opt.process_query(q) - for opt in util.flatten_iterator(self.with_options): - opt.process_query(self) return q def with_lockmode(self, mode): diff --git a/test/orm/mapper.py b/test/orm/mapper.py index 94b66f93aa..f3d94c10f5 100644 --- a/test/orm/mapper.py +++ b/test/orm/mapper.py @@ -760,14 +760,27 @@ class MapperTest(MapperSuperTest): # eagerload orders, orders.items, orders.items.keywords q2 = sess.query(User).options(eagerload('orders'), eagerload('orders.items'), eagerload('orders.items.keywords')) u = q2.select() + def go(): + print u[0].orders[1].items[0].keywords[1] print "-------MARK2----------" self.assert_sql_count(db, go, 0) + sess.clear() + + # same thing, with separate options calls + q2 = sess.query(User).options(eagerload('orders')).options(eagerload('orders.items')).options(eagerload('orders.items.keywords')) + u = q2.select() + def go(): + print u[0].orders[1].items[0].keywords[1] + print "-------MARK3----------" + self.assert_sql_count(db, go, 0) + print "-------MARK4----------" + sess.clear() # eagerload "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" - print "-------MARK3----------" + print "-------MARK5----------" q3 = sess.query(User).options(eagerload('orders.items.keywords')) u = q3.select() self.assert_sql_count(db, go, 2)