With the latest revision removing a order_by that was previously set by a mapping works fine now!
Thanks for having a look at this! Andi On Thu, Jun 17, 2010 at 9:56 PM, Michael Bayer <mike...@zzzcomputing.com> wrote: > > 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 <mike...@zzzcomputing.com> >> 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 <mike...@zzzcomputing.com> >>>> 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 sqlalch...@googlegroups.com. >>>>>> To unsubscribe from this group, send email to >>>>>> sqlalchemy+unsubscr...@googlegroups.com. >>>>>> 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 sqlalch...@googlegroups.com. >>>>> To unsubscribe from this group, send email to >>>>> sqlalchemy+unsubscr...@googlegroups.com. >>>>> 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 sqlalch...@googlegroups.com. >>>> To unsubscribe from this group, send email to >>>> sqlalchemy+unsubscr...@googlegroups.com. >>>> 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 sqlalch...@googlegroups.com. >>> To unsubscribe from this group, send email to >>> sqlalchemy+unsubscr...@googlegroups.com. >>> 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 sqlalch...@googlegroups.com. >> To unsubscribe from this group, send email to >> sqlalchemy+unsubscr...@googlegroups.com. >> 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 sqlalch...@googlegroups.com. > To unsubscribe from this group, send email to > sqlalchemy+unsubscr...@googlegroups.com. > 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 sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.