| 200 | |
| 201 | impl<'ast> VisitMut<'ast, Aug> for QueryNormalizer { |
| 202 | fn visit_query_mut(&mut self, query: &'ast mut Query<Aug>) { |
| 203 | let n = self.ctes.len(); |
| 204 | match &query.ctes { |
| 205 | CteBlock::Simple(ctes) => { |
| 206 | for cte in ctes.iter() { |
| 207 | self.ctes.push(cte.alias.name.clone()); |
| 208 | } |
| 209 | } |
| 210 | CteBlock::MutuallyRecursive(MutRecBlock { options: _, ctes }) => { |
| 211 | for cte in ctes.iter() { |
| 212 | self.ctes.push(cte.name.clone()); |
| 213 | } |
| 214 | } |
| 215 | } |
| 216 | visit_mut::visit_query_mut(self, query); |
| 217 | self.ctes.truncate(n); |
| 218 | } |
| 219 | |
| 220 | fn visit_function_mut(&mut self, func: &'ast mut Function<Aug>) { |
| 221 | match &mut func.args { |