(expressions)
| 678 | replacements = {} |
| 679 | |
| 680 | def collect_replacements(expressions): |
| 681 | while expressions: |
| 682 | expr = expressions.pop() |
| 683 | if expr in replacements: |
| 684 | continue |
| 685 | elif select_alias := select.get(expr): |
| 686 | replacements[expr] = select_alias |
| 687 | elif isinstance(expr, Lookup): |
| 688 | expressions.extend(expr.get_source_expressions()) |
| 689 | elif isinstance(expr, Ref): |
| 690 | if expr.refs not in select_aliases: |
| 691 | expressions.extend(expr.get_source_expressions()) |
| 692 | else: |
| 693 | num_qual_alias = len(qual_aliases) |
| 694 | select_alias = f"qual{num_qual_alias}" |
| 695 | qual_aliases.add(select_alias) |
| 696 | inner_query.add_annotation(expr, select_alias) |
| 697 | replacements[expr] = select_alias |
| 698 | |
| 699 | collect_replacements(list(self.qualify.leaves())) |
| 700 | self.qualify = self.qualify.replace_expressions( |
nothing calls this directly
no test coverage detected