Set collection is now compatible with merge(),
fixes [ticket:1352].
+ - Lazy loader will not use get() if the "lazy load"
+ SQL clause matches the clause used by get(), but
+ contains some parameters hardcoded. Previously
+ the lazy strategy would fail with the get(). Ideally
+ get() would be used with the hardcoded parameters
+ but this would require further development.
+ [ticket:1357]
+
- sql
- Fixed __repr__() and other _get_colspec() methods on
ForeignKey constructed from __clause_element__() style
the same type.
"""
- return isinstance(other, _BindParamClause) and other.type.__class__ == self.type.__class__
+ return isinstance(other, _BindParamClause) and other.type.__class__ == self.type.__class__ and self.value == other.value
def __getstate__(self):
"""execute a deferred value for serialization purposes."""
l = q.filter(users.c.id == 7).all()
assert [User(id=7, address=Address(id=1))] == l
+ @testing.resolve_artifact_names
+ def test_many_to_one_binds(self):
+ mapper(Address, addresses, primary_key=[addresses.c.user_id, addresses.c.email_address])
+
+ mapper(User, users, properties = dict(
+ address = relation(Address, uselist=False,
+ primaryjoin=sa.and_(users.c.id==addresses.c.user_id, addresses.c.email_address=='ed@bettyboop.com')
+ )
+ ))
+ q = create_session().query(User)
+ eq_(
+ [
+ User(id=7, address=None),
+ User(id=8, address=Address(id=3)),
+ User(id=9, address=None),
+ User(id=10, address=None),
+ ],
+ list(q)
+ )
+
+
@testing.resolve_artifact_names
def test_double(self):
"""tests lazy loading with two relations simulatneously, from the same table, using aliases. """
"myothertable.othername = :othername_2 OR myothertable.otherid = :otherid_1) AND sysdate() = today()",
checkparams = {'othername_1': 'asdf', 'othername_2':'foo', 'otherid_1': 9, 'myid_1': 12}
)
+
def test_distinct(self):
self.assert_compile(