On Jun 17, 2010, at 3:15 PM, Andi Albrecht wrote: > Adding these two lines to your test makes it fail:
it turns out there is a test for this, and also that passing "None" does not have the same effect as order_by() never being called in the first place - it suppresses the order_by setting on the mapper, if one was made. So not the same as "order by was never called", it explicitly can be used to disable an order_by setting on a mapper. I implemented support for passing False to order_by() in r8078b02c5aa6, which does in fact make it as though order_by() was never called. > > q.delete() > eq_(s.query(User).count(), 0) > > Here's the complete test to see it in context again: > > class OrderByTest(QueryTest, AssertsCompiledSQL): > def test_cancel_order_by(self): > s = create_session() > > q = s.query(User).order_by(User.id) > self.assert_compile(q, > "SELECT users.id AS users_id, users.name AS users_name > FROM users ORDER BY users.id", > use_default_dialect=True) > > q = q.order_by(None) > self.assert_compile(q, > "SELECT users.id AS users_id, users.name AS users_name > FROM users", > use_default_dialect=True) > > q.delete() > eq_(s.query(User).count(), 0) > > Andi > On Thu, Jun 17, 2010 at 4:15 PM, Michael Bayer <[email protected]> > wrote: >> OK, it looks like we did add this at some point, though I could not find a >> unit test where I would expect. So I added one in the latest tip. Here it >> is: >> >> class OrderByTest(QueryTest, AssertsCompiledSQL): >> def test_cancel_order_by(self): >> s = create_session() >> >> q = s.query(User).order_by(User.id) >> self.assert_compile(q, >> "SELECT users.id AS users_id, users.name AS users_name FROM users >> ORDER BY users.id", >> use_default_dialect=True) >> >> q = q.order_by(None) >> self.assert_compile(q, >> "SELECT users.id AS users_id, users.name AS users_name FROM >> users", >> use_default_dialect=True) >> >> >> and it passes. So how to reproduce the failure I assume you are getting ? >> >> >> >> On Jun 17, 2010, at 3:14 AM, Andi Albrecht wrote: >> >>> It's not different at all. I've just noticed that on the one hand it >>> *is* possible to use query.order_by(None) to remove any previously set >>> ordering, but on the other hand that _no_select_modifiers() in >>> sqlalchemy/orm/query.py checks for False (and not None). It would be >>> clearer to me if either order_by(False) would work too or - even >>> better - if _no_select_modifiers() would allow None for _order_by. >>> >>> Andi >>> >>> On Wed, Jun 16, 2010 at 3:30 PM, Michael Bayer <[email protected]> >>> wrote: >>>> its not really provided right now, the same way saying query.filter(None) >>>> won't reset any existing WHERE criterion, or join(None) doesn't remove all >>>> joins. This issue has come up before. How is order_by() different ? >>>> >>>> >>>> On Jun 16, 2010, at 8:05 AM, Andi Albrecht wrote: >>>> >>>>> Hi, >>>>> >>>>> I'm a bit curious about how to unset an order_by in 0.6. >>>>> >>>>> query.order_by(None) should do it, but in sqlalchemy/orm/query.py in >>>>> _no_select_modifiers() the notset value for the _order_by attribute is >>>>> False. In turn, the order_by() method doesn't seem to accept False. >>>>> >>>>> What would be a proper way to unset an order_by? In my case the >>>>> order_by is set when classes are mapped. >>>>> >>>>> Best regards, >>>>> >>>>> Andi >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google Groups >>>>> "sqlalchemy" group. >>>>> To post to this group, send email to [email protected]. >>>>> To unsubscribe from this group, send email to >>>>> [email protected]. >>>>> For more options, visit this group at >>>>> http://groups.google.com/group/sqlalchemy?hl=en. >>>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google Groups >>>> "sqlalchemy" group. >>>> To post to this group, send email to [email protected]. >>>> To unsubscribe from this group, send email to >>>> [email protected]. >>>> For more options, visit this group at >>>> http://groups.google.com/group/sqlalchemy?hl=en. >>>> >>>> >>> >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "sqlalchemy" group. >>> To post to this group, send email to [email protected]. >>> To unsubscribe from this group, send email to >>> [email protected]. >>> For more options, visit this group at >>> http://groups.google.com/group/sqlalchemy?hl=en. >>> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "sqlalchemy" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/sqlalchemy?hl=en. >> >> > > -- > You received this message because you are subscribed to the Google Groups > "sqlalchemy" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/sqlalchemy?hl=en. > -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.
