code: func WrapWithCastAsInt(ctx sessionctx.Context, expr Expression) Expression {
  	if expr.GetType().EvalType() == types.ETInt {
  		return expr
  	}
  	tp := types.NewFieldType(mysql.TypeLonglong)
  	tp.Flen, tp.Decimal = expr.GetType().Flen, 0
  	types.SetBinChsClnFlag(tp)
  	tp.Flag |= expr.GetType().Flag & mysql.UnsignedFlag
  	return BuildCastFunction(ctx, expr, tp)
  }
docs: // WrapWithCastAsInt wraps `expr` with `cast` if the return type of expr is not
  // type int, otherwise, returns `expr` directly.