(self, use_twolevel)
| 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 |
nothing calls this directly
no test coverage detected