(self, parent: SchemaEventTarget, **kw: Any)
| 5684 | self._set_parent(table) |
| 5685 | |
| 5686 | def _set_parent(self, parent: SchemaEventTarget, **kw: Any) -> None: |
| 5687 | table = parent |
| 5688 | assert isinstance(table, Table) |
| 5689 | ColumnCollectionMixin._set_parent(self, table) |
| 5690 | |
| 5691 | if self.table is not None and table is not self.table: |
| 5692 | raise exc.ArgumentError( |
| 5693 | f"Index '{self.name}' is against table " |
| 5694 | f"'{self.table.description}', and " |
| 5695 | f"cannot be associated with table '{table.description}'." |
| 5696 | ) |
| 5697 | self.table = table |
| 5698 | table.indexes.add(self) |
| 5699 | |
| 5700 | expressions = self.expressions |
| 5701 | col_expressions = self._col_expressions(table) |
| 5702 | assert len(expressions) == len(col_expressions) |
| 5703 | |
| 5704 | exprs = [] |
| 5705 | for expr, colexpr in zip(expressions, col_expressions): |
| 5706 | if isinstance(expr, ClauseElement): |
| 5707 | exprs.append(expr) |
| 5708 | elif colexpr is not None: |
| 5709 | exprs.append(colexpr) |
| 5710 | else: |
| 5711 | assert False |
| 5712 | self.expressions = self._table_bound_expressions = exprs |
| 5713 | |
| 5714 | def create( |
| 5715 | self, |
no test coverage detected