(self, delete_stmt, visiting_cte=None, **kw)
| 6732 | ) |
| 6733 | |
| 6734 | def visit_delete(self, delete_stmt, visiting_cte=None, **kw): |
| 6735 | compile_state = delete_stmt._compile_state_factory( |
| 6736 | delete_stmt, self, **kw |
| 6737 | ) |
| 6738 | delete_stmt = compile_state.statement |
| 6739 | |
| 6740 | if visiting_cte is not None: |
| 6741 | kw["visiting_cte"] = visiting_cte |
| 6742 | toplevel = False |
| 6743 | else: |
| 6744 | toplevel = not self.stack |
| 6745 | |
| 6746 | if toplevel: |
| 6747 | self.isdelete = True |
| 6748 | if not self.dml_compile_state: |
| 6749 | self.dml_compile_state = compile_state |
| 6750 | if not self.compile_state: |
| 6751 | self.compile_state = compile_state |
| 6752 | |
| 6753 | if self.linting & COLLECT_CARTESIAN_PRODUCTS: |
| 6754 | from_linter = FromLinter({}, set()) |
| 6755 | warn_linting = self.linting & WARN_LINTING |
| 6756 | if toplevel: |
| 6757 | self.from_linter = from_linter |
| 6758 | else: |
| 6759 | from_linter = None |
| 6760 | warn_linting = False |
| 6761 | |
| 6762 | extra_froms = compile_state._extra_froms |
| 6763 | |
| 6764 | correlate_froms = {delete_stmt.table}.union(extra_froms) |
| 6765 | self.stack.append( |
| 6766 | { |
| 6767 | "correlate_froms": correlate_froms, |
| 6768 | "asfrom_froms": correlate_froms, |
| 6769 | "selectable": delete_stmt, |
| 6770 | } |
| 6771 | ) |
| 6772 | |
| 6773 | text = "DELETE " |
| 6774 | |
| 6775 | if delete_stmt._prefixes: |
| 6776 | text += self._generate_prefixes( |
| 6777 | delete_stmt, delete_stmt._prefixes, **kw |
| 6778 | ) |
| 6779 | |
| 6780 | text += "FROM " |
| 6781 | |
| 6782 | try: |
| 6783 | table_text = self.delete_table_clause( |
| 6784 | delete_stmt, |
| 6785 | delete_stmt.table, |
| 6786 | extra_froms, |
| 6787 | from_linter=from_linter, |
| 6788 | ) |
| 6789 | except TypeError: |
| 6790 | # anticipate 3rd party dialects that don't include **kw |
| 6791 | # TODO: remove in 2.1 |
nothing calls this directly
no test coverage detected