--- /dev/null
+.. change::
+ :tags: bug, regression, orm
+ :tickets: 6088
+
+ Fixed regression where the :attr:`_orm.Query.selectable` accessor, which is
+ a synonym for :meth:`_orm.Query.__clause_element__`, got removed, it's now
+ restored.
return self.enable_eagerloads(False).statement.scalar_subquery()
+ @property
+ def selectable(self):
+ """Return the :class:`_expression.Select` object emitted by this
+ :class:`_query.Query`.
+
+ Used for :func:`_sa.inspect` compatibility, this is equivalent to::
+
+ query.enable_eagerloads(False).with_labels().statement
+
+ """
+ return self.__clause_element__()
+
def __clause_element__(self):
return (
self.enable_eagerloads(False)
assert q2.session is s2
assert q1.session is s1
+ @testing.combinations(
+ (lambda s, User: s.query(User)),
+ (lambda s, User: s.query(User).filter_by(name="x")),
+ (lambda s, User: s.query(User.id, User.name).filter_by(name="x")),
+ (
+ lambda s, User: s.query(func.count(User.id)).filter(
+ User.name == "x"
+ )
+ ),
+ )
+ def test_rudimentary_statement_accessors(self, test_case):
+ User = self.classes.User
+
+ s = fixture_session()
+
+ q1 = testing.resolve_lambda(test_case, s=s, User=User)
+
+ is_true(
+ q1.statement.set_label_style(
+ LABEL_STYLE_TABLENAME_PLUS_COL
+ ).compare(q1.__clause_element__())
+ )
+
+ is_true(
+ q1.statement.set_label_style(
+ LABEL_STYLE_TABLENAME_PLUS_COL
+ ).compare(q1.selectable)
+ )
+
class OnlyReturnTuplesTest(QueryTest):
def test_single_entity_false(self):