| 1661 | DropIndex(index)(index, self.connection) |
| 1662 | |
| 1663 | def visit_table( |
| 1664 | self, |
| 1665 | table, |
| 1666 | drop_ok=False, |
| 1667 | _is_metadata_operation=False, |
| 1668 | _ignore_sequences=(), |
| 1669 | ): |
| 1670 | if not drop_ok and not self._can_drop_table(table): |
| 1671 | return |
| 1672 | |
| 1673 | with self.with_ddl_events( |
| 1674 | table, |
| 1675 | checkfirst=self.checkfirst, |
| 1676 | _is_metadata_operation=_is_metadata_operation, |
| 1677 | ): |
| 1678 | if table._dropper_ddl is not None: |
| 1679 | table_dropper_ddl = table._dropper_ddl |
| 1680 | else: |
| 1681 | table_dropper_ddl = DropTable(table) |
| 1682 | table_dropper_ddl._invoke_with(self.connection) |
| 1683 | |
| 1684 | # traverse client side defaults which may refer to server-side |
| 1685 | # sequences. noting that some of these client side defaults may |
| 1686 | # also be set up as server side defaults |
| 1687 | # (see https://docs.sqlalchemy.org/en/ |
| 1688 | # latest/core/defaults.html |
| 1689 | # #associating-a-sequence-as-the-server-side- |
| 1690 | # default), so have to be dropped after the table is dropped. |
| 1691 | for column in table.columns: |
| 1692 | if ( |
| 1693 | column.default is not None |
| 1694 | and column.default not in _ignore_sequences |
| 1695 | ): |
| 1696 | self.traverse_single(column.default) |
| 1697 | |
| 1698 | def visit_foreign_key_constraint(self, constraint): |
| 1699 | if not self.dialect.supports_alter: |