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)