in core/lib/sqlparse/diff.py [0:0]
def _gen_idx_sql(self):
"""
Generate the index section for ALTER TABLE statement
"""
segments = []
# Drop index
for idx in self.left.indexes:
if idx not in self.right.indexes:
segments.append("DROP KEY `{}`".format(escape(idx.name)))
self.add_alter_type(IndexAlterType.DROP_INDEX)
# Add index
for idx in self.right.indexes:
if idx not in self.left.indexes:
segments.append("ADD {}".format(idx.to_sql()))
self.add_alter_type(IndexAlterType.ADD_INDEX)
self._update_index_attrs_changes(idx.name)
self._update_desc_index_type(idx.column_list)
if self.left.primary_key and not self.right.primary_key:
segments.append("DROP PRIMARY KEY")
self.add_alter_type(IndexAlterType.CHANGE_PK)
elif (
not self.left.primary_key.column_list and self.right.primary_key.column_list
):
segments.append("ADD {}".format(self.right.primary_key.to_sql()))
self.add_alter_type(IndexAlterType.CHANGE_PK)
self._update_desc_index_type(self.right.primary_key.column_list)
elif self.left.primary_key != self.right.primary_key:
segments.append("DROP PRIMARY KEY")
segments.append("ADD {}".format(self.right.primary_key.to_sql()))
self.add_alter_type(IndexAlterType.CHANGE_PK)
self._update_desc_index_type(self.right.primary_key.column_list)
return segments