(self, delete_stmt, visiting_cte=None, **kw)
| 6498 | ) |
| 6499 | |
| 6500 | def visit_delete(self, delete_stmt, visiting_cte=None, **kw): |
| 6501 | compile_state = delete_stmt._compile_state_factory( |
| 6502 | delete_stmt, self, **kw |
| 6503 | ) |
| 6504 | delete_stmt = compile_state.statement |
| 6505 | |
| 6506 | if visiting_cte is not None: |
| 6507 | kw["visiting_cte"] = visiting_cte |
| 6508 | toplevel = False |
| 6509 | else: |
| 6510 | toplevel = not self.stack |
| 6511 | |
| 6512 | if toplevel: |
| 6513 | self.isdelete = True |
| 6514 | if not self.dml_compile_state: |
| 6515 | self.dml_compile_state = compile_state |
| 6516 | if not self.compile_state: |
| 6517 | self.compile_state = compile_state |
| 6518 | |
| 6519 | if self.linting & COLLECT_CARTESIAN_PRODUCTS: |
| 6520 | from_linter = FromLinter({}, set()) |
| 6521 | warn_linting = self.linting & WARN_LINTING |
| 6522 | if toplevel: |
| 6523 | self.from_linter = from_linter |
| 6524 | else: |
| 6525 | from_linter = None |
| 6526 | warn_linting = False |
| 6527 | |
| 6528 | extra_froms = compile_state._extra_froms |
| 6529 | |
| 6530 | correlate_froms = {delete_stmt.table}.union(extra_froms) |
| 6531 | self.stack.append( |
| 6532 | { |
| 6533 | "correlate_froms": correlate_froms, |
| 6534 | "asfrom_froms": correlate_froms, |
| 6535 | "selectable": delete_stmt, |
| 6536 | } |
| 6537 | ) |
| 6538 | |
| 6539 | text = "DELETE " |
| 6540 | |
| 6541 | if delete_stmt._prefixes: |
| 6542 | text += self._generate_prefixes( |
| 6543 | delete_stmt, delete_stmt._prefixes, **kw |
| 6544 | ) |
| 6545 | |
| 6546 | text += "FROM " |
| 6547 | |
| 6548 | try: |
| 6549 | table_text = self.delete_table_clause( |
| 6550 | delete_stmt, |
| 6551 | delete_stmt.table, |
| 6552 | extra_froms, |
| 6553 | from_linter=from_linter, |
| 6554 | ) |
| 6555 | except TypeError: |
| 6556 | # anticipate 3rd party dialects that don't include **kw |
| 6557 | # TODO: remove in 2.1 |
nothing calls this directly
no test coverage detected