def _update_index_attrs_changes()

in core/lib/sqlparse/diff.py [0:0]


    def _update_index_attrs_changes(self, idx_name):
        old_indexes = {idx.name: idx for idx in self.left.indexes}
        new_indexes = {idx.name: idx for idx in self.right.indexes}
        if (
            idx_name not in old_indexes
            and idx_name in new_indexes
            and new_indexes[idx_name].is_unique
        ):
            self.add_alter_type(IndexAlterType.BECOME_UNIQUE_INDEX)
        if not (idx_name in old_indexes and idx_name in new_indexes):
            return
        attrs = ["key_block_size", "comment", "is_unique", "key_type", "using"]
        for attr in attrs:
            if not is_equal(
                getattr(old_indexes[idx_name], attr),
                getattr(new_indexes[idx_name], attr),
            ):
                if attr == "key_block_size":
                    self.add_alter_type(IndexAlterType.CHANGE_INDEX_KEY_BLOCK_SIZE)
                elif attr == "comment":
                    self.add_alter_type(IndexAlterType.CHANGE_INDEX_COMMENT)
                elif attr == "is_unique":
                    if (
                        new_indexes[idx_name].is_unique
                        and not old_indexes[idx_name].is_unique
                    ):
                        self.add_alter_type(IndexAlterType.BECOME_UNIQUE_INDEX)
                    self.add_alter_type(IndexAlterType.CHANGE_UNIQUE_CONSTRAINT)
                elif attr == "key_type":
                    self.add_alter_type(IndexAlterType.CHANGE_KEY_TYPE)
                elif attr == "using":
                    self.add_alter_type(IndexAlterType.CHANGE_INDEX_TYPE)