def _gen_idx_sql()

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