") SELECT cte.inner_cte_1, cte.inner_cte_2 FROM cte",
)
+ # 2 next 1
+
+ nesting_cte_2_1 = select([select_2_cte, select_1_cte]).cte("cte")
+ stmt_2_1 = select([nesting_cte_2_1])
+ self.assert_compile(
+ stmt_2_1,
+ # FIXME: nesting_1 is generated 2 times
+ "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_2.inner_cte_2 AS inner_cte_2"
+ ", nesting_1.inner_cte_1 AS inner_cte_1"
+ " FROM nesting_2, nesting_1"
+ ") SELECT cte.inner_cte_2, cte.inner_cte_1 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