I've spent an hour trying to reproduce this bug and can't. I'm hoping
someone can suggest what might be going on so I can make this reproducable
for a bug report
I have 2 classes:
class Foo(Base):
__tablename__ = 'foo'
id = Column(Integer, primary_key=True)
bar_id = Column(Integer, ForeignKey("bar.id"), nullable=True)
class Bar(Base):
__tablename__ = 'bar'
id = Column(Integer, primary_key=True)
is_x = Column(Boolean, nullable=True)
# monkeypatched relationship
Foo.bar = sqlalchemy.orm.relationship("Bar",
primaryjoin=sqlalchemy.and_(Foo.bar_id == Bar.id, Bar.is_x.op("IS
NOT")(True)))
The not-reproducable problem is the following:
If I pass in a `contains_eager` clause WITHOUT doing a join, I end up
limited to all the Foo's with a Bar.
session.query(Foo).options(contains_eager('bar')).order_by(Foo.id.desc()).offset(0).limit(100).all()
However if I join, or do a joinedload, I correctly end up with all the Foos
(their Bar status is irrelevant)
The generated SQL looks fine 00 it seems that there's some post-processing
bit in sqlalchemy that is dropping this.
My production version has several dozen attributes and class functions.
Testing one-by-one isn't working well.
Does anyone have hints on a better way to troubleshoot this?
Also, shouldn't `contains_eager` raise some sort of error if you don't
actually contain that object?
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.