code: func (d *ddl) DropColumn(ctx sessionctx.Context, ti ast.Ident, colName model.CIStr) error {
  	schema, t, err := d.getSchemaAndTableByIdent(ctx, ti)
  	if err != nil {
  		return errors.Trace(err)
  	}
  
  	// Check whether dropped column has existed.
  	col := table.FindCol(t.Cols(), colName.L)
  	if col == nil {
  		return ErrCantDropFieldOrKey.GenWithStack("column %s doesn't exist", colName)
  	}
  
  	tblInfo := t.Meta()
  	if err = isDroppableColumn(tblInfo, colName); err != nil {
  		return errors.Trace(err)
  	}
  	// We don't support dropping column with PK handle covered now.
  	if col.IsPKHandleColumn(tblInfo) {
  		return errUnsupportedPKHandle
  	}
  
  	job := &model.Job{
  		SchemaID:   schema.ID,
  		TableID:    t.Meta().ID,
  		Type:       model.ActionDropColumn,
  		BinlogInfo: &model.HistoryInfo{},
  		Args:       []interface{}{colName},
  	}
  
  	err = d.doDDLJob(ctx, job)
  	err = d.callHookOnChanged(err)
  	return errors.Trace(err)
  }
docs: // DropColumn will drop a column from the table, now we don't support drop the column with index covered.