]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Add cross reference in 1 way
authorEric Masseran <eric.masseran@gmail.com>
Fri, 16 Jul 2021 16:45:22 +0000 (18:45 +0200)
committerEric Masseran <eric.masseran@gmail.com>
Fri, 16 Jul 2021 16:45:22 +0000 (18:45 +0200)
test/sql/test_cte.py

index 2d19fd05dd0f9dcef2b9cbd7d63741e6b217a435..a20d9cf62ed8fdbda083603e4dc50335e2e9d22a 100644 (file)
@@ -1468,6 +1468,30 @@ class NestingCTETest(fixtures.TestBase, AssertsCompiledSQL):
             ") SELECT cte.outer_1, cte.outer_2 FROM cte",
         )
 
+    def test_double_nesting_cte_with_cross_reference_in_cte(self):
+        select_1_cte = select([literal(1).label("inner_cte_1")]).cte(
+            "nesting_1", nesting=True
+        )
+        select_2_cte = select(
+            [(select_1_cte.c.inner_cte_1 + 1).label("inner_cte_2")]
+        ).cte("nesting_2", nesting=True)
+
+        # 1 next 2
+
+        nesting_cte_1_2 = select([select_1_cte, select_2_cte]).cte("cte")
+        stmt_1_2 = select([nesting_cte_1_2])
+        self.assert_compile(
+            stmt_1_2,
+            "WITH cte AS ("
+            "WITH nesting_1 AS (SELECT %(param_1)s AS inner_cte_1)"
+            ", nesting_2 AS (SELECT nesting_1.inner_cte_1 + %(inner_cte_1_1)s"
+            " AS inner_cte_2 FROM nesting_1)"
+            " SELECT nesting_1.inner_cte_1 AS inner_cte_1"
+            ", nesting_2.inner_cte_2 AS inner_cte_2"
+            " FROM nesting_1, nesting_2"
+            ") SELECT cte.inner_cte_1, cte.inner_cte_2 FROM cte",
+        )
+
     def test_nesting_cte_in_nesting_cte_in_cte(self):
         select_1_cte = select([literal(1).label("inner_cte")]).cte(
             "nesting_1", nesting=True