MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_aliased_adapt_on_names

Method test_aliased_adapt_on_names

test/orm/test_froms.py:2844–2866  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

2842 self.assert_compile(q, exp)
2843
2844 def test_aliased_adapt_on_names(self):
2845 User, Address = self.classes("User", "Address")
2846 agg_address = select(
2847 Address.id,
2848 func.sum(func.length(Address.email_address)).label(
2849 "email_address"
2850 ),
2851 ).group_by(Address.user_id)
2852 ag2 = aliased(Address, agg_address.subquery(), adapt_on_names=True)
2853
2854 # second, 'email_address' matches up to the aggregate, and we get a
2855 # smooth JOIN from users->subquery and that's it
2856 self.assert_compile(
2857 select(User, ag2.email_address)
2858 .join(ag2, User.addresses)
2859 .filter(ag2.email_address > 5),
2860 "SELECT users.id, users.name, anon_1.email_address FROM users "
2861 "JOIN ("
2862 "SELECT addresses.id AS id, sum(length(addresses.email_address)) "
2863 "AS email_address FROM addresses GROUP BY addresses.user_id) AS "
2864 "anon_1 ON users.id = addresses.user_id "
2865 "WHERE anon_1.email_address > :email_address_1",
2866 )
2867
2868 def test_aliased_warns_missing_column(self):
2869 User, Address = self.classes("User", "Address")

Callers

nothing calls this directly

Calls 10

selectFunction · 0.90
aliasedFunction · 0.90
assert_compileMethod · 0.80
group_byMethod · 0.45
labelMethod · 0.45
sumMethod · 0.45
lengthMethod · 0.45
subqueryMethod · 0.45
filterMethod · 0.45
joinMethod · 0.45

Tested by

no test coverage detected