relationships, specifically between polymorphic mappers.
- fixed bug where cascade operations incorrectly included deleted collection
items in the cascade [ticket:445]
+ - fix to deferred so that load operation doesnt mistakenly occur when only
+ PK col attributes are set
- oracle:
- when returning "rowid" as the ORDER BY column or in use with ROW_NUMBER OVER,
oracle dialect checks the selectable its being applied to and will switch to
def lazyload():
if self._should_log_debug:
self.logger.debug("deferred load %s group %s" % (mapperutil.attribute_str(instance, self.key), str(self.group)))
+
+ if not mapper.has_identity(instance):
+ return None
+
try:
pk = self.parent.pks_by_table[self.columns[0].table]
except KeyError:
("SELECT orders.order_id AS orders_order_id, orders.user_id AS orders_user_id, orders.isopen AS orders_isopen FROM orders ORDER BY %s" % orderby, {}),
("SELECT orders.description AS orders_description FROM orders WHERE orders.order_id = :orders_order_id", {'orders_order_id':3})
])
-
+
+ def testunsaved(self):
+ """test that deferred loading doesnt kick in when just PK cols are set"""
+ m = mapper(Order, orders, properties={
+ 'description':deferred(orders.c.description)
+ })
+
+ sess = create_session()
+ o = Order()
+ sess.save(o)
+ o.order_id = 7
+ def go():
+ o.description = "some description"
+ self.assert_sql_count(testbase.db, go, 0)
+
+ def testunsavedgroup(self):
+ """test that deferred loading doesnt kick in when just PK cols are set"""
+ m = mapper(Order, orders, properties={
+ 'description':deferred(orders.c.description, group='primary'),
+ 'opened':deferred(orders.c.isopen, group='primary')
+ })
+
+ sess = create_session()
+ o = Order()
+ sess.save(o)
+ o.order_id = 7
+ def go():
+ o.description = "some description"
+ self.assert_sql_count(testbase.db, go, 0)
+
def testsave(self):
m = mapper(Order, orders, properties={
'description':deferred(orders.c.description)