code: func (d *ddl) ChangeColumn(ctx sessionctx.Context, ident ast.Ident, spec *ast.AlterTableSpec) error {
  	specNewColumn := spec.NewColumns[0]
  	if len(specNewColumn.Name.Schema.O) != 0 && ident.Schema.L != specNewColumn.Name.Schema.L {
  		return ErrWrongDBName.GenWithStackByArgs(specNewColumn.Name.Schema.O)
  	}
  	if len(spec.OldColumnName.Schema.O) != 0 && ident.Schema.L != spec.OldColumnName.Schema.L {
  		return ErrWrongDBName.GenWithStackByArgs(spec.OldColumnName.Schema.O)
  	}
  	if len(specNewColumn.Name.Table.O) != 0 && ident.Name.L != specNewColumn.Name.Table.L {
  		return ErrWrongTableName.GenWithStackByArgs(specNewColumn.Name.Table.O)
  	}
  	if len(spec.OldColumnName.Table.O) != 0 && ident.Name.L != spec.OldColumnName.Table.L {
  		return ErrWrongTableName.GenWithStackByArgs(spec.OldColumnName.Table.O)
  	}
  
  	job, err := d.getModifiableColumnJob(ctx, ident, spec.OldColumnName.Name, spec)
  	if err != nil {
  		return errors.Trace(err)
  	}
  
  	err = d.doDDLJob(ctx, job)
  	err = d.callHookOnChanged(err)
  	return errors.Trace(err)
  }
docs: // ChangeColumn renames an existing column and modifies the column's definition,
  // currently we only support limited kind of changes
  // that do not need to change or check data on the table.