MCPcopy Create free account
hub / github.com/zzzeek/sqlalchemy / test_join_lateral_subquery_twolevel

Method test_join_lateral_subquery_twolevel

test/sql/test_lateral.py:241–297  ·  view source on GitHub ↗
(self, use_twolevel)

Source from the content-addressed store, hash-verified

239
240 @testing.combinations((True,), (False,))
241 def test_join_lateral_subquery_twolevel(self, use_twolevel):
242 people, books, bookcases = self.tables("people", "books", "bookcases")
243
244 p1 = select(
245 books.c.book_id, books.c.bookcase_id, books.c.book_owner_id
246 ).subquery()
247 p2 = (
248 select(bookcases.c.bookcase_id, bookcases.c.bookcase_owner_id)
249 .where(bookcases.c.bookcase_id == p1.c.bookcase_id)
250 .subquery()
251 .lateral()
252 )
253 p3 = (
254 select(people.c.people_id)
255 .where(p1.c.book_owner_id == people.c.people_id)
256 .subquery()
257 .lateral()
258 )
259
260 onelevel = (
261 select(p1.c.book_id, p2.c.bookcase_id)
262 .select_from(p1)
263 .join(p2, true())
264 )
265
266 if use_twolevel:
267 twolevel = onelevel.add_columns(p3.c.people_id).join(p3, true())
268
269 self.assert_compile(
270 twolevel,
271 "SELECT anon_1.book_id, anon_2.bookcase_id, anon_3.people_id "
272 "FROM (SELECT books.book_id AS book_id, books.bookcase_id AS "
273 "bookcase_id, books.book_owner_id AS book_owner_id "
274 "FROM books) "
275 "AS anon_1 JOIN LATERAL (SELECT bookcases.bookcase_id AS "
276 "bookcase_id, "
277 "bookcases.bookcase_owner_id AS bookcase_owner_id "
278 "FROM bookcases "
279 "WHERE bookcases.bookcase_id = anon_1.bookcase_id) "
280 "AS anon_2 ON true JOIN LATERAL "
281 "(SELECT people.people_id AS people_id FROM people "
282 "WHERE anon_1.book_owner_id = people.people_id) AS anon_3 "
283 "ON true",
284 )
285 else:
286 self.assert_compile(
287 onelevel,
288 "SELECT anon_1.book_id, anon_2.bookcase_id FROM "
289 "(SELECT books.book_id AS book_id, books.bookcase_id "
290 "AS bookcase_id, books.book_owner_id AS book_owner_id "
291 "FROM books) AS anon_1 JOIN LATERAL "
292 "(SELECT bookcases.bookcase_id AS bookcase_id, "
293 "bookcases.bookcase_owner_id AS bookcase_owner_id "
294 "FROM bookcases "
295 "WHERE bookcases.bookcase_id = anon_1.bookcase_id) AS anon_2 "
296 "ON true",
297 )
298

Callers

nothing calls this directly

Calls 9

selectFunction · 0.90
trueFunction · 0.90
assert_compileMethod · 0.80
subqueryMethod · 0.45
lateralMethod · 0.45
whereMethod · 0.45
joinMethod · 0.45
select_fromMethod · 0.45
add_columnsMethod · 0.45

Tested by

no test coverage detected