]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
add recursive test to values cte
authorFederico Caselli <cfederico87@gmail.com>
Tue, 15 Jul 2025 20:50:32 +0000 (22:50 +0200)
committerFederico Caselli <cfederico87@gmail.com>
Tue, 15 Jul 2025 20:52:05 +0000 (22:52 +0200)
Change-Id: I544aab7f9f5d2640fc6c3d970d835a6e3f80d746

test/sql/test_values.py

index 9ac3fa71b230bd448e0cc29e994433090e23108b..8129fc4d8bae20dd6e56e71d400342031301c03b 100644 (file)
@@ -269,7 +269,10 @@ class ValuesTest(fixtures.TablesTest, AssertsCompiledSQL):
     @testing.variation("values_named", [True, False])
     @testing.variation("cte_named", [True, False])
     @testing.variation("literal_binds", [True, False])
-    def test_direct_cte(self, values_named, cte_named, literal_binds):
+    @testing.variation("recursive", [True, False])
+    def test_direct_cte(
+        self, values_named, cte_named, literal_binds, recursive
+    ):
         """test #12734"""
 
         cte1 = (
@@ -280,7 +283,7 @@ class ValuesTest(fixtures.TablesTest, AssertsCompiledSQL):
                 name="some name" if values_named else None,
             )
             .data([("a", 2), ("b", 3)])
-            .cte("cte1" if cte_named else None)
+            .cte("cte1" if cte_named else None, recursive=bool(recursive))
         )
 
         stmt = select(cte1.c.col1)
@@ -296,9 +299,12 @@ class ValuesTest(fixtures.TablesTest, AssertsCompiledSQL):
             params = "('a', 2), ('b', 3)"
         else:
             params = "(:param_1, :param_2), (:param_3, :param_4)"
+
+        recursive_str = "RECURSIVE " if recursive else ""
+
         self.assert_compile(
             stmt,
-            f"WITH {cte_name}(col1, col2) AS "
+            f"WITH {recursive_str}{cte_name}(col1, col2) AS "
             f"(VALUES {params}) "
             f"SELECT {cte_name}.col1 FROM {cte_name}",
             checkparams=(