From: Eric Masseran Date: Fri, 30 Jul 2021 18:00:43 +0000 (+0200) Subject: Refactor cleaning X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8ac06c631539dcc5531ee806d90a8690f60069f9;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Refactor cleaning --- diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index e78b7a0844..9f991eff6e 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -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])