MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / test_recursive_w_anon_labels

Method test_recursive_w_anon_labels

test/sql/test_cte.py:167–216  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

165 )
166
167 def test_recursive_w_anon_labels(self):
168 parts = table(
169 "parts", column("part"), column("sub_part"), column("quantity")
170 )
171
172 included_parts = (
173 select(
174 parts.c.sub_part.label(None),
175 parts.c.part.label(None),
176 parts.c.quantity,
177 )
178 .where(parts.c.part == "our part")
179 .cte(recursive=True)
180 )
181
182 incl_alias = included_parts.alias()
183 parts_alias = parts.alias()
184 included_parts = included_parts.union(
185 select(
186 parts_alias.c.sub_part,
187 parts_alias.c.part,
188 parts_alias.c.quantity,
189 ).where(parts_alias.c.part == incl_alias.c[0])
190 )
191
192 s = (
193 select(
194 included_parts.c[0],
195 func.sum(included_parts.c.quantity).label("total_quantity"),
196 )
197 .select_from(
198 included_parts.join(parts, included_parts.c[1] == parts.c.part)
199 )
200 .group_by(included_parts.c[0])
201 )
202 self.assert_compile(
203 s,
204 "WITH RECURSIVE anon_1(sub_part_1, part_1, quantity) "
205 "AS (SELECT parts.sub_part AS sub_part_1, parts.part "
206 "AS part_1, parts.quantity AS quantity FROM parts "
207 "WHERE parts.part = :part_2 UNION "
208 "SELECT parts_1.sub_part AS sub_part, "
209 "parts_1.part AS part, parts_1.quantity "
210 "AS quantity FROM parts AS parts_1, anon_1 AS anon_2 "
211 "WHERE parts_1.part = anon_2.sub_part_1) "
212 "SELECT anon_1.sub_part_1, "
213 "sum(anon_1.quantity) AS total_quantity FROM anon_1 "
214 "JOIN parts ON anon_1.part_1 = parts.part "
215 "GROUP BY anon_1.sub_part_1",
216 )
217
218 def test_recursive_inner_cte_unioned_to_alias(self):
219 parts = table(

Callers

nothing calls this directly

Calls 13

tableFunction · 0.90
columnFunction · 0.90
selectFunction · 0.90
assert_compileMethod · 0.80
cteMethod · 0.45
whereMethod · 0.45
labelMethod · 0.45
aliasMethod · 0.45
unionMethod · 0.45
group_byMethod · 0.45
select_fromMethod · 0.45
sumMethod · 0.45

Tested by

no test coverage detected