is changed. The autoincrement flag can only be True if the datatype
is of integer affinity in the 1.1 series.
+ .. change::
+ :tags: bug, orm
+ :tickets: 3836
+
+ Fixed regression where some :class:`.Query` methods like
+ :meth:`.Query.update` and others would fail if the :class:`.Query`
+ were against a series of mapped columns, rather than the mapped
+ entity as a whole.
+
.. change::
:tags: bug, sql
:tickets: 3833
info = inspect(from_obj)
if hasattr(info, 'mapper') and \
(info.is_mapper or info.is_aliased_class):
- self._select_from_entity = from_obj
+ self._select_from_entity = info
if set_base_alias:
raise sa_exc.ArgumentError(
"A selectable (FromClause) instance is "
self.entity_zero = _entity
if _entity:
self.entities = [_entity]
+ self.mapper = _entity.mapper
else:
self.entities = []
+ self.mapper = None
self._from_entities = set(self.entities)
else:
all_elements = [
])
if self.entities:
self.entity_zero = self.entities[0]
+ self.mapper = self.entity_zero.mapper
elif self.namespace is not None:
self.entity_zero = self.namespace
+ self.mapper = None
else:
self.entity_zero = None
+ self.mapper = None
supports_single_entity = False
q = s.query(User, Address)
assert_raises(sa_exc.InvalidRequestError, q.get, 5)
+ def test_entity_or_mapper_zero(self):
+ User, Address = self.classes.User, self.classes.Address
+ s = create_session()
+
+ q = s.query(User, Address)
+ is_(q._mapper_zero(), inspect(User))
+ is_(q._entity_zero(), inspect(User))
+
+ u1 = aliased(User)
+ q = s.query(u1, Address)
+ is_(q._mapper_zero(), inspect(User))
+ is_(q._entity_zero(), inspect(u1))
+
+ q = s.query(User).select_from(Address)
+ is_(q._mapper_zero(), inspect(User))
+ is_(q._entity_zero(), inspect(Address))
+
+ q = s.query(User.name, Address)
+ is_(q._mapper_zero(), inspect(User))
+ is_(q._entity_zero(), inspect(User))
+
+ q = s.query(u1.name, Address)
+ is_(q._mapper_zero(), inspect(User))
+ is_(q._entity_zero(), inspect(u1))
+
+ q1 = s.query(User).exists()
+ q = s.query(q1)
+ is_(q._mapper_zero(), None)
+ is_(q._entity_zero(), None)
+
def test_from_statement(self):
User = self.classes.User