]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Refactor cleaning
authorEric Masseran <eric.masseran@gmail.com>
Fri, 30 Jul 2021 18:00:43 +0000 (20:00 +0200)
committerEric Masseran <eric.masseran@gmail.com>
Fri, 30 Jul 2021 18:00:43 +0000 (20:00 +0200)
lib/sqlalchemy/sql/compiler.py

index e78b7a0844915f67bac4b1d8ddcba3cde7aadd17..9f991eff6ef61f9200cec37123258085823e90d1 100644 (file)
@@ -3443,26 +3443,22 @@ class SQLCompiler(Compiled):
         if not self.ctes:
             return ""
 
-        ctes = self.ctes
-
         if nesting_level and nesting_level > 1:
-            ctes = {
-                cte: ctes[cte]
-                for cte in ctes
-                if cte.nesting and self.level_by_ctes[cte] == nesting_level
-            }
+            ctes = {}
+            for cte in list(self.ctes.keys()):
+                cte_level = self.level_by_ctes[cte]
+                if not (cte.nesting and cte_level == nesting_level):
+                    continue
 
-            if not ctes:
-                return ""
+                ctes[cte] = self.ctes[cte]
 
-            # Remove them from the visible CTEs
-            self.ctes = {
-                cte: self.ctes[cte]
-                for cte in self.ctes
-                if not (
-                    cte.nesting and self.level_by_ctes[cte] == nesting_level
-                )
-            }
+                del self.ctes[cte]
+                del self.level_by_ctes[cte]
+        else:
+            ctes = self.ctes
+
+        if not ctes:
+            return ""
 
         ctes_recursive = any([cte.recursive for cte in ctes])